Track API change in QPlatformNativeInterface
[profile/ivi/qtbase.git] / src / plugins / gfxdrivers / directfb / qdirectfbpixmap.h
1 /****************************************************************************
2 **
3 ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
4 ** All rights reserved.
5 ** Contact: Nokia Corporation (qt-info@nokia.com)
6 **
7 ** This file is part of the plugins of the Qt Toolkit.
8 **
9 ** $QT_BEGIN_LICENSE:LGPL$
10 ** No Commercial Usage
11 ** This file contains pre-release code and may not be distributed.
12 ** You may use this file in accordance with the terms and conditions
13 ** contained in the Technology Preview License Agreement accompanying
14 ** this package.
15 **
16 ** GNU Lesser General Public License Usage
17 ** Alternatively, this file may be used under the terms of the GNU Lesser
18 ** General Public License version 2.1 as published by the Free Software
19 ** Foundation and appearing in the file LICENSE.LGPL included in the
20 ** packaging of this file.  Please review the following information to
21 ** ensure the GNU Lesser General Public License version 2.1 requirements
22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23 **
24 ** In addition, as a special exception, Nokia gives you certain additional
25 ** rights.  These rights are described in the Nokia Qt LGPL Exception
26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
27 **
28 ** If you have questions regarding the use of this file, please contact
29 ** Nokia at qt-info@nokia.com.
30 **
31 **
32 **
33 **
34 **
35 **
36 **
37 **
38 ** $QT_END_LICENSE$
39 **
40 ****************************************************************************/
41
42 #ifndef QDIRECTFBPIXMAP_H
43 #define QDIRECTFBPIXMAP_H
44
45 #include <qglobal.h>
46
47 #ifndef QT_NO_QWS_DIRECTFB
48
49 #include <QtGui/private/qpixmapdata_p.h>
50 #include <QtGui/private/qpaintengine_raster_p.h>
51 #include "qdirectfbpaintdevice.h"
52 #include <directfb.h>
53
54 QT_BEGIN_HEADER
55
56 QT_BEGIN_NAMESPACE
57
58 QT_MODULE(Gui)
59
60 class QDirectFBPaintEngine;
61
62 class QDirectFBPixmapData : public QPixmapData, public QDirectFBPaintDevice
63 {
64 public:
65     QDirectFBPixmapData(QDirectFBScreen *screen, PixelType pixelType);
66     ~QDirectFBPixmapData();
67
68     // Re-implemented from QPixmapData:
69     virtual void resize(int width, int height);
70     virtual void fromImage(const QImage &image, Qt::ImageConversionFlags flags);
71 #ifdef QT_DIRECTFB_IMAGEPROVIDER
72     virtual bool fromFile(const QString &filename, const char *format,
73                           Qt::ImageConversionFlags flags);
74     virtual bool fromData(const uchar *buffer, uint len, const char *format,
75                           Qt::ImageConversionFlags flags);
76 #endif
77     virtual void copy(const QPixmapData *data, const QRect &rect);
78     virtual void fill(const QColor &color);
79     virtual QPixmap transformed(const QTransform &matrix,
80                                 Qt::TransformationMode mode) const;
81     virtual QImage toImage() const;
82     virtual QPaintEngine *paintEngine() const;
83     virtual QImage *buffer();
84     virtual bool scroll(int dx, int dy, const QRect &rect);
85     // Pure virtual in QPixmapData, so re-implement here and delegate to QDirectFBPaintDevice
86     virtual int metric(QPaintDevice::PaintDeviceMetric m) const { return QDirectFBPaintDevice::metric(m); }
87
88     inline QImage::Format pixelFormat() const { return imageFormat; }
89     inline bool hasAlphaChannel() const { return alpha; }
90     static bool hasAlphaChannel(const QImage &img, Qt::ImageConversionFlags flags = Qt::AutoColor);
91 private:
92 #ifdef QT_DIRECTFB_IMAGEPROVIDER
93     bool fromDataBufferDescription(const DFBDataBufferDescription &dataBuffer);
94 #endif
95     void invalidate();
96     bool alpha;
97 };
98
99 QT_END_NAMESPACE
100
101 QT_END_HEADER
102
103 #endif // QT_NO_QWS_DIRECTFB
104
105 #endif // QDIRECTFBPIXMAP_H