36 QSvgStructureNode(QSvgNode *parent);
37 ~QSvgStructureNode() override;
39 void addChild(std::unique_ptr<QSvgNode> child,
const QString &id);
40 QRectF internalBounds(QPainter *p, QSvgExtraStates &states)
const override;
41 QRectF decoratedInternalBounds(QPainter *p, QSvgExtraStates &states)
const override;
42 QSvgNode *previousSiblingNode(QSvgNode *n)
const;
43 const std::list<std::unique_ptr<QSvgNode>> &renderers()
const {
return m_renderers; }
46 void releaseDescendants();
49 std::list<std::unique_ptr<QSvgNode>> m_renderers;
50 mutable bool m_recursing =
false;
82 enum class Overflow : quint8 {
89 enum class PreserveAspectRatio : quint8 {
99 xMask = xMin | xMid | xMax,
100 yMask = yMin | yMid | yMax,
101 xyMask = xMask | yMask,
102 meetSliceMask = meet | slice
104 Q_DECLARE_FLAGS(PreserveAspectRatios, PreserveAspectRatio)
106 QSvgSymbolLike(QSvgNode *parent, QRectF bounds, QRectF viewBox, QPointF refP,
107 QSvgSymbolLike::PreserveAspectRatios pAspectRatios, QSvgSymbolLike::Overflow overflow);
108 ~QSvgSymbolLike() override;
110 void drawCommand(QPainter *, QSvgExtraStates &) override {};
111 QRectF decoratedInternalBounds(QPainter *p, QSvgExtraStates &states)
const override;
112 bool requiresGroupRendering()
const override;
114 QRectF viewBox()
const
129 QTransform aspectRatioTransform()
const;
130 QRectF clipRect()
const;
132 Overflow overflow()
const
137 PreserveAspectRatios preserveAspectRatios()
const
139 return m_pAspectRatios;
143 void setPainterToRectAndAdjustment(QPainter *p)
const;
148 PreserveAspectRatios m_pAspectRatios;
154class Q_SVG_EXPORT QSvgSymbol :
public QSvgSymbolLike
157 QSvgSymbol(QSvgNode *parent, QRectF bounds, QRectF viewBox, QPointF refP,
158 QSvgSymbolLike::PreserveAspectRatios pAspectRatios, QSvgSymbolLike::Overflow overflow);
159 ~QSvgSymbol() override;
161 void drawCommand(QPainter *p, QSvgExtraStates &states) override;
162 Type type()
const override;
168 enum class Orientation : quint8 {
173 enum class MarkerUnits : quint8 {
178 QSvgMarker(QSvgNode *parent, QRectF bounds, QRectF viewBox, QPointF refP,
179 QSvgSymbolLike::PreserveAspectRatios pAspectRatios, QSvgSymbolLike::Overflow overflow,
180 Orientation orientation, qreal orientationAngle, MarkerUnits markerUnits);
181 ~QSvgMarker() override;
183 void drawCommand(QPainter *p, QSvgExtraStates &states) override;
184 static void drawMarkersForNode(QSvgNode *node, QPainter *p, QSvgExtraStates &states);
185 static QRectF markersBoundsForNode(
const QSvgNode *node, QPainter *p, QSvgExtraStates &states);
187 Orientation orientation()
const {
188 return m_orientation;
190 qreal orientationAngle()
const {
191 return m_orientationAngle;
193 MarkerUnits markerUnits()
const {
194 return m_markerUnits;
196 Type type()
const override;
199 static void drawHelper(
const QSvgNode *node, QPainter *p,
200 QSvgExtraStates &states, QRectF *boundingRect =
nullptr);
202 Orientation m_orientation;
203 qreal m_orientationAngle;
204 MarkerUnits m_markerUnits;
210 QSvgFilterContainer(QSvgNode *parent,
const QSvgRectF &bounds, QtSvg::UnitTypes filterUnits, QtSvg::UnitTypes primitiveUnits);
211 ~QSvgFilterContainer() override;
213 void drawCommand(QPainter *, QSvgExtraStates &) override {};
214 bool shouldDrawNode(QPainter *, QSvgExtraStates &)
const override;
215 Type type()
const override;
216 QImage applyFilter(
const QImage &buffer, QPainter *p,
const QRectF &bounds)
const;
217 void setSupported(
bool supported);
218 bool supported()
const;
219 QRectF filterRegion(
const QRectF &itemBounds)
const;
221 QSvgRectF rect()
const {
return m_rect; }
222 QtSvg::UnitTypes filterUnits()
const {
return m_filterUnits; }
223 QtSvg::UnitTypes primitiveUnits()
const {
return m_primitiveUnits; }
227 QtSvg::UnitTypes m_filterUnits;
228 QtSvg::UnitTypes m_primitiveUnits;
236 QSvgSwitch(QSvgNode *parent);
237 ~QSvgSwitch() override;
239 void drawCommand(QPainter *p, QSvgExtraStates &states) override;
240 Type type()
const override;
242 QSvgNode *childToRender()
const;
246 QString m_systemLanguage;
247 QString m_systemLanguagePrefix;
250class Q_SVG_EXPORT
QSvgMask :
public QSvgStructureNode
253 QSvgMask(QSvgNode *parent, QSvgRectF bounds,
254 QtSvg::UnitTypes contentsUnits);
255 ~QSvgMask() override;
257 void drawCommand(QPainter *, QSvgExtraStates &) override {};
258 bool shouldDrawNode(QPainter *, QSvgExtraStates &)
const override;
259 Type type()
const override;
260 QImage createMask(QPainter *p, QSvgExtraStates &states, QSvgNode *targetNode, QRectF *globalRect)
const;
261 QImage createMask(QPainter *p, QSvgExtraStates &states,
const QRectF &localRect, QRectF *globalRect)
const;
263 QSvgRectF rect()
const
268 QtSvg::UnitTypes contentUnits()
const
270 return m_contentUnits;
275 QtSvg::UnitTypes m_contentUnits;
281 QSvgPattern(QSvgNode *parent, QSvgRectF bounds, QRectF viewBox,
282 QtSvg::UnitTypes contentUnits, QTransform transform);
283 ~QSvgPattern() override;
285 void drawCommand(QPainter *, QSvgExtraStates &) override {};
286 bool shouldDrawNode(QPainter *, QSvgExtraStates &)
const override;
287 QImage patternImage(QPainter *p, QSvgExtraStates &states,
const QSvgNode *patternElement);
288 Type type()
const override;
289 const QTransform& appliedTransform()
const {
return m_appliedTransform; }
290 const QTransform &transform()
const {
return m_transform; }
291 const QSvgRectF &rect()
const {
return m_rect; }
292 const QRectF &viewBox()
const {
return m_viewBox; }
293 QtSvg::UnitTypes contentUnits()
const {
return m_contentUnits; }
296 QImage renderPattern(QSize size, qreal contentScaleX, qreal contentScaleY);
297 void calculateAppliedTransform(QTransform& worldTransform, QRectF peLocalBB, QSize imageSize);
300 QTransform m_appliedTransform;
303 QtSvg::UnitTypes m_contentUnits;
304 mutable bool m_isRendering;
305 QTransform m_transform;