summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms
diff options
context:
space:
mode:
authorKonstantin Ritt <ritt.ks@gmail.com>2015-02-16 13:00:53 +0400
committerKonstantin Ritt <ritt.ks@gmail.com>2015-03-20 13:44:14 +0000
commit4d54fe8d02d57090d772f50dfc1567783d320b5c (patch)
tree40242be84d4bfa20424761e4e0efaa2eaaf786ff /src/plugins/platforms
parentaf1a99ebb9a8f2415106ab6bfe85fcd77412e740 (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.cpp8
-rw-r--r--src/plugins/platforms/windows/qwindowsfontengine.cpp15
-rw-r--r--src/plugins/platforms/windows/qwindowsfontengine.h4
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;