Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qpixmapfilter_p.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// Qt-Security score:significant reason:default
4
5#ifndef QPIXMAPFILTER_H
6#define QPIXMAPFILTER_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is not part of the Qt API. It exists purely as an
13// implementation detail. This header file may change from version to
14// version without notice, or even be removed.
15//
16// We mean it.
17//
18
19#include <QtWidgets/private/qtwidgetsglobal_p.h>
20#include <QtCore/qnamespace.h>
21#include <QtGui/qpixmap.h>
22#include <QtWidgets/qgraphicseffect.h>
23
25
26QT_BEGIN_NAMESPACE
27
28class QPainter;
29class QPlatformPixmap;
30
32
33class Q_WIDGETS_EXPORT QPixmapFilter : public QObject
34{
35 Q_OBJECT
36 Q_DECLARE_PRIVATE(QPixmapFilter)
37public:
38 virtual ~QPixmapFilter() = 0;
39
40 enum FilterType {
41 ConvolutionFilter,
42 ColorizeFilter,
43 DropShadowFilter,
44 BlurFilter,
45
46 UserFilter = 1024
47 };
48
49 FilterType type() const;
50
51 virtual QRectF boundingRectFor(const QRectF &rect) const;
52
53 virtual void draw(QPainter *painter, const QPointF &p, const QPixmap &src, const QRectF &srcRect = QRectF()) const = 0;
54
55protected:
56 QPixmapFilter(QPixmapFilterPrivate &d, FilterType type, QObject *parent);
57 QPixmapFilter(FilterType type, QObject *parent);
58};
59
61
62class Q_WIDGETS_EXPORT QPixmapConvolutionFilter : public QPixmapFilter
63{
64 Q_OBJECT
65 Q_DECLARE_PRIVATE(QPixmapConvolutionFilter)
66
67public:
68 QPixmapConvolutionFilter(QObject *parent = nullptr);
69 ~QPixmapConvolutionFilter();
70
71 void setConvolutionKernel(const qreal *matrix, int rows, int columns);
72
73 QRectF boundingRectFor(const QRectF &rect) const override;
74 void draw(QPainter *painter, const QPointF &dest, const QPixmap &src, const QRectF &srcRect = QRectF()) const override;
75
76private:
77 friend class QVGPixmapConvolutionFilter;
78 const qreal *convolutionKernel() const;
79 int rows() const;
80 int columns() const;
81};
82
84
85class Q_WIDGETS_EXPORT QPixmapBlurFilter : public QPixmapFilter
86{
87 Q_OBJECT
88 Q_DECLARE_PRIVATE(QPixmapBlurFilter)
89
90public:
91 QPixmapBlurFilter(QObject *parent = nullptr);
92 ~QPixmapBlurFilter();
93
94 void setRadius(qreal radius);
95 void setBlurHints(QGraphicsBlurEffect::BlurHints hints);
96
97 qreal radius() const;
98 QGraphicsBlurEffect::BlurHints blurHints() const;
99
100 QRectF boundingRectFor(const QRectF &rect) const override;
101 void draw(QPainter *painter, const QPointF &dest, const QPixmap &src, const QRectF &srcRect = QRectF()) const override;
102};
103
105
106class Q_WIDGETS_EXPORT QPixmapColorizeFilter : public QPixmapFilter
107{
108 Q_OBJECT
109 Q_DECLARE_PRIVATE(QPixmapColorizeFilter)
110
111public:
112 QPixmapColorizeFilter(QObject *parent = nullptr);
113 ~QPixmapColorizeFilter();
114
115 void setColor(const QColor& color);
116 QColor color() const;
117
118 void setStrength(qreal strength);
119 qreal strength() const;
120
121 void draw(QPainter *painter, const QPointF &dest, const QPixmap &src, const QRectF &srcRect = QRectF()) const override;
122};
123
125
126class Q_WIDGETS_EXPORT QPixmapDropShadowFilter : public QPixmapFilter
127{
128 Q_OBJECT
129 Q_DECLARE_PRIVATE(QPixmapDropShadowFilter)
130
131public:
132 QPixmapDropShadowFilter(QObject *parent = nullptr);
133 ~QPixmapDropShadowFilter();
134
135 QRectF boundingRectFor(const QRectF &rect) const override;
136 void draw(QPainter *p, const QPointF &pos, const QPixmap &px, const QRectF &src = QRectF()) const override;
137
138 qreal blurRadius() const;
139 void setBlurRadius(qreal radius);
140
141 QColor color() const;
142 void setColor(const QColor &color);
143
144 QPointF offset() const;
145 void setOffset(const QPointF &offset);
146 inline void setOffset(qreal dx, qreal dy) { setOffset(QPointF(dx, dy)); }
147};
148
149QT_END_NAMESPACE
150
151#endif // QPIXMAPFILTER_H
friend class QPainter
QGraphicsBlurEffect::BlurHints hints
The QPixmapBlurFilter class provides blur filtering for pixmaps.
The QPixmapColorizeFilter class provides colorizing filtering for pixmaps.
The QPixmapConvolutionFilter class provides convolution filtering for pixmaps.
The QPixmapDropShadowFilter class is a convenience class for drawing pixmaps with drop shadows.
The QPixmapFilter class provides the basic functionality for pixmap filter classes....
Q_GUI_EXPORT bool qt_scaleForTransform(const QTransform &transform, qreal *scale)
Q_GUI_EXPORT void qt_blurImage(QPainter *p, QImage &blurImage, qreal radius, bool quality, bool alphaOnly, int transposed=0)
const qreal radiusScale
static void grayscale(const QImage &image, QImage &dest, const QRect &rect=QRect())
static void convolute(QImage *destImage, const QPointF &pos, const QImage &srcImage, const QRectF &srcRect, QPainter::CompositionMode mode, qreal *kernel, int kernelWidth, int kernelHeight)
QT_REQUIRE_CONFIG(thread)