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 -- 6 files changed, 27 insertions(+), 37 deletions(-) (limited to 'src/gui/text') 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; -- cgit v1.2.3