diff options
Diffstat (limited to 'src/gui/painting')
-rw-r--r-- | src/gui/painting/qpaintbuffer.cpp | 7 | ||||
-rw-r--r-- | src/gui/painting/qpaintengine_raster.cpp | 2 | ||||
-rw-r--r-- | src/gui/painting/qpainter.cpp | 82 | ||||
-rw-r--r-- | src/gui/painting/qpainter.h | 15 | ||||
-rw-r--r-- | src/gui/painting/qpainter_p.h | 6 |
5 files changed, 61 insertions, 51 deletions
diff --git a/src/gui/painting/qpaintbuffer.cpp b/src/gui/painting/qpaintbuffer.cpp index 51eb681f9d..664d8642eb 100644 --- a/src/gui/painting/qpaintbuffer.cpp +++ b/src/gui/painting/qpaintbuffer.cpp @@ -45,8 +45,8 @@ #include <private/qfontengine_p.h> #include <private/qemulationpaintengine_p.h> #include <private/qimage_p.h> +#include <qstatictext.h> #include <private/qstatictext_p.h> -#include <private/qstatictext_p_p.h> #include <QDebug> @@ -1448,9 +1448,10 @@ void QPainterReplayer::process(const QPaintBufferCommand &cmd) QStaticText text(variants.at(0).value<QStaticText>()); painter->setFont(font); - qt_draw_static_text(painter, QPointF(0, 0), text); + painter->drawStaticText(QPointF(0, 0), text); - break; } + break; + } case QPaintBufferPrivate::Cmd_DrawText: { QPointF pos(d->floats.at(cmd.extra), d->floats.at(cmd.extra+1)); diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp index a2e14e1a62..41c4f14269 100644 --- a/src/gui/painting/qpaintengine_raster.cpp +++ b/src/gui/painting/qpaintengine_raster.cpp @@ -67,7 +67,7 @@ // #include <private/qpolygonclipper_p.h> // #include <private/qrasterizer_p.h> #include <private/qimage_p.h> -#include <private/qstatictext_p_p.h> +#include <private/qstatictext_p.h> #include "qpaintengine_raster_p.h" // #include "qbezier_p.h" diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp index c2e2fef8da..8ab813dd45 100644 --- a/src/gui/painting/qpainter.cpp +++ b/src/gui/painting/qpainter.cpp @@ -69,8 +69,8 @@ #include <private/qwidget_p.h> #include <private/qpaintengine_raster_p.h> #include <private/qmath_p.h> +#include <qstatictext.h> #include <private/qstatictext_p.h> -#include <private/qstatictext_p_p.h> QT_BEGIN_NAMESPACE @@ -5699,6 +5699,19 @@ void QPainter::drawImage(const QRectF &targetRect, const QImage &image, const QR } /*! + + \fn void QPainter::drawStaticText(const QPoint &position, const QStaticText &staticText) + + \overload +*/ + +/*! + \fn void QPainter::drawStaticText(int x, int y, const QStaticText &staticText) + + \overload +*/ + +/*! \fn void QPainter::drawText(const QPointF &position, const QString &text) Draws the given \a text with the currently defined text direction, @@ -5720,23 +5733,10 @@ void QPainter::drawText(const QPointF &p, const QString &str) drawText(p, str, 0, 0); } -QPainterPrivate *QPainterPrivate::get(QPainter *p) +void QPainter::drawStaticText(const QPointF &position, const QStaticText &staticText) { - return p->d_ptr.data(); -} - -void qt_draw_static_text(QPainter *p, const QPointF &position, const QStaticText &text) -{ - QPainterPrivate *prv = QPainterPrivate::get(p); - Q_ASSERT(prv != 0); - - prv->drawStaticText(position, text); -} - -void QPainterPrivate::drawStaticText(const QPointF &position, const QStaticText &staticText) -{ - Q_Q(QPainter); - if (!engine || staticText.isEmpty() || q->pen().style() == Qt::NoPen) + Q_D(QPainter); + if (!d->engine || staticText.isEmpty() || pen().style() == Qt::NoPen) return; QStaticTextPrivate *staticText_d = @@ -5744,31 +5744,31 @@ void QPainterPrivate::drawStaticText(const QPointF &position, const QStaticText // If we don't have an extended paint engine, or if the painter is projected, // we go through standard code path - if (extended == 0 || !state->matrix.isAffine()) { + if (d->extended == 0 || !d->state->matrix.isAffine()) { if (staticText_d->size.isValid()) - q->drawText(QRectF(position, staticText_d->size), staticText_d->text); + drawText(QRectF(position, staticText_d->size), staticText_d->text); else - q->drawText(position, staticText_d->text); + drawText(position, staticText_d->text); return; } // Don't recalculate entire layout because of translation, rather add the dx and dy // into the position to move each text item the correct distance. - QPointF transformedPosition = position * state->matrix; - QTransform matrix = state->matrix; + QPointF transformedPosition = position * d->state->matrix; + QTransform matrix = d->state->matrix; // The translation has been applied to transformedPosition. Remove translation // component from matrix. - if (state->matrix.isTranslating()) { - qreal m11 = state->matrix.m11(); - qreal m12 = state->matrix.m12(); - qreal m13 = state->matrix.m13(); - qreal m21 = state->matrix.m21(); - qreal m22 = state->matrix.m22(); - qreal m23 = state->matrix.m23(); - qreal m33 = state->matrix.m33(); - - state->matrix.setMatrix(m11, m12, m13, + if (d->state->matrix.isTranslating()) { + qreal m11 = d->state->matrix.m11(); + qreal m12 = d->state->matrix.m12(); + qreal m13 = d->state->matrix.m13(); + qreal m21 = d->state->matrix.m21(); + qreal m22 = d->state->matrix.m22(); + qreal m23 = d->state->matrix.m23(); + qreal m33 = d->state->matrix.m33(); + + d->state->matrix.setMatrix(m11, m12, m13, m21, m22, m23, 0.0, 0.0, m33); } @@ -5776,21 +5776,21 @@ void QPainterPrivate::drawStaticText(const QPointF &position, const QStaticText // If the transform is not identical to the text transform, // we have to relayout the text (for other transformations than plain translation) bool staticTextNeedsReinit = false; - if (staticText_d->matrix != state->matrix) { - staticText_d->matrix = state->matrix; + if (staticText_d->matrix != d->state->matrix) { + staticText_d->matrix = d->state->matrix; staticTextNeedsReinit = true; } bool restoreWhenFinished = false; if (staticText_d->needsClipRect) { - q->save(); - q->setClipRect(QRectF(position, staticText_d->size)); + save(); + setClipRect(QRectF(position, staticText_d->size)); restoreWhenFinished = true; } - if (q->font() != staticText_d->font) { - staticText_d->font = q->font(); + if (font() != staticText_d->font) { + staticText_d->font = font(); staticTextNeedsReinit = true; } @@ -5817,14 +5817,14 @@ void QPainterPrivate::drawStaticText(const QPointF &position, const QStaticText for (int i=0; i<staticText_d->itemCount; ++i) { QStaticTextItem *item = staticText_d->items + i; - extended->drawStaticTextItem(item); + d->extended->drawStaticTextItem(item); } if (restoreWhenFinished) - q->restore(); + restore(); if (matrix.isTranslating()) - state->matrix = matrix; + d->state->matrix = matrix; } /*! diff --git a/src/gui/painting/qpainter.h b/src/gui/painting/qpainter.h index ffddcbad23..e9fd532c86 100644 --- a/src/gui/painting/qpainter.h +++ b/src/gui/painting/qpainter.h @@ -78,6 +78,7 @@ class QPolygon; class QTextItem; class QMatrix; class QTransform; +class QStaticText; class QPainterPrivateDeleter; @@ -369,6 +370,10 @@ public: void setLayoutDirection(Qt::LayoutDirection direction); Qt::LayoutDirection layoutDirection() const; + void drawStaticText(const QPointF &p, const QStaticText &staticText); + inline void drawStaticText(const QPoint &p, const QStaticText &staticText); + inline void drawStaticText(int x, int y, const QStaticText &staticText); + void drawText(const QPointF &p, const QString &s); inline void drawText(const QPoint &p, const QString &s); inline void drawText(int x, int y, const QString &s); @@ -896,6 +901,16 @@ inline void QPainter::drawImage(int x, int y, const QImage &image, int sx, int s drawImage(QRectF(x, y, -1, -1), image, QRectF(sx, sy, sw, sh), flags); } +inline void QPainter::drawStaticText(const QPoint &p, const QStaticText &staticText) +{ + drawStaticText(QPointF(p), staticText); +} + +inline void QPainter::drawStaticText(int x, int y, const QStaticText &staticText) +{ + drawStaticText(QPointF(x, y), staticText); +} + inline void QPainter::drawTextItem(const QPoint &p, const QTextItem &ti) { drawTextItem(QPointF(p), ti); diff --git a/src/gui/painting/qpainter_p.h b/src/gui/painting/qpainter_p.h index 2979de617a..02a91aa27d 100644 --- a/src/gui/painting/qpainter_p.h +++ b/src/gui/painting/qpainter_p.h @@ -70,7 +70,6 @@ QT_BEGIN_NAMESPACE class QPaintEngine; class QEmulationPaintEngine; class QPaintEngineEx; -class QStaticText; struct QTLWExtra; @@ -230,8 +229,6 @@ public: void drawStretchedGradient(const QPainterPath &path, DrawOperation operation); void drawOpaqueBackground(const QPainterPath &path, DrawOperation operation); - void drawStaticText(const QPointF &position, const QStaticText &staticText); - void updateMatrix(); void updateInvMatrix(); @@ -245,8 +242,6 @@ public: static bool attachPainterPrivate(QPainter *q, QPaintDevice *pdev); void detachPainterPrivate(QPainter *q); - static QPainterPrivate *get(QPainter *p); - QPaintDevice *device; QPaintDevice *original_device; QPaintDevice *helper_device; @@ -257,7 +252,6 @@ public: }; Q_GUI_EXPORT void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivate::DrawOperation operation); -Q_GUI_EXPORT void qt_draw_static_text(QPainter *p, const QPointF &position, const QStaticText &text); QString qt_generate_brush_key(const QBrush &brush); |