95 enum ImageRendering: qint8 {
96 ImageRenderingAuto = 0,
97 ImageRenderingOptimizeSpeed = 1,
98 ImageRenderingOptimizeQuality = 2,
101 QSvgQualityStyle(
int color);
102 ~QSvgQualityStyle() override;
104 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
105 void revert(QPainter *p, QSvgExtraStates &states) override;
106 Type type()
const override;
108 void setImageRendering(ImageRendering);
129 qint32 m_imageRendering: 4;
130 qint32 m_oldImageRendering: 4;
131 quint32 m_imageRenderingSet: 1;
139 QSvgOpacityStyle(qreal opacity);
140 ~QSvgOpacityStyle() override;
142 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
143 void revert(QPainter *p, QSvgExtraStates &states) override;
144 Type type()
const override;
145 qreal opacity()
const {
return m_opacity; }
146 bool isDefault()
const override
148 return qFuzzyCompare(m_opacity, qreal(1.0));
160 ~QSvgFillStyle() override;
162 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
163 void revert(QPainter *p, QSvgExtraStates &states) override;
164 Type type()
const override;
166 void setFillRule(Qt::FillRule f);
167 void setFillOpacity(qreal opacity);
168 void setPaintServer(QSvgPaintServerSharedPtr paintServer);
169 void setBrush(QBrush brush);
171 const QBrush & qbrush()
const
176 qreal fillOpacity()
const
178 return m_fillOpacity;
181 Qt::FillRule fillRule()
const
186 QSvgPaintServer *paintServer()
const
188 return m_paintServer.get();
191 void setPaintStyleId(
const QString &Id)
196 QString paintStyleId()
const
198 return m_paintStyleId;
206 QSvgPaintServerSharedPtr m_paintServer;
208 Qt::FillRule m_fillRule{Qt::WindingFill};
209 Qt::FillRule m_oldFillRule{Qt::WindingFill};
210 qreal m_fillOpacity{1.0};
211 qreal m_oldFillOpacity{0.};
213 QString m_paintStyleId;
215 uint m_fillRuleSet : 1;
216 uint m_fillOpacitySet : 1;
245 static const int LIGHTER = -1;
246 static const int BOLDER = 1;
249 ~QSvgFontStyle() override;
251 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
252 void revert(QPainter *p, QSvgExtraStates &states) override;
253 Type type()
const override;
255 void setSize(qreal size)
259 m_qfont.setPointSizeF(size);
263 void setTextAnchor(Qt::Alignment anchor)
265 m_textAnchor = anchor;
269 void setFamily(
const QString &family)
271 m_qfont.setFamilies({family});
275 void setStyle(QFont::Style fontStyle) {
276 m_qfont.setStyle(fontStyle);
280 void setVariant(QFont::Capitalization fontVariant)
282 m_qfont.setCapitalization(fontVariant);
286 void setWeight(
int weight)
292 const QFont &qfont()
const
301 Qt::Alignment m_textAnchor;
303 QSvgFont *m_oldSvgFont =
nullptr;
305 Qt::Alignment m_oldTextAnchor;
308 uint m_familySet : 1;
311 uint m_variantSet : 1;
312 uint m_weightSet : 1;
313 uint m_textAnchorSet : 1;
320 ~QSvgStrokeStyle() override;
322 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
323 void revert(QPainter *p, QSvgExtraStates &states) override;
324 Type type()
const override;
326 void setStroke(QBrush brush)
328 m_stroke.setBrush(brush);
329 m_paintServer.reset();
333 void setPaintServer(QSvgPaintServerSharedPtr paintServer)
335 m_paintServer = std::move(paintServer);
339 void setDashArray(
const QList<qreal> &dashes);
341 void setDashArrayNone()
343 m_stroke.setStyle(Qt::SolidLine);
344 m_strokeDashArraySet = 1;
347 void setDashOffset(qreal offset)
349 m_strokeDashOffset = offset;
350 m_strokeDashOffsetSet = 1;
353 void setLineCap(Qt::PenCapStyle cap)
355 m_stroke.setCapStyle(cap);
356 m_strokeLineCapSet = 1;
359 void setLineJoin(Qt::PenJoinStyle join)
361 m_stroke.setJoinStyle(join);
362 m_strokeLineJoinSet = 1;
365 void setMiterLimit(qreal limit)
367 m_stroke.setMiterLimit(limit);
368 m_strokeMiterLimitSet = 1;
371 void setOpacity(qreal opacity)
373 m_strokeOpacity = opacity;
374 m_strokeOpacitySet = 1;
377 void setWidth(qreal width)
379 m_stroke.setWidthF(width);
380 m_strokeWidthSet = 1;
381 Q_ASSERT(!m_strokeDashArraySet);
386 return m_stroke.widthF();
389 void setVectorEffect(
bool nonScalingStroke)
391 m_vectorEffect = nonScalingStroke;
392 m_vectorEffectSet = 1;
395 QSvgPaintServer *paintServer()
const
397 return m_paintServer.get();
400 void setPaintStyleId(
const QString &Id)
405 QString paintStyleId()
const
407 return m_paintStyleId;
426 qreal m_strokeOpacity{1.0};
427 qreal m_oldStrokeOpacity{0.};
428 qreal m_strokeDashOffset{0.};
429 qreal m_oldStrokeDashOffset{0.};
431 QSvgPaintServerSharedPtr m_paintServer;
432 QString m_paintStyleId;
433 uint m_vectorEffect : 1;
434 uint m_oldVectorEffect : 1;
436 uint m_strokeSet : 1;
437 uint m_strokeDashArraySet : 1;
438 uint m_strokeDashOffsetSet : 1;
439 uint m_strokeLineCapSet : 1;
440 uint m_strokeLineJoinSet : 1;
441 uint m_strokeMiterLimitSet : 1;
442 uint m_strokeOpacitySet : 1;
443 uint m_strokeWidthSet : 1;
444 uint m_vectorEffectSet : 1;
450 QSvgTransformStyle(
const QTransform &transform);
451 ~QSvgTransformStyle() override;
453 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
454 void revert(QPainter *p, QSvgExtraStates &states) override;
455 Type type()
const override;
457 const QTransform & qtransform()
const
461 bool isDefault()
const override {
return m_transform.isIdentity(); }
464 QTransform m_transform;
465 QStack<QTransform> m_oldWorldTransform;
471 QSvgCompOpStyle(QPainter::CompositionMode mode);
472 ~QSvgCompOpStyle() override;
474 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
475 void revert(QPainter *p, QSvgExtraStates &states) override;
476 Type type()
const override;
478 const QPainter::CompositionMode & compOp()
const
484 QPainter::CompositionMode m_mode;
486 QPainter::CompositionMode m_oldMode{QPainter::CompositionMode_SourceOver};
492 QSvgOffsetStyle() =
default;
493 ~QSvgOffsetStyle() override;
495 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
496 void revert(QPainter *p, QSvgExtraStates &states) override;
497 Type type()
const override;
499 void setPath(
const QPainterPath &path)
504 const QPainterPath &path()
const
509 void setRotateAngle(qreal angle)
511 m_rotateAngle = angle;
514 qreal rotateAngle()
const
516 return m_rotateAngle;
519 void setRotateType(QtSvg::OffsetRotateType type)
524 QtSvg::OffsetRotateType rotateType()
const
529 void setDistance(qreal distance)
531 m_distance = distance;
534 qreal distance()
const
541 qreal m_distance{0.};
542 qreal m_rotateAngle{0.};
543 QtSvg::OffsetRotateType m_rotateType{QtSvg::OffsetRotateType::Auto};
608 ~QSvgAnimatedStyle();
610 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states);
611 void revert(QPainter *p, QSvgExtraStates &states);
614 void savePaintingState(
const QPainter *p,
const QSvgNode *node, QSvgExtraStates &states);
615 void fetchStyleState(
const QSvgAbstractAnimation *animation, QSvgStyleState ¤tStyle);
616 void applyStyle(QPainter *p, QSvgExtraStates &states,
const QSvgStyleState ¤tStyle);
619 QTransform m_worldTransform;
620 QTransform m_transformToNode;
621 QSvgStyleState m_static;