From 1053e1f4a3cf681eadcf5a4774b18372738db2f5 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 29 May 2020 11:02:07 +0200 Subject: Fix Windows Font database code to use configure features Use QT_CONFIG, QT_REQUIRE_CONFIG instead of custom macros. Task-number: QTBUG-83255 Task-number: QTBUG-83931 Change-Id: Id067448dd59f4810a6bc8042d3fbe4244d5cc88a Reviewed-by: Alexandru Croitor --- .../text/windows/qwindowsdirectwritefontdatabase.cpp | 4 ---- .../text/windows/qwindowsdirectwritefontdatabase_p.h | 10 ++++------ src/gui/text/windows/qwindowsfontdatabase.cpp | 17 ++++++++--------- src/gui/text/windows/qwindowsfontdatabasebase.cpp | 13 ++++--------- src/gui/text/windows/qwindowsfontdatabasebase_p.h | 9 +++++---- src/gui/text/windows/qwindowsfontengine.cpp | 8 +++++--- .../text/windows/qwindowsfontenginedirectwrite.cpp | 20 +++----------------- .../text/windows/qwindowsfontenginedirectwrite_p.h | 7 +++---- .../platforms/windows/qwindowsintegration.cpp | 5 +++-- 9 files changed, 35 insertions(+), 58 deletions(-) diff --git a/src/gui/text/windows/qwindowsdirectwritefontdatabase.cpp b/src/gui/text/windows/qwindowsdirectwritefontdatabase.cpp index d2fb909dea..6033e8aeb9 100644 --- a/src/gui/text/windows/qwindowsdirectwritefontdatabase.cpp +++ b/src/gui/text/windows/qwindowsdirectwritefontdatabase.cpp @@ -51,8 +51,6 @@ QT_BEGIN_NAMESPACE -#ifdef QT_USE_DIRECTWRITE3 - // Defined in gui/text/qfontdatabase.cpp Q_GUI_EXPORT QFontDatabase::WritingSystem qt_writing_system_for_script(int script); @@ -473,6 +471,4 @@ QFont QWindowsDirectWriteFontDatabase::defaultFont() const return QFont(QStringLiteral("Segoe UI")); } -#endif // QT_USE_DIRECTWRITE3 - QT_END_NAMESPACE diff --git a/src/gui/text/windows/qwindowsdirectwritefontdatabase_p.h b/src/gui/text/windows/qwindowsdirectwritefontdatabase_p.h index 5637b5dfb0..f0ca67a208 100644 --- a/src/gui/text/windows/qwindowsdirectwritefontdatabase_p.h +++ b/src/gui/text/windows/qwindowsdirectwritefontdatabase_p.h @@ -51,9 +51,11 @@ // We mean it. // -#include "qwindowsfontdatabasebase_p.h" +#include + +QT_REQUIRE_CONFIG(directwrite3); -#include +#include "qwindowsfontdatabasebase_p.h" #include struct IDWriteFactory; @@ -63,8 +65,6 @@ struct IDWriteLocalizedStrings; QT_BEGIN_NAMESPACE -#ifdef QT_USE_DIRECTWRITE3 - class Q_GUI_EXPORT QWindowsDirectWriteFontDatabase : public QWindowsFontDatabaseBase { Q_DISABLE_COPY_MOVE(QWindowsDirectWriteFontDatabase) @@ -89,8 +89,6 @@ private: QHash m_populatedFonts; }; -#endif // QT_USE_DIRECTWRITE3 - QT_END_NAMESPACE #endif // QWINDOWSDIRECTWRITEFONTDATABASE_P_H diff --git a/src/gui/text/windows/qwindowsfontdatabase.cpp b/src/gui/text/windows/qwindowsfontdatabase.cpp index 7af20df94c..e20b53c7c0 100644 --- a/src/gui/text/windows/qwindowsfontdatabase.cpp +++ b/src/gui/text/windows/qwindowsfontdatabase.cpp @@ -40,12 +40,12 @@ #include "qwindowsfontdatabase_p.h" #include "qwindowsfontdatabase_ft_p.h" // for default font #include "qwindowsfontengine_p.h" -#include "qwindowsfontenginedirectwrite_p.h" #include #include #include #include +#include #include #include @@ -56,21 +56,20 @@ #include -#if !defined(QT_NO_DIRECTWRITE) -# if defined(QT_USE_DIRECTWRITE2) -# include -# else -# include +#if QT_CONFIG(directwrite) +# if QT_CONFIG(directwrite3) +# include "qwindowsdirectwritefontdatabase_p.h" # endif +# include # include -# include "qwindowsdirectwritefontdatabase_p.h" +# include "qwindowsfontenginedirectwrite_p.h" #endif QT_BEGIN_NAMESPACE Q_LOGGING_CATEGORY(lcQpaFonts, "qt.qpa.fonts") -#ifndef QT_NO_DIRECTWRITE +#if QT_CONFIG(directwrite) // ### fixme: Consider direct linking of dwrite.dll once Windows Vista pre SP2 is dropped (QTBUG-49711) typedef HRESULT (WINAPI *DWriteCreateFactoryType)(DWRITE_FACTORY_TYPE, const IID &, IUnknown **); @@ -758,7 +757,7 @@ QFontEngine *QWindowsFontDatabase::fontEngine(const QByteArray &fontData, qreal EmbeddedFont font(fontData); QFontEngine *fontEngine = 0; -#if !defined(QT_NO_DIRECTWRITE) +#if QT_CONFIG(directwrite) if (!useDirectWrite(hintingPreference)) #endif { diff --git a/src/gui/text/windows/qwindowsfontdatabasebase.cpp b/src/gui/text/windows/qwindowsfontdatabasebase.cpp index 6c32b40549..8aa2d13b03 100644 --- a/src/gui/text/windows/qwindowsfontdatabasebase.cpp +++ b/src/gui/text/windows/qwindowsfontdatabasebase.cpp @@ -44,13 +44,11 @@ #include #include -#if !defined(QT_NO_DIRECTWRITE) -# if defined(QT_USE_DIRECTWRITE3) +#if QT_CONFIG(directwrite) +# if QT_CONFIG(directwrite3) # include -# elif defined(QT_USE_DIRECTWRITE2) -# include # else -# include +# include # endif # include # include "qwindowsfontenginedirectwrite_p.h" @@ -604,14 +602,11 @@ void QWindowsFontDatabaseBase::createDirectWriteFactory(IDWriteFactory **factory return; IUnknown *result = nullptr; -# if defined(QT_USE_DIRECTWRITE3) +# if QT_CONFIG(directwrite3) dWriteCreateFactory(DWRITE_FACTORY_TYPE_SHARED, __uuidof(IDWriteFactory3), &result); # endif - -# if defined(QT_USE_DIRECTWRITE2) if (result == nullptr) dWriteCreateFactory(DWRITE_FACTORY_TYPE_SHARED, __uuidof(IDWriteFactory2), &result); -# endif if (result == nullptr) { if (FAILED(dWriteCreateFactory(DWRITE_FACTORY_TYPE_SHARED, __uuidof(IDWriteFactory), &result))) { diff --git a/src/gui/text/windows/qwindowsfontdatabasebase_p.h b/src/gui/text/windows/qwindowsfontdatabasebase_p.h index 7f712a2323..4e0324183d 100644 --- a/src/gui/text/windows/qwindowsfontdatabasebase_p.h +++ b/src/gui/text/windows/qwindowsfontdatabasebase_p.h @@ -52,11 +52,12 @@ // #include +#include #include #include #include -#if !defined(QT_NO_DIRECTWRITE) +#if QT_CONFIG(directwrite) struct IDWriteFactory; struct IDWriteGdiInterop; struct IDWriteFontFace; @@ -78,7 +79,7 @@ public: bool clearTypeEnabled = false; qreal fontSmoothingGamma; HDC hdc = 0; -#if !defined(QT_NO_DIRECTWRITE) +#if QT_CONFIG(directwrite) IDWriteFactory *directWriteFactory = nullptr; IDWriteGdiInterop *directWriteGdiInterop = nullptr; #endif @@ -96,7 +97,7 @@ public: static void setDefaultVerticalDPI(int d); static QSharedPointer data(); -#if !defined(QT_NO_DIRECTWRITE) +#if QT_CONFIG(directwrite) static void createDirectWriteFactory(IDWriteFactory **factory); #endif static QFont systemDefaultFont(); @@ -125,7 +126,7 @@ public: protected: -#if !defined(QT_NO_DIRECTWRITE) +#if QT_CONFIG(directwrite) IDWriteFontFace *createDirectWriteFace(const QByteArray &fontData) const; #endif diff --git a/src/gui/text/windows/qwindowsfontengine.cpp b/src/gui/text/windows/qwindowsfontengine.cpp index 6248041a3d..4eac3afc75 100644 --- a/src/gui/text/windows/qwindowsfontengine.cpp +++ b/src/gui/text/windows/qwindowsfontengine.cpp @@ -41,8 +41,9 @@ #include "qwindowsnativeimage_p.h" #include "qwindowsfontdatabase_p.h" #include -#include "qwindowsfontenginedirectwrite_p.h" - +#if QT_CONFIG(directwrite) +# include "qwindowsfontenginedirectwrite_p.h" +#endif #include #include // glyph_metrics_t #include @@ -52,6 +53,7 @@ #include #include #include +#include #include #include @@ -65,7 +67,7 @@ #include -#if !defined(QT_NO_DIRECTWRITE) +#if QT_CONFIG(directwrite) # include # include #endif diff --git a/src/gui/text/windows/qwindowsfontenginedirectwrite.cpp b/src/gui/text/windows/qwindowsfontenginedirectwrite.cpp index d96e65a532..c17139ab8b 100644 --- a/src/gui/text/windows/qwindowsfontenginedirectwrite.cpp +++ b/src/gui/text/windows/qwindowsfontenginedirectwrite.cpp @@ -37,8 +37,6 @@ ** ****************************************************************************/ -#ifndef QT_NO_DIRECTWRITE - #include "qwindowsfontenginedirectwrite_p.h" #include "qwindowsfontdatabase_p.h" @@ -53,11 +51,7 @@ #include #include -#if defined(QT_USE_DIRECTWRITE2) -# include -#else -# include -#endif +#include #include @@ -705,7 +699,6 @@ QImage QWindowsFontEngineDirectWrite::imageForGlyph(glyph_t t, const int height = boundingRect.height() - 1; QImage image; -#if defined(QT_USE_DIRECTWRITE2) HRESULT hr = DWRITE_E_NOCOLOR; IDWriteColorGlyphRunEnumerator *enumerator = 0; IDWriteFactory2 *factory2 = nullptr; @@ -722,14 +715,11 @@ QImage QWindowsFontEngineDirectWrite::imageForGlyph(glyph_t t, &enumerator); image = QImage(width, height, QImage::Format_ARGB32_Premultiplied); image.fill(0); - } else -#endif - { + } else { image = QImage(width, height, QImage::Format_RGB32); image.fill(0xffffffff); } -#if defined(QT_USE_DIRECTWRITE2) BOOL ok = true; if (SUCCEEDED(hr)) { @@ -786,9 +776,7 @@ QImage QWindowsFontEngineDirectWrite::imageForGlyph(glyph_t t, break; } } - } else -#endif - { + } else { float r, g, b, a; if (glyphFormat == QFontEngine::Format_ARGB) { r = float(color.redF()); @@ -1026,5 +1014,3 @@ QImage QWindowsFontEngineDirectWrite::bitmapForGlyph(glyph_t glyph, QFixed subPi } QT_END_NAMESPACE - -#endif // QT_NO_DIRECTWRITE diff --git a/src/gui/text/windows/qwindowsfontenginedirectwrite_p.h b/src/gui/text/windows/qwindowsfontenginedirectwrite_p.h index 6e79190ce4..5be021d37a 100644 --- a/src/gui/text/windows/qwindowsfontenginedirectwrite_p.h +++ b/src/gui/text/windows/qwindowsfontenginedirectwrite_p.h @@ -51,9 +51,10 @@ // We mean it. // -#include +#include +#include -#ifndef QT_NO_DIRECTWRITE +QT_REQUIRE_CONFIG(directwrite); #include #include @@ -147,6 +148,4 @@ private: QT_END_NAMESPACE -#endif // QT_NO_DIRECTWRITE - #endif // QWINDOWSFONTENGINEDIRECTWRITE_H diff --git a/src/plugins/platforms/windows/qwindowsintegration.cpp b/src/plugins/platforms/windows/qwindowsintegration.cpp index 9503d48bdb..295bce1058 100644 --- a/src/plugins/platforms/windows/qwindowsintegration.cpp +++ b/src/plugins/platforms/windows/qwindowsintegration.cpp @@ -48,7 +48,8 @@ #include "qwindowsscreen.h" #include "qwindowstheme.h" #include "qwindowsservices.h" -#ifdef QT_USE_DIRECTWRITE3 +#include +#if QT_CONFIG(directwrite3) #include #endif #ifndef QT_NO_FREETYPE @@ -490,7 +491,7 @@ QWindowsStaticOpenGLContext *QWindowsIntegration::staticOpenGLContext() QPlatformFontDatabase *QWindowsIntegration::fontDatabase() const { if (!d->m_fontDatabase) { -#ifdef QT_USE_DIRECTWRITE3 +#if QT_CONFIG(directwrite3) if (d->m_options & QWindowsIntegration::FontDatabaseDirectWrite) d->m_fontDatabase = new QWindowsDirectWriteFontDatabase; else -- cgit v1.2.3