diff options
author | Jiang Jiang <jiang.jiang@nokia.com> | 2011-11-04 14:47:31 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-11-08 07:43:00 +0100 |
commit | 63eae1bd15ea8aa1e4fc460194e34ecb5fc55b3a (patch) | |
tree | af59cef7a05fffcc04655449ad18371f3719c8ee /src/gui/painting/qpaintengine_raster.cpp | |
parent | 04f6983979021aecd5c3dbb7cc80f864bb4ee56d (diff) |
Fix subpixel positioning support
Move subpixelPositionForX from QTextureGlyphCache to QFontEngine,
since some font engines like QFontEngineFT may need a custom
implementation or tweak it a little bit.
In QRasterPaintEngine::drawCachedGlyphs, do not add aliasedCoodinate
to x offset as that will break subpixel positioning.
Change-Id: Idbcec617509459b80965220ceb07b17737649bbf
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
Diffstat (limited to 'src/gui/painting/qpaintengine_raster.cpp')
-rw-r--r-- | src/gui/painting/qpaintengine_raster.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp index e49bd229e7..d5449a7eb5 100644 --- a/src/gui/painting/qpaintengine_raster.cpp +++ b/src/gui/painting/qpaintengine_raster.cpp @@ -2752,13 +2752,13 @@ bool QRasterPaintEngine::drawCachedGlyphs(int numGlyphs, const glyph_t *glyphs, const uchar *bits = image.bits(); for (int i=0; i<numGlyphs; ++i) { - QFixed subPixelPosition = cache->subPixelPositionForX(positions[i].x); + QFixed subPixelPosition = fontEngine->subPixelPositionForX(positions[i].x); QTextureGlyphCache::GlyphAndSubPixelPosition glyph(glyphs[i], subPixelPosition); const QTextureGlyphCache::Coord &c = cache->coords[glyph]; if (c.isNull()) continue; - int x = qFloor(positions[i].x + offs) + c.baseLineX - margin; + int x = qFloor(positions[i].x) + c.baseLineX - margin; int y = qFloor(positions[i].y + offs) - c.baseLineY - margin; // printf("drawing [%d %d %d %d] baseline [%d %d], glyph: %d, to: %d %d, pos: %d %d\n", |