diff options
author | Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> | 2016-01-28 09:37:14 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> | 2016-01-29 15:16:35 +0000 |
commit | dd1d3429fd5518de13f01d89308f2ee2de42540f (patch) | |
tree | 22b6b5387d5cc233ea5370ffb8e8e8d59e852d66 | |
parent | 316d2e3830f085b0d27909975882eeccf785e283 (diff) |
qtdiag: Add option --fonts for verbose output of QFontDatabase.
Output font families, sizes and writing systems.
Also output subpixel hinting of the screens.
Change-Id: I117765d3413bf1ede3ccfd6f3f1e06bee9a56957
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
-rw-r--r-- | src/qtdiag/main.cpp | 4 | ||||
-rw-r--r-- | src/qtdiag/qtdiag.cpp | 51 | ||||
-rw-r--r-- | src/qtdiag/qtdiag.h | 3 |
3 files changed, 51 insertions, 7 deletions
diff --git a/src/qtdiag/main.cpp b/src/qtdiag/main.cpp index 6bc42bc2c..7e304d401 100644 --- a/src/qtdiag/main.cpp +++ b/src/qtdiag/main.cpp @@ -53,14 +53,18 @@ int main(int argc, char **argv) QCommandLineParser commandLineParser; const QCommandLineOption noGlOption(QStringLiteral("no-gl"), QStringLiteral("Do not output GL information")); const QCommandLineOption glExtensionOption(QStringLiteral("gl-extensions"), QStringLiteral("List GL extensions")); + const QCommandLineOption fontOption(QStringLiteral("fonts"), QStringLiteral("Output list of fonts")); commandLineParser.setApplicationDescription(QStringLiteral("Prints diagnostic output about the Qt library.")); commandLineParser.addOption(noGlOption); commandLineParser.addOption(glExtensionOption); + commandLineParser.addOption(fontOption); commandLineParser.addHelpOption(); commandLineParser.process(app); unsigned flags = commandLineParser.isSet(noGlOption) ? 0u : unsigned(QtDiagGl); if (commandLineParser.isSet(glExtensionOption)) flags |= QtDiagGlExtensions; + if (commandLineParser.isSet(fontOption)) + flags |= QtDiagFonts; std::wcout << qtDiag(flags).toStdWString(); return 0; diff --git a/src/qtdiag/qtdiag.cpp b/src/qtdiag/qtdiag.cpp index 4e9a25f28..310cbea08 100644 --- a/src/qtdiag/qtdiag.cpp +++ b/src/qtdiag/qtdiag.cpp @@ -113,6 +113,16 @@ QTextStream &operator<<(QTextStream &str, const QFont &f) return str; } +QTextStream &operator<<(QTextStream &str, QPlatformScreen::SubpixelAntialiasingType st) +{ + static const char *enumValues[] = { + "Subpixel_None", "Subpixel_RGB", "Subpixel_BGR", "Subpixel_VRGB", "Subpixel_VBGR" + }; + str << (size_t(st) < sizeof(enumValues) / sizeof(enumValues[0]) + ? enumValues[st] : "<Unknown>"); + return str; +} + #ifndef QT_NO_OPENGL QTextStream &operator<<(QTextStream &str, const QSurfaceFormat &format) @@ -222,6 +232,18 @@ static QString formatQDebug(T t) return result; } +// Helper to format a type via QDebug, stripping the class name. +template <class T> +static QString formatValueQDebug(T t) +{ + QString result = formatQDebug(t).trimmed(); + if (result.endsWith(QLatin1Char(')'))) { + result.chop(1); + result.remove(0, result.indexOf(QLatin1Char('(')) + 1); + } + return result; +} + static inline QByteArrayList qtFeatures() { QByteArrayList result; @@ -445,11 +467,7 @@ QString qtDiag(unsigned flags) << " from " << platformTheme->themeHint(QPlatformTheme::IconThemeSearchPaths).toStringList() << '\n'; } if (const QFont *systemFont = platformTheme->font()) - str << " System font : " << *systemFont<< '\n'; - str << " General font : " << QFontDatabase::systemFont(QFontDatabase::GeneralFont) << '\n' - << " Fixed font : " << QFontDatabase::systemFont(QFontDatabase::FixedFont) << '\n' - << " Title font : " << QFontDatabase::systemFont(QFontDatabase::TitleFont) << '\n' - << " Smallest font: " << QFontDatabase::systemFont(QFontDatabase::SmallestReadableFont) << '\n'; + str << "\n System font : " << *systemFont<< '\n'; if (platformTheme->usePlatformNativeDialog(QPlatformTheme::FileDialog)) str << " Native file dialog\n"; @@ -460,6 +478,27 @@ QString qtDiag(unsigned flags) if (platformTheme->usePlatformNativeDialog(QPlatformTheme::MessageDialog)) str << " Native message dialog\n"; + str << "\nFonts:\n General font : " << QFontDatabase::systemFont(QFontDatabase::GeneralFont) << '\n' + << " Fixed font : " << QFontDatabase::systemFont(QFontDatabase::FixedFont) << '\n' + << " Title font : " << QFontDatabase::systemFont(QFontDatabase::TitleFont) << '\n' + << " Smallest font: " << QFontDatabase::systemFont(QFontDatabase::SmallestReadableFont) << '\n'; + if (flags & QtDiagFonts) { + QFontDatabase fontDatabase; + const QStringList families = fontDatabase.families(); + str << "\n Families (" << families.size() << "):\n"; + for (int i = 0, count = families.size(); i < count; ++i) + str << " " << families.at(i) << '\n'; + + const QList<int> standardSizes = QFontDatabase::standardSizes(); + str << "\n Standard Sizes:"; + for (int i = 0, count = standardSizes.size(); i < count; ++i) + str << ' ' << standardSizes.at(i); + QList<QFontDatabase::WritingSystem> writingSystems = fontDatabase.writingSystems(); + str << "\n\n Writing systems:\n"; + for (int i = 0, count = writingSystems.size(); i < count; ++i) + str << " " << formatValueQDebug(writingSystems.at(i)) << '\n'; + } + const QList<QScreen*> screens = QGuiApplication::screens(); const int screenCount = screens.size(); str << "\nScreens: " << screenCount << ", High DPI scaling: " @@ -490,7 +529,7 @@ QString qtDiag(unsigned flags) << " Logical DPI: " << dpi; if (dpi != nativeDpi) str << " (native: " << nativeDpi << ')'; - str << "\n "; + str << ' ' << platformScreen->subpixelAntialiasingTypeHint() << "\n "; if (QHighDpiScaling::isActive()) str << "High DPI scaling factor: " << QHighDpiScaling::factor(screen) << ' '; str << "DevicePixelRatio: " << screen->devicePixelRatio() diff --git a/src/qtdiag/qtdiag.h b/src/qtdiag/qtdiag.h index 9076c9b7e..3729a53a4 100644 --- a/src/qtdiag/qtdiag.h +++ b/src/qtdiag/qtdiag.h @@ -40,7 +40,8 @@ QT_BEGIN_NAMESPACE enum QtDiagFlags { QtDiagGl = 0x1, - QtDiagGlExtensions = 0x2 + QtDiagGlExtensions = 0x2, + QtDiagFonts = 0x4 }; QString qtDiag(unsigned flags = 0); |