diff options
author | Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com> | 2010-03-26 15:56:44 (GMT) |
---|---|---|
committer | Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com> | 2010-03-29 12:10:09 (GMT) |
commit | 3bdff93c991bfabcaa729a89a2b171c562633ced (patch) | |
tree | 552323ceba27a1b8bd5551cda789ded0e7791128 /src/gui/painting/qpainter.cpp | |
parent | 732fbde53bd39d9b99e65e4aad7b028df246fce2 (diff) | |
download | Qt-3bdff93c991bfabcaa729a89a2b171c562633ced.zip Qt-3bdff93c991bfabcaa729a89a2b171c562633ced.tar.gz Qt-3bdff93c991bfabcaa729a89a2b171c562633ced.tar.bz2 |
Implement proper QStaticText support in QPaintBuffer
Use qt_draw_glyphs() to implement a QPaintBuffer::drawStaticText() which
will actually replay via drawStaticTextItem() on engines that support
it.
Task-number: QTBUG-9064
Reviewed-by: Gunnar
Diffstat (limited to 'src/gui/painting/qpainter.cpp')
-rw-r--r-- | src/gui/painting/qpainter.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp index 93f2265..7b5fcc2 100644 --- a/src/gui/painting/qpainter.cpp +++ b/src/gui/painting/qpainter.cpp @@ -5720,6 +5720,16 @@ void QPainterPrivate::drawGlyphs(const quint32 *glyphArray, const QPointF *posit QFontEngine *fontEngine = state->font.d->engineForScript(QUnicodeTables::Common); + while (fontEngine->type() == QFontEngine::Multi) { + // Pick engine based on first glyph in array if we are using a multi engine. + // (all glyphs must be for same font) + int engineIdx = 0; + if (glyphCount > 0) + engineIdx = glyphArray[0] >> 24; + + fontEngine = static_cast<QFontEngineMulti *>(fontEngine)->engine(engineIdx); + } + QVarLengthArray<QFixedPoint, 128> positions; for (int i=0; i<glyphCount; ++i) { QFixedPoint fp = QFixedPoint::fromPointF(positionArray[i]); |