diff options
author | Konstantin Ritt <ritt.ks@gmail.com> | 2015-02-16 13:00:53 +0400 |
---|---|---|
committer | Konstantin Ritt <ritt.ks@gmail.com> | 2015-03-20 13:44:14 +0000 |
commit | 4d54fe8d02d57090d772f50dfc1567783d320b5c (patch) | |
tree | 40242be84d4bfa20424761e4e0efaa2eaaf786ff /src/plugins/platforms | |
parent | af1a99ebb9a8f2415106ab6bfe85fcd77412e740 (diff) |
Simplify QWindowsFontDatabase::createEngine()
Reduce code duplication and improve readability.
Change-Id: Idf53c80077daa9bac03a72acfd2b6c7e3a24ad97
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Diffstat (limited to 'src/plugins/platforms')
-rw-r--r-- | src/plugins/platforms/windows/qwindowsfontdatabase.cpp | 8 | ||||
-rw-r--r-- | src/plugins/platforms/windows/qwindowsfontengine.cpp | 15 | ||||
-rw-r--r-- | src/plugins/platforms/windows/qwindowsfontengine.h | 4 |
3 files changed, 12 insertions, 15 deletions
diff --git a/src/plugins/platforms/windows/qwindowsfontdatabase.cpp b/src/plugins/platforms/windows/qwindowsfontdatabase.cpp index 97a319b63a..5a812c32f4 100644 --- a/src/plugins/platforms/windows/qwindowsfontdatabase.cpp +++ b/src/plugins/platforms/windows/qwindowsfontdatabase.cpp @@ -1735,13 +1735,7 @@ QFontEngine *QWindowsFontDatabase::createEngine(const QFontDef &request, QFontEngine *fe = 0; if (!useDirectWrite) { - HFONT hfont = CreateFontIndirect(&lf); - if (!hfont) { - qErrnoWarning("%s: CreateFontIndirect failed", __FUNCTION__); - hfont = QWindowsFontDatabase::systemFont(); - } - - QWindowsFontEngine *few = new QWindowsFontEngine(request.family, hfont, lf, data); + QWindowsFontEngine *few = new QWindowsFontEngine(request.family, lf, data); if (preferClearTypeAA) few->glyphFormat = QFontEngine::Format_A32; few->initFontInfo(request, dpi); diff --git a/src/plugins/platforms/windows/qwindowsfontengine.cpp b/src/plugins/platforms/windows/qwindowsfontengine.cpp index c25b90e98c..ef2ad110ca 100644 --- a/src/plugins/platforms/windows/qwindowsfontengine.cpp +++ b/src/plugins/platforms/windows/qwindowsfontengine.cpp @@ -264,12 +264,12 @@ int QWindowsFontEngine::getGlyphIndexes(const QChar *str, int numChars, QGlyphLa */ QWindowsFontEngine::QWindowsFontEngine(const QString &name, - HFONT _hfont, LOGFONT lf, + LOGFONT lf, const QSharedPointer<QWindowsFontEngineData> &fontEngineData) : QFontEngine(Win), m_fontEngineData(fontEngineData), _name(name), - hfont(_hfont), + hfont(0), m_logfont(lf), ttf(0), hasOutline(0), @@ -286,6 +286,12 @@ QWindowsFontEngine::QWindowsFontEngine(const QString &name, designAdvancesSize(0) { qCDebug(lcQpaFonts) << __FUNCTION__ << name << lf.lfHeight; + hfont = CreateFontIndirect(&m_logfont); + if (!hfont) { + qErrnoWarning("%s: CreateFontIndirect failed for family '%s'", __FUNCTION__, qPrintable(name)); + hfont = QWindowsFontDatabase::systemFont(); + } + HDC hdc = m_fontEngineData->hdc; SelectObject(hdc, hfont); const BOOL res = GetTextMetrics(hdc, &tm); @@ -1361,11 +1367,8 @@ QFontEngine *QWindowsMultiFontEngine::loadEngine(int at) // Get here if original font is not DirectWrite or DirectWrite creation failed for some // reason - HFONT hfont = CreateFontIndirect(&lf); - if (hfont == 0) - hfont = QWindowsFontDatabase::systemFont(); - return new QWindowsFontEngine(fam, hfont, lf, data); + return new QWindowsFontEngine(fam, lf, data); } bool QWindowsFontEngine::supportsTransformation(const QTransform &transform) const diff --git a/src/plugins/platforms/windows/qwindowsfontengine.h b/src/plugins/platforms/windows/qwindowsfontengine.h index 703c978eb6..6df69c34db 100644 --- a/src/plugins/platforms/windows/qwindowsfontengine.h +++ b/src/plugins/platforms/windows/qwindowsfontengine.h @@ -63,7 +63,7 @@ class QWindowsFontEngine : public QFontEngine friend class QWindowsMultiFontEngine; public: - QWindowsFontEngine(const QString &name, HFONT hfont, LOGFONT lf, + QWindowsFontEngine(const QString &name, LOGFONT lf, const QSharedPointer<QWindowsFontEngineData> &fontEngineData); ~QWindowsFontEngine(); @@ -137,7 +137,7 @@ private: const QString _name; QString uniqueFamilyName; - const HFONT hfont; + HFONT hfont; const LOGFONT m_logfont; uint ttf : 1; uint hasOutline : 1; |