34 QSvgStructureNode(QSvgNode *parent);
36 QSvgNode *scopeNode(
const QString &id)
const;
37 void addChild(std::unique_ptr<QSvgNode> child,
const QString &id);
38 QRectF internalBounds(QPainter *p, QSvgExtraStates &states)
const override;
39 QRectF decoratedInternalBounds(QPainter *p, QSvgExtraStates &states)
const override;
40 QSvgNode *previousSiblingNode(QSvgNode *n)
const;
41 const std::vector<std::unique_ptr<QSvgNode>> &renderers()
const {
return m_renderers; }
43 std::vector<std::unique_ptr<QSvgNode>> m_renderers;
44 mutable bool m_recursing =
false;
72 enum class Overflow : quint8 {
79 enum class PreserveAspectRatio : quint8 {
89 xMask = xMin | xMid | xMax,
90 yMask = yMin | yMid | yMax,
91 xyMask = xMask | yMask,
92 meetSliceMask = meet | slice
94 Q_DECLARE_FLAGS(PreserveAspectRatios, PreserveAspectRatio)
96 QSvgSymbolLike(QSvgNode *parent, QRectF bounds, QRectF viewBox, QPointF refP,
97 QSvgSymbolLike::PreserveAspectRatios pAspectRatios, QSvgSymbolLike::Overflow overflow);
98 void drawCommand(QPainter *, QSvgExtraStates &) override {};
99 QRectF decoratedInternalBounds(QPainter *p, QSvgExtraStates &states)
const override;
100 bool requiresGroupRendering()
const override;
102 QRectF viewBox()
const
117 QTransform aspectRatioTransform()
const;
118 QRectF clipRect()
const;
120 Overflow overflow()
const
125 PreserveAspectRatios preserveAspectRatios()
const
127 return m_pAspectRatios;
131 void setPainterToRectAndAdjustment(QPainter *p)
const;
136 PreserveAspectRatios m_pAspectRatios;
142class Q_SVG_EXPORT QSvgSymbol :
public QSvgSymbolLike
145 QSvgSymbol(QSvgNode *parent, QRectF bounds, QRectF viewBox, QPointF refP,
146 QSvgSymbolLike::PreserveAspectRatios pAspectRatios, QSvgSymbolLike::Overflow overflow);
147 void drawCommand(QPainter *p, QSvgExtraStates &states) override;
148 Type type()
const override;
154 enum class Orientation : quint8 {
159 enum class MarkerUnits : quint8 {
164 QSvgMarker(QSvgNode *parent, QRectF bounds, QRectF viewBox, QPointF refP,
165 QSvgSymbolLike::PreserveAspectRatios pAspectRatios, QSvgSymbolLike::Overflow overflow,
166 Orientation orientation, qreal orientationAngle, MarkerUnits markerUnits);
167 void drawCommand(QPainter *p, QSvgExtraStates &states) override;
168 static void drawMarkersForNode(QSvgNode *node, QPainter *p, QSvgExtraStates &states);
169 static QRectF markersBoundsForNode(
const QSvgNode *node, QPainter *p, QSvgExtraStates &states);
171 Orientation orientation()
const {
172 return m_orientation;
174 qreal orientationAngle()
const {
175 return m_orientationAngle;
177 MarkerUnits markerUnits()
const {
178 return m_markerUnits;
180 Type type()
const override;
183 static void drawHelper(
const QSvgNode *node, QPainter *p,
184 QSvgExtraStates &states, QRectF *boundingRect =
nullptr);
186 Orientation m_orientation;
187 qreal m_orientationAngle;
188 MarkerUnits m_markerUnits;
195 QSvgFilterContainer(QSvgNode *parent,
const QSvgRectF &bounds, QtSvg::UnitTypes filterUnits, QtSvg::UnitTypes primitiveUnits);
196 void drawCommand(QPainter *, QSvgExtraStates &) override {};
197 bool shouldDrawNode(QPainter *, QSvgExtraStates &)
const override;
198 Type type()
const override;
199 QImage applyFilter(
const QImage &buffer, QPainter *p,
const QRectF &bounds)
const;
200 void setSupported(
bool supported);
201 bool supported()
const;
202 QRectF filterRegion(
const QRectF &itemBounds)
const;
204 QSvgRectF rect()
const {
return m_rect; }
205 QtSvg::UnitTypes filterUnits()
const {
return m_filterUnits; }
206 QtSvg::UnitTypes primitiveUnits()
const {
return m_primitiveUnits; }
210 QtSvg::UnitTypes m_filterUnits;
211 QtSvg::UnitTypes m_primitiveUnits;
219 QSvgSwitch(QSvgNode *parent);
220 void drawCommand(QPainter *p, QSvgExtraStates &states) override;
221 Type type()
const override;
223 QSvgNode *childToRender()
const;
227 QString m_systemLanguage;
228 QString m_systemLanguagePrefix;
231class Q_SVG_EXPORT
QSvgMask :
public QSvgStructureNode
234 QSvgMask(QSvgNode *parent, QSvgRectF bounds,
235 QtSvg::UnitTypes contentsUnits);
236 void drawCommand(QPainter *, QSvgExtraStates &) override {};
237 bool shouldDrawNode(QPainter *, QSvgExtraStates &)
const override;
238 Type type()
const override;
239 QImage createMask(QPainter *p, QSvgExtraStates &states, QSvgNode *targetNode, QRectF *globalRect)
const;
240 QImage createMask(QPainter *p, QSvgExtraStates &states,
const QRectF &localRect, QRectF *globalRect)
const;
242 QSvgRectF rect()
const
247 QtSvg::UnitTypes contentUnits()
const
249 return m_contentUnits;
254 QtSvg::UnitTypes m_contentUnits;
260 QSvgPattern(QSvgNode *parent, QSvgRectF bounds, QRectF viewBox,
261 QtSvg::UnitTypes contentUnits, QTransform transform);
262 void drawCommand(QPainter *, QSvgExtraStates &) override {};
263 bool shouldDrawNode(QPainter *, QSvgExtraStates &)
const override;
264 QImage patternImage(QPainter *p, QSvgExtraStates &states,
const QSvgNode *patternElement);
265 Type type()
const override;
266 const QTransform& appliedTransform()
const {
return m_appliedTransform; }
267 const QTransform &transform()
const {
return m_transform; }
268 const QSvgRectF &rect()
const {
return m_rect; }
269 const QRectF &viewBox()
const {
return m_viewBox; }
270 QtSvg::UnitTypes contentUnits()
const {
return m_contentUnits; }
273 QImage renderPattern(QSize size, qreal contentScaleX, qreal contentScaleY);
274 void calculateAppliedTransform(QTransform& worldTransform, QRectF peLocalBB, QSize imageSize);
277 QTransform m_appliedTransform;
280 QtSvg::UnitTypes m_contentUnits;
281 mutable bool m_isRendering;
282 QTransform m_transform;