summaryrefslogtreecommitdiffstats
path: root/src/opengl/qpixmapdata_gl_p.h
diff options
context:
space:
mode:
authorSamuel Rødal <sroedal@trolltech.com>2009-04-16 10:55:12 +0200
committerSamuel Rødal <sroedal@trolltech.com>2009-04-16 17:28:26 +0200
commita241ebac49f01ba0e26a177f1aadbd18c7e9cae7 (patch)
treec7e577ecf60c990a1a5a1902ba0637bd3187a4d6 /src/opengl/qpixmapdata_gl_p.h
parent1e1371e19ae62a5bf57dcad8d53ac70dcd2ad0cb (diff)
Use FBOs as pixmap backend in GL graphics system.
We now use FBOs to implement render-to-pixmap for the GL pixmap backend. A multisample FBO is used for rendering, and is then blitted onto a non-multisample FBO dynamically bound to the relevant texture. Reviewed-by: Tom
Diffstat (limited to 'src/opengl/qpixmapdata_gl_p.h')
-rw-r--r--src/opengl/qpixmapdata_gl_p.h19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/opengl/qpixmapdata_gl_p.h b/src/opengl/qpixmapdata_gl_p.h
index 97f4959eac..b1b31f7029 100644
--- a/src/opengl/qpixmapdata_gl_p.h
+++ b/src/opengl/qpixmapdata_gl_p.h
@@ -60,6 +60,7 @@
QT_BEGIN_NAMESPACE
class QPaintEngine;
+class QGLFramebufferObject;
class QGLPixmapData : public QPixmapData
{
@@ -72,6 +73,7 @@ public:
void resize(int width, int height);
void fromImage(const QImage &image,
Qt::ImageConversionFlags flags);
+ void copy(const QPixmapData *data, const QRect &rect);
bool scroll(int dx, int dy, const QRect &rect);
@@ -87,6 +89,17 @@ public:
void ensureCreated() const;
+ bool isUninitialized() const { return m_dirty && m_source.isNull(); }
+
+ QSize size() const { return QSize(m_width, m_height); }
+ int width() const { return m_width; }
+ int height() const { return m_height; }
+
+ QGLFramebufferObject *fbo() const;
+
+ void beginPaint();
+ void endPaint();
+
protected:
int metric(QPaintDevice::PaintDeviceMetric metric) const;
@@ -94,11 +107,15 @@ private:
QGLPixmapData(const QGLPixmapData &other);
QGLPixmapData &operator=(const QGLPixmapData &other);
+ static bool useFramebufferObjects();
+
int m_width;
int m_height;
+ mutable QGLFramebufferObject *m_renderFbo;
+ mutable uint m_textureId;
+ mutable QPaintEngine *m_engine;
mutable QGLContext *m_ctx;
- mutable GLuint m_texture;
mutable bool m_dirty;
mutable QImage m_source;
};