34 QSvgStructureNode(QSvgNode *parent);
35 ~QSvgStructureNode() override;
37 QSvgNode *scopeNode(
const QString &id)
const;
38 void addChild(std::unique_ptr<QSvgNode> child,
const QString &id);
39 QRectF internalBounds(QPainter *p, QSvgExtraStates &states)
const override;
40 QRectF decoratedInternalBounds(QPainter *p, QSvgExtraStates &states)
const override;
41 QSvgNode *previousSiblingNode(QSvgNode *n)
const;
42 const std::vector<std::unique_ptr<QSvgNode>> &renderers()
const {
return m_renderers; }
44 std::vector<std::unique_ptr<QSvgNode>> m_renderers;
45 mutable bool m_recursing =
false;
77 enum class Overflow : quint8 {
84 enum class PreserveAspectRatio : quint8 {
94 xMask = xMin | xMid | xMax,
95 yMask = yMin | yMid | yMax,
96 xyMask = xMask | yMask,
97 meetSliceMask = meet | slice
99 Q_DECLARE_FLAGS(PreserveAspectRatios, PreserveAspectRatio)
101 QSvgSymbolLike(QSvgNode *parent, QRectF bounds, QRectF viewBox, QPointF refP,
102 QSvgSymbolLike::PreserveAspectRatios pAspectRatios, QSvgSymbolLike::Overflow overflow);
103 ~QSvgSymbolLike() override;
105 void drawCommand(QPainter *, QSvgExtraStates &) override {};
106 QRectF decoratedInternalBounds(QPainter *p, QSvgExtraStates &states)
const override;
107 bool requiresGroupRendering()
const override;
109 QRectF viewBox()
const
124 QTransform aspectRatioTransform()
const;
125 QRectF clipRect()
const;
127 Overflow overflow()
const
132 PreserveAspectRatios preserveAspectRatios()
const
134 return m_pAspectRatios;
138 void setPainterToRectAndAdjustment(QPainter *p)
const;
143 PreserveAspectRatios m_pAspectRatios;
149class Q_SVG_EXPORT QSvgSymbol :
public QSvgSymbolLike
152 QSvgSymbol(QSvgNode *parent, QRectF bounds, QRectF viewBox, QPointF refP,
153 QSvgSymbolLike::PreserveAspectRatios pAspectRatios, QSvgSymbolLike::Overflow overflow);
154 ~QSvgSymbol() override;
156 void drawCommand(QPainter *p, QSvgExtraStates &states) override;
157 Type type()
const override;
163 enum class Orientation : quint8 {
168 enum class MarkerUnits : quint8 {
173 QSvgMarker(QSvgNode *parent, QRectF bounds, QRectF viewBox, QPointF refP,
174 QSvgSymbolLike::PreserveAspectRatios pAspectRatios, QSvgSymbolLike::Overflow overflow,
175 Orientation orientation, qreal orientationAngle, MarkerUnits markerUnits);
176 ~QSvgMarker() override;
178 void drawCommand(QPainter *p, QSvgExtraStates &states) override;
179 static void drawMarkersForNode(QSvgNode *node, QPainter *p, QSvgExtraStates &states);
180 static QRectF markersBoundsForNode(
const QSvgNode *node, QPainter *p, QSvgExtraStates &states);
182 Orientation orientation()
const {
183 return m_orientation;
185 qreal orientationAngle()
const {
186 return m_orientationAngle;
188 MarkerUnits markerUnits()
const {
189 return m_markerUnits;
191 Type type()
const override;
194 static void drawHelper(
const QSvgNode *node, QPainter *p,
195 QSvgExtraStates &states, QRectF *boundingRect =
nullptr);
197 Orientation m_orientation;
198 qreal m_orientationAngle;
199 MarkerUnits m_markerUnits;
205 QSvgFilterContainer(QSvgNode *parent,
const QSvgRectF &bounds, QtSvg::UnitTypes filterUnits, QtSvg::UnitTypes primitiveUnits);
206 ~QSvgFilterContainer() override;
208 void drawCommand(QPainter *, QSvgExtraStates &) override {};
209 bool shouldDrawNode(QPainter *, QSvgExtraStates &)
const override;
210 Type type()
const override;
211 QImage applyFilter(
const QImage &buffer, QPainter *p,
const QRectF &bounds)
const;
212 void setSupported(
bool supported);
213 bool supported()
const;
214 QRectF filterRegion(
const QRectF &itemBounds)
const;
216 QSvgRectF rect()
const {
return m_rect; }
217 QtSvg::UnitTypes filterUnits()
const {
return m_filterUnits; }
218 QtSvg::UnitTypes primitiveUnits()
const {
return m_primitiveUnits; }
222 QtSvg::UnitTypes m_filterUnits;
223 QtSvg::UnitTypes m_primitiveUnits;
231 QSvgSwitch(QSvgNode *parent);
232 ~QSvgSwitch() override;
234 void drawCommand(QPainter *p, QSvgExtraStates &states) override;
235 Type type()
const override;
237 QSvgNode *childToRender()
const;
241 QString m_systemLanguage;
242 QString m_systemLanguagePrefix;
245class Q_SVG_EXPORT
QSvgMask :
public QSvgStructureNode
248 QSvgMask(QSvgNode *parent, QSvgRectF bounds,
249 QtSvg::UnitTypes contentsUnits);
250 ~QSvgMask() override;
252 void drawCommand(QPainter *, QSvgExtraStates &) override {};
253 bool shouldDrawNode(QPainter *, QSvgExtraStates &)
const override;
254 Type type()
const override;
255 QImage createMask(QPainter *p, QSvgExtraStates &states, QSvgNode *targetNode, QRectF *globalRect)
const;
256 QImage createMask(QPainter *p, QSvgExtraStates &states,
const QRectF &localRect, QRectF *globalRect)
const;
258 QSvgRectF rect()
const
263 QtSvg::UnitTypes contentUnits()
const
265 return m_contentUnits;
270 QtSvg::UnitTypes m_contentUnits;
276 QSvgPattern(QSvgNode *parent, QSvgRectF bounds, QRectF viewBox,
277 QtSvg::UnitTypes contentUnits, QTransform transform);
278 ~QSvgPattern() override;
280 void drawCommand(QPainter *, QSvgExtraStates &) override {};
281 bool shouldDrawNode(QPainter *, QSvgExtraStates &)
const override;
282 QImage patternImage(QPainter *p, QSvgExtraStates &states,
const QSvgNode *patternElement);
283 Type type()
const override;
284 const QTransform& appliedTransform()
const {
return m_appliedTransform; }
285 const QTransform &transform()
const {
return m_transform; }
286 const QSvgRectF &rect()
const {
return m_rect; }
287 const QRectF &viewBox()
const {
return m_viewBox; }
288 QtSvg::UnitTypes contentUnits()
const {
return m_contentUnits; }
291 QImage renderPattern(QSize size, qreal contentScaleX, qreal contentScaleY);
292 void calculateAppliedTransform(QTransform& worldTransform, QRectF peLocalBB, QSize imageSize);
295 QTransform m_appliedTransform;
298 QtSvg::UnitTypes m_contentUnits;
299 mutable bool m_isRendering;
300 QTransform m_transform;