33 QSvgStructureNode(QSvgNode *parent);
35 QSvgNode *scopeNode(
const QString &id)
const;
36 void addChild(QSvgNode *child,
const QString &id);
37 QRectF internalBounds(QPainter *p, QSvgExtraStates &states)
const override;
38 QRectF decoratedInternalBounds(QPainter *p, QSvgExtraStates &states)
const override;
39 QSvgNode *previousSiblingNode(QSvgNode *n)
const;
40 QList<QSvgNode*> renderers()
const {
return m_renderers; }
42 QList<QSvgNode*> m_renderers;
43 QHash<QString, QSvgNode*> m_scope;
44 QList<QSvgStructureNode*> m_linkedScopes;
45 mutable bool m_recursing =
false;
73 enum class Overflow : quint8 {
80 enum class PreserveAspectRatio : quint8 {
90 xMask = xMin | xMid | xMax,
91 yMask = yMin | yMid | yMax,
92 xyMask = xMask | yMask,
93 meetSliceMask = meet | slice
95 Q_DECLARE_FLAGS(PreserveAspectRatios, PreserveAspectRatio)
97 QSvgSymbolLike(QSvgNode *parent, QRectF bounds, QRectF viewBox, QPointF refP,
98 QSvgSymbolLike::PreserveAspectRatios pAspectRatios, QSvgSymbolLike::Overflow overflow);
99 void drawCommand(QPainter *, QSvgExtraStates &) override {};
100 QRectF decoratedInternalBounds(QPainter *p, QSvgExtraStates &states)
const override;
101 bool requiresGroupRendering()
const override;
103 void setPainterToRectAndAdjustment(QPainter *p)
const;
108 PreserveAspectRatios m_pAspectRatios;
114class Q_SVG_EXPORT QSvgSymbol :
public QSvgSymbolLike
117 QSvgSymbol(QSvgNode *parent, QRectF bounds, QRectF viewBox, QPointF refP,
118 QSvgSymbolLike::PreserveAspectRatios pAspectRatios, QSvgSymbolLike::Overflow overflow);
119 void drawCommand(QPainter *p, QSvgExtraStates &states) override;
120 Type type()
const override;
126 enum class Orientation : quint8 {
131 enum class MarkerUnits : quint8 {
136 QSvgMarker(QSvgNode *parent, QRectF bounds, QRectF viewBox, QPointF refP,
137 QSvgSymbolLike::PreserveAspectRatios pAspectRatios, QSvgSymbolLike::Overflow overflow,
138 Orientation orientation, qreal orientationAngle, MarkerUnits markerUnits);
139 void drawCommand(QPainter *p, QSvgExtraStates &states) override;
140 static void drawMarkersForNode(QSvgNode *node, QPainter *p, QSvgExtraStates &states);
141 static QRectF markersBoundsForNode(
const QSvgNode *node, QPainter *p, QSvgExtraStates &states);
143 Orientation orientation()
const {
144 return m_orientation;
146 qreal orientationAngle()
const {
147 return m_orientationAngle;
149 MarkerUnits markerUnits()
const {
150 return m_markerUnits;
152 Type type()
const override;
155 static void drawHelper(
const QSvgNode *node, QPainter *p,
156 QSvgExtraStates &states, QRectF *boundingRect =
nullptr);
158 Orientation m_orientation;
159 qreal m_orientationAngle;
160 MarkerUnits m_markerUnits;
167 QSvgFilterContainer(QSvgNode *parent,
const QSvgRectF &bounds, QtSvg::UnitTypes filterUnits, QtSvg::UnitTypes primitiveUnits);
168 void drawCommand(QPainter *, QSvgExtraStates &) override {};
169 bool shouldDrawNode(QPainter *, QSvgExtraStates &)
const override;
170 Type type()
const override;
171 QImage applyFilter(
const QImage &buffer, QPainter *p,
const QRectF &bounds)
const;
172 void setSupported(
bool supported);
173 bool supported()
const;
174 QRectF filterRegion(
const QRectF &itemBounds)
const;
177 QtSvg::UnitTypes m_filterUnits;
178 QtSvg::UnitTypes m_primitiveUnits;
186 QSvgSwitch(QSvgNode *parent);
187 void drawCommand(QPainter *p, QSvgExtraStates &states) override;
188 Type type()
const override;
190 QSvgNode *childToRender()
const;
194 QString m_systemLanguage;
195 QString m_systemLanguagePrefix;
198class Q_SVG_EXPORT
QSvgMask :
public QSvgStructureNode
201 QSvgMask(QSvgNode *parent, QSvgRectF bounds,
202 QtSvg::UnitTypes contentsUnits);
203 void drawCommand(QPainter *, QSvgExtraStates &) override {};
204 bool shouldDrawNode(QPainter *, QSvgExtraStates &)
const override;
205 Type type()
const override;
206 QImage createMask(QPainter *p, QSvgExtraStates &states, QSvgNode *targetNode, QRectF *globalRect)
const;
207 QImage createMask(QPainter *p, QSvgExtraStates &states,
const QRectF &localRect, QRectF *globalRect)
const;
209 QSvgRectF rect()
const
214 QtSvg::UnitTypes contentUnits()
const
216 return m_contentUnits;
221 QtSvg::UnitTypes m_contentUnits;
227 QSvgPattern(QSvgNode *parent, QSvgRectF bounds, QRectF viewBox,
228 QtSvg::UnitTypes contentUnits, QTransform transform);
229 void drawCommand(QPainter *, QSvgExtraStates &) override {};
230 bool shouldDrawNode(QPainter *, QSvgExtraStates &)
const override;
231 QImage patternImage(QPainter *p, QSvgExtraStates &states,
const QSvgNode *patternElement);
232 Type type()
const override;
233 const QTransform& appliedTransform()
const {
return m_appliedTransform; }
236 QImage renderPattern(QSize size, qreal contentScaleX, qreal contentScaleY);
237 void calculateAppliedTransform(QTransform& worldTransform, QRectF peLocalBB, QSize imageSize);
240 QTransform m_appliedTransform;
243 QtSvg::UnitTypes m_contentUnits;
244 mutable bool m_isRendering;
245 QTransform m_transform;