blob: 9730ecc7dcb32b8dd524648ca94752ab77ddb7a0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
#include "qpixmap_blitter_p.h"
#include <private/qapplication_p.h>
#include <private/qgraphicssystem_p.h>
QBlittablePixmapData::QBlittablePixmapData(PixelType type)
: QPixmapData(type,BlitterClass), m_blittable(0), m_engine(0)
{
}
QBlittablePixmapData::~QBlittablePixmapData()
{
}
void QBlittablePixmapData::resize(int width, int height)
{
delete m_blittable;
m_blittable = QApplicationPrivate::graphicsSystem()->createBlittable(QRect(0,0,width,height));
m_engine = 0;
}
int QBlittablePixmapData::metric(QPaintDevice::PaintDeviceMetric metric) const
{
QImage *image = m_blittable->lock();
return image->metric(metric);
}
void QBlittablePixmapData::fill(const QColor &color)
{
if (m_blittable->capabilities() & QBlittable::SolidRectCapability)
m_blittable->fillRect(m_blittable->rect(),color);
else
m_blittable->lock()->fill(color.rgb());
}
QImage *QBlittablePixmapData::buffer()
{
return m_blittable->lock();
}
QImage QBlittablePixmapData::toImage()
{
return m_blittable->lock()->copy();
}
bool QBlittablePixmapData::hasAlphaChannel()
{
return m_blittable->lock()->hasAlphaChannel();
}
void QBlittablePixmapData::fromImage(const QImage &image,
Qt::ImageConversionFlags flags)
{
m_blittable = new QImageBlitter(image);
m_engine = 0;
}
QPaintEngine *QBlittablePixmapData::paintEngine() const
{
if (!m_engine) {
QBlittablePixmapData *that = const_cast<QBlittablePixmapData *>(this);
that->m_engine = new QBlitterPaintEngine(that);
}
return m_engine;
}
|