API change:

changed paintPanel(QPainter* painter, const QRectF& rect, const
QPointF& pos = QPointF(0, 0));
into
 void paintPanel(QPainter* painter, const QRectF& target, const QRectF&
source);   
and
 void paintPanel(QPainter* painter, const QPointF& pos = QPointF(0, 0));

to be more similat di QPainter::drawPixmap api

svn path=/trunk/KDE/kdebase/workspace/libs/plasma/; revision=838379
This commit is contained in:
Marco Martin 2008-07-27 17:20:27 +00:00
parent 41b82ff620
commit aaab3a310a
5 changed files with 27 additions and 8 deletions

View File

@ -880,7 +880,7 @@ void Applet::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QW
formFactor() != Plasma::Vertical && formFactor() != Plasma::Vertical &&
formFactor() != Plasma::Horizontal) { formFactor() != Plasma::Horizontal) {
//kDebug() << "option rect is" << option->rect; //kDebug() << "option rect is" << option->rect;
d->background->paintPanel(p, option->rect, QPointF(0,0)); d->background->paintPanel(p);
} }
if (!d->failed) { if (!d->failed) {

View File

@ -94,7 +94,7 @@ void Dialog::paintEvent(QPaintEvent *e)
p.setClipRect(e->rect()); p.setClipRect(e->rect());
p.setCompositionMode(QPainter::CompositionMode_Source ); p.setCompositionMode(QPainter::CompositionMode_Source );
p.fillRect(rect(), Qt::transparent); p.fillRect(rect(), Qt::transparent);
d->background->paintPanel(&p, e->rect()); d->background->paintPanel(&p);
} }
void Dialog::resizeEvent(QResizeEvent *e) void Dialog::resizeEvent(QResizeEvent *e)

View File

@ -353,16 +353,26 @@ void PanelSvg::clearCache()
} }
} }
void PanelSvg::paintPanel(QPainter* painter, const QRectF& rect, const QPointF& pos) void PanelSvg::paintPanel(QPainter* painter, const QRectF& target, const QRectF& source)
{ {
//kDebug();
PanelData *panel = d->panels[d->prefix]; PanelData *panel = d->panels[d->prefix];
if (!panel->cachedBackground) { if (!panel->cachedBackground) {
d->generateBackground(panel); d->generateBackground(panel);
Q_ASSERT(panel->cachedBackground); Q_ASSERT(panel->cachedBackground);
} }
painter->drawPixmap(rect, *(panel->cachedBackground), rect.translated(-pos.x(),-pos.y())); painter->drawPixmap(target, *(panel->cachedBackground), source);
}
void PanelSvg::paintPanel(QPainter* painter, const QPointF& pos)
{
PanelData *panel = d->panels[d->prefix];
if (!panel->cachedBackground) {
d->generateBackground(panel);
Q_ASSERT(panel->cachedBackground);
}
painter->drawPixmap(pos, *(panel->cachedBackground));
} }
void PanelSvgPrivate::generateBackground(PanelData *panel) void PanelSvgPrivate::generateBackground(PanelData *panel)

View File

@ -191,9 +191,18 @@ class PLASMA_EXPORT PanelSvg : public Svg
/** /**
* Paints the loaded SVG with the elements that represents the border * Paints the loaded SVG with the elements that represents the border
* @arg painter the QPainter to use * @arg painter the QPainter to use
* @arg rect the exposed rect to draw into * @arg target the target rectangle on the paint device
* @arg source the portion rectangle of the source image
*/ */
Q_INVOKABLE void paintPanel(QPainter* painter, const QRectF& rect, const QPointF& pos = QPointF(0, 0)); Q_INVOKABLE void paintPanel(QPainter* painter, const QRectF& target, const QRectF& source);
/**
* Paints the loaded SVG with the elements that represents the border
* This is an overloaded member provided for convenience
* @arg painter the QPainter to use
* @arg pos where to paint the svg
*/
Q_INVOKABLE void paintPanel(QPainter* painter, const QPointF& pos = QPointF(0, 0));
private: private:
PanelSvgPrivate * const d; PanelSvgPrivate * const d;

View File

@ -169,7 +169,7 @@ void ToolTip::paintEvent(QPaintEvent *e)
painter.setCompositionMode(QPainter::CompositionMode_Source ); painter.setCompositionMode(QPainter::CompositionMode_Source );
painter.fillRect(rect(), Qt::transparent); painter.fillRect(rect(), Qt::transparent);
d->background->paintPanel(&painter, rect()); d->background->paintPanel(&painter);
} }
void ToolTip::sourceDestroyed() void ToolTip::sourceDestroyed()