Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qgraphicseffect_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
QGRAPHICSEFFECT_P_H
6
#
define
QGRAPHICSEFFECT_P_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 for the convenience
13
// of qapplication_*.cpp, qwidget*.cpp and qfiledialog.cpp. This header
14
// file may change from version to version without notice, or even be removed.
15
//
16
// We mean it.
17
//
18
19
#
include
<
QtWidgets
/
private
/
qtwidgetsglobal_p
.
h
>
20
#
include
"qgraphicseffect.h"
21
22
#
include
<
QPixmapCache
>
23
24
#
include
<
private
/
qobject_p
.
h
>
25
#
include
<
private
/
qpixmapfilter_p
.
h
>
26
27
QT_REQUIRE_CONFIG
(
graphicseffect
);
28
29
QT_BEGIN_NAMESPACE
30
31
class
QGraphicsEffectSourcePrivate;
32
class
Q_WIDGETS_EXPORT
QGraphicsEffectSource
:
public
QObject
33
{
34
Q_OBJECT
35
public
:
36
~QGraphicsEffectSource();
37
const
QGraphicsItem *graphicsItem()
const
;
38
const
QWidget *widget()
const
;
39
const
QStyleOption *styleOption()
const
;
40
41
bool
isPixmap()
const
;
42
void
draw(QPainter *painter);
43
void
update();
44
45
QRectF boundingRect(Qt::CoordinateSystem coordinateSystem = Qt::LogicalCoordinates)
const
;
46
QRect deviceRect()
const
;
47
QPixmap pixmap(Qt::CoordinateSystem system = Qt::LogicalCoordinates,
48
QPoint *offset =
nullptr
,
49
QGraphicsEffect::PixmapPadMode mode = QGraphicsEffect::PadToEffectiveBoundingRect)
const
;
50
51
protected
:
52
QGraphicsEffectSource(QGraphicsEffectSourcePrivate &dd, QObject *parent =
nullptr
);
53
54
private
:
55
Q_DECLARE_PRIVATE(QGraphicsEffectSource)
56
Q_DISABLE_COPY_MOVE(QGraphicsEffectSource)
57
friend
class
QGraphicsEffect;
58
friend
class
QGraphicsEffectPrivate;
59
friend
class
QGraphicsScenePrivate;
60
friend
class
QGraphicsItem;
61
friend
class
QGraphicsItemPrivate;
62
friend
class
QWidget;
63
friend
class
QWidgetPrivate;
64
};
65
66
class
QGraphicsEffectSourcePrivate
:
public
QObjectPrivate
67
{
68
Q_DECLARE_PUBLIC(QGraphicsEffectSource)
69
public
:
70
QGraphicsEffectSourcePrivate
()
71
:
QObjectPrivate
()
72
,
m_cachedSystem
(
Qt
::
DeviceCoordinates
)
73
,
m_cachedMode
(
QGraphicsEffect
::
PadToTransparentBorder
)
74
{}
75
76
enum
InvalidateReason
77
{
78
TransformChanged
,
79
EffectRectChanged
,
80
SourceChanged
81
};
82
83
virtual
~
QGraphicsEffectSourcePrivate
();
84
virtual
void
detach
() = 0;
85
virtual
QRectF
boundingRect
(Qt::CoordinateSystem system)
const
= 0;
86
virtual
QRect
deviceRect
()
const
= 0;
87
virtual
const
QGraphicsItem *
graphicsItem
()
const
= 0;
88
virtual
const
QWidget
*
widget
()
const
= 0;
89
virtual
const
QStyleOption *
styleOption
()
const
= 0;
90
virtual
void
draw
(
QPainter
*p) = 0;
91
virtual
void
update
() = 0;
92
virtual
bool
isPixmap
()
const
= 0;
93
virtual
QPixmap
pixmap
(Qt::CoordinateSystem system, QPoint *offset =
nullptr
,
94
QGraphicsEffect::PixmapPadMode mode =
QGraphicsEffect
::
PadToTransparentBorder
)
const
= 0;
95
virtual
void
effectBoundingRectChanged
() = 0;
96
97
void
setCachedOffset
(
const
QPoint &offset);
98
void
invalidateCache
(InvalidateReason reason =
SourceChanged
)
const
;
99
Qt
::
CoordinateSystem
currentCachedSystem
()
const
{
return
m_cachedSystem; }
100
QGraphicsEffect
::
PixmapPadMode
currentCachedMode
()
const
{
return
m_cachedMode
; }
101
102
friend
class
QGraphicsScenePrivate
;
103
friend
class
QGraphicsItem;
104
friend
class
QGraphicsItemPrivate;
105
106
private
:
107
mutable
Qt::CoordinateSystem m_cachedSystem;
108
mutable
QGraphicsEffect
::
PixmapPadMode
m_cachedMode
;
109
mutable
QPoint m_cachedOffset;
110
mutable
QPixmapCache::Key m_cacheKey;
111
};
112
113
class
Q_WIDGETS_EXPORT
QGraphicsEffectPrivate
:
public
QObjectPrivate
114
{
115
Q_DECLARE_PUBLIC(QGraphicsEffect)
116
public
:
117
QGraphicsEffectPrivate() : source(
nullptr
), isEnabled(1) {}
118
~QGraphicsEffectPrivate();
119
120
inline
void
setGraphicsEffectSource(QGraphicsEffectSource *newSource)
121
{
122
QGraphicsEffect::ChangeFlags flags;
123
if
(source) {
124
flags |= QGraphicsEffect::SourceDetached;
125
source->d_func()->effectBoundingRectChanged();
126
source->d_func()->invalidateCache();
127
source->d_func()->detach();
128
delete
source;
129
}
130
source = newSource;
131
if
(newSource)
132
flags |= QGraphicsEffect::SourceAttached;
133
q_func()->sourceChanged(flags);
134
}
135
136
QGraphicsEffectSource *source;
137
QRectF boundingRect;
138
quint32 isEnabled : 1;
139
quint32 padding : 31;
// feel free to use
140
};
141
142
143
class
QGraphicsColorizeEffectPrivate
:
public
QGraphicsEffectPrivate
144
{
145
Q_DECLARE_PUBLIC(QGraphicsColorizeEffect)
146
public
:
147
QGraphicsColorizeEffectPrivate
()
148
:
opaque
(
true
)
149
{
150
filter
=
new
QPixmapColorizeFilter
;
151
}
152
~
QGraphicsColorizeEffectPrivate
() {
delete
filter
; }
153
154
QPixmapColorizeFilter
*
filter
;
155
quint32
opaque
: 1;
156
quint32
padding
: 31;
157
};
158
159
class
QGraphicsBlurEffectPrivate
:
public
QGraphicsEffectPrivate
160
{
161
Q_DECLARE_PUBLIC(QGraphicsBlurEffect)
162
public
:
163
QGraphicsBlurEffectPrivate
() :
filter
(
new
QPixmapBlurFilter
) {}
164
~
QGraphicsBlurEffectPrivate
() {
delete
filter
; }
165
166
QPixmapBlurFilter
*
filter
;
167
};
168
169
class
QGraphicsDropShadowEffectPrivate
:
public
QGraphicsEffectPrivate
170
{
171
Q_DECLARE_PUBLIC(QGraphicsDropShadowEffect)
172
public
:
173
QGraphicsDropShadowEffectPrivate
() :
filter
(
new
QPixmapDropShadowFilter
) {}
174
~
QGraphicsDropShadowEffectPrivate
() {
delete
filter
; }
175
176
QPixmapDropShadowFilter
*
filter
;
177
};
178
179
class
QGraphicsOpacityEffectPrivate
:
public
QGraphicsEffectPrivate
180
{
181
Q_DECLARE_PUBLIC(QGraphicsOpacityEffect)
182
public
:
183
QGraphicsOpacityEffectPrivate
()
184
:
opacity
(
qreal
(0.7)),
isFullyTransparent
(0),
isFullyOpaque
(0),
hasOpacityMask
(0) {}
185
~
QGraphicsOpacityEffectPrivate
() {}
186
187
qreal
opacity
;
188
QBrush
opacityMask
;
189
uint
isFullyTransparent
: 1;
190
uint
isFullyOpaque
: 1;
191
uint
hasOpacityMask
: 1;
192
};
193
194
QT_END_NAMESPACE
195
196
#
endif
// QGRAPHICSEFFECT_P_H
QGraphicsBlurEffectPrivate
Definition
qgraphicseffect_p.h:160
QGraphicsColorizeEffectPrivate
Definition
qgraphicseffect_p.h:144
QGraphicsColorizeEffectPrivate::padding
quint32 padding
Definition
qgraphicseffect_p.h:156
QGraphicsColorizeEffectPrivate::opaque
quint32 opaque
Definition
qgraphicseffect_p.h:155
QGraphicsDropShadowEffectPrivate
Definition
qgraphicseffect_p.h:170
QGraphicsEffectPrivate
Definition
qgraphicseffect_p.h:114
QGraphicsEffectSourcePrivate
Definition
qgraphicseffect_p.h:67
QGraphicsEffectSourcePrivate::~QGraphicsEffectSourcePrivate
virtual ~QGraphicsEffectSourcePrivate()
Definition
qgraphicseffect.cpp:345
QGraphicsEffectSourcePrivate::setCachedOffset
void setCachedOffset(const QPoint &offset)
Definition
qgraphicseffect.cpp:350
QGraphicsEffectSourcePrivate::graphicsItem
virtual const QGraphicsItem * graphicsItem() const =0
QGraphicsEffectSourcePrivate::isPixmap
virtual bool isPixmap() const =0
QGraphicsEffectSourcePrivate::pixmap
virtual QPixmap pixmap(Qt::CoordinateSystem system, QPoint *offset=nullptr, QGraphicsEffect::PixmapPadMode mode=QGraphicsEffect::PadToTransparentBorder) const =0
QGraphicsEffectSourcePrivate::invalidateCache
void invalidateCache(InvalidateReason reason=SourceChanged) const
Definition
qgraphicseffect.cpp:355
QGraphicsEffectSourcePrivate::boundingRect
virtual QRectF boundingRect(Qt::CoordinateSystem system) const =0
QGraphicsEffectSourcePrivate::currentCachedSystem
Qt::CoordinateSystem currentCachedSystem() const
Definition
qgraphicseffect_p.h:99
QGraphicsEffectSourcePrivate::update
virtual void update()=0
QGraphicsEffectSourcePrivate::styleOption
virtual const QStyleOption * styleOption() const =0
QGraphicsEffectSourcePrivate::draw
virtual void draw(QPainter *p)=0
QGraphicsEffectSourcePrivate::detach
virtual void detach()=0
QGraphicsEffectSourcePrivate::deviceRect
virtual QRect deviceRect() const =0
QGraphicsEffectSourcePrivate::effectBoundingRectChanged
virtual void effectBoundingRectChanged()=0
QGraphicsEffectSourcePrivate::widget
virtual const QWidget * widget() const =0
QGraphicsEffectSource
The QGraphicsEffectSource class represents the source on which a QGraphicsEffect is installed on.
Definition
qgraphicseffect_p.h:33
QGraphicsOpacityEffectPrivate
Definition
qgraphicseffect_p.h:180
QGraphicsOpacityEffectPrivate::hasOpacityMask
uint hasOpacityMask
Definition
qgraphicseffect_p.h:191
QGraphicsOpacityEffectPrivate::isFullyOpaque
uint isFullyOpaque
Definition
qgraphicseffect_p.h:190
QGraphicsOpacityEffectPrivate::isFullyTransparent
uint isFullyTransparent
Definition
qgraphicseffect_p.h:189
QGraphicsOpacityEffectPrivate::opacityMask
QBrush opacityMask
Definition
qgraphicseffect_p.h:188
QPaintEngine::QPainter
friend class QPainter
Definition
qpaintengine.h:220
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
QT_REQUIRE_CONFIG
QT_REQUIRE_CONFIG(animation)
QT_REQUIRE_CONFIG
QT_REQUIRE_CONFIG(graphicseffect)
qtbase
src
widgets
effects
qgraphicseffect_p.h
Generated on
for Qt by
1.18.0