Move setter for QFont::HintingPreference to QFontEngineFT.
authorAndreas Hartmetz <andreas.hartmetz@kdab.com>
Thu, 4 Jun 2015 16:07:30 +0000 (18:07 +0200)
committerSérgio Martins <sergio.martins@kdab.com>
Fri, 14 Aug 2015 19:07:11 +0000 (19:07 +0000)
Preparation for also using it from QCoreTextFontDatabase.

Change-Id: I9cbef59c21f343a88a5cb3fdbee1ed4791d7a36e
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
src/gui/text/qfontengine_ft.cpp
src/gui/text/qfontengine_ft_p.h
src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp

index 37be0afccfd593ffb6ee8d43233104e5560a16ee..246df127ad1a664fc93301cbb319a79d9c3529eb 100644 (file)
@@ -99,6 +99,13 @@ static bool ft_getSfntTable(void *user_data, uint tag, uchar *buffer, uint *leng
 
 static QFontEngineFT::Glyph emptyGlyph = {0, 0, 0, 0, 0, 0, 0, 0};
 
+static const QFontEngine::HintStyle ftInitialDefaultHintStyle =
+#ifdef Q_OS_WIN
+    QFontEngineFT::HintFull;
+#else
+    QFontEngineFT::HintNone;
+#endif
+
 // -------------------------- Freetype support ------------------------------
 
 class QtFreetypeData
@@ -629,11 +636,7 @@ QFontEngineFT::QFontEngineFT(const QFontDef &fd)
     antialias = true;
     freetype = 0;
     default_load_flags = FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH;
-#ifndef Q_OS_WIN
-    default_hint_style = HintNone;
-#else
-    default_hint_style = HintFull;
-#endif
+    default_hint_style = ftInitialDefaultHintStyle;
     subpixelType = Subpixel_None;
     lcdFilterType = 0;
 #if defined(FT_LCD_FILTER_H)
@@ -760,6 +763,24 @@ bool QFontEngineFT::init(FaceId faceId, bool antialias, GlyphFormat format,
     return true;
 }
 
+void QFontEngineFT::setQtDefaultHintStyle(QFont::HintingPreference hintingPreference)
+{
+    switch (hintingPreference) {
+    case QFont::PreferNoHinting:
+        setDefaultHintStyle(HintNone);
+        break;
+    case QFont::PreferFullHinting:
+        setDefaultHintStyle(HintFull);
+        break;
+    case QFont::PreferVerticalHinting:
+        setDefaultHintStyle(HintLight);
+        break;
+    case QFont::PreferDefaultHinting:
+        setDefaultHintStyle(ftInitialDefaultHintStyle);
+        break;
+    }
+}
+
 void QFontEngineFT::setDefaultHintStyle(HintStyle style)
 {
     default_hint_style = style;
index 7b28a4064fbe84c6408f7a17a76c497db4235eac..4b32f078e5f4e8cab39b730a62eb3f226b297ad2 100644 (file)
@@ -281,7 +281,7 @@ private:
 
     virtual int getPointInOutline(glyph_t glyph, int flags, quint32 point, QFixed *xpos, QFixed *ypos, quint32 *nPoints) Q_DECL_OVERRIDE;
 
-
+    void setQtDefaultHintStyle(QFont::HintingPreference hintingPreference);
     virtual void setDefaultHintStyle(HintStyle style) Q_DECL_OVERRIDE;
 
     virtual QFontEngine *cloneWithSize(qreal pixelSize) const Q_DECL_OVERRIDE;
index c41061a9fd572cd64b821bd7b3bbc444a850d6a4..b04ae8ee52cff5ce60928a8f61f6656232c11a08 100644 (file)
@@ -76,24 +76,6 @@ void QBasicFontDatabase::populateFontDatabase()
     }
 }
 
-inline static void setHintingPreference(QFontEngine *engine, QFont::HintingPreference hintingPreference)
-{
-    switch (hintingPreference) {
-    case QFont::PreferNoHinting:
-        engine->setDefaultHintStyle(QFontEngineFT::HintNone);
-        break;
-    case QFont::PreferFullHinting:
-        engine->setDefaultHintStyle(QFontEngineFT::HintFull);
-        break;
-    case QFont::PreferVerticalHinting:
-        engine->setDefaultHintStyle(QFontEngineFT::HintLight);
-        break;
-    case QFont::PreferDefaultHinting:
-        // Leave it as it is
-        break;
-    }
-}
-
 QFontEngine *QBasicFontDatabase::fontEngine(const QFontDef &fontDef, void *usrPtr)
 {
     FontFile *fontfile = static_cast<FontFile *> (usrPtr);
@@ -119,7 +101,7 @@ QFontEngine *QBasicFontDatabase::fontEngine(const QFontDef &fontDef, void *usrPt
         delete engine;
         engine = 0;
     } else {
-        setHintingPreference(engine, static_cast<QFont::HintingPreference>(fontDef.hintingPreference));
+        engine->setQtDefaultHintStyle(static_cast<QFont::HintingPreference>(fontDef.hintingPreference));
     }
 
     return engine;
@@ -172,7 +154,7 @@ QFontEngine *QBasicFontDatabase::fontEngine(const QByteArray &fontData, qreal pi
     }
 
     fe->updateFamilyNameAndStyle();
-    setHintingPreference(fe, hintingPreference);
+    fe->setQtDefaultHintStyle(static_cast<QFont::HintingPreference>(fontDef.hintingPreference));
 
     return fe;
 }