summaryrefslogtreecommitdiffstats
path: root/src/gui
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui')
-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
6 files changed, 27 insertions, 37 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;