diff options
author | Gabriel de Dietrich <gabriel.dedietrich@qt.io> | 2016-06-03 16:22:21 -0700 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2016-10-28 08:02:46 +0000 |
commit | f9a80e06ac928bf796d013dd7fba10ba30827202 (patch) | |
tree | d2ebe633b63305076e60d263ce148191f42f1442 /src | |
parent | 5700644a4268fdf8717b83a63e4843dcb86814b6 (diff) |
Move Windows font DB and engines to QtFontDatabaseSupport
This allows creating or extending QPA plugins to provide access to QFont
and related types.
It concerns both GDI and DirectWrite engines, as well as the regular and
the freetype based font databases. The qt.qpa.fonts logging category has
been moved together into the QWindowsFontDatabase related files to avoid
depending on the qwindowscontext.h header file. Finally, QwindowsNativeImage
is following pending a future refactor with similar code in qpixmap_win.cpp
and the Windows XP style.
Change-Id: Iddff2f3d715e3ab7695e6c2052b7596a01fd6fa8
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'src')
24 files changed, 188 insertions, 80 deletions
diff --git a/src/platformsupport/fontdatabases/fontdatabases.pro b/src/platformsupport/fontdatabases/fontdatabases.pro index 7ffeda6fe2..7fc4ecc115 100644 --- a/src/platformsupport/fontdatabases/fontdatabases.pro +++ b/src/platformsupport/fontdatabases/fontdatabases.pro @@ -20,6 +20,10 @@ darwin:!if(watchos:CONFIG(simulator, simulator|device)) { include($$PWD/fontconfig/fontconfig.pri) } } + + win32:!winrt { + include($$PWD/windows/windows.pri) + } } load(qt_module) diff --git a/src/plugins/platforms/windows/qwindowsfontdatabase.cpp b/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase.cpp index 1630b80306..ad653ab95d 100644 --- a/src/plugins/platforms/windows/qwindowsfontdatabase.cpp +++ b/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase.cpp @@ -37,12 +37,10 @@ ** ****************************************************************************/ -#include "qwindowsfontdatabase.h" -#include "qwindowsfontdatabase_ft.h" // for default font -#include "qwindowscontext.h" -#include "qwindowsintegration.h" -#include "qwindowsfontengine.h" -#include "qwindowsfontenginedirectwrite.h" +#include "qwindowsfontdatabase_p.h" +#include "qwindowsfontdatabase_ft_p.h" // for default font +#include "qwindowsfontengine_p.h" +#include "qwindowsfontenginedirectwrite_p.h" #include <QtCore/qt_windows.h> #include <QtGui/QFont> @@ -69,6 +67,8 @@ QT_BEGIN_NAMESPACE +Q_LOGGING_CATEGORY(lcQpaFonts, "qt.qpa.fonts") + #ifndef QT_NO_DIRECTWRITE // ### fixme: Consider direct linking of dwrite.dll once Windows Vista pre SP2 is dropped (QTBUG-49711) @@ -114,17 +114,18 @@ static inline bool useDirectWrite(QFont::HintingPreference hintingPreference, const QString &familyName = QString(), bool isColorFont = false) { - const unsigned options = QWindowsIntegration::instance()->options(); - if (Q_UNLIKELY(options & QWindowsIntegration::DontUseDirectWriteFonts)) + const unsigned options = QWindowsFontDatabase::fontOptions(); + if (Q_UNLIKELY(options & QWindowsFontDatabase::DontUseDirectWriteFonts)) return false; - if (isColorFont) - return (options & QWindowsIntegration::DontUseColorFonts) == 0; // At some scales, GDI will misrender the MingLiU font, so we force use of // DirectWrite to work around the issue. if (Q_UNLIKELY(familyName.startsWith(QLatin1String("MingLiU")))) return true; + if (isColorFont) + return (options & QWindowsFontDatabase::DontUseColorFonts) == 0; + return hintingPreference == QFont::PreferNoHinting || hintingPreference == QFont::PreferVerticalHinting || (QHighDpiScaling::isActive() && hintingPreference == QFont::PreferDefaultHinting); @@ -610,6 +611,19 @@ QWindowsFontEngineData::QWindowsFontEngineData() ReleaseDC(0, displayDC); } +unsigned QWindowsFontDatabase::m_fontOptions = 0; + +void QWindowsFontDatabase::setFontOptions(unsigned options) +{ + m_fontOptions = options & (QWindowsFontDatabase::DontUseDirectWriteFonts | + QWindowsFontDatabase::DontUseColorFonts); +} + +unsigned QWindowsFontDatabase::fontOptions() +{ + return m_fontOptions; +} + QWindowsFontEngineData::~QWindowsFontEngineData() { if (hdc) @@ -992,7 +1006,7 @@ static bool addFontToDatabase(const QString &familyName, const QString &styleNam const QFont::Stretch stretch = QFont::Unstretched; #ifndef QT_NO_DEBUG_OUTPUT - if (QWindowsContext::verbose > 2) { + if (lcQpaFonts().isDebugEnabled()) { QString message; QTextStream str(&message); str << __FUNCTION__ << ' ' << familyName << ' ' << charSet << " TTF=" << ttf; @@ -1214,7 +1228,7 @@ QFontEngineMulti *QWindowsFontDatabase::fontEngineMulti(QFontEngine *fontEngine, QFontEngine * QWindowsFontDatabase::fontEngine(const QFontDef &fontDef, void *handle) { QFontEngine *fe = QWindowsFontDatabase::createEngine(fontDef, - QWindowsContext::instance()->defaultDPI(), + defaultVerticalDPI(), sharedFontData()); qCDebug(lcQpaFonts) << __FUNCTION__ << "FONTDEF" << fontDef << fe << handle; return fe; @@ -1268,7 +1282,7 @@ QT_WARNING_POP request.stretch = QFont::Unstretched; fontEngine = QWindowsFontDatabase::createEngine(request, - QWindowsContext::instance()->defaultDPI(), + defaultVerticalDPI(), sharedFontData()); if (fontEngine) { @@ -1924,11 +1938,6 @@ QFontEngine *QWindowsFontDatabase::createEngine(const QFontDef &request, return fe; } -static inline int verticalDPI() -{ - return GetDeviceCaps(QWindowsContext::instance()->displayContext(), LOGPIXELSY); -} - QFont QWindowsFontDatabase::systemDefaultFont() { LOGFONT lf; @@ -1944,7 +1953,7 @@ QFont QWindowsFontDatabase::systemDefaultFont() QFont QWindowsFontDatabase::LOGFONT_to_QFont(const LOGFONT& logFont, int verticalDPI_In) { if (verticalDPI_In <= 0) - verticalDPI_In = verticalDPI(); + verticalDPI_In = defaultVerticalDPI(); QFont qFont(QString::fromWCharArray(logFont.lfFaceName)); qFont.setItalic(logFont.lfItalic); if (logFont.lfWeight != FW_DONTCARE) @@ -1957,4 +1966,19 @@ QFont QWindowsFontDatabase::LOGFONT_to_QFont(const LOGFONT& logFont, int vertica return qFont; } +int QWindowsFontDatabase::defaultVerticalDPI() +{ + static int vDPI = -1; + if (vDPI == -1) { + if (HDC defaultDC = GetDC(0)) { + vDPI = GetDeviceCaps(defaultDC, LOGPIXELSY); + ReleaseDC(0, defaultDC); + } else { + // FIXME: Resolve now or return 96 and keep unresolved? + vDPI = 96; + } + } + return vDPI; +} + QT_END_NAMESPACE diff --git a/src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp b/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase_ft.cpp index bc0e5cc523..4d973bbf17 100644 --- a/src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp +++ b/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase_ft.cpp @@ -37,9 +37,8 @@ ** ****************************************************************************/ -#include "qwindowsfontdatabase_ft.h" -#include "qwindowsfontdatabase.h" -#include "qwindowscontext.h" +#include "qwindowsfontdatabase_ft_p.h" +#include "qwindowsfontdatabase_p.h" #include <ft2build.h> #include FT_TRUETYPE_TABLES_H @@ -188,7 +187,7 @@ static bool addFontToDatabase(const QString &faceName, const QFont::Stretch stretch = QFont::Unstretched; #ifndef QT_NO_DEBUG_STREAM - if (QWindowsContext::verbose > 2) { + if (lcQpaFonts().isDebugEnabled()) { QString message; QTextStream str(&message); str << __FUNCTION__ << ' ' << faceName << "::" << fullName << ' ' << charSet << " TTF=" << ttf; diff --git a/src/plugins/platforms/windows/qwindowsfontdatabase_ft.h b/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase_ft_p.h index 90008e20a4..3a432842e5 100644 --- a/src/plugins/platforms/windows/qwindowsfontdatabase_ft.h +++ b/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase_ft_p.h @@ -40,6 +40,17 @@ #ifndef QWINDOWSFONTDATABASEFT_H #define QWINDOWSFONTDATABASEFT_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include <QtFontDatabaseSupport/private/qbasicfontdatabase_p.h> #include <QtCore/QSharedPointer> #include <QtCore/qt_windows.h> diff --git a/src/plugins/platforms/windows/qwindowsfontdatabase.h b/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase_p.h index 8b8c9c15f4..d240f77a66 100644 --- a/src/plugins/platforms/windows/qwindowsfontdatabase.h +++ b/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase_p.h @@ -40,8 +40,20 @@ #ifndef QWINDOWSFONTDATABASE_H #define QWINDOWSFONTDATABASE_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include <qpa/qplatformfontdatabase.h> #include <QtCore/QSharedPointer> +#include <QtCore/QLoggingCategory> #include <QtCore/qt_windows.h> #if !defined(QT_NO_DIRECTWRITE) @@ -51,6 +63,8 @@ QT_BEGIN_NAMESPACE +Q_DECLARE_LOGGING_CATEGORY(lcQpaFonts) + class QWindowsFontEngineData { Q_DISABLE_COPY(QWindowsFontEngineData) @@ -72,6 +86,12 @@ public: class QWindowsFontDatabase : public QPlatformFontDatabase { public: + enum FontOptions { + // Relevant bits from QWindowsIntegration::Options + DontUseDirectWriteFonts = 0x40, + DontUseColorFonts = 0x80 + }; + QWindowsFontDatabase(); ~QWindowsFontDatabase(); @@ -105,6 +125,11 @@ public: static QStringList extraTryFontsForFamily(const QString &family); static QString familyForStyleHint(QFont::StyleHint styleHint); + static int defaultVerticalDPI(); + + static void setFontOptions(unsigned options); + static unsigned fontOptions(); + private: void populateFamily(const QString &familyName, bool registerAlias); void removeApplicationFonts(); @@ -122,6 +147,8 @@ private: }; QMap<QString, UniqueFontData> m_uniqueFontData; + + static unsigned m_fontOptions; }; #ifndef QT_NO_DEBUG_STREAM diff --git a/src/plugins/platforms/windows/qwindowsfontengine.cpp b/src/platformsupport/fontdatabases/windows/qwindowsfontengine.cpp index f5d1ed9fad..9fc6fec915 100644 --- a/src/plugins/platforms/windows/qwindowsfontengine.cpp +++ b/src/platformsupport/fontdatabases/windows/qwindowsfontengine.cpp @@ -37,14 +37,13 @@ ** ****************************************************************************/ -#include "qwindowsintegration.h" -#include "qwindowsfontengine.h" -#include "qwindowsnativeimage.h" -#include "qwindowscontext.h" -#include "qwindowsfontdatabase.h" +#include "qwindowsfontengine_p.h" +#include "qwindowsnativeimage_p.h" +#include "qwindowsfontdatabase_p.h" #include <QtCore/qt_windows.h> -#include "qwindowsfontenginedirectwrite.h" +#include "qwindowsfontenginedirectwrite_p.h" +#include <QtGui/qpa/qplatformintegration.h> #include <QtGui/private/qtextengine_p.h> // glyph_metrics_t #include <QtGui/private/qguiapplication_p.h> #include <QtGui/QPaintDevice> @@ -315,8 +314,10 @@ QWindowsFontEngine::~QWindowsFontEngine() qCDebug(lcQpaFonts) << __FUNCTION__ << _name; if (!uniqueFamilyName.isEmpty()) { - QPlatformFontDatabase *pfdb = QWindowsIntegration::instance()->fontDatabase(); - static_cast<QWindowsFontDatabase *>(pfdb)->derefUniqueFont(uniqueFamilyName); + if (QPlatformIntegration *pi = QGuiApplicationPrivate::platformIntegration()) { + QPlatformFontDatabase *pfdb = pi->fontDatabase(); + static_cast<QWindowsFontDatabase *>(pfdb)->derefUniqueFont(uniqueFamilyName); + } } } @@ -1194,14 +1195,16 @@ QFontEngine *QWindowsFontEngine::cloneWithSize(qreal pixelSize) const QFontEngine *fontEngine = QWindowsFontDatabase::createEngine(request, - QWindowsContext::instance()->defaultDPI(), + QWindowsFontDatabase::defaultVerticalDPI(), m_fontEngineData); if (fontEngine) { fontEngine->fontDef.family = actualFontName; if (!uniqueFamilyName.isEmpty()) { static_cast<QWindowsFontEngine *>(fontEngine)->setUniqueFamilyName(uniqueFamilyName); - QPlatformFontDatabase *pfdb = QWindowsIntegration::instance()->fontDatabase(); - static_cast<QWindowsFontDatabase *>(pfdb)->refUniqueFont(uniqueFamilyName); + if (QPlatformIntegration *pi = QGuiApplicationPrivate::platformIntegration()) { + QPlatformFontDatabase *pfdb = pi->fontDatabase(); + static_cast<QWindowsFontDatabase *>(pfdb)->refUniqueFont(uniqueFamilyName); + } } } return fontEngine; @@ -1325,4 +1328,3 @@ bool QWindowsFontEngine::supportsTransformation(const QTransform &transform) con } QT_END_NAMESPACE - diff --git a/src/plugins/platforms/windows/qwindowsfontengine.h b/src/platformsupport/fontdatabases/windows/qwindowsfontengine_p.h index b63d8fd282..709de7d11d 100644 --- a/src/plugins/platforms/windows/qwindowsfontengine.h +++ b/src/platformsupport/fontdatabases/windows/qwindowsfontengine_p.h @@ -44,8 +44,8 @@ // W A R N I N G // ------------- // -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to // version without notice, or even be removed. // // We mean it. @@ -184,4 +184,3 @@ Q_DECLARE_METATYPE(HFONT) Q_DECLARE_METATYPE(LOGFONT) #endif // QWINDOWSFONTENGINE_H - diff --git a/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp b/src/platformsupport/fontdatabases/windows/qwindowsfontenginedirectwrite.cpp index 334e9cb8b9..a1d8c2b9e8 100644 --- a/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp +++ b/src/platformsupport/fontdatabases/windows/qwindowsfontenginedirectwrite.cpp @@ -39,9 +39,8 @@ #ifndef QT_NO_DIRECTWRITE -#include "qwindowsfontenginedirectwrite.h" -#include "qwindowsfontdatabase.h" -#include "qwindowscontext.h" +#include "qwindowsfontenginedirectwrite_p.h" +#include "qwindowsfontdatabase_p.h" #include <QtCore/QSettings> #include <QtCore/QtEndian> diff --git a/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.h b/src/platformsupport/fontdatabases/windows/qwindowsfontenginedirectwrite_p.h index e4a82c6a6e..65b16b9ba7 100644 --- a/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.h +++ b/src/platformsupport/fontdatabases/windows/qwindowsfontenginedirectwrite_p.h @@ -40,6 +40,17 @@ #ifndef QWINDOWSFONTENGINEDIRECTWRITE_H #define QWINDOWSFONTENGINEDIRECTWRITE_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include <QtCore/qglobal.h> #ifndef QT_NO_DIRECTWRITE diff --git a/src/plugins/platforms/windows/qwindowsnativeimage.cpp b/src/platformsupport/fontdatabases/windows/qwindowsnativeimage.cpp index ec9683ea8d..7022615511 100644 --- a/src/plugins/platforms/windows/qwindowsnativeimage.cpp +++ b/src/platformsupport/fontdatabases/windows/qwindowsnativeimage.cpp @@ -37,8 +37,7 @@ ** ****************************************************************************/ -#include "qwindowsnativeimage.h" -#include "qwindowscontext.h" +#include "qwindowsnativeimage_p.h" #include <QtGui/private/qpaintengine_p.h> #include <QtGui/private/qpaintengine_raster_p.h> @@ -143,7 +142,17 @@ QWindowsNativeImage::~QWindowsNativeImage() QImage::Format QWindowsNativeImage::systemFormat() { - static const int depth = QWindowsContext::instance()->screenDepth(); + static int depth = -1; + if (depth == -1) { + if (HDC defaultDC = GetDC(0)) { + depth = GetDeviceCaps(defaultDC, BITSPIXEL); + ReleaseDC(0, defaultDC); + } else { + // FIXME Same remark as in QWindowsFontDatabase::defaultVerticalDPI() + // BONUS FIXME: Is 32 too generous/optimistic? + depth = 32; + } + } return depth == 16 ? QImage::Format_RGB16 : QImage::Format_RGB32; } diff --git a/src/plugins/platforms/windows/qwindowsnativeimage.h b/src/platformsupport/fontdatabases/windows/qwindowsnativeimage_p.h index bfe0f07dfd..c27c0d1e98 100644 --- a/src/plugins/platforms/windows/qwindowsnativeimage.h +++ b/src/platformsupport/fontdatabases/windows/qwindowsnativeimage_p.h @@ -40,8 +40,19 @@ #ifndef QWINDOWSNATIVEIMAGE_H #define QWINDOWSNATIVEIMAGE_H -#include <QtCore/qt_windows.h> +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// +#include <QtCore/QtGlobal> +#include <QtCore/qt_windows.h> #include <QtGui/QImage> QT_BEGIN_NAMESPACE diff --git a/src/platformsupport/fontdatabases/windows/windows.pri b/src/platformsupport/fontdatabases/windows/windows.pri new file mode 100644 index 0000000000..419c4dc6d9 --- /dev/null +++ b/src/platformsupport/fontdatabases/windows/windows.pri @@ -0,0 +1,33 @@ +QT *= gui-private + +SOURCES += \ + $$PWD/qwindowsfontdatabase.cpp \ + $$PWD/qwindowsfontengine.cpp \ + $$PWD/qwindowsnativeimage.cpp + +HEADERS += \ + $$PWD/qwindowsfontdatabase_p.h \ + $$PWD/qwindowsfontengine_p.h \ + $$PWD/qwindowsnativeimage_p.h + +qtConfig(freetype) { + SOURCES += $$PWD/qwindowsfontdatabase_ft.cpp + HEADERS += $$PWD/qwindowsfontdatabase_ft_p.h + qtConfig(system-freetype) { + include($$QT_SOURCE_TREE/src/platformsupport/fontdatabases/basic/basic.pri) + } else { + include($$QT_SOURCE_TREE/src/3rdparty/freetype_dependency.pri) + } +} + +qtConfig(directwrite) { + qtConfig(directwrite2): \ + DEFINES *= QT_USE_DIRECTWRITE2 + + SOURCES += $$PWD/qwindowsfontenginedirectwrite.cpp + HEADERS += $$PWD/qwindowsfontenginedirectwrite_p.h +} else { + DEFINES *= QT_NO_DIRECTWRITE +} + +LIBS += -lole32 -lgdi32 -luser32 diff --git a/src/platformsupport/platformsupport.pro b/src/platformsupport/platformsupport.pro index 5161ce3520..bb0b7b81a3 100644 --- a/src/platformsupport/platformsupport.pro +++ b/src/platformsupport/platformsupport.pro @@ -7,7 +7,7 @@ SUBDIRS = \ fbconvenience \ themes -qtConfig(freetype)|if(darwin:!if(watchos:CONFIG(simulator, simulator|device))): \ +qtConfig(freetype)|if(darwin:!if(watchos:CONFIG(simulator, simulator|device)))|win32: \ SUBDIRS += fontdatabases qtConfig(evdev)|qtConfig(tslib)|qtConfig(libinput) { diff --git a/src/plugins/platforms/direct2d/direct2d.pro b/src/plugins/platforms/direct2d/direct2d.pro index 83c4a730f4..c30703720c 100644 --- a/src/plugins/platforms/direct2d/direct2d.pro +++ b/src/plugins/platforms/direct2d/direct2d.pro @@ -2,7 +2,8 @@ TARGET = qdirect2d QT += \ core-private gui-private \ - eventdispatcher_support-private + eventdispatcher_support-private \ + fontdatabase_support-private theme_support-private LIBS += -ldwmapi -ld2d1 -ld3d11 -ldwrite -lVersion -lgdi32 diff --git a/src/plugins/platforms/direct2d/qwindowsdirect2dpaintengine.cpp b/src/plugins/platforms/direct2d/qwindowsdirect2dpaintengine.cpp index 0ea2fcfa74..69d2e12778 100644 --- a/src/plugins/platforms/direct2d/qwindowsdirect2dpaintengine.cpp +++ b/src/plugins/platforms/direct2d/qwindowsdirect2dpaintengine.cpp @@ -45,8 +45,8 @@ #include "qwindowsdirect2dbitmap.h" #include "qwindowsdirect2ddevicecontext.h" -#include "qwindowsfontengine.h" -#include "qwindowsfontdatabase.h" +#include <QtFontDatabaseSupport/private/qwindowsfontdatabase_p.h> +#include <QtFontDatabaseSupport/private/qwindowsfontengine_p.h> #include "qwindowsintegration.h" #include <QtCore/QtMath> diff --git a/src/plugins/platforms/windows/qwindowsbackingstore.cpp b/src/plugins/platforms/windows/qwindowsbackingstore.cpp index 3b7374dc92..49c7144221 100644 --- a/src/plugins/platforms/windows/qwindowsbackingstore.cpp +++ b/src/plugins/platforms/windows/qwindowsbackingstore.cpp @@ -39,11 +39,11 @@ #include "qwindowsbackingstore.h" #include "qwindowswindow.h" -#include "qwindowsnativeimage.h" #include "qwindowscontext.h" #include <QtGui/QWindow> #include <QtGui/QPainter> +#include <QtFontDatabaseSupport/private/qwindowsnativeimage_p.h> #include <private/qhighdpiscaling_p.h> #include <private/qimage_p.h> diff --git a/src/plugins/platforms/windows/qwindowscontext.cpp b/src/plugins/platforms/windows/qwindowscontext.cpp index bc317c7f5d..1a03df6ac2 100644 --- a/src/plugins/platforms/windows/qwindowscontext.cpp +++ b/src/plugins/platforms/windows/qwindowscontext.cpp @@ -84,7 +84,6 @@ QT_BEGIN_NAMESPACE Q_LOGGING_CATEGORY(lcQpaWindows, "qt.qpa.windows") Q_LOGGING_CATEGORY(lcQpaBackingStore, "qt.qpa.backingstore") Q_LOGGING_CATEGORY(lcQpaEvents, "qt.qpa.events") -Q_LOGGING_CATEGORY(lcQpaFonts, "qt.qpa.fonts") Q_LOGGING_CATEGORY(lcQpaGl, "qt.qpa.gl") Q_LOGGING_CATEGORY(lcQpaMime, "qt.qpa.mime") Q_LOGGING_CATEGORY(lcQpaInputMethods, "qt.qpa.input.methods") diff --git a/src/plugins/platforms/windows/qwindowscontext.h b/src/plugins/platforms/windows/qwindowscontext.h index 843f7e2ad6..9dfde67797 100644 --- a/src/plugins/platforms/windows/qwindowscontext.h +++ b/src/plugins/platforms/windows/qwindowscontext.h @@ -59,7 +59,6 @@ QT_BEGIN_NAMESPACE Q_DECLARE_LOGGING_CATEGORY(lcQpaWindows) Q_DECLARE_LOGGING_CATEGORY(lcQpaBackingStore) Q_DECLARE_LOGGING_CATEGORY(lcQpaEvents) -Q_DECLARE_LOGGING_CATEGORY(lcQpaFonts) Q_DECLARE_LOGGING_CATEGORY(lcQpaGl) Q_DECLARE_LOGGING_CATEGORY(lcQpaMime) Q_DECLARE_LOGGING_CATEGORY(lcQpaInputMethods) diff --git a/src/plugins/platforms/windows/qwindowsintegration.cpp b/src/plugins/platforms/windows/qwindowsintegration.cpp index 16a2b56774..004b03d9a9 100644 --- a/src/plugins/platforms/windows/qwindowsintegration.cpp +++ b/src/plugins/platforms/windows/qwindowsintegration.cpp @@ -47,9 +47,8 @@ #include "qwindowstheme.h" #include "qwindowsservices.h" #ifndef QT_NO_FREETYPE -# include "qwindowsfontdatabase_ft.h" +# include <QtFontDatabaseSupport/private/qwindowsfontdatabase_ft_p.h> #endif -#include "qwindowsfontdatabase.h" #ifndef QT_NO_CLIPBOARD # include "qwindowsclipboard.h" # ifndef QT_NO_DRAGANDDROP @@ -220,6 +219,7 @@ QWindowsIntegrationPrivate::QWindowsIntegrationPrivate(const QStringList ¶mL // are connected to Windows 8.1 QtWindows::ProcessDpiAwareness dpiAwareness = QtWindows::ProcessPerMonitorDpiAware; m_options = parseOptions(paramList, &tabletAbsoluteRange, &dpiAwareness); + QWindowsFontDatabase::setFontOptions(m_options); if (tabletAbsoluteRange >= 0) m_context.setTabletAbsoluteRange(tabletAbsoluteRange); if (!dpiAwarenessSet) { // Set only once in case of repeated instantiations of QGuiApplication. diff --git a/src/plugins/platforms/windows/qwindowsintegration.h b/src/plugins/platforms/windows/qwindowsintegration.h index 4258f908e7..a668470993 100644 --- a/src/plugins/platforms/windows/qwindowsintegration.h +++ b/src/plugins/platforms/windows/qwindowsintegration.h @@ -43,6 +43,7 @@ #include <qpa/qplatformintegration.h> #include <QtCore/QScopedPointer> +#include <QtFontDatabaseSupport/private/qwindowsfontdatabase_p.h> QT_BEGIN_NAMESPACE @@ -61,8 +62,9 @@ public: NoNativeDialogs = 0x8, XpNativeDialogs = 0x10, DontPassOsMouseEventsSynthesizedFromTouch = 0x20, // Do not pass OS-generated mouse events from touch. - DontUseDirectWriteFonts = 0x40, - DontUseColorFonts = 0x80 + // Keep in sync with QWindowsFontDatabase::FontOptions + DontUseDirectWriteFonts = QWindowsFontDatabase::DontUseDirectWriteFonts, + DontUseColorFonts = QWindowsFontDatabase::DontUseColorFonts }; explicit QWindowsIntegration(const QStringList ¶mList); diff --git a/src/plugins/platforms/windows/qwindowsnativeinterface.cpp b/src/plugins/platforms/windows/qwindowsnativeinterface.cpp index e0ae111b9a..eaa6e45b9f 100644 --- a/src/plugins/platforms/windows/qwindowsnativeinterface.cpp +++ b/src/plugins/platforms/windows/qwindowsnativeinterface.cpp @@ -41,7 +41,6 @@ #include "qwindowswindow.h" #include "qwindowscontext.h" #include "qwindowscursor.h" -#include "qwindowsfontdatabase.h" #include "qwindowsopenglcontext.h" #include "qwindowsopengltester.h" #include "qwindowsintegration.h" @@ -51,6 +50,7 @@ #include <QtGui/QOpenGLContext> #include <QtGui/QScreen> #include <qpa/qplatformscreen.h> +#include <QtFontDatabaseSupport/private/qwindowsfontdatabase_p.h> QT_BEGIN_NAMESPACE diff --git a/src/plugins/platforms/windows/qwindowstheme.cpp b/src/plugins/platforms/windows/qwindowstheme.cpp index fe67c0ce37..ed12c8124e 100644 --- a/src/plugins/platforms/windows/qwindowstheme.cpp +++ b/src/plugins/platforms/windows/qwindowstheme.cpp @@ -48,7 +48,6 @@ #include "qwindowscontext.h" #include "qwindowsintegration.h" #include "qt_windows.h" -#include "qwindowsfontdatabase.h" #include <commctrl.h> #include <objbase.h> #ifndef Q_CC_MINGW @@ -69,6 +68,7 @@ #include <QtGui/QPixmapCache> #include <qpa/qwindowsysteminterface.h> #include <QtThemeSupport/private/qabstractfileiconengine_p.h> +#include <QtFontDatabaseSupport/private/qwindowsfontdatabase_p.h> #include <private/qhighdpiscaling_p.h> #include <private/qsystemlibrary_p.h> diff --git a/src/plugins/platforms/windows/qwindowswindow.cpp b/src/plugins/platforms/windows/qwindowswindow.cpp index 0ebed59a1d..a9b061ad73 100644 --- a/src/plugins/platforms/windows/qwindowswindow.cpp +++ b/src/plugins/platforms/windows/qwindowswindow.cpp @@ -38,7 +38,6 @@ ****************************************************************************/ #include "qwindowswindow.h" -#include "qwindowsnativeimage.h" #include "qwindowscontext.h" #include "qwindowsdrag.h" #include "qwindowsscreen.h" diff --git a/src/plugins/platforms/windows/windows.pri b/src/plugins/platforms/windows/windows.pri index 411c9e032b..d97e49309f 100644 --- a/src/plugins/platforms/windows/windows.pri +++ b/src/plugins/platforms/windows/windows.pri @@ -9,24 +9,12 @@ LIBS += -lshlwapi -lshell32 -ladvapi32 DEFINES *= QT_NO_CAST_FROM_ASCII -qtConfig(directwrite) { - qtConfig(directwrite2): \ - DEFINES *= QT_USE_DIRECTWRITE2 - - SOURCES += $$PWD/qwindowsfontenginedirectwrite.cpp - HEADERS += $$PWD/qwindowsfontenginedirectwrite.h -} else { - DEFINES *= QT_NO_DIRECTWRITE -} - SOURCES += \ $$PWD/qwindowswindow.cpp \ $$PWD/qwindowsintegration.cpp \ $$PWD/qwindowscontext.cpp \ $$PWD/qwindowsscreen.cpp \ $$PWD/qwindowskeymapper.cpp \ - $$PWD/qwindowsfontengine.cpp \ - $$PWD/qwindowsfontdatabase.cpp \ $$PWD/qwindowsmousehandler.cpp \ $$PWD/qwindowsole.cpp \ $$PWD/qwindowsmime.cpp \ @@ -36,7 +24,6 @@ SOURCES += \ $$PWD/qwindowstheme.cpp \ $$PWD/qwindowsdialoghelpers.cpp \ $$PWD/qwindowsservices.cpp \ - $$PWD/qwindowsnativeimage.cpp \ $$PWD/qwindowsnativeinterface.cpp \ $$PWD/qwindowsopengltester.cpp @@ -46,8 +33,6 @@ HEADERS += \ $$PWD/qwindowscontext.h \ $$PWD/qwindowsscreen.h \ $$PWD/qwindowskeymapper.h \ - $$PWD/qwindowsfontengine.h \ - $$PWD/qwindowsfontdatabase.h \ $$PWD/qwindowsmousehandler.h \ $$PWD/qtwindowsglobal.h \ $$PWD/qwindowsole.h \ @@ -58,7 +43,6 @@ HEADERS += \ $$PWD/qwindowstheme.h \ $$PWD/qwindowsdialoghelpers.h \ $$PWD/qwindowsservices.h \ - $$PWD/qwindowsnativeimage.h \ $$PWD/qwindowsnativeinterface.h \ $$PWD/qwindowsopengltester.h \ $$PWD/qwindowsthreadpoolrunner.h @@ -111,11 +95,6 @@ qtConfig(dynamicgl) { RESOURCES += $$PWD/openglblacklists.qrc -qtConfig(freetype) { - HEADERS += $$PWD/qwindowsfontdatabase_ft.h - SOURCES += $$PWD/qwindowsfontdatabase_ft.cpp -} - qtConfig(accessibility): include($$PWD/accessible/accessible.pri) DEFINES *= LIBEGL_NAME=$${LIBEGL_NAME} |