7#include <QtGui/qtguiglobal.h>
8#include <QtCore/qnamespace.h>
9#include <QtCore/qobjectdefs.h>
10#include <QtCore/qscopedpointer.h>
11#include <QtGui/qpainter.h>
19class QPaintEnginePrivate;
26class QPaintEngineState;
38 Q_DECLARE_FLAGS(RenderFlags, RenderFlag)
39 qreal descent()
const;
43 RenderFlags renderFlags()
const;
52 Q_DECLARE_PRIVATE(QPaintEngine)
54 enum PaintEngineFeature {
55 PrimitiveTransform = 0x00000001,
56 PatternTransform = 0x00000002,
57 PixmapTransform = 0x00000004,
58 PatternBrush = 0x00000008,
59 LinearGradientFill = 0x00000010,
60 RadialGradientFill = 0x00000020,
61 ConicalGradientFill = 0x00000040,
62 AlphaBlend = 0x00000080,
63 PorterDuff = 0x00000100,
64 PainterPaths = 0x00000200,
65 Antialiasing = 0x00000400,
66 BrushStroke = 0x00000800,
67 ConstantOpacity = 0x00001000,
68 MaskedBrush = 0x00002000,
69 PerspectiveTransform = 0x00004000,
70 BlendModes = 0x00008000,
71 ObjectBoundingModeGradients = 0x00010000,
72 RasterOpModes = 0x00020000,
73 PaintOutsidePaintEvent = 0x20000000,
75
76
77
78
79
81 AllFeatures = 0xffffffff
83 Q_DECLARE_FLAGS(PaintEngineFeatures, PaintEngineFeature)
111 explicit QPaintEngine(PaintEngineFeatures features=PaintEngineFeatures());
112 virtual ~QPaintEngine();
117 virtual bool begin(QPaintDevice *pdev) = 0;
122 virtual void drawRects(
const QRect *rects,
int rectCount);
123 virtual void drawRects(
const QRectF *rects,
int rectCount);
125 virtual void drawLines(
const QLine *lines,
int lineCount);
126 virtual void drawLines(
const QLineF *lines,
int lineCount);
131 virtual void drawPath(
const QPainterPath &path);
134 virtual void drawPoints(
const QPoint *points,
int pointCount);
139 virtual void drawPixmap(
const QRectF &r,
const QPixmap &pm,
const QRectF &sr) = 0;
141 virtual void drawTiledPixmap(
const QRectF &r,
const QPixmap &pixmap,
const QPointF &s);
142 virtual void drawImage(
const QRectF &r,
const QImage &pm,
const QRectF &sr,
179 inline void fix_neg_rect(
int *x,
int *y,
int *w,
int *h);
182 inline void setDirty(DirtyFlags df);
185 bool hasFeature(PaintEngineFeatures feature)
const {
return bool(gccaps & feature); }
196 QPaintEngine(QPaintEnginePrivate &data, PaintEngineFeatures devcaps=PaintEngineFeatures());
208 void setAutoDestruct(
bool autoDestr) { selfDestruct = autoDestr; }
209 bool autoDestruct()
const {
return selfDestruct; }
234 QPaintEngine::DirtyFlags state()
const {
return dirtyFlags; }
237 QBrush brush()
const;
238 QPointF brushOrigin()
const;
239 QBrush backgroundBrush()
const;
240 Qt::BGMode backgroundMode()
const;
242 QTransform transform()
const;
244 Qt::ClipOperation clipOperation()
const;
245 QRegion clipRegion()
const;
246 QPainterPath clipPath()
const;
247 bool isClipEnabled()
const;
249 QPainter::RenderHints renderHints()
const;
250 QPainter::CompositionMode compositionMode()
const;
251 qreal opacity()
const;
253 QPainter *painter()
const;
255 bool brushNeedsResolving()
const;
256 bool penNeedsResolving()
const;
259 friend class QPaintEngine;
260 friend class QRasterPaintEngine;
261 friend class QWidget;
262 friend class QPainter;
263 friend class QPainterPrivate;
264 friend class QMacPrintEnginePrivate;
266 QPaintEngine::DirtyFlags dirtyFlags;
273inline void QPaintEngine::fix_neg_rect(
int *x,
int *y,
int *w,
int *h)
285inline bool QPaintEngine::testDirty(DirtyFlags df) {
287 return bool(state->dirtyFlags & df);
290inline void QPaintEngine::setDirty(DirtyFlags df) {
292 state->dirtyFlags |= df;
295inline void QPaintEngine::clearDirty(DirtyFlags df)
298 state->dirtyFlags &= ~df;
301Q_DECLARE_OPERATORS_FOR_FLAGS(QTextItem::RenderFlags)
302Q_DECLARE_OPERATORS_FOR_FLAGS(QPaintEngine::PaintEngineFeatures)
303Q_DECLARE_OPERATORS_FOR_FLAGS(QPaintEngine::DirtyFlags)
QScopedPointer< QImageIOHandlerPrivate > d_ptr
The QPaintEngineState class provides information about the active paint engine's current state....
virtual QPixmap createPixmap(QSize size)
void setSystemRect(const QRect &rect)
void setActive(bool newState)
Sets the active state of the paint engine to state.
virtual void drawPolygon(const QPoint *points, int pointCount, PolygonDrawMode mode)
This is an overloaded member function, provided for convenience. It differs from the above function o...
virtual QPixmap createPixmapFromImage(QImage image, Qt::ImageConversionFlags flags=Qt::AutoColor)
friend class QWidgetPrivate
QPaintEngine(PaintEngineFeatures features=PaintEngineFeatures())
Creates a paint engine with the featureset specified by caps.
friend class QFontEngineQPF2
friend class QMacCGContext
virtual void drawTextItem(const QPointF &p, const QTextItem &textItem)
This function draws the text item textItem at position p.
virtual void drawLines(const QLineF *lines, int lineCount)
The default implementation splits the list of lines in lines into lineCount separate calls to drawPat...
PolygonDrawMode
\value OddEvenMode The polygon should be drawn using OddEven fill rule.
virtual void drawPoints(const QPointF *points, int pointCount)
Draws the first pointCount points in the buffer points.
virtual void drawRects(const QRectF *rects, int rectCount)
Draws the first rectCount rectangles in the buffer rects.
virtual void drawImage(const QRectF &r, const QImage &pm, const QRectF &sr, Qt::ImageConversionFlags flags=Qt::AutoColor)
Reimplement this function to draw the part of the image specified by the sr rectangle in the given re...
QPainter * painter() const
Returns the paint engine's painter.
void fix_neg_rect(int *x, int *y, int *w, int *h)
void setPaintDevice(QPaintDevice *device)
virtual QPoint coordinateOffset() const
virtual void drawPolygon(const QPointF *points, int pointCount, PolygonDrawMode mode)
Reimplement this virtual function to draw the polygon defined by the pointCount first points in point...
void setDirty(DirtyFlags df)
void setSystemClip(const QRegion &baseClip)
QPaintEngineState * state
friend class QPainterReplayer
friend class QX11GLPlatformPixmap
PaintEngineFeatures gccaps
void clearDirty(DirtyFlags df)
bool hasFeature(PaintEngineFeatures feature) const
Returns true if the paint engine supports the specified feature; otherwise returns false.
virtual void drawEllipse(const QRectF &r)
Reimplement this function to draw the largest ellipse that can be contained within rectangle rect.
QRegion systemClip() const
QPaintDevice * paintDevice() const
Returns the device that this engine is painting on, if painting is active; otherwise returns \nullptr...
bool testDirty(DirtyFlags df)
virtual void updateState(const QPaintEngineState &state)=0
Reimplement this function to update the state of a paint engine.
DirtyFlag
\value DirtyPen The pen is dirty and needs to be updated.
Type
\value X11 \value Windows \value MacPrinter \value CoreGraphics \macos's Quartz2D (CoreGraphics) \val...
virtual Type type() const =0
Reimplement this function to return the paint engine \l{Type}.
void drawPath(const QPainterPath &path)
Draws the given painter path using the current pen for outline and the current brush for filling.
bool begin(QPaintDevice *)
Begins painting the paint device and returns true if successful; otherwise returns false.
void drawRects(const QRectF *rects, int rectCount)
Draws the first rectCount of the given rectangles using the current pen and brush.
void drawLines(const QLineF *lines, int lineCount)
Draws the first lineCount lines in the array lines using the current pen.
friend class QFontEngineMac
friend class QWin32PaintEngine
friend class QWin32PaintEnginePrivate
friend class QFontEngineWin
void drawEllipse(const QRectF &r)
Draws the ellipse defined by the given rectangle.
void drawPoints(const QPointF *points, int pointCount)
Draws the first pointCount points in the array points using the current pen's color.
bool isActive() const
Returns true if begin() has been called and end() has not yet been called; otherwise returns false.
\inmodule QtCore\reentrant
The QPolygonF class provides a list of points using floating point precision.
The QWindows11Style class provides a look and feel suitable for applications on Microsoft Windows 11.
void drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const override
void unpolish(QWidget *widget) override
void polish(QWidget *widget) override
void drawComplexControl(ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget) const override
QSize sizeFromContents(ContentsType type, const QStyleOption *option, const QSize &size, const QWidget *widget) const override
QRect subControlRect(ComplexControl control, const QStyleOptionComplex *option, SubControl subControl, const QWidget *widget) const override
QWindows11Style(QWindows11StylePrivate &dd)
void polish(QPalette &pal) override
int pixelMetric(PixelMetric metric, const QStyleOption *option=nullptr, const QWidget *widget=nullptr) const override
int styleHint(StyleHint hint, const QStyleOption *opt=nullptr, const QWidget *widget=nullptr, QStyleHintReturn *returnData=nullptr) const override
void drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const override
QRect subElementRect(QStyle::SubElement element, const QStyleOption *option, const QWidget *widget=nullptr) const override
~QWindows11Style() override
Destructor.
HRGN mask(QWidget *widget)
QWindowsThemeData(const QWidget *w=nullptr, QPainter *p=nullptr, int themeIn=-1, int part=0, int state=0, const QRect &r=QRect())
QMarginsF margins(const QRect &rect, int propId=TMT_CONTENTMARGINS)
static RECT toRECT(const QRect &qr)
QMarginsF margins(int propId=TMT_CONTENTMARGINS)
static QSizeF themeSize(const QWidget *w=nullptr, QPainter *p=nullptr, int themeIn=-1, int part=0, int state=0)
HBITMAP buffer(int w=0, int h=0)
static int fixedPixelMetric(QStyle::PixelMetric pm)
static HDC hdcForWidgetBackingStore(const QWidget *widget)
static QBackingStore * backingStoreForWidget(const QWidget *widget)
bool swapAlphaChannel(const QRect &rect, bool allPixels=false)
bool drawBackgroundThruNativeBuffer(QWindowsThemeData &QWindowsThemeData, qreal aditionalDevicePixelRatio, qreal correctionFactor)
static HWND winId(const QWidget *widget)
void init(bool force=false)
static bool isLineEditBaseColorSet(const QStyleOption *option, const QWidget *widget)
bool transitionsEnabled() const
bool drawBackgroundDirectly(HDC dc, QWindowsThemeData &QWindowsThemeData, qreal aditionalDevicePixelRatio)
static bool isItemViewDelegateLineEdit(const QWidget *widget)
static bool useVista(bool update=false)
QRgb groupBoxTextColorDisabled
bool fixAlphaChannel(const QRect &rect)
void cleanup(bool force=false)
QWindowsVistaStylePrivate()
bool isTransparent(QWindowsThemeData &QWindowsThemeData)
bool hasAlphaChannel(const QRect &rect)
QRegion region(QWindowsThemeData &QWindowsThemeData)
QTime animationTime() const
~QWindowsVistaStylePrivate()
bool drawBackground(QWindowsThemeData &QWindowsThemeData, qreal correctionFactor=1)
static HTHEME createTheme(int theme, const QWidget *widget)
static int pixelMetricFromSystemDp(QStyle::PixelMetric pm, const QStyleOption *option=nullptr, const QWidget *widget=nullptr)
static QString themeName(int theme)
The QWindowsVistaStyle class provides a look and feel suitable for applications on Microsoft Windows ...
QRect subElementRect(SubElement element, const QStyleOption *option, const QWidget *widget) const override
QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc, const QWidget *widget) const override
int styleHint(StyleHint hint, const QStyleOption *opt=nullptr, const QWidget *widget=nullptr, QStyleHintReturn *returnData=nullptr) const override
SubControl hitTestComplexControl(ComplexControl control, const QStyleOptionComplex *option, const QPoint &pos, const QWidget *widget=nullptr) const override
void drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const override
void polish(QWidget *widget) override
int pixelMetric(PixelMetric metric, const QStyleOption *option=nullptr, const QWidget *widget=nullptr) const override
QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt, const QWidget *widget=nullptr) const override
QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *option=nullptr, const QWidget *widget=nullptr) const override
\reimp
~QWindowsVistaStyle() override
Destructor.
void polish(QPalette &pal) override
void drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget=nullptr) const override
QSize sizeFromContents(ContentsType type, const QStyleOption *option, const QSize &size, const QWidget *widget) const override
QWindowsVistaStyle(QWindowsVistaStylePrivate &dd)
void drawComplexControl(ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget) const override
void unpolish(QWidget *widget) override
Combined button and popup list for selecting options.
Q_DECLARE_TYPEINFO(QByteArrayView, Q_PRIMITIVE_TYPE)
Q_CORE_EXPORT QDebug operator<<(QDebug debug, QDir::Filters filters)
bool operator==(const ThemeMapKey &k1, const ThemeMapKey &k2)
size_t qHash(const ThemeMapKey &key)
AlphaChannelType alphaType
ThemeMapKey(const QWindowsThemeData &data)