[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdelibs/khtml/misc
From: Fredrik Höglund <fredrik () kde ! org>
Date: 2008-12-04 17:07:58
Message-ID: 1228410478.724224.4789.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 892586 by fredrik:
Add a code path optimized for paint engines that support ConstantOpacity.
M +10 -4 paintbuffer.h
--- trunk/KDE/kdelibs/khtml/misc/paintbuffer.h #892585:892586
@@ -34,6 +34,7 @@
#include <QPixmap>
#include <QStack>
#include <QPainter>
+#include <QPaintEngine>
#include <kdebug.h>
#include <assert.h>
@@ -123,10 +124,13 @@
}
void transfer( float opacity ) {
- QColor color;
- color.setAlphaF(opacity);
- m_painter.setCompositionMode(QPainter::CompositionMode_DestinationIn);
- m_painter.fillRect(m_rect, color);
+ bool constantOpacity = m_origPainter->paintEngine()->hasFeature(QPaintEngine::ConstantOpacity);
+ if (!constantOpacity) {
+ QColor color;
+ color.setAlphaF(opacity);
+ m_painter.setCompositionMode(QPainter::CompositionMode_DestinationIn);
+ m_painter.fillRect(m_rect, color);
+ }
m_painter.end();
QTransform t = m_origPainter->worldTransform();
QPoint trans(static_cast<int>(t.dx()),static_cast<int>(t.dy()));
@@ -134,6 +138,8 @@
m_origPainter->resetTransform();
m_origPainter->setClipRegion(trans.isNull() ? m_region : m_region.translated(trans));
m_origPainter->setWorldTransform(t);
+ if (constantOpacity)
+ m_origPainter->setOpacity(opacity);
m_origPainter->drawPixmap(m_off-trans, *m_buf, QRect(0,0,m_rect.width(),m_rect.height()));
m_origPainter->restore();
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic