summaryrefslogtreecommitdiffstats
path: root/src/gui
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>2012-01-01 20:08:47 +0100
committerQt by Nokia <qt-info@nokia.com>2012-01-02 10:44:00 +0100
commite02749fe7ec4e1a869f2d19c9efacbd88eebcf42 (patch)
treeb9551411fdc30389a49d921ecaa0173978da90fc /src/gui
parent3ec27f827e64b4d69f7c6ec7357dc6b03b601fc9 (diff)
blitter: Move the definition out of the class
Cosmetic change to remove four spaces of indention from some of the deeply nested methods. Change-Id: I67fdd0ab722b7c7c67c4da7a0a0bd86459751700 Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/painting/qpaintengine_blitter.cpp131
1 files changed, 72 insertions, 59 deletions
diff --git a/src/gui/painting/qpaintengine_blitter.cpp b/src/gui/painting/qpaintengine_blitter.cpp
index a798efb63d..e0049075dc 100644
--- a/src/gui/painting/qpaintengine_blitter.cpp
+++ b/src/gui/painting/qpaintengine_blitter.cpp
@@ -194,65 +194,10 @@ public:
raster.reset(new QRasterPaintEngine(p->buffer()));
}
- inline void lock() {
- if (!pmData->blittable()->isLocked())
- raster->d_func()->rasterBuffer->prepare(pmData->buffer());
- }
-
- inline void unlock() {
- pmData->blittable()->unlock();
- }
-
- void fillRect(const QRectF &rect, const QColor &color) {
- Q_Q(QBlitterPaintEngine);
- pmData->unmarkRasterOverlay(rect);
- QRectF targetRect = rect;
- if (hasXForm)
- targetRect = q->state()->matrix.mapRect(rect);
- const QClipData *clipData = q->clipData();;
- if (clipData) {
- if (clipData->hasRectClip) {
- unlock();
- pmData->blittable()->fillRect(targetRect & clipData->clipRect, color);
- } else if (clipData->hasRegionClip) {
- QVector<QRect> rects = clipData->clipRegion.rects();
- for (int i = 0; i < rects.size(); ++i) {
- QRect intersectRect = rects.at(i).intersected(targetRect.toRect());
- if (!intersectRect.isEmpty()) {
- unlock();
- pmData->blittable()->fillRect(intersectRect, color);
- }
- }
- }
- } else {
- if (targetRect.x() >= 0 && targetRect.y() >= 0
- && targetRect.width() <= raster->paintDevice()->width()
- && targetRect.height() <= raster->paintDevice()->height()) {
- unlock();
- pmData->blittable()->fillRect(targetRect, color);
- } else {
- QRectF deviceRect(0, 0, raster->paintDevice()->width(), raster->paintDevice()->height());
- unlock();
- pmData->blittable()->fillRect(deviceRect & targetRect, color);
- }
- }
- }
-
- void clipAndDrawPixmap(const QRectF &clip, const QRectF &target, const QPixmap &pm, const QRectF &sr) {
- QRectF intersectedRect = clip.intersected(target);
- if (intersectedRect.isEmpty())
- return;
- QRectF source = sr;
- if (intersectedRect.size() != target.size()) {
- qreal deltaTop = target.top() - intersectedRect.top();
- qreal deltaLeft = target.left() - intersectedRect.left();
- qreal deltaBottom = target.bottom() - intersectedRect.bottom();
- qreal deltaRight = target.right() - intersectedRect.right();
- source.adjust(-deltaLeft, -deltaTop, -deltaRight, -deltaBottom);
- }
- pmData->unmarkRasterOverlay(intersectedRect);
- pmData->blittable()->drawPixmap(intersectedRect, pm, source);
- }
+ void lock();
+ void unlock();
+ void fillRect(const QRectF &rect, const QColor &color);
+ void clipAndDrawPixmap(const QRectF &clip, const QRectF &target, const QPixmap &pm, const QRectF &sr);
void updateClip() {
Q_Q(QBlitterPaintEngine);
@@ -272,6 +217,74 @@ public:
uint hasXForm;
};
+
+inline void QBlitterPaintEnginePrivate::lock()
+{
+ if (!pmData->blittable()->isLocked())
+ raster->d_func()->rasterBuffer->prepare(pmData->buffer());
+}
+
+inline void QBlitterPaintEnginePrivate::unlock()
+{
+ pmData->blittable()->unlock();
+}
+
+void QBlitterPaintEnginePrivate::fillRect(const QRectF &rect, const QColor &color)
+{
+ Q_Q(QBlitterPaintEngine);
+ pmData->unmarkRasterOverlay(rect);
+ QRectF targetRect = rect;
+ if (hasXForm)
+ targetRect = q->state()->matrix.mapRect(rect);
+ const QClipData *clipData = q->clipData();;
+ if (clipData) {
+ if (clipData->hasRectClip) {
+ unlock();
+ pmData->blittable()->fillRect(targetRect & clipData->clipRect, color);
+ } else if (clipData->hasRegionClip) {
+ QVector<QRect> rects = clipData->clipRegion.rects();
+ for (int i = 0; i < rects.size(); ++i) {
+ QRect intersectRect = rects.at(i).intersected(targetRect.toRect());
+ if (!intersectRect.isEmpty()) {
+ unlock();
+ pmData->blittable()->fillRect(intersectRect, color);
+ }
+ }
+ }
+ } else {
+ if (targetRect.x() >= 0 && targetRect.y() >= 0
+ && targetRect.width() <= raster->paintDevice()->width()
+ && targetRect.height() <= raster->paintDevice()->height()) {
+ unlock();
+ pmData->blittable()->fillRect(targetRect, color);
+ } else {
+ QRectF deviceRect(0, 0, raster->paintDevice()->width(), raster->paintDevice()->height());
+ unlock();
+ pmData->blittable()->fillRect(deviceRect & targetRect, color);
+ }
+ }
+}
+
+void QBlitterPaintEnginePrivate::clipAndDrawPixmap(const QRectF &clip,
+ const QRectF &target,
+ const QPixmap &pm,
+ const QRectF &sr)
+{
+ QRectF intersectedRect = clip.intersected(target);
+ if (intersectedRect.isEmpty())
+ return;
+ QRectF source = sr;
+ if (intersectedRect.size() != target.size()) {
+ qreal deltaTop = target.top() - intersectedRect.top();
+ qreal deltaLeft = target.left() - intersectedRect.left();
+ qreal deltaBottom = target.bottom() - intersectedRect.bottom();
+ qreal deltaRight = target.right() - intersectedRect.right();
+ source.adjust(-deltaLeft, -deltaTop, -deltaRight, -deltaBottom);
+ }
+ pmData->unmarkRasterOverlay(intersectedRect);
+ pmData->blittable()->drawPixmap(intersectedRect, pm, source);
+}
+
QBlitterPaintEngine::QBlitterPaintEngine(QBlittablePlatformPixmap *p)
: QPaintEngineEx(*(new QBlitterPaintEnginePrivate(p)))
{}