diff options
author | Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com> | 2011-05-09 09:07:02 +0200 |
---|---|---|
committer | Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com> | 2011-05-23 13:38:22 +0200 |
commit | 5feefb0c039dae04290d1fca7c2f24276b6f7582 (patch) | |
tree | afdf2f260f2a150ec048809313d8207f0e04612c /src/gui/text/qglyphrun.cpp | |
parent | 6e99936502345eab6ef7862e2cb3740bcc1caef2 (diff) |
Enablers for TextInput
In order to use the scene graph text node in TextInput, we
need enablers. Most of this is to enable selections,
which in turn means we need to be able to extract a certain
set of glyphs from a QTextLine.
Diffstat (limited to 'src/gui/text/qglyphrun.cpp')
-rw-r--r-- | src/gui/text/qglyphrun.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/gui/text/qglyphrun.cpp b/src/gui/text/qglyphrun.cpp index ea527886cd..38ca998dd3 100644 --- a/src/gui/text/qglyphrun.cpp +++ b/src/gui/text/qglyphrun.cpp @@ -319,6 +319,35 @@ void QGlyphRun::setStrikeOut(bool strikeOut) d->strikeOut = strikeOut; } +/*! + Returns the smallest rectangle that contains all glyphs in this QGlyphRun. + + \since 5.0 +*/ +QRectF QGlyphRun::boundingRect() const +{ + qreal minX, minY, maxX, maxY; + + for (int i=0; i<qMin(d->glyphPositions.size(), d->glyphIndexes.size()); ++i) { + QRectF glyphRect = d->rawFont.boundingRect(d->glyphIndexes.at(i)); + glyphRect.translate(d->glyphPositions.at(i)); + + if (i == 0) { + minX = glyphRect.left(); + minY = glyphRect.top(); + maxX = glyphRect.right(); + maxY = glyphRect.bottom(); + } else { + minX = qMin(glyphRect.left(), minX); + minY = qMin(glyphRect.top(), minY); + maxX = qMax(glyphRect.right(),maxX); + maxY = qMax(glyphRect.bottom(), maxY); + } + } + + return QRectF(QPointF(minX, minY), QPointF(maxX, maxY)); +} + QT_END_NAMESPACE #endif // QT_NO_RAWFONT |