summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2016-01-28 09:37:14 +0100
committerFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2016-01-29 15:16:35 +0000
commitdd1d3429fd5518de13f01d89308f2ee2de42540f (patch)
tree22b6b5387d5cc233ea5370ffb8e8e8d59e852d66
parent316d2e3830f085b0d27909975882eeccf785e283 (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.cpp4
-rw-r--r--src/qtdiag/qtdiag.cpp51
-rw-r--r--src/qtdiag/qtdiag.h3
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);