diff options
author | Paul Olav Tvete <paul.tvete@nokia.com> | 2010-07-19 12:32:08 (GMT) |
---|---|---|
committer | Paul Olav Tvete <paul.tvete@nokia.com> | 2010-07-19 12:32:08 (GMT) |
commit | 680e7b8fb3b675842a69fb65024942fe838a8dd2 (patch) | |
tree | d1b588e71a6e9dea60f006fb1110be66a69093e8 /src/plugins/graphicssystems/blittable/qblittable_image.h | |
parent | df6549d1b95af017305744af04a7bb3b10025660 (diff) | |
parent | e97e3616a33ed93283157514c6b208e071aca8be (diff) | |
download | Qt-680e7b8fb3b675842a69fb65024942fe838a8dd2.zip Qt-680e7b8fb3b675842a69fb65024942fe838a8dd2.tar.gz Qt-680e7b8fb3b675842a69fb65024942fe838a8dd2.tar.bz2 |
Merge remote branch 'remotes/lighthouse/4.7' into lighthouse-master
Conflicts:
src/opengl/qgl_p.h
Diffstat (limited to 'src/plugins/graphicssystems/blittable/qblittable_image.h')
-rw-r--r-- | src/plugins/graphicssystems/blittable/qblittable_image.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/plugins/graphicssystems/blittable/qblittable_image.h b/src/plugins/graphicssystems/blittable/qblittable_image.h new file mode 100644 index 0000000..3f8dc69 --- /dev/null +++ b/src/plugins/graphicssystems/blittable/qblittable_image.h @@ -0,0 +1,48 @@ +#include <qimage.h> + +#include <private/qblittable_p.h> + + +class QImageBlittable : public QBlittable +{ +public: + QImageBlittable(QImage *image, bool deleteImage) + : QBlittable(image->size(), QBlittable::Capabilities(QBlittable::SolidRectCapability + |QBlittable::SourcePixmapCapability + |QBlittable::SourceOverPixmapCapability + |QBlittable::SourceOverScaledPixmapCapability)), + m_image(image), m_deleteImage(deleteImage) + { + + } + + ~QImageBlittable() { + if (m_deleteImage) + delete m_image; + } + + void fillRect(const QRectF &rect, const QColor &color) + { + QPainter p(lock()); + p.fillRect(rect,color); + } + void drawPixmap(const QRectF &rect, const QPixmap &pixmap, const QRectF &source) + { + //here it is possible to do a pixmap.pixmapData()->buffer() + //but is like this to show how to get the the blitter + QPixmapData *data = pixmap.pixmapData(); + Q_ASSERT(data->width() && data->height()); + Q_ASSERT(data->classId() == QPixmapData::BlitterClass); + QBlittablePixmapData *blittableData = static_cast<QBlittablePixmapData*>(data); + + QPainter p(lock()); + p.drawImage(rect, *blittableData->blittable()->lock(),source); + } + +protected: + QImage *doLock() { return m_image; } + void doUnlock() { } +private: + QImage *m_image; + bool m_deleteImage; +}; |