diff options
Diffstat (limited to 'src/gui/text/qfontengine_p.h')
-rw-r--r-- | src/gui/text/qfontengine_p.h | 134 |
1 files changed, 56 insertions, 78 deletions
diff --git a/src/gui/text/qfontengine_p.h b/src/gui/text/qfontengine_p.h index 9364b82bed..cd42cc89d7 100644 --- a/src/gui/text/qfontengine_p.h +++ b/src/gui/text/qfontengine_p.h @@ -78,10 +78,6 @@ enum HB_Compat_Error { typedef void (*qt_destroy_func_t) (void *user_data); typedef bool (*qt_get_font_table_func_t) (void *user_data, uint tag, uchar *buffer, uint *length); -const QFont::Weight qt_mediumFontWeight = static_cast<QFont::Weight>(57); -const QFont::Weight qt_extralightFontWeight = static_cast<QFont::Weight>(12); -const QFont::Weight qt_thinFontWeight = static_cast<QFont::Weight>(0); - class Q_GUI_EXPORT QFontEngine { public: @@ -351,26 +347,26 @@ public: QFontEngineBox(int size); ~QFontEngineBox(); - virtual glyph_t glyphIndex(uint ucs4) const; - virtual bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, ShaperFlags flags) const; - virtual void recalcAdvances(QGlyphLayout *, ShaperFlags) const; + virtual glyph_t glyphIndex(uint ucs4) const Q_DECL_OVERRIDE; + virtual bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, ShaperFlags flags) const Q_DECL_OVERRIDE; + virtual void recalcAdvances(QGlyphLayout *, ShaperFlags) const Q_DECL_OVERRIDE; void draw(QPaintEngine *p, qreal x, qreal y, const QTextItemInt &si); - virtual void addOutlineToPath(qreal x, qreal y, const QGlyphLayout &glyphs, QPainterPath *path, QTextItem::RenderFlags flags); - - virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs); - virtual glyph_metrics_t boundingBox(glyph_t glyph); - virtual QFontEngine *cloneWithSize(qreal pixelSize) const; - - virtual QFixed ascent() const; - virtual QFixed descent() const; - virtual QFixed leading() const; - virtual qreal maxCharWidth() const; - virtual qreal minLeftBearing() const { return 0; } - virtual qreal minRightBearing() const { return 0; } - virtual QImage alphaMapForGlyph(glyph_t); + virtual void addOutlineToPath(qreal x, qreal y, const QGlyphLayout &glyphs, QPainterPath *path, QTextItem::RenderFlags flags) Q_DECL_OVERRIDE; + + virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs) Q_DECL_OVERRIDE; + virtual glyph_metrics_t boundingBox(glyph_t glyph) Q_DECL_OVERRIDE; + virtual QFontEngine *cloneWithSize(qreal pixelSize) const Q_DECL_OVERRIDE; + + virtual QFixed ascent() const Q_DECL_OVERRIDE; + virtual QFixed descent() const Q_DECL_OVERRIDE; + virtual QFixed leading() const Q_DECL_OVERRIDE; + virtual qreal maxCharWidth() const Q_DECL_OVERRIDE; + virtual qreal minLeftBearing() const Q_DECL_OVERRIDE { return 0; } + virtual qreal minRightBearing() const Q_DECL_OVERRIDE { return 0; } + virtual QImage alphaMapForGlyph(glyph_t) Q_DECL_OVERRIDE; - virtual bool canRender(const QChar *string, int len) const; + virtual bool canRender(const QChar *string, int len) const Q_DECL_OVERRIDE; inline int size() const { return _size; } @@ -385,79 +381,61 @@ private: class Q_GUI_EXPORT QFontEngineMulti : public QFontEngine { public: - explicit QFontEngineMulti(int engineCount); + explicit QFontEngineMulti(QFontEngine *engine, int script, const QStringList &fallbackFamilies = QStringList()); ~QFontEngineMulti(); - virtual glyph_t glyphIndex(uint ucs4) const; - virtual bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, ShaperFlags flags) const; - - virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs); - virtual glyph_metrics_t boundingBox(glyph_t glyph); - - virtual void recalcAdvances(QGlyphLayout *, ShaperFlags) const; - virtual void doKerning(QGlyphLayout *, ShaperFlags) const; - virtual void addOutlineToPath(qreal, qreal, const QGlyphLayout &, QPainterPath *, QTextItem::RenderFlags flags); - virtual void getGlyphBearings(glyph_t glyph, qreal *leftBearing = 0, qreal *rightBearing = 0); + virtual glyph_t glyphIndex(uint ucs4) const Q_DECL_OVERRIDE; + virtual bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, ShaperFlags flags) const Q_DECL_OVERRIDE; - virtual QFixed ascent() const; - virtual QFixed descent() const; - virtual QFixed leading() const; - virtual QFixed xHeight() const; - virtual QFixed averageCharWidth() const; - virtual QImage alphaMapForGlyph(glyph_t); - virtual QImage alphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition); - virtual QImage alphaMapForGlyph(glyph_t, const QTransform &t); - virtual QImage alphaMapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform &t); - virtual QImage alphaRGBMapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform &t); + virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs) Q_DECL_OVERRIDE; + virtual glyph_metrics_t boundingBox(glyph_t glyph) Q_DECL_OVERRIDE; - virtual QFixed lineThickness() const; - virtual QFixed underlinePosition() const; - virtual qreal maxCharWidth() const; - virtual qreal minLeftBearing() const; - virtual qreal minRightBearing() const; + virtual void recalcAdvances(QGlyphLayout *, ShaperFlags) const Q_DECL_OVERRIDE; + virtual void doKerning(QGlyphLayout *, ShaperFlags) const Q_DECL_OVERRIDE; + virtual void addOutlineToPath(qreal, qreal, const QGlyphLayout &, QPainterPath *, QTextItem::RenderFlags flags) Q_DECL_OVERRIDE; + virtual void getGlyphBearings(glyph_t glyph, qreal *leftBearing = 0, qreal *rightBearing = 0) Q_DECL_OVERRIDE; - virtual bool canRender(const QChar *string, int len) const; + virtual QFixed ascent() const Q_DECL_OVERRIDE; + virtual QFixed descent() const Q_DECL_OVERRIDE; + virtual QFixed leading() const Q_DECL_OVERRIDE; + virtual QFixed xHeight() const Q_DECL_OVERRIDE; + virtual QFixed averageCharWidth() const Q_DECL_OVERRIDE; + virtual QImage alphaMapForGlyph(glyph_t) Q_DECL_OVERRIDE; + virtual QImage alphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition) Q_DECL_OVERRIDE; + virtual QImage alphaMapForGlyph(glyph_t, const QTransform &t) Q_DECL_OVERRIDE; + virtual QImage alphaMapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform &t) Q_DECL_OVERRIDE; + virtual QImage alphaRGBMapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform &t) Q_DECL_OVERRIDE; - QFontEngine *engine(int at) const - {Q_ASSERT(at < engines.size()); return engines.at(at); } + virtual QFixed lineThickness() const Q_DECL_OVERRIDE; + virtual QFixed underlinePosition() const Q_DECL_OVERRIDE; + virtual qreal maxCharWidth() const Q_DECL_OVERRIDE; + virtual qreal minLeftBearing() const Q_DECL_OVERRIDE; + virtual qreal minRightBearing() const Q_DECL_OVERRIDE; - inline void ensureEngineAt(int at) - { - if (at >= engines.size() || engines.at(at) == 0) - loadEngine(at); - } + virtual bool canRender(const QChar *string, int len) const Q_DECL_OVERRIDE; - virtual bool shouldLoadFontEngineForCharacter(int at, uint ucs4) const; - virtual void setFallbackFamiliesList(const QStringList &) {} + inline int fallbackFamilyCount() const { return m_fallbackFamilies.size(); } + inline QString fallbackFamilyAt(int at) const { return m_fallbackFamilies.at(at); } -protected: - friend class QRawFont; - virtual void loadEngine(int at) = 0; - virtual void ensureFallbackFamiliesQueried() {} - QVector<QFontEngine *> engines; -}; + void setFallbackFamiliesList(const QStringList &fallbackFamilies); -class Q_GUI_EXPORT QFontEngineMultiBasicImpl : public QFontEngineMulti -{ -public: - QFontEngineMultiBasicImpl(QFontEngine *fe, int script, const QStringList &fallbacks); - QFontEngineMultiBasicImpl(QFontEngine *fe, int script); + inline QFontEngine *engine(int at) const + { Q_ASSERT(at < m_engines.size()); return m_engines.at(at); } - void loadEngine(int at); - static QFontEngine* createMultiFontEngine(QFontEngine *fe, int script); + void ensureEngineAt(int at); - int fallbackFamilyCount() const { return fallbackFamilies.size(); } - QString fallbackFamilyAt(int at) const { return fallbackFamilies.at(at); } + static QFontEngine *createMultiFontEngine(QFontEngine *fe, int script); +protected: virtual void ensureFallbackFamiliesQueried(); - virtual void setFallbackFamiliesList(const QStringList &fallbacks); + virtual bool shouldLoadFontEngineForCharacter(int at, uint ucs4) const; + virtual QFontEngine *loadEngine(int at); private: - void init(QFontEngine *fe); - - mutable QStringList fallbackFamilies; - int script; - mutable bool fallbacksQueried; + QVector<QFontEngine *> m_engines; + QStringList m_fallbackFamilies; + const int m_script; + bool m_fallbackFamiliesQueried; }; class QTestFontEngine : public QFontEngineBox |