summaryrefslogtreecommitdiffstats
path: root/src/gui/text
diff options
context:
space:
mode:
authorEskil Abrahamsen Blomfeldt <eblomfel@trolltech.com>2009-08-21 14:29:44 (GMT)
committerEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>2010-01-14 13:05:08 (GMT)
commitbf919e06127962836a6b566bf119cf248c6a999b (patch)
tree789ca79fa342cf741513cb21e6d4d3728345a511 /src/gui/text
parent7fbffd29e5904151a3a249004031d0502a16f4fc (diff)
downloadQt-bf919e06127962836a6b566bf119cf248c6a999b.zip
Qt-bf919e06127962836a6b566bf119cf248c6a999b.tar.gz
Qt-bf919e06127962836a6b566bf119cf248c6a999b.tar.bz2
Implement drawStaticTextItem() in OpenGL paint engines
The OpenGL and OpenGL2 engines now have support for static text, as well as the QEmulationPaintEngine. Also contains an optimization: Instead of passing both the position and glyph positions to drawStaticTextItem() we add the position into the glyph position and update it only when it changes. Otherwise we would have to do this work in all engines for every call. This means we have to cache the position in QStaticTextPrivate as well, but it seems like a small price to pay, since it's a per-text overhead and only 16 bytes.
Diffstat (limited to 'src/gui/text')
-rw-r--r--src/gui/text/qstatictext.cpp2
-rw-r--r--src/gui/text/qstatictext_p.h5
2 files changed, 5 insertions, 2 deletions
diff --git a/src/gui/text/qstatictext.cpp b/src/gui/text/qstatictext.cpp
index d4f8fbd..56950ed 100644
--- a/src/gui/text/qstatictext.cpp
+++ b/src/gui/text/qstatictext.cpp
@@ -429,6 +429,8 @@ void QStaticTextPrivate::init()
delete[] glyphPool;
delete[] positionPool;
+ position = QPointF(0, 0);
+
// Draw once to count number of items and glyphs, so that we can use as little memory
// as possible to store the data
DrawTextItemDevice counterDevice;
diff --git a/src/gui/text/qstatictext_p.h b/src/gui/text/qstatictext_p.h
index 2cb1262..4756773 100644
--- a/src/gui/text/qstatictext_p.h
+++ b/src/gui/text/qstatictext_p.h
@@ -57,7 +57,7 @@
QT_BEGIN_NAMESPACE
-class Q_AUTOTEST_EXPORT QStaticTextItem
+class Q_GUI_EXPORT QStaticTextItem
{
public:
QStaticTextItem() : chars(0), numChars(0), fontEngine(0) {}
@@ -91,6 +91,7 @@ public:
QString text; // 4 bytes per text
QFont font; // 8 bytes per text
QSizeF size; // 16 bytes per text
+ QPointF position; // 16 bytes per text
QTransform matrix; // 80 bytes per text
QStaticTextItem *items; // 4 bytes per text
@@ -98,7 +99,7 @@ public:
glyph_t *glyphPool; // 4 bytes per text
QFixedPoint *positionPool; // 4 bytes per text
// ================
- // 128 bytes per text
+ // 144 bytes per text
static QStaticTextPrivate *get(const QStaticText *q);
};