summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKonstantin Ritt <ritt.ks@gmail.com>2014-03-05 09:00:31 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-05 13:46:15 +0100
commit9f1089531d75b0a831e03c3a31ef8b4e5c0b54f4 (patch)
tree1e3013e61f71c9a872507993256d7c2c07452af9
parente69284db08966cbe907df4b3cdc58fb9f9ee5dc4 (diff)
Make QFontEngine::type() non-virtual
Change-Id: I24ece90d6d8f96dad0c41a474a491b4ea96d97c3 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
-rw-r--r--src/gui/text/qfontengine.cpp29
-rw-r--r--src/gui/text/qfontengine_ft.cpp1
-rw-r--r--src/gui/text/qfontengine_ft_p.h3
-rw-r--r--src/gui/text/qfontengine_p.h21
-rw-r--r--src/gui/text/qfontengine_qpa.cpp8
-rw-r--r--src/gui/text/qfontengine_qpa_p.h2
-rw-r--r--src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm2
-rw-r--r--src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h2
-rw-r--r--src/plugins/platforms/windows/qwindowsfontengine.cpp8
-rw-r--r--src/plugins/platforms/windows/qwindowsfontengine.h2
-rw-r--r--src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp9
-rw-r--r--src/plugins/platforms/windows/qwindowsfontenginedirectwrite.h2
12 files changed, 33 insertions, 56 deletions
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 *> 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<const uchar *>(data.constData())), dataSize(data.size())
+ : QFontEngine(QPF2),
+ fontData(reinterpret_cast<const uchar *>(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<qreal>());
}
-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<QWindowsFontEngineData> &fontEngineData) :
+ const QSharedPointer<QWindowsFontEngineData> &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<QWindowsFontEngineData> &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<QWindowsFontEngineData> &fontEngineData() const { return m_fontEngineData; }
static QString fontNameSubstitute(const QString &familyName);