From 9f1089531d75b0a831e03c3a31ef8b4e5c0b54f4 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Wed, 5 Mar 2014 09:00:31 +0200 Subject: Make QFontEngine::type() non-virtual Change-Id: I24ece90d6d8f96dad0c41a474a491b4ea96d97c3 Reviewed-by: Lars Knoll --- src/gui/text/qfontengine.cpp | 29 +++++++++------------- src/gui/text/qfontengine_ft.cpp | 1 + src/gui/text/qfontengine_ft_p.h | 3 --- src/gui/text/qfontengine_p.h | 21 +++++++++------- src/gui/text/qfontengine_qpa.cpp | 8 ++---- src/gui/text/qfontengine_qpa_p.h | 2 -- .../fontdatabases/mac/qfontengine_coretext.mm | 2 ++ .../fontdatabases/mac/qfontengine_coretext_p.h | 2 -- .../platforms/windows/qwindowsfontengine.cpp | 8 ++---- src/plugins/platforms/windows/qwindowsfontengine.h | 2 -- .../windows/qwindowsfontenginedirectwrite.cpp | 9 ++----- .../windows/qwindowsfontenginedirectwrite.h | 2 -- 12 files changed, 33 insertions(+), 56 deletions(-) (limited to 'src') diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp index 75e55a5d23..c6674a1b12 100644 --- a/src/gui/text/qfontengine.cpp +++ b/src/gui/text/qfontengine.cpp @@ -220,8 +220,8 @@ Q_AUTOTEST_EXPORT QList QFontEngine_stopCollectingEngines() // QFontEngine -QFontEngine::QFontEngine() - : ref(0), +QFontEngine::QFontEngine(Type type) + : m_type(type), ref(0), font_(0), font_destroy_func(0), face_(0), face_destroy_func(0) { @@ -1369,7 +1369,15 @@ QFontEngine::GlyphCacheEntry &QFontEngine::GlyphCacheEntry::operator=(const Glyp // ------------------------------------------------------------------ QFontEngineBox::QFontEngineBox(int size) - : _size(size) + : QFontEngine(Box), + _size(size) +{ + cache_cost = sizeof(QFontEngineBox); +} + +QFontEngineBox::QFontEngineBox(Type type, int size) + : QFontEngine(type), + _size(size) { cache_cost = sizeof(QFontEngineBox); } @@ -1502,11 +1510,6 @@ bool QFontEngineBox::canRender(const QChar *, int) const return true; } -QFontEngine::Type QFontEngineBox::type() const -{ - return Box; -} - QImage QFontEngineBox::alphaMapForGlyph(glyph_t) { QImage image(_size, _size, QImage::Format_Indexed8); @@ -1538,6 +1541,7 @@ static inline glyph_t stripped(glyph_t glyph) { return glyph & 0x00ffffff; } QFontEngineMulti::QFontEngineMulti(int engineCount) + : QFontEngine(Multi) { engines.fill(0, engineCount); cache_cost = 0; @@ -1968,13 +1972,4 @@ QImage QFontEngineMulti::alphaRGBMapForGlyph(glyph_t glyph, QFixed subPixelPosit return engine(which)->alphaRGBMapForGlyph(stripped(glyph), subPixelPosition, t); } -QTestFontEngine::QTestFontEngine(int size) - : QFontEngineBox(size) -{} - -QFontEngine::Type QTestFontEngine::type() const -{ - return TestFontEngine; -} - QT_END_NAMESPACE diff --git a/src/gui/text/qfontengine_ft.cpp b/src/gui/text/qfontengine_ft.cpp index 892fc22586..f8b7fc3d5c 100644 --- a/src/gui/text/qfontengine_ft.cpp +++ b/src/gui/text/qfontengine_ft.cpp @@ -635,6 +635,7 @@ static void convoluteBitmap(const uchar *src, uchar *dst, int width, int height, } QFontEngineFT::QFontEngineFT(const QFontDef &fd) + : QFontEngine(Freetype) { fontDef = fd; matrix.xx = 0x10000; diff --git a/src/gui/text/qfontengine_ft_p.h b/src/gui/text/qfontengine_ft_p.h index a322ab7ea4..8bdf991174 100644 --- a/src/gui/text/qfontengine_ft_p.h +++ b/src/gui/text/qfontengine_ft_p.h @@ -228,9 +228,6 @@ private: virtual glyph_t glyphIndex(uint ucs4) const; void doKerning(QGlyphLayout *, ShaperFlags) const; - inline virtual Type type() const - { return QFontEngine::Freetype; } - virtual void getUnscaledGlyph(glyph_t glyph, QPainterPath *path, glyph_metrics_t *metrics); virtual bool supportsTransformation(const QTransform &transform) const; diff --git a/src/gui/text/qfontengine_p.h b/src/gui/text/qfontengine_p.h index f5a894506f..5e40abbda6 100644 --- a/src/gui/text/qfontengine_p.h +++ b/src/gui/text/qfontengine_p.h @@ -125,9 +125,10 @@ public: }; Q_DECLARE_FLAGS(ShaperFlags, ShaperFlag) - QFontEngine(); virtual ~QFontEngine(); + inline Type type() const { return m_type; } + // all of these are in unscaled metrics if the engine supports uncsaled metrics, // otherwise in design metrics struct Properties { @@ -230,8 +231,6 @@ public: virtual bool supportsTransformation(const QTransform &transform) const; - virtual Type type() const = 0; - virtual int glyphCount() const; virtual int glyphMargin(GlyphFormat format) { return format == Format_A32 ? 2 : 0; } @@ -260,6 +259,10 @@ public: }; virtual void setDefaultHintStyle(HintStyle) { } +private: + const Type m_type; + +public: QAtomicInt ref; QFontDef fontDef; @@ -294,6 +297,8 @@ public: inline QVariant userData() const { return m_userData; } protected: + explicit QFontEngine(Type type); + QFixed lastRightBearing(const QGlyphLayout &glyphs, bool round = false); inline void setUserData(const QVariant &userData) { m_userData = userData; } @@ -361,9 +366,11 @@ public: virtual bool canRender(const QChar *string, int len) const; - virtual Type type() const; inline int size() const { return _size; } +protected: + explicit QFontEngineBox(Type type, int size); + private: friend class QFontPrivate; int _size; @@ -403,9 +410,6 @@ public: virtual qreal minLeftBearing() const; virtual qreal minRightBearing() const; - virtual inline Type type() const - { return QFontEngine::Multi; } - virtual bool canRender(const QChar *string, int len) const; QFontEngine *engine(int at) const @@ -430,8 +434,7 @@ protected: class QTestFontEngine : public QFontEngineBox { public: - QTestFontEngine(int size); - virtual Type type() const; + inline QTestFontEngine(int size) : QFontEngineBox(TestFontEngine, size) {} }; QT_END_NAMESPACE diff --git a/src/gui/text/qfontengine_qpa.cpp b/src/gui/text/qfontengine_qpa.cpp index b0bfd02448..e9252b328e 100644 --- a/src/gui/text/qfontengine_qpa.cpp +++ b/src/gui/text/qfontengine_qpa.cpp @@ -237,7 +237,8 @@ static inline unsigned int getChar(const QChar *str, int &i, const int len) } QFontEngineQPA::QFontEngineQPA(const QFontDef &def, const QByteArray &data) - : fontData(reinterpret_cast(data.constData())), dataSize(data.size()) + : QFontEngine(QPF2), + fontData(reinterpret_cast(data.constData())), dataSize(data.size()) { fontDef = def; cache_cost = 100; @@ -510,11 +511,6 @@ QFixed QFontEngineQPA::lineThickness() const return QFixed::fromReal(extractHeaderField(fontData, Tag_LineThickness).value()); } -QFontEngine::Type QFontEngineQPA::type() const -{ - return QFontEngine::QPF2; -} - bool QFontEngineQPA::isValid() const { return fontData && dataSize && (cmapOffset || externalCMap) diff --git a/src/gui/text/qfontengine_qpa_p.h b/src/gui/text/qfontengine_qpa_p.h index 326c905caa..35bf9ad74c 100644 --- a/src/gui/text/qfontengine_qpa_p.h +++ b/src/gui/text/qfontengine_qpa_p.h @@ -182,8 +182,6 @@ public: QFixed underlinePosition() const; QFixed lineThickness() const; - Type type() const; - virtual int glyphCount() const { return glyphMapEntries; } bool isValid() const; diff --git a/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm b/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm index 53c4c01a73..3c30df6efb 100644 --- a/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm +++ b/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm @@ -85,6 +85,7 @@ CGAffineTransform qt_transform_from_fontdef(const QFontDef &fontDef) } QCoreTextFontEngine::QCoreTextFontEngine(CTFontRef font, const QFontDef &def) + : QFontEngine(Mac) { fontDef = def; transform = qt_transform_from_fontdef(fontDef); @@ -95,6 +96,7 @@ QCoreTextFontEngine::QCoreTextFontEngine(CTFontRef font, const QFontDef &def) } QCoreTextFontEngine::QCoreTextFontEngine(CGFontRef font, const QFontDef &def) + : QFontEngine(Mac) { fontDef = def; transform = qt_transform_from_fontdef(fontDef); diff --git a/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h b/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h index f6247ca5e6..b9593b983e 100644 --- a/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h +++ b/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h @@ -84,8 +84,6 @@ public: virtual int synthesized() const { return synthesisFlags; } virtual bool supportsSubPixelPositions() const { return true; } - virtual Type type() const { return QFontEngine::Mac; } - void draw(CGContextRef ctx, qreal x, qreal y, const QTextItemInt &ti, int paintDeviceHeight); virtual FaceId faceId() const; diff --git a/src/plugins/platforms/windows/qwindowsfontengine.cpp b/src/plugins/platforms/windows/qwindowsfontengine.cpp index cc2f152bf9..e8e2978ee3 100644 --- a/src/plugins/platforms/windows/qwindowsfontengine.cpp +++ b/src/plugins/platforms/windows/qwindowsfontengine.cpp @@ -272,7 +272,8 @@ int QWindowsFontEngine::getGlyphIndexes(const QChar *str, int numChars, QGlyphLa QWindowsFontEngine::QWindowsFontEngine(const QString &name, HFONT _hfont, bool stockFontIn, LOGFONT lf, - const QSharedPointer &fontEngineData) : + const QSharedPointer &fontEngineData) + : QFontEngine(Win), m_fontEngineData(fontEngineData), _name(name), hfont(_hfont), @@ -771,11 +772,6 @@ qreal QWindowsFontEngine::minRightBearing() const #endif // Q_OS_WINCE } -QFontEngine::Type QWindowsFontEngine::type() const -{ - return QFontEngine::Win; -} - static inline double qt_fixed_to_double(const FIXED &p) { return ((p.value << 16) + p.fract) / 65536.0; } diff --git a/src/plugins/platforms/windows/qwindowsfontengine.h b/src/plugins/platforms/windows/qwindowsfontengine.h index b534798958..0a40082ad2 100644 --- a/src/plugins/platforms/windows/qwindowsfontengine.h +++ b/src/plugins/platforms/windows/qwindowsfontengine.h @@ -110,8 +110,6 @@ public: virtual qreal minLeftBearing() const; virtual qreal minRightBearing() const; - Type type() const; - virtual QImage alphaMapForGlyph(glyph_t t) { return alphaMapForGlyph(t, QTransform()); } virtual QImage alphaMapForGlyph(glyph_t, const QTransform &xform); virtual QImage alphaRGBMapForGlyph(glyph_t t, QFixed subPixelPosition, const QTransform &xform); diff --git a/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp b/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp index 665e767786..b6b554d4b0 100644 --- a/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp +++ b/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp @@ -201,8 +201,8 @@ namespace { QWindowsFontEngineDirectWrite::QWindowsFontEngineDirectWrite(IDWriteFontFace *directWriteFontFace, qreal pixelSize, const QSharedPointer &d) - - : m_fontEngineData(d) + : QFontEngine(DirectWrite) + , m_fontEngineData(d) , m_directWriteFontFace(directWriteFontFace) , m_directWriteBitmapRenderTarget(0) , m_lineThickness(-1) @@ -642,11 +642,6 @@ QImage QWindowsFontEngineDirectWrite::alphaRGBMapForGlyph(glyph_t t, : mask.convertToFormat(QImage::Format_RGB32); } -QFontEngine::Type QWindowsFontEngineDirectWrite::type() const -{ - return QFontEngine::DirectWrite; -} - QFontEngine *QWindowsFontEngineDirectWrite::cloneWithSize(qreal pixelSize) const { QFontEngine *fontEngine = new QWindowsFontEngineDirectWrite(m_directWriteFontFace, diff --git a/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.h b/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.h index c61f1a0635..2da014ddc3 100644 --- a/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.h +++ b/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.h @@ -97,8 +97,6 @@ public: QFontEngine *cloneWithSize(qreal pixelSize) const; - Type type() const; - const QSharedPointer &fontEngineData() const { return m_fontEngineData; } static QString fontNameSubstitute(const QString &familyName); -- cgit v1.2.3