From 66c2b87547e29a8c31377b6cac959a7d3bd6076b Mon Sep 17 00:00:00 2001 From: Gabriel de Dietrich Date: Thu, 25 Aug 2016 16:01:16 -0700 Subject: Add platform font database support to 'minimal' QPA plugin This commit extends 060e0f6628fd185994911307 by loading the platform font database if there's any. Note that this happens at compile time and depends on QtFontDatabaseSupport. Change-Id: Id073fd949765d9439bbb3f66187b15de444d535f Reviewed-by: Oswald Buddenhagen Reviewed-by: Friedemann Kleint --- .../platforms/minimal/qminimalintegration.cpp | 36 +++++++++++++++++----- .../platforms/minimal/qminimalintegration.h | 3 +- 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/src/plugins/platforms/minimal/qminimalintegration.cpp b/src/plugins/platforms/minimal/qminimalintegration.cpp index 03c72502cb..aa0037f187 100644 --- a/src/plugins/platforms/minimal/qminimalintegration.cpp +++ b/src/plugins/platforms/minimal/qminimalintegration.cpp @@ -44,12 +44,19 @@ #include #include -#if defined(Q_OS_WIN) #include +#if defined(Q_OS_WINRT) +# include +#elif defined(Q_OS_WIN) +# include +# if QT_CONFIG(freetype) +# include +# endif +#elif defined(Q_OS_DARWIN) +# include #elif QT_CONFIG(fontconfig) -#include -#else -#include +# include +# include #endif #if !defined(Q_OS_WIN) @@ -70,6 +77,8 @@ static inline unsigned parseOptions(const QStringList ¶mList) for (const QString ¶m : paramList) { if (param == QLatin1String("enable_fonts")) options |= QMinimalIntegration::EnableFonts; + else if (param == QLatin1String("freetype")) + options |= QMinimalIntegration::FreeTypeFontDatabase; } return options; } @@ -117,12 +126,23 @@ public: QPlatformFontDatabase *QMinimalIntegration::fontDatabase() const { - if (m_options & EnableFonts) { + if (!m_fontDatabase && (m_options & EnableFonts)) { #if QT_CONFIG(fontconfig) - if (!m_fontDatabase) - m_fontDatabase = new QGenericUnixFontDatabase; + m_fontDatabase = new QGenericUnixFontDatabase; +#elif defined(Q_OS_WINRT) + m_fontDatabase = new QWinRTFontDatabase; +#elif defined(Q_OS_WIN) + if (m_options & FreeTypeFontDatabase) { +# if QT_CONFIG(freetype) + m_fontDatabase = new QWindowsFontDatabaseFT; +# endif // freetype + } else { + m_fontDatabase = new QWindowsFontDatabase; + } +#elif defined(Q_OS_DARWIN) + m_fontDatabase = new QCoreTextFontDatabase; #else - return QPlatformIntegration::fontDatabase(); + m_fontDatabase = QPlatformIntegration::fontDatabase(); #endif } if (!m_fontDatabase) diff --git a/src/plugins/platforms/minimal/qminimalintegration.h b/src/plugins/platforms/minimal/qminimalintegration.h index 755664d14d..eaa2f228c5 100644 --- a/src/plugins/platforms/minimal/qminimalintegration.h +++ b/src/plugins/platforms/minimal/qminimalintegration.h @@ -67,7 +67,8 @@ class QMinimalIntegration : public QPlatformIntegration public: enum Options { // Options to be passed on command line or determined from environment DebugBackingStore = 0x1, - EnableFonts = 0x2 + EnableFonts = 0x2, + FreeTypeFontDatabase = 0x4 }; explicit QMinimalIntegration(const QStringList ¶meters); -- cgit v1.2.3