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;
47 Q_DISABLE_COPY_X(QSvgStructureNode,
"Class has a vector of unique"
48 "pointers as member variable")
76 enum class Overflow : quint8 {
83 enum class PreserveAspectRatio : quint8 {
93 xMask = xMin | xMid | xMax,
94 yMask = yMin | yMid | yMax,
95 xyMask = xMask | yMask,
96 meetSliceMask = meet | slice
98 Q_DECLARE_FLAGS(PreserveAspectRatios, PreserveAspectRatio)
100 QSvgSymbolLike(QSvgNode *parent, QRectF bounds, QRectF viewBox, QPointF refP,
101 QSvgSymbolLike::PreserveAspectRatios pAspectRatios, QSvgSymbolLike::Overflow overflow);
102 void drawCommand(QPainter *, QSvgExtraStates &) override {};
103 QRectF decoratedInternalBounds(QPainter *p, QSvgExtraStates &states)
const override;
104 bool requiresGroupRendering()
const override;
106 QRectF viewBox()
const
121 QTransform aspectRatioTransform()
const;
122 QRectF clipRect()
const;
124 Overflow overflow()
const
129 PreserveAspectRatios preserveAspectRatios()
const
131 return m_pAspectRatios;
135 void setPainterToRectAndAdjustment(QPainter *p)
const;
140 PreserveAspectRatios m_pAspectRatios;
146class Q_SVG_EXPORT QSvgSymbol :
public QSvgSymbolLike
149 QSvgSymbol(QSvgNode *parent, QRectF bounds, QRectF viewBox, QPointF refP,
150 QSvgSymbolLike::PreserveAspectRatios pAspectRatios, QSvgSymbolLike::Overflow overflow);
151 void drawCommand(QPainter *p, QSvgExtraStates &states) override;
152 Type type()
const override;
158 enum class Orientation : quint8 {
163 enum class MarkerUnits : quint8 {
168 QSvgMarker(QSvgNode *parent, QRectF bounds, QRectF viewBox, QPointF refP,
169 QSvgSymbolLike::PreserveAspectRatios pAspectRatios, QSvgSymbolLike::Overflow overflow,
170 Orientation orientation, qreal orientationAngle, MarkerUnits markerUnits);
171 void drawCommand(QPainter *p, QSvgExtraStates &states) override;
172 static void drawMarkersForNode(QSvgNode *node, QPainter *p, QSvgExtraStates &states);
173 static QRectF markersBoundsForNode(
const QSvgNode *node, QPainter *p, QSvgExtraStates &states);
175 Orientation orientation()
const {
176 return m_orientation;
178 qreal orientationAngle()
const {
179 return m_orientationAngle;
181 MarkerUnits markerUnits()
const {
182 return m_markerUnits;
184 Type type()
const override;
187 static void drawHelper(
const QSvgNode *node, QPainter *p,
188 QSvgExtraStates &states, QRectF *boundingRect =
nullptr);
190 Orientation m_orientation;
191 qreal m_orientationAngle;
192 MarkerUnits m_markerUnits;
199 QSvgFilterContainer(QSvgNode *parent,
const QSvgRectF &bounds, QtSvg::UnitTypes filterUnits, QtSvg::UnitTypes primitiveUnits);
200 void drawCommand(QPainter *, QSvgExtraStates &) override {};
201 bool shouldDrawNode(QPainter *, QSvgExtraStates &)
const override;
202 Type type()
const override;
203 QImage applyFilter(
const QImage &buffer, QPainter *p,
const QRectF &bounds)
const;
204 void setSupported(
bool supported);
205 bool supported()
const;
206 QRectF filterRegion(
const QRectF &itemBounds)
const;
208 QSvgRectF rect()
const {
return m_rect; }
209 QtSvg::UnitTypes filterUnits()
const {
return m_filterUnits; }
210 QtSvg::UnitTypes primitiveUnits()
const {
return m_primitiveUnits; }
214 QtSvg::UnitTypes m_filterUnits;
215 QtSvg::UnitTypes m_primitiveUnits;
223 QSvgSwitch(QSvgNode *parent);
224 void drawCommand(QPainter *p, QSvgExtraStates &states) override;
225 Type type()
const override;
227 QSvgNode *childToRender()
const;
231 QString m_systemLanguage;
232 QString m_systemLanguagePrefix;
235class Q_SVG_EXPORT
QSvgMask :
public QSvgStructureNode
238 QSvgMask(QSvgNode *parent, QSvgRectF bounds,
239 QtSvg::UnitTypes contentsUnits);
240 void drawCommand(QPainter *, QSvgExtraStates &) override {};
241 bool shouldDrawNode(QPainter *, QSvgExtraStates &)
const override;
242 Type type()
const override;
243 QImage createMask(QPainter *p, QSvgExtraStates &states, QSvgNode *targetNode, QRectF *globalRect)
const;
244 QImage createMask(QPainter *p, QSvgExtraStates &states,
const QRectF &localRect, QRectF *globalRect)
const;
246 QSvgRectF rect()
const
251 QtSvg::UnitTypes contentUnits()
const
253 return m_contentUnits;
258 QtSvg::UnitTypes m_contentUnits;
264 QSvgPattern(QSvgNode *parent, QSvgRectF bounds, QRectF viewBox,
265 QtSvg::UnitTypes contentUnits, QTransform transform);
266 void drawCommand(QPainter *, QSvgExtraStates &) override {};
267 bool shouldDrawNode(QPainter *, QSvgExtraStates &)
const override;
268 QImage patternImage(QPainter *p, QSvgExtraStates &states,
const QSvgNode *patternElement);
269 Type type()
const override;
270 const QTransform& appliedTransform()
const {
return m_appliedTransform; }
271 const QTransform &transform()
const {
return m_transform; }
272 const QSvgRectF &rect()
const {
return m_rect; }
273 const QRectF &viewBox()
const {
return m_viewBox; }
274 QtSvg::UnitTypes contentUnits()
const {
return m_contentUnits; }
277 QImage renderPattern(QSize size, qreal contentScaleX, qreal contentScaleY);
278 void calculateAppliedTransform(QTransform& worldTransform, QRectF peLocalBB, QSize imageSize);
281 QTransform m_appliedTransform;
284 QtSvg::UnitTypes m_contentUnits;
285 mutable bool m_isRendering;
286 QTransform m_transform;