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 QRectF viewBox()
const
118 QTransform aspectRatioTransform()
const;
119 QRectF clipRect()
const;
121 Overflow overflow()
const
126 PreserveAspectRatios preserveAspectRatios()
const
128 return m_pAspectRatios;
132 void setPainterToRectAndAdjustment(QPainter *p)
const;
137 PreserveAspectRatios m_pAspectRatios;
143class Q_SVG_EXPORT QSvgSymbol :
public QSvgSymbolLike
146 QSvgSymbol(QSvgNode *parent, QRectF bounds, QRectF viewBox, QPointF refP,
147 QSvgSymbolLike::PreserveAspectRatios pAspectRatios, QSvgSymbolLike::Overflow overflow);
148 void drawCommand(QPainter *p, QSvgExtraStates &states) override;
149 Type type()
const override;
155 enum class Orientation : quint8 {
160 enum class MarkerUnits : quint8 {
165 QSvgMarker(QSvgNode *parent, QRectF bounds, QRectF viewBox, QPointF refP,
166 QSvgSymbolLike::PreserveAspectRatios pAspectRatios, QSvgSymbolLike::Overflow overflow,
167 Orientation orientation, qreal orientationAngle, MarkerUnits markerUnits);
168 void drawCommand(QPainter *p, QSvgExtraStates &states) override;
169 static void drawMarkersForNode(QSvgNode *node, QPainter *p, QSvgExtraStates &states);
170 static QRectF markersBoundsForNode(
const QSvgNode *node, QPainter *p, QSvgExtraStates &states);
172 Orientation orientation()
const {
173 return m_orientation;
175 qreal orientationAngle()
const {
176 return m_orientationAngle;
178 MarkerUnits markerUnits()
const {
179 return m_markerUnits;
181 Type type()
const override;
184 static void drawHelper(
const QSvgNode *node, QPainter *p,
185 QSvgExtraStates &states, QRectF *boundingRect =
nullptr);
187 Orientation m_orientation;
188 qreal m_orientationAngle;
189 MarkerUnits m_markerUnits;
196 QSvgFilterContainer(QSvgNode *parent,
const QSvgRectF &bounds, QtSvg::UnitTypes filterUnits, QtSvg::UnitTypes primitiveUnits);
197 void drawCommand(QPainter *, QSvgExtraStates &) override {};
198 bool shouldDrawNode(QPainter *, QSvgExtraStates &)
const override;
199 Type type()
const override;
200 QImage applyFilter(
const QImage &buffer, QPainter *p,
const QRectF &bounds)
const;
201 void setSupported(
bool supported);
202 bool supported()
const;
203 QRectF filterRegion(
const QRectF &itemBounds)
const;
206 QtSvg::UnitTypes m_filterUnits;
207 QtSvg::UnitTypes m_primitiveUnits;
215 QSvgSwitch(QSvgNode *parent);
216 void drawCommand(QPainter *p, QSvgExtraStates &states) override;
217 Type type()
const override;
219 QSvgNode *childToRender()
const;
223 QString m_systemLanguage;
224 QString m_systemLanguagePrefix;
227class Q_SVG_EXPORT
QSvgMask :
public QSvgStructureNode
230 QSvgMask(QSvgNode *parent, QSvgRectF bounds,
231 QtSvg::UnitTypes contentsUnits);
232 void drawCommand(QPainter *, QSvgExtraStates &) override {};
233 bool shouldDrawNode(QPainter *, QSvgExtraStates &)
const override;
234 Type type()
const override;
235 QImage createMask(QPainter *p, QSvgExtraStates &states, QSvgNode *targetNode, QRectF *globalRect)
const;
236 QImage createMask(QPainter *p, QSvgExtraStates &states,
const QRectF &localRect, QRectF *globalRect)
const;
238 QSvgRectF rect()
const
243 QtSvg::UnitTypes contentUnits()
const
245 return m_contentUnits;
250 QtSvg::UnitTypes m_contentUnits;
256 QSvgPattern(QSvgNode *parent, QSvgRectF bounds, QRectF viewBox,
257 QtSvg::UnitTypes contentUnits, QTransform transform);
258 void drawCommand(QPainter *, QSvgExtraStates &) override {};
259 bool shouldDrawNode(QPainter *, QSvgExtraStates &)
const override;
260 QImage patternImage(QPainter *p, QSvgExtraStates &states,
const QSvgNode *patternElement);
261 Type type()
const override;
262 const QTransform& appliedTransform()
const {
return m_appliedTransform; }
265 QImage renderPattern(QSize size, qreal contentScaleX, qreal contentScaleY);
266 void calculateAppliedTransform(QTransform& worldTransform, QRectF peLocalBB, QSize imageSize);
269 QTransform m_appliedTransform;
272 QtSvg::UnitTypes m_contentUnits;
273 mutable bool m_isRendering;
274 QTransform m_transform;