summaryrefslogtreecommitdiffstats
path: root/src/declarative/canvas
diff options
context:
space:
mode:
authorWarwick Allison <warwick.allison@nokia.com>2009-05-25 23:01:50 (GMT)
committerWarwick Allison <warwick.allison@nokia.com>2009-05-25 23:01:50 (GMT)
commit07929fef22cb9cffc059f949e216ec585e0e7466 (patch)
treeefb8e9b77a42e528c4e58b9346c773bb3c91688a /src/declarative/canvas
parentf8efe236ec6cb0a8f162f74c9af9682705ff13ed (diff)
downloadQt-07929fef22cb9cffc059f949e216ec585e0e7466.zip
Qt-07929fef22cb9cffc059f949e216ec585e0e7466.tar.gz
Qt-07929fef22cb9cffc059f949e216ec585e0e7466.tar.bz2
Switch from QImage to QPixmap, to allow OpenVG optimization.
Switch QFxPixmap to use QPixmapCache, not own partial QImage cache. OpenGL prefers QImage for optimization, but that optimization is only partially preserved (QFxPixmap deals ONLY with QPixmap now). Opaque QFxPixmap no longer available.
Diffstat (limited to 'src/declarative/canvas')
-rw-r--r--src/declarative/canvas/qsimplecanvas.h16
-rw-r--r--src/declarative/canvas/qsimplecanvas_opengl.cpp6
-rw-r--r--src/declarative/canvas/qsimplecanvas_opengl1.cpp8
-rw-r--r--src/declarative/canvas/qsimplecanvasitem.cpp6
-rw-r--r--src/declarative/canvas/qsimplecanvasitem.h6
5 files changed, 13 insertions, 29 deletions
diff --git a/src/declarative/canvas/qsimplecanvas.h b/src/declarative/canvas/qsimplecanvas.h
index 880fae0..1cbd3c7 100644
--- a/src/declarative/canvas/qsimplecanvas.h
+++ b/src/declarative/canvas/qsimplecanvas.h
@@ -88,27 +88,11 @@ namespace QSimpleCanvasConfig
#elif defined(QFX_RENDER_QPAINTER)
typedef QTransform Matrix;
- typedef QImage Image;
inline Matrix transformToMatrix(const QTransform &t)
{ return t; }
inline QTransform matrixToTransform(const Matrix &t)
{ return t; }
- inline bool needConvert(ImageType type, const Image &img) {
- QImage::Format f = img.format();
- return !((type == Opaque && f == QImage::Format_RGB16) ||
- (type == Translucent && f == QImage::Format_ARGB32_Premultiplied));
- }
- inline Image convert(ImageType type, const Image &img) {
- if (type == Opaque)
- return img.convertToFormat(QImage::Format_RGB16);
- else
- return img.convertToFormat(QImage::Format_ARGB32_Premultiplied);
- }
- inline Image create(const QSize &s)
- { return QImage(s, QImage::Format_ARGB32_Premultiplied); }
- inline const Image &toImage(const QImage &i)
- { return i; }
#endif
}
diff --git a/src/declarative/canvas/qsimplecanvas_opengl.cpp b/src/declarative/canvas/qsimplecanvas_opengl.cpp
index 98f92d7..72f8324 100644
--- a/src/declarative/canvas/qsimplecanvas_opengl.cpp
+++ b/src/declarative/canvas/qsimplecanvas_opengl.cpp
@@ -416,13 +416,13 @@ QGLShaderProgram *QSimpleCanvasItem::GLPainter::useColorShader(const QColor &col
return item->basicShaders()->constantColor();
}
-void QSimpleCanvasItem::GLPainter::drawImage(const QPointF &point,
+void QSimpleCanvasItem::GLPainter::drawPixmap(const QPointF &point,
const GLTexture &texture)
{
- drawImage(QRectF(point, QSizeF(texture.width(), texture.height())), texture);
+ drawPixmap(QRectF(point, QSizeF(texture.width(), texture.height())), texture);
}
-void QSimpleCanvasItem::GLPainter::drawImage(const QRectF &rect,
+void QSimpleCanvasItem::GLPainter::drawPixmap(const QRectF &rect,
const GLTexture &img)
{
QGLShaderProgram *shader = useTextureShader();
diff --git a/src/declarative/canvas/qsimplecanvas_opengl1.cpp b/src/declarative/canvas/qsimplecanvas_opengl1.cpp
index 3fd8490..6e50ef8 100644
--- a/src/declarative/canvas/qsimplecanvas_opengl1.cpp
+++ b/src/declarative/canvas/qsimplecanvas_opengl1.cpp
@@ -386,16 +386,16 @@ void QSimpleCanvasPrivate::release(QGLFramebufferObject *)
{
}
-void QSimpleCanvasItem::GLPainter::drawImage(const QPointF &point,
+void QSimpleCanvasItem::GLPainter::drawPixmap(const QPointF &point,
const GLTexture &texture)
{
- drawImage(QRectF(point, QSizeF(texture.width(), texture.height())), texture);
+ drawPixmap(QRectF(point, QSizeF(texture.width(), texture.height())), texture);
}
-void QSimpleCanvasItem::GLPainter::drawImage(const QRectF &rect,
+void QSimpleCanvasItem::GLPainter::drawPixmap(const QRectF &rect,
const GLTexture &img)
{
- qFatal("Cannot call QSimpleCanvasItem::GLPainter::drawImage() when using OpenGL ES 1.1");
+ qFatal("Cannot call QSimpleCanvasItem::GLPainter::drawPixmap() when using OpenGL ES 1.1");
}
QT_END_NAMESPACE
diff --git a/src/declarative/canvas/qsimplecanvasitem.cpp b/src/declarative/canvas/qsimplecanvasitem.cpp
index 3666b82..f2222a9 100644
--- a/src/declarative/canvas/qsimplecanvasitem.cpp
+++ b/src/declarative/canvas/qsimplecanvasitem.cpp
@@ -1852,12 +1852,12 @@ QSimpleCanvasItem *QSimpleCanvasItem::findNextFocus(QSimpleCanvasItem *item)
return 0;
}
-QImage QSimpleCanvasItem::string(const QString &str, const QColor &c, const QFont &f)
+QPixmap QSimpleCanvasItem::string(const QString &str, const QColor &c, const QFont &f)
{
QFontMetrics fm(f);
QSize size(fm.width(str), fm.height()*(str.count(QLatin1Char('\n'))+1)); //fm.boundingRect(str).size();
- QImage img(size, QImage::Format_ARGB32_Premultiplied);
- img.fill(0);
+ QPixmap img(size);
+ img.fill(Qt::transparent);
QPainter p(&img);
p.setPen(c);
p.setFont(f);
diff --git a/src/declarative/canvas/qsimplecanvasitem.h b/src/declarative/canvas/qsimplecanvasitem.h
index cf23fc6..77ac52e 100644
--- a/src/declarative/canvas/qsimplecanvasitem.h
+++ b/src/declarative/canvas/qsimplecanvasitem.h
@@ -175,8 +175,8 @@ public:
QGLShaderProgram *useTextureShader();
QGLShaderProgram *useColorShader(const QColor &);
- void drawImage(const QPointF &, const GLTexture &);
- void drawImage(const QRectF &, const GLTexture &);
+ void drawPixmap(const QPointF &, const GLTexture &);
+ void drawPixmap(const QRectF &, const GLTexture &);
private:
GLPainter(const GLPainter &);
GLPainter &operator=(const GLPainter &);
@@ -228,7 +228,7 @@ public:
GLBasicShaders *basicShaders() const;
- static QImage string(const QString &, const QColor & = Qt::black, const QFont & = QFont());
+ static QPixmap string(const QString &, const QColor & = Qt::black, const QFont & = QFont());
protected:
virtual void geometryChanged(const QRectF &newGeometry,