29class Q_SVG_EXPORT QSvgFeFilterPrimitive :
public QSvgStructureNode
32 QSvgFeFilterPrimitive(QSvgNode *parent,
const QString &input,
33 const QString &result,
const QSvgRectF &rect);
34 ~QSvgFeFilterPrimitive() override;
36 void drawCommand(QPainter *, QSvgExtraStates &) override {};
37 bool shouldDrawNode(QPainter *, QSvgExtraStates &)
const override;
38 QRectF internalFastBounds(QPainter *, QSvgExtraStates &)
const override {
return QRectF(); }
39 QRectF internalBounds(QPainter *, QSvgExtraStates &)
const override {
return QRectF(); }
40 QRectF localSubRegion(
const QRectF &itemBounds,
const QRectF &filterBounds,
41 QtSvg::UnitTypes primitiveUnits, QtSvg::UnitTypes filterUnits)
const;
42 QRectF globalSubRegion(QPainter *p,
43 const QRectF &itemBounds,
const QRectF &filterBounds,
44 QtSvg::UnitTypes primitiveUnits, QtSvg::UnitTypes filterUnits)
const;
45 void clipToTransformedBounds(QImage *buffer, QPainter *p,
const QRectF &localRect)
const;
46 virtual QImage apply(
const QMap<QString, QImage> &sources,
47 QPainter *p,
const QRectF &itemBounds,
const QRectF &filterBounds,
48 QtSvg::UnitTypes primitiveUnits, QtSvg::UnitTypes filterUnits)
const = 0;
49 virtual bool requiresSourceAlpha()
const;
50 QString input()
const {
return m_input; }
51 QString result()
const {
return m_result; }
52 QSvgRectF rect()
const {
return m_rect; }
54 static const QSvgFeFilterPrimitive *castToFilterPrimitive(
const QSvgNode *node);
65 enum class ColorShiftType : quint8 {
72 typedef QGenericMatrix<5, 5, qreal> Matrix;
73 typedef QGenericMatrix<5, 1, qreal> Vector;
75 QSvgFeColorMatrix(QSvgNode *parent,
const QString &input,
const QString &result,
76 const QSvgRectF &rect, ColorShiftType type,
const Matrix &matrix);
77 ~QSvgFeColorMatrix() override;
79 Type type()
const override;
80 QImage apply(
const QMap<QString, QImage> &sources,
81 QPainter *p,
const QRectF &itemBounds,
const QRectF &filterBounds,
82 QtSvg::UnitTypes primitiveUnits, QtSvg::UnitTypes filterUnits)
const override;
95 enum class EdgeMode : quint8 {
101 QSvgFeGaussianBlur(QSvgNode *parent,
const QString &input,
const QString &result,
102 const QSvgRectF &rect, qreal stdDeviationX, qreal stdDeviationY,
104 ~QSvgFeGaussianBlur() override;
106 Type type()
const override;
107 QImage apply(
const QMap<QString, QImage> &sources,
108 QPainter *p,
const QRectF &itemBounds,
const QRectF &filterBounds,
109 QtSvg::UnitTypes primitiveUnits, QtSvg::UnitTypes filterUnits)
const override;
111 qreal stdDeviationX()
const {
return m_stdDeviationX; }
112 qreal stdDeviationY()
const {
return m_stdDeviationY; }
113 EdgeMode edgeMode()
const {
return m_edgemode; }
116 qreal m_stdDeviationX;
117 qreal m_stdDeviationY;
124 QSvgFeOffset(QSvgNode *parent,
const QString &input,
const QString &result,
125 const QSvgRectF &rect, qreal dx, qreal dy);
126 ~QSvgFeOffset() override;
128 Type type()
const override;
129 QImage apply(
const QMap<QString, QImage> &sources,
130 QPainter *p,
const QRectF &itemBounds,
const QRectF &filterBounds,
131 QtSvg::UnitTypes primitiveUnits, QtSvg::UnitTypes filterUnits)
const override;
133 qreal dx()
const {
return m_dx; }
134 qreal dy()
const {
return m_dy; }
144 QSvgFeMerge(QSvgNode *parent,
const QString &input,
145 const QString &result,
const QSvgRectF &rect);
146 ~QSvgFeMerge() override;
148 Type type()
const override;
149 QImage apply(
const QMap<QString, QImage> &sources,
150 QPainter *p,
const QRectF &itemBounds,
const QRectF &filterBounds,
151 QtSvg::UnitTypes primitiveUnits, QtSvg::UnitTypes filterUnits)
const override;
152 bool requiresSourceAlpha()
const override;
158 QSvgFeMergeNode(QSvgNode *parent,
const QString &input,
159 const QString &result,
const QSvgRectF &rect);
160 ~QSvgFeMergeNode() override;
162 Type type()
const override;
163 QImage apply(
const QMap<QString, QImage> &sources,
164 QPainter *p,
const QRectF &itemBounds,
const QRectF &filterBounds,
165 QtSvg::UnitTypes primitiveUnits, QtSvg::UnitTypes filterUnits)
const override;
171 enum class Operator : quint8 {
180 QSvgFeComposite(QSvgNode *parent,
const QString &input,
const QString &result,
181 const QSvgRectF &rect,
const QString &input2, Operator op,
const QVector4D &k);
182 ~QSvgFeComposite() override;
184 Type type()
const override;
185 QImage apply(
const QMap<QString, QImage> &sources,
186 QPainter *p,
const QRectF &itemBounds,
const QRectF &filterBounds,
187 QtSvg::UnitTypes primitiveUnits, QtSvg::UnitTypes filterUnits)
const override;
188 bool requiresSourceAlpha()
const override;
190 QString input2()
const {
return m_input2; }
191 Operator compositionOperator()
const {
return m_operator; }
192 QVector4D k()
const {
return m_k; }
203 QSvgFeFlood(QSvgNode *parent,
const QString &input,
const QString &result,
204 const QSvgRectF &rect,
const QColor &color);
205 ~QSvgFeFlood() override;
207 Type type()
const override;
208 QImage apply(
const QMap<QString, QImage> &sources,
209 QPainter *p,
const QRectF &itemBounds,
const QRectF &filterBounds,
210 QtSvg::UnitTypes primitiveUnits, QtSvg::UnitTypes filterUnits)
const override;
212 QColor color()
const {
return m_color; }
220 enum class Mode : quint8 {
227 QSvgFeBlend(QSvgNode *parent,
const QString &input,
const QString &result,
228 const QSvgRectF &rect,
const QString &input2, Mode mode);
229 ~QSvgFeBlend() override;
231 Type type()
const override;
232 QImage apply(
const QMap<QString, QImage> &sources,
233 QPainter *p,
const QRectF &itemBounds,
const QRectF &filterBounds,
234 QtSvg::UnitTypes primitiveUnits, QtSvg::UnitTypes filterUnits)
const override;
235 bool requiresSourceAlpha()
const override;
237 QString input2()
const {
return m_input2; }
238 Mode mode()
const {
return m_mode; }
249 QSvgFeUnsupported(QSvgNode *parent,
const QString &input,
250 const QString &result,
const QSvgRectF &rect);
251 ~QSvgFeUnsupported() override;
253 Type type()
const override;
254 QImage apply(
const QMap<QString, QImage> &sources,
255 QPainter *p,
const QRectF &itemBounds,
const QRectF &filterBounds,
256 QtSvg::UnitTypes primitiveUnits, QtSvg::UnitTypes filterUnits)
const override;