[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/work/parley-practice/parley/src/practice
From: Daniel Laidig <d.laidig () gmx ! de>
Date: 2010-04-12 22:32:58
Message-ID: 20100412223258.819CEAC897 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1114181 by laidig:
use the new QImage based scaling
however, the old scaling mode is also enabled and we have to figure out what works \
best
M +15 -5 themedbackgroundrenderer.cpp
M +2 -1 themedbackgroundrenderer.h
--- branches/work/parley-practice/parley/src/practice/themedbackgroundrenderer.cpp \
#1114180:1114181 @@ -24,7 +24,7 @@
using namespace Practice;
ThemedBackgroundRenderer::ThemedBackgroundRenderer(QObject* parent)
- : QObject(parent), m_queuedRequest(false)
+ : QObject(parent), m_queuedRequest(false), m_isFastScaledRender(true)
{
m_cache.setSaveFilename(KStandardDirs::locateLocal("appdata", \
"practicethemecache.bin"));
connect(&m_watcher, SIGNAL(finished()), this, SLOT(renderingFinished()));
@@ -57,16 +57,17 @@
m_rects.append(qMakePair<QString, QRect>(name, rect));
}
-void ThemedBackgroundRenderer::updateBackground()
+void ThemedBackgroundRenderer::updateBackground(bool fastScale)
{
if (m_size.isEmpty()) {
- qWarning() << "trying to render with an invalid size";
+ kDebug() << "trying to render with an invalid size";
+ return;
}
if (m_future.isRunning()) {
m_queuedRequest = true;
return;
}
- m_future = QtConcurrent::run(this, &ThemedBackgroundRenderer::renderBackground, \
false); + m_future = QtConcurrent::run(this, \
&ThemedBackgroundRenderer::renderBackground, fastScale); \
m_watcher.setFuture(m_future); }
@@ -74,10 +75,16 @@
{
emit backgroundChanged(QPixmap::fromImage(m_future.result()));
m_future = QFuture<QImage>();
- if (m_queuedRequest) {
+ if (m_queuedRequest) { // another request happened in the meantime
m_queuedRequest = false;
updateBackground();
+ return;
}
+ if (m_isFastScaledRender) { // the just finished rendering is based on scaled \
QImages, not on SVGs, so we have to render the final version + m_queuedRequest \
= false; + updateBackground(false); //TODO: delay with timer?
+ return;
+ }
}
QPixmap ThemedBackgroundRenderer::getPixmapForId(const QString& id)
@@ -102,6 +109,8 @@
QImage ThemedBackgroundRenderer::renderBackground(bool fastScale)
{
+ m_isFastScaledRender = false;
+
QTime t = QTime::currentTime();
QImage image(m_size, QImage::Format_ARGB32_Premultiplied);
image.fill(QColor(Qt::transparent).rgba());
@@ -184,6 +193,7 @@
} else if(fastScale && !m_cache.imageSize(id).isEmpty()) {
kDebug() << "FAST SCALE for:" << id;
image = m_cache.getImage(id).scaled(itemRect.size(), Qt::IgnoreAspectRatio, \
Qt::FastTransformation); + m_isFastScaledRender = true;
} else {
kDebug() << "NOT IN CACHE, render svg:" << id;
image = QImage(itemRect.size(), QImage::Format_ARGB32_Premultiplied);
--- branches/work/parley-practice/parley/src/practice/themedbackgroundrenderer.h \
#1114180:1114181 @@ -63,7 +63,7 @@
void setSize(const QSize& size);
void clearRects();
void addRect(const QString& name, const QRect& rect);
- void updateBackground();
+ void updateBackground(bool fastScale = true);
void renderingFinished();
@@ -84,6 +84,7 @@
QList<QPair<QString, QRect> > m_rects;
QSize m_size;
bool m_queuedRequest;
+ bool m_isFastScaledRender;
};
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic