44 QSvgEllipse(QSvgNode *parent,
const QRectF &rect);
45 bool separateFillStroke(
const QSvgExtraStates &)
const override;
46 void drawCommand(QPainter *p, QSvgExtraStates &states) override;
47 Type type()
const override;
48 QRectF internalFastBounds(QPainter *p, QSvgExtraStates &states)
const override;
49 QRectF internalBounds(QPainter *p, QSvgExtraStates &states)
const override;
50 QRectF decoratedInternalBounds(QPainter *p, QSvgExtraStates &states)
const override;
51 QRectF rect()
const {
return m_bounds; }
86 QSvgLine(QSvgNode *parent,
const QLineF &line);
87 void drawCommand(QPainter *p, QSvgExtraStates &states) override;
88 Type type()
const override;
89 QRectF internalFastBounds(QPainter *p, QSvgExtraStates &states)
const override;
90 QRectF internalBounds(QPainter *p, QSvgExtraStates &states)
const override;
91 QRectF decoratedInternalBounds(QPainter *p, QSvgExtraStates &states)
const override;
92 bool requiresGroupRendering()
const override;
93 QLineF line()
const {
return m_line; }
95 QRectF internalBounds(QPainter *p, QSvgExtraStates &states, BoundsMode mode)
const;
102 QSvgPath(QSvgNode *parent,
const QPainterPath &qpath);
103 bool separateFillStroke(
const QSvgExtraStates &)
const override;
104 void drawCommand(QPainter *p, QSvgExtraStates &states) override;
105 Type type()
const override;
106 QRectF internalFastBounds(QPainter *p, QSvgExtraStates &states)
const override;
107 QRectF internalBounds(QPainter *p, QSvgExtraStates &states)
const override;
108 QRectF decoratedInternalBounds(QPainter *p, QSvgExtraStates &states)
const override;
109 bool requiresGroupRendering()
const override;
110 const QPainterPath &path()
const {
return m_path; }
118 QSvgPolygon(QSvgNode *parent,
const QPolygonF &poly);
119 bool separateFillStroke(
const QSvgExtraStates &)
const override;
120 void drawCommand(QPainter *p, QSvgExtraStates &states) override;
121 Type type()
const override;
122 QRectF internalFastBounds(QPainter *p, QSvgExtraStates &states)
const override;
123 QRectF internalBounds(QPainter *p, QSvgExtraStates &states)
const override;
124 QRectF decoratedInternalBounds(QPainter *p, QSvgExtraStates &states)
const override;
125 bool requiresGroupRendering()
const override;
126 const QPolygonF &polygon()
const {
return m_poly; }
128 QRectF internalBounds(QPainter *p, QSvgExtraStates &states, BoundsMode mode)
const;
135 QSvgPolyline(QSvgNode *parent,
const QPolygonF &poly);
136 bool separateFillStroke(
const QSvgExtraStates &)
const override;
137 void drawCommand(QPainter *p, QSvgExtraStates &states) override;
138 Type type()
const override;
139 QRectF internalFastBounds(QPainter *p, QSvgExtraStates &states)
const override;
140 QRectF internalBounds(QPainter *p, QSvgExtraStates &states)
const override;
141 QRectF decoratedInternalBounds(QPainter *p, QSvgExtraStates &states)
const override;
142 bool requiresGroupRendering()
const override;
143 const QPolygonF &polygon()
const {
return m_poly; }
145 QRectF internalBounds(QPainter *p, QSvgExtraStates &states, BoundsMode mode)
const;
152 QSvgRect(QSvgNode *paren,
const QRectF &rect, qreal rx=0, qreal ry=0);
153 Type type()
const override;
154 bool separateFillStroke(
const QSvgExtraStates &)
const override;
155 void drawCommand(QPainter *p, QSvgExtraStates &states) override;
156 QRectF internalFastBounds(QPainter *p, QSvgExtraStates &states)
const override;
157 QRectF internalBounds(QPainter *p, QSvgExtraStates &states)
const override;
158 QRectF decoratedInternalBounds(QPainter *p, QSvgExtraStates &states)
const override;
159 QRectF rect()
const {
return m_rect; }
160 QPointF radius()
const {
return { m_rx, m_ry }; }
162 QRectF internalBounds(QPainter *p, QSvgExtraStates &states, BoundsMode mode)
const;
178 QSvgText(QSvgNode *parent,
const QPointF &coord);
180 void setTextArea(
const QSizeF &size);
182 void drawCommand(QPainter *p, QSvgExtraStates &states) override;
183 bool shouldDrawNode(QPainter *p, QSvgExtraStates &states)
const override;
184 Type type()
const override;
185 bool separateFillStroke(
const QSvgExtraStates &)
const override;
187 void addTspan(QSvgTspan *tspan) {m_tspans.append(tspan);}
188 const QList<QSvgTspan *> tspans()
const {
return m_tspans; }
189 void addText(QStringView text);
190 void addLineBreak() {m_tspans.append(LINEBREAK);}
191 void setWhitespaceMode(WhitespaceMode mode) {m_mode = mode;}
193 QRectF internalFastBounds(QPainter *p, QSvgExtraStates &states)
const override;
194 QRectF internalBounds(QPainter *p, QSvgExtraStates &states)
const override;
196 QPointF position()
const {
return m_coord; }
197 QSizeF size()
const {
return m_size; }
198 WhitespaceMode whitespaceMode()
const {
return m_mode; }
201 void draw_helper(QPainter *p, QSvgExtraStates &states, QRectF *boundingRect =
nullptr)
const;
203 static QSvgTspan *
const LINEBREAK;
209 QList<QSvgTspan *> m_tspans;
213 WhitespaceMode m_mode;
220 QSvgTspan(QSvgNode *parent,
bool isProperTspan =
true)
221 : QSvgNode(parent), m_mode(QSvgText::Default), m_isTspan(isProperTspan)
225 Type type()
const override {
return Tspan; }
226 void drawCommand(QPainter *, QSvgExtraStates &) override { Q_ASSERT(!
"Tspans should be drawn through QSvgText::draw()."); }
227 void addText(QStringView text) {m_text += text;}
228 const QString &text()
const {
return m_text;}
229 bool isTspan()
const {
return m_isTspan;}
230 void setWhitespaceMode(QSvgText::WhitespaceMode mode) {m_mode = mode;}
231 QSvgText::WhitespaceMode whitespaceMode()
const {
return m_mode;}
234 QSvgText::WhitespaceMode m_mode;
241 QSvgUse(
const QPointF &start, QSvgNode *parent, QSvgNode *link);
242 QSvgUse(
const QPointF &start, QSvgNode *parent,
const QString &linkId)
243 :
QSvgUse(start, parent,
nullptr)
244 { m_linkId = linkId; }
251 void setLink(QSvgNode *link) { m_link = link; }
252 QSvgNode *
link()
const {
return m_link; }
260 mutable bool m_recursing;