diff options
author | Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com> | 2010-10-12 10:30:45 (GMT) |
---|---|---|
committer | Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com> | 2010-10-12 11:00:46 (GMT) |
commit | 354246566cf86f687ee897f95586ac17b5deb35c (patch) | |
tree | 3e0fe9f15dc3267b898031dc43c2b5b7721b0ddf /src/gui/text/qfontengine_ft_p.h | |
parent | 9de173661019a5eb819ff75a43c1261a3b60e005 (diff) | |
download | Qt-354246566cf86f687ee897f95586ac17b5deb35c.zip Qt-354246566cf86f687ee897f95586ac17b5deb35c.tar.gz Qt-354246566cf86f687ee897f95586ac17b5deb35c.tar.bz2 |
Fix text position with OpenGL engine and Freetype
If you use the OpenGL engine, the left bearing of
the glyph was incorrectly retrieved from the system
as the glyph was queried with the wrong format, and
adjustments for antialiasing were not applied. To
make the position identical to painting with, new
API was added to QFontEngine (The bounding box of
a glyph is also not logically necessarily the same
thing as the bounding box of the rasterized glyph.)
Done-with: Trond
Task-number: QTBUG-14410
Diffstat (limited to 'src/gui/text/qfontengine_ft_p.h')
-rw-r--r-- | src/gui/text/qfontengine_ft_p.h | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/src/gui/text/qfontengine_ft_p.h b/src/gui/text/qfontengine_ft_p.h index 72f7d9f..1a1cadb 100644 --- a/src/gui/text/qfontengine_ft_p.h +++ b/src/gui/text/qfontengine_ft_p.h @@ -130,13 +130,6 @@ private: class Q_GUI_EXPORT QFontEngineFT : public QFontEngine { public: - enum GlyphFormat { - Format_None, - Format_Render = Format_None, - Format_Mono, - Format_A8, - Format_A32 - }; /* we don't cache glyphs that are too large anyway, so we can make this struct rather small */ struct Glyph { @@ -242,6 +235,8 @@ private: virtual void recalcAdvances(QGlyphLayout *glyphs, QTextEngine::ShaperFlags flags) const; virtual QImage alphaMapForGlyph(glyph_t); virtual QImage alphaRGBMapForGlyph(glyph_t, QFixed subPixelPosition, int margin, const QTransform &t); + virtual glyph_metrics_t alphaMapBoundingBox(glyph_t glyph, const QTransform &matrix, + QFontEngine::GlyphFormat format); virtual void removeGlyphFromCache(glyph_t glyph); virtual int glyphCount() const; @@ -311,7 +306,7 @@ protected: bool embeddedbitmap; private: - QFontEngineFT::Glyph *loadGlyphMetrics(QGlyphSet *set, uint glyph) const; + QFontEngineFT::Glyph *loadGlyphMetrics(QGlyphSet *set, uint glyph, GlyphFormat format) const; GlyphFormat defaultFormat; FT_Matrix matrix; |