From af48e0ba36aed330e8b262687e3192d7e09796f7 Mon Sep 17 00:00:00 2001 From: Jiang Jiang Date: Mon, 23 Jan 2012 15:06:41 +0100 Subject: Move glyphMargin() to QFontEngine glyphMargin() support for QTextureGlyphCache is implemented in respective font engines, thus this function is platform dependent. Before Qt 5 the code is guarded in macros like #ifdef Q_WS_MAC, now we should move them into QFontEngine and its subclasses. So far only Windows font engines support it. FreeType and Core Text based font engines all ignore it. Change-Id: Ia14016533d8fbfaacf848a7d3bc928f8197318f5 Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/gui/painting/qpaintengine_raster.cpp | 2 +- src/gui/painting/qtextureglyphcache.cpp | 12 ++++-------- src/gui/painting/qtextureglyphcache_p.h | 2 -- 3 files changed, 5 insertions(+), 11 deletions(-) (limited to 'src/gui/painting') diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp index c53eda4d94..1e2e340c8a 100644 --- a/src/gui/painting/qpaintengine_raster.cpp +++ b/src/gui/painting/qpaintengine_raster.cpp @@ -2747,7 +2747,7 @@ bool QRasterPaintEngine::drawCachedGlyphs(int numGlyphs, const glyph_t *glyphs, else if (depth == 1) rightShift = 3; // divide by 8 - int margin = cache->glyphMargin(); + int margin = fontEngine->glyphMargin(glyphType); const QFixed offs = QFixed::fromReal(aliasedCoordinateDelta); const uchar *bits = image.bits(); for (int i=0; iglyphMargin(m_type); const int paddingDoubled = glyphPadding() * 2; bool supportsSubPixelPositions = fontEngine->supportsSubPixelPositions(); @@ -274,7 +274,7 @@ void QTextureGlyphCache::fillInPendingGlyphs() QImage QTextureGlyphCache::textureMapForGlyph(glyph_t g, QFixed subPixelPosition) const { if (m_type == QFontEngineGlyphCache::Raster_RGBMask) - return m_current_fontengine->alphaRGBMapForGlyph(g, subPixelPosition, glyphMargin(), m_transform); + return m_current_fontengine->alphaRGBMapForGlyph(g, subPixelPosition, m_transform); else return m_current_fontengine->alphaMapForGlyph(g, subPixelPosition, m_transform); @@ -311,11 +311,6 @@ void QImageTextureGlyphCache::createTextureData(int width, int height) } } -int QImageTextureGlyphCache::glyphMargin() const -{ - return m_type == QFontEngineGlyphCache::Raster_RGBMask ? 2 : 0; -} - void QImageTextureGlyphCache::fillTexture(const Coord &c, glyph_t g, QFixed subPixelPosition) { QImage mask = textureMapForGlyph(g, subPixelPosition); @@ -400,7 +395,8 @@ void QImageTextureGlyphCache::fillTexture(const Coord &c, glyph_t g, QFixed subP #ifdef CACHE_DEBUG // QPainter p(&m_image); // p.drawLine( - QPoint base(c.x + glyphMargin(), c.y + glyphMargin() + c.baseLineY-1); + int margin = m_current_fontengine ? m_current_fontengine->glyphMargin(m_type) : 0; + QPoint base(c.x + margin, c.y + margin + c.baseLineY-1); if (m_image.rect().contains(base)) m_image.setPixel(base, 255); m_image.save(QString::fromLatin1("cache-%1.png").arg(qint64(this))); diff --git a/src/gui/painting/qtextureglyphcache_p.h b/src/gui/painting/qtextureglyphcache_p.h index eb0c968740..8f852b37d3 100644 --- a/src/gui/painting/qtextureglyphcache_p.h +++ b/src/gui/painting/qtextureglyphcache_p.h @@ -120,7 +120,6 @@ public: virtual void createTextureData(int width, int height) = 0; virtual void resizeTextureData(int width, int height) = 0; - virtual int glyphMargin() const { return 0; } virtual int glyphPadding() const { return 0; } virtual void fillTexture(const Coord &coord, glyph_t glyph, QFixed subPixelPosition) = 0; @@ -170,7 +169,6 @@ class Q_GUI_EXPORT QImageTextureGlyphCache : public QTextureGlyphCache public: QImageTextureGlyphCache(QFontEngineGlyphCache::Type type, const QTransform &matrix) : QTextureGlyphCache(type, matrix) { } - virtual int glyphMargin() const; virtual void createTextureData(int width, int height); virtual void resizeTextureData(int width, int height); virtual void fillTexture(const Coord &c, glyph_t glyph, QFixed subPixelPosition); -- cgit v1.2.3