5#ifndef QGRAPHICSEFFECT_P_H
6#define QGRAPHICSEFFECT_P_H
19#include <QtWidgets/private/qtwidgetsglobal_p.h>
22#include <QPixmapCache>
24#include <private/qobject_p.h>
25#include <private/qpixmapfilter_p.h>
31class QGraphicsEffectSourcePrivate;
36 ~QGraphicsEffectSource();
37 const QGraphicsItem *graphicsItem()
const;
38 const QWidget *widget()
const;
39 const QStyleOption *styleOption()
const;
41 bool isPixmap()
const;
42 void draw(QPainter *painter);
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;
52 QGraphicsEffectSource(QGraphicsEffectSourcePrivate &dd, QObject *parent =
nullptr);
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;
63 friend class QWidgetPrivate;
68 Q_DECLARE_PUBLIC(QGraphicsEffectSource)
93 virtual QPixmap
pixmap(Qt::CoordinateSystem system, QPoint *offset =
nullptr,
103 friend class QGraphicsItem;
104 friend class QGraphicsItemPrivate;
107 mutable Qt::CoordinateSystem m_cachedSystem;
109 mutable QPoint m_cachedOffset;
110 mutable QPixmapCache::Key m_cacheKey;
115 Q_DECLARE_PUBLIC(QGraphicsEffect)
117 QGraphicsEffectPrivate() : source(
nullptr), isEnabled(1) {}
118 ~QGraphicsEffectPrivate();
120 inline void setGraphicsEffectSource(QGraphicsEffectSource *newSource)
122 QGraphicsEffect::ChangeFlags flags;
124 flags |= QGraphicsEffect::SourceDetached;
125 source->d_func()->effectBoundingRectChanged();
126 source->d_func()->invalidateCache();
127 source->d_func()->detach();
132 flags |= QGraphicsEffect::SourceAttached;
133 q_func()->sourceChanged(flags);
136 QGraphicsEffectSource *source;
138 quint32 isEnabled : 1;
139 quint32 padding : 31;
145 Q_DECLARE_PUBLIC(QGraphicsColorizeEffect)
161 Q_DECLARE_PUBLIC(QGraphicsBlurEffect)
171 Q_DECLARE_PUBLIC(QGraphicsDropShadowEffect)
181 Q_DECLARE_PUBLIC(QGraphicsOpacityEffect)
virtual ~QGraphicsEffectSourcePrivate()
void setCachedOffset(const QPoint &offset)
virtual const QGraphicsItem * graphicsItem() const =0
virtual bool isPixmap() const =0
virtual QPixmap pixmap(Qt::CoordinateSystem system, QPoint *offset=nullptr, QGraphicsEffect::PixmapPadMode mode=QGraphicsEffect::PadToTransparentBorder) const =0
void invalidateCache(InvalidateReason reason=SourceChanged) const
virtual QRectF boundingRect(Qt::CoordinateSystem system) const =0
Qt::CoordinateSystem currentCachedSystem() const
virtual const QStyleOption * styleOption() const =0
virtual void draw(QPainter *p)=0
virtual QRect deviceRect() const =0
virtual void effectBoundingRectChanged()=0
virtual const QWidget * widget() const =0
The QGraphicsEffectSource class represents the source on which a QGraphicsEffect is installed on.
QT_REQUIRE_CONFIG(animation)
QT_REQUIRE_CONFIG(graphicseffect)