Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qpixmap.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QPIXMAP_H
5#define QPIXMAP_H
6
7#include <QtGui/qtguiglobal.h>
8#include <QtGui/qpaintdevice.h>
9#include <QtGui/qcolor.h>
10#include <QtCore/qnamespace.h>
11#include <QtCore/qshareddata.h>
12#include <QtCore/qstring.h> // char*->QString conversion
13#include <QtGui/qimage.h>
14#include <QtGui/qtransform.h>
15
17
18
19class QImageWriter;
20class QImageReader;
21class QColor;
22class QVariant;
23class QPlatformPixmap;
25
26class Q_GUI_EXPORT QPixmap : public QPaintDevice
27{
28public:
29 QPixmap();
30 explicit QPixmap(QPlatformPixmap *data);
31 QPixmap(int w, int h);
32 explicit QPixmap(const QSize &);
33 QPixmap(const QString& fileName, const char *format = nullptr, Qt::ImageConversionFlags flags = Qt::AutoColor);
34#ifndef QT_NO_IMAGEFORMAT_XPM
35 explicit QPixmap(const char * const xpm[]);
36#endif
37 QPixmap(const QPixmap &);
38 QPixmap(QPixmap &&other) noexcept : QPaintDevice(), data(std::move(other.data)) {}
39 ~QPixmap();
40
41 QPixmap &operator=(const QPixmap &);
42 QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_MOVE_AND_SWAP(QPixmap)
43 inline void swap(QPixmap &other) noexcept
44 { data.swap(other.data); }
45 bool operator==(const QPixmap &) const = delete;
46 bool operator!=(const QPixmap &) const = delete;
47
48 operator QVariant() const;
49
50 bool isNull() const;
51 int devType() const override;
52
53 int width() const;
54 int height() const;
55 QSize size() const;
56 QRect rect() const;
57 int depth() const;
58
59 static int defaultDepth();
60
61 void fill(const QColor &fillColor = Qt::white);
62
63 QBitmap mask() const;
64 void setMask(const QBitmap &);
65
66 qreal devicePixelRatio() const;
67 void setDevicePixelRatio(qreal scaleFactor);
68 QSizeF deviceIndependentSize() const;
69
70 bool hasAlpha() const;
71 bool hasAlphaChannel() const;
72
73#ifndef QT_NO_IMAGE_HEURISTIC_MASK
74 QBitmap createHeuristicMask(bool clipTight = true) const;
75#endif
76 QBitmap createMaskFromColor(const QColor &maskColor, Qt::MaskMode mode = Qt::MaskInColor) const;
77
80 { return scaled(QSize(w, h), aspectMode, mode); }
86 static QTransform trueMatrix(const QTransform &m, int w, int h);
87
88 QImage toImage() const;
89 static QPixmap fromImage(const QImage &image, Qt::ImageConversionFlags flags = Qt::AutoColor);
90 static QPixmap fromImageReader(QImageReader *imageReader, Qt::ImageConversionFlags flags = Qt::AutoColor);
91 static QPixmap fromImage(QImage &&image, Qt::ImageConversionFlags flags = Qt::AutoColor)
92 {
94 }
95
96 bool load(const QString& fileName, const char *format = nullptr, Qt::ImageConversionFlags flags = Qt::AutoColor);
97 bool loadFromData(const uchar *buf, uint len, const char* format = nullptr, Qt::ImageConversionFlags flags = Qt::AutoColor);
98 inline bool loadFromData(const QByteArray &data, const char* format = nullptr, Qt::ImageConversionFlags flags = Qt::AutoColor);
99 bool save(const QString& fileName, const char* format = nullptr, int quality = -1) const;
100 bool save(QIODevice* device, const char* format = nullptr, int quality = -1) const;
101
102 bool convertFromImage(const QImage &img, Qt::ImageConversionFlags flags = Qt::AutoColor);
103
104 inline QPixmap copy(int x, int y, int width, int height) const;
105 QPixmap copy(const QRect &rect = QRect()) const;
106
107 inline void scroll(int dx, int dy, int x, int y, int width, int height, QRegion *exposed = nullptr);
108 void scroll(int dx, int dy, const QRect &rect, QRegion *exposed = nullptr);
109
110 qint64 cacheKey() const;
111
112 bool isDetached() const;
113 void detach();
114
115 bool isQBitmap() const;
116
117 QPaintEngine *paintEngine() const override;
118
119 inline bool operator!() const { return isNull(); }
120
121protected:
122 int metric(PaintDeviceMetric) const override;
123 static QPixmap fromImageInPlace(QImage &image, Qt::ImageConversionFlags flags = Qt::AutoColor);
124
125private:
126 QExplicitlySharedDataPointer<QPlatformPixmap> data;
127
128 bool doImageIO(QImageWriter *io, int quality) const;
129
130 QPixmap(const QSize &s, int type);
131 void doInit(int, int, int);
132 friend class QPlatformPixmap;
133 friend class QBitmap;
134 friend class QPaintDevice;
135 friend class QPainter;
136 friend class QOpenGLWidget;
137 friend class QWidgetPrivate;
138 friend class QRasterBuffer;
139#if !defined(QT_NO_DATASTREAM)
140 friend Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QPixmap &);
141#endif
142
143public:
144 QPlatformPixmap* handle() const;
145
146public:
147 typedef QExplicitlySharedDataPointer<QPlatformPixmap> DataPtr;
148 inline DataPtr &data_ptr() { return data; }
149};
150
151Q_DECLARE_SHARED(QPixmap)
152
153inline QPixmap QPixmap::copy(int ax, int ay, int awidth, int aheight) const
154{
155 return copy(QRect(ax, ay, awidth, aheight));
156}
157
158inline void QPixmap::scroll(int dx, int dy, int ax, int ay, int awidth, int aheight, QRegion *exposed)
159{
160 scroll(dx, dy, QRect(ax, ay, awidth, aheight), exposed);
161}
162
163inline bool QPixmap::loadFromData(const QByteArray &buf, const char *format,
164 Qt::ImageConversionFlags flags)
165{
166 return loadFromData(reinterpret_cast<const uchar *>(buf.constData()), uint(buf.size()), format, flags);
167}
168
169
170/*****************************************************************************
171 QPixmap stream functions
172*****************************************************************************/
173
174#if !defined(QT_NO_DATASTREAM)
175Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QPixmap &);
177#endif
178
179#ifndef QT_NO_DEBUG_STREAM
180Q_GUI_EXPORT QDebug operator<<(QDebug, const QPixmap &);
181#endif
182
184
185#endif // QPIXMAP_H
IOBluetoothDevice * device
\inmodule QtGui
Definition qbitmap.h:16
\inmodule QtCore
Definition qbytearray.h:57
The QColor class provides colors based on RGB, HSV or CMYK values.
Definition qcolor.h:31
\inmodule QtCore\reentrant
Definition qdatastream.h:46
\inmodule QtCore
\inmodule QtCore \reentrant
Definition qiodevice.h:34
The QImageReader class provides a format independent interface for reading images from files or other...
The QImageWriter class provides a format independent interface for writing images to files or other d...
\inmodule QtGui
Definition qimage.h:37
\inmodule QtOpenGLWidgets
\inmodule QtGui
The QPainter class performs low-level painting on widgets and other paint devices.
Definition qpainter.h:46
Returns a copy of the pixmap that is transformed using the given transformation transform and transfo...
Definition qpixmap.h:27
int metric(PaintDeviceMetric) const override
QPixmap scaled(int w, int h, Qt::AspectRatioMode aspectMode=Qt::IgnoreAspectRatio, Qt::TransformationMode mode=Qt::FastTransformation) const
Definition qpixmap.h:78
bool operator!=(const QPixmap &) const =delete
static QPixmap fromImage(QImage &&image, Qt::ImageConversionFlags flags=Qt::AutoColor)
Definition qpixmap.h:91
QPaintEngine * paintEngine() const override
void scroll(int dx, int dy, int x, int y, int width, int height, QRegion *exposed=nullptr)
This convenience function is equivalent to calling QPixmap::scroll(dx, dy, QRect(x,...
Definition qpixmap.h:158
QPixmap scaledToHeight(int h, Qt::TransformationMode mode=Qt::FastTransformation) const
Returns a scaled copy of the image.
QBitmap mask() const
Returns true if this pixmap has an alpha channel, or has a mask, otherwise returns false.
QPixmap transformed(const QTransform &, Qt::TransformationMode mode=Qt::FastTransformation) const
bool operator==(const QPixmap &) const =delete
static int defaultDepth()
bool loadFromData(const uchar *buf, uint len, const char *format=nullptr, Qt::ImageConversionFlags flags=Qt::AutoColor)
Loads a pixmap from the len first bytes of the given binary data.
Definition qpixmap.cpp:761
QExplicitlySharedDataPointer< QPlatformPixmap > DataPtr
Definition qpixmap.h:147
QPixmap scaled(const QSize &s, Qt::AspectRatioMode aspectMode=Qt::IgnoreAspectRatio, Qt::TransformationMode mode=Qt::FastTransformation) const
bool hasAlphaChannel() const
QPixmap(QPixmap &&other) noexcept
Move-constructs a QPixmap instance from other.
Definition qpixmap.h:38
bool hasAlpha() const
DataPtr & data_ptr()
Definition qpixmap.h:148
bool operator!() const
Returns true if this is a null pixmap; otherwise returns false.
Definition qpixmap.h:119
The QPlatformPixmap class provides an abstraction for native pixmaps.
virtual void setMask(const QBitmap &mask)
virtual bool scroll(int dx, int dy, const QRect &rect)
virtual void fromImageReader(QImageReader *imageReader, Qt::ImageConversionFlags flags)
virtual void fromImageInPlace(QImage &image, Qt::ImageConversionFlags flags)
virtual QImage toImage() const =0
friend class QPixmap
virtual qreal devicePixelRatio() const =0
virtual void setDevicePixelRatio(qreal scaleFactor)=0
bool isNull() const
virtual void fromImage(const QImage &image, Qt::ImageConversionFlags flags)=0
\inmodule QtCore\reentrant
Definition qrect.h:30
The QRegion class specifies a clip region for a painter.
Definition qregion.h:27
\inmodule QtCore
Definition qsize.h:208
\inmodule QtCore
Definition qsize.h:25
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
The QTransform class specifies 2D transformations of a coordinate system.
Definition qtransform.h:20
\inmodule QtCore
Definition qvariant.h:65
p1 load("image.bmp")
rect
[4]
Combined button and popup list for selecting options.
@ AutoColor
Definition qnamespace.h:478
TransformationMode
@ FastTransformation
AspectRatioMode
@ IgnoreAspectRatio
@ white
Definition qnamespace.h:31
@ MaskInColor
Definition image.cpp:4
static jboolean copy(JNIEnv *, jobject)
static QByteArray cacheKey(Args &&...args)
GLuint64 GLenum void * handle
GLint GLint GLint GLint GLint x
[0]
GLint GLenum GLsizei GLsizei GLsizei depth
GLenum mode
const GLfloat * m
GLfloat GLfloat GLfloat w
[0]
GLint GLsizei GLsizei height
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLint GLsizei width
GLenum type
GLenum GLuint GLenum GLsizei const GLchar * buf
GLbitfield flags
GLint GLsizei GLsizei GLenum format
GLint y
GLfloat GLfloat GLfloat GLfloat h
GLdouble s
[6]
Definition qopenglext.h:235
GLint void * img
Definition qopenglext.h:233
GLenum GLsizei len
Q_GUI_EXPORT QDataStream & operator>>(QDataStream &, QPixmap &)
Q_GUI_EXPORT QDataStream & operator<<(QDataStream &, const QPixmap &)
#define QT_DECLARE_QESDP_SPECIALIZATION_DTOR_WITH_EXPORT(Class, ExportMacro)
unsigned char uchar
Definition qtypes.h:32
unsigned int uint
Definition qtypes.h:34
long long qint64
Definition qtypes.h:60
double qreal
Definition qtypes.h:187
QImage scaled(const QImage &image)
[0]
ba fill(true)
QSharedPointer< T > other(t)
[5]
this swap(other)