From d574f51108d7ac3007e2367af55aa2c5fa8c171f Mon Sep 17 00:00:00 2001 From: Aleix Pol Date: Mon, 14 Jul 2014 17:00:39 +0200 Subject: [PATCH] Move the central space painting into a separate function Reviewed by David Edmundson --- src/plasma/framesvg.cpp | 70 +++++++++++++++++---------------- src/plasma/private/framesvg_p.h | 3 +- 2 files changed, 39 insertions(+), 34 deletions(-) diff --git a/src/plasma/framesvg.cpp b/src/plasma/framesvg.cpp index 1e04d1d70..026f2c3b4 100644 --- a/src/plasma/framesvg.cpp +++ b/src/plasma/framesvg.cpp @@ -815,39 +815,7 @@ void FrameSvgPrivate::generateFrameBackground(FrameData *frame) p.setCompositionMode(QPainter::CompositionMode_Source); p.setRenderHint(QPainter::SmoothPixmapTransform); - //CENTER - if (!contentSize.isEmpty()) { - const QString centerElementId = prefix % "center"; - if (frame->tileCenter) { - QSize centerTileSize = q->elementSize(centerElementId); - QPixmap center(centerTileSize); - center.fill(Qt::transparent); - - QPainter centerPainter(¢er); - centerPainter.setCompositionMode(QPainter::CompositionMode_Source); - q->paint(¢erPainter, QRect(QPoint(0, 0), centerTileSize),centerElementId); - - if (frame->composeOverBorder) { - p.drawTiledPixmap(QRect(QPoint(0, 0), size), center); - } else { - p.drawTiledPixmap(QRect(QPoint(frame->leftWidth, frame->topHeight), contentSize), center); - } - } else { - if (frame->composeOverBorder) { - q->paint(&p, QRect(QPoint(0, 0), size), - centerElementId); - } else { - q->paint(&p, QRect(QPoint(frame->leftWidth, frame->topHeight), contentSize), - centerElementId); - } - } - } - - if (frame->composeOverBorder) { - p.setCompositionMode(QPainter::CompositionMode_DestinationIn); - p.drawPixmap(QRect(QPoint(0, 0), size), alphaMask()); - p.setCompositionMode(QPainter::CompositionMode_SourceOver); - } + paintCenter(p, frame, contentSize, size); int contentTop = 0; int contentLeft = 0; @@ -884,6 +852,42 @@ void FrameSvgPrivate::generateFrameBackground(FrameData *frame) paintBorder(p, frame, FrameSvg::BottomBorder, QSize(topWidth, frame->bottomHeight), QRect(contentLeft, bottomOffset, contentSize.width(), frame->bottomHeight)); } +void FrameSvgPrivate::paintCenter(QPainter& p, FrameData* frame, const QSize& contentSize, const QSize& fullSize) +{ + if (!contentSize.isEmpty()) { + const QString centerElementId = prefix % "center"; + if (frame->tileCenter) { + QSize centerTileSize = q->elementSize(centerElementId); + QPixmap center(centerTileSize); + center.fill(Qt::transparent); + + QPainter centerPainter(¢er); + centerPainter.setCompositionMode(QPainter::CompositionMode_Source); + q->paint(¢erPainter, QRect(QPoint(0, 0), centerTileSize),centerElementId); + + if (frame->composeOverBorder) { + p.drawTiledPixmap(QRect(QPoint(0, 0), fullSize), center); + } else { + p.drawTiledPixmap(QRect(QPoint(frame->leftWidth, frame->topHeight), contentSize), center); + } + } else { + if (frame->composeOverBorder) { + q->paint(&p, QRect(QPoint(0, 0), fullSize), + centerElementId); + } else { + q->paint(&p, QRect(QPoint(frame->leftWidth, frame->topHeight), contentSize), + centerElementId); + } + } + } + + if (frame->composeOverBorder) { + p.setCompositionMode(QPainter::CompositionMode_DestinationIn); + p.drawPixmap(QRect(QPoint(0, 0), fullSize), alphaMask()); + p.setCompositionMode(QPainter::CompositionMode_SourceOver); + } +} + void FrameSvgPrivate::paintBorder(QPainter& p, FrameData* frame, const FrameSvg::EnabledBorders borders, const QSize& size, const QRect& output) const { QString side = prefix % borderToElementId(borders); diff --git a/src/plasma/private/framesvg_p.h b/src/plasma/private/framesvg_p.h index 886d420f5..4dbf4307a 100644 --- a/src/plasma/private/framesvg_p.h +++ b/src/plasma/private/framesvg_p.h @@ -149,7 +149,8 @@ public: void updateAndSignalSizes(); QSizeF frameSize(FrameData *frame) const; void paintBorder(QPainter& p, FrameData* frame, Plasma::FrameSvg::EnabledBorders border, const QSize& originalSize, const QRect& output) const; - void paintCorner(QPainter& p, Plasma::FrameData* frame, Plasma::FrameSvg::EnabledBorders border, const QRect& output) const; + void paintCorner(QPainter& p, FrameData* frame, Plasma::FrameSvg::EnabledBorders border, const QRect& output) const; + void paintCenter(QPainter& p, FrameData* frame, const QSize& contentSize, const QSize& fullSize); static QString borderToElementId(Plasma::FrameSvg::EnabledBorders borders); Types::Location location;