167 enum ImageRendering: qint8 {
168 ImageRenderingAuto = 0,
169 ImageRenderingOptimizeSpeed = 1,
170 ImageRenderingOptimizeQuality = 2,
173 QSvgQualityStyle(
int color);
174 ~QSvgQualityStyle() override;
176 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
177 void revert(QPainter *p, QSvgExtraStates &states) override;
178 Type type()
const override;
180 void setImageRendering(ImageRendering);
201 qint32 m_imageRendering: 4;
202 qint32 m_oldImageRendering: 4;
203 quint32 m_imageRenderingSet: 1;
211 QSvgOpacityStyle(qreal opacity);
212 ~QSvgOpacityStyle() override;
214 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
215 void revert(QPainter *p, QSvgExtraStates &states) override;
216 Type type()
const override;
217 qreal opacity()
const {
return m_opacity; }
218 bool isDefault()
const override
220 return qFuzzyCompare(m_opacity, qreal(1.0));
232 ~QSvgFillStyle() override;
234 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
235 void revert(QPainter *p, QSvgExtraStates &states) override;
236 Type type()
const override;
238 void setFillRule(Qt::FillRule f);
239 void setFillOpacity(qreal opacity);
240 void setPaintServer(QSvgPaintServerSharedPtr paintServer);
241 void setBrush(QBrush brush);
243 const QBrush & qbrush()
const
248 qreal fillOpacity()
const
250 return m_fillOpacity;
253 Qt::FillRule fillRule()
const
258 QSvgPaintServer *paintServer()
const
260 return m_paintServer.get();
263 void setPaintStyleId(
const QString &Id)
268 QString paintStyleId()
const
270 return m_paintStyleId;
278 QSvgPaintServerSharedPtr m_paintServer;
280 Qt::FillRule m_fillRule{Qt::WindingFill};
281 Qt::FillRule m_oldFillRule{Qt::WindingFill};
282 qreal m_fillOpacity{1.0};
283 qreal m_oldFillOpacity{0.};
285 QString m_paintStyleId;
287 uint m_fillRuleSet : 1;
288 uint m_fillOpacitySet : 1;
317 static const int LIGHTER = -1;
318 static const int BOLDER = 1;
320 QSvgFontStyle(QSvgFont *font);
322 ~QSvgFontStyle() override;
324 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
325 void revert(QPainter *p, QSvgExtraStates &states) override;
326 Type type()
const override;
328 void setSize(qreal size)
332 m_qfont.setPointSizeF(size);
336 void setTextAnchor(Qt::Alignment anchor)
338 m_textAnchor = anchor;
342 void setFamily(
const QString &family)
344 m_qfont.setFamilies({family});
348 void setStyle(QFont::Style fontStyle) {
349 m_qfont.setStyle(fontStyle);
353 void setVariant(QFont::Capitalization fontVariant)
355 m_qfont.setCapitalization(fontVariant);
359 void setWeight(
int weight)
365 QSvgFont * svgFont()
const
370 const QFont &qfont()
const
380 Qt::Alignment m_textAnchor;
382 QSvgFont *m_oldSvgFont =
nullptr;
384 Qt::Alignment m_oldTextAnchor;
387 uint m_familySet : 1;
390 uint m_variantSet : 1;
391 uint m_weightSet : 1;
392 uint m_textAnchorSet : 1;
399 ~QSvgStrokeStyle() override;
401 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
402 void revert(QPainter *p, QSvgExtraStates &states) override;
403 Type type()
const override;
405 void setStroke(QBrush brush)
407 m_stroke.setBrush(brush);
408 m_paintServer.reset();
412 void setPaintServer(QSvgPaintServerSharedPtr paintServer)
414 m_paintServer = std::move(paintServer);
418 void setDashArray(
const QList<qreal> &dashes);
420 void setDashArrayNone()
422 m_stroke.setStyle(Qt::SolidLine);
423 m_strokeDashArraySet = 1;
426 void setDashOffset(qreal offset)
428 m_strokeDashOffset = offset;
429 m_strokeDashOffsetSet = 1;
432 void setLineCap(Qt::PenCapStyle cap)
434 m_stroke.setCapStyle(cap);
435 m_strokeLineCapSet = 1;
438 void setLineJoin(Qt::PenJoinStyle join)
440 m_stroke.setJoinStyle(join);
441 m_strokeLineJoinSet = 1;
444 void setMiterLimit(qreal limit)
446 m_stroke.setMiterLimit(limit);
447 m_strokeMiterLimitSet = 1;
450 void setOpacity(qreal opacity)
452 m_strokeOpacity = opacity;
453 m_strokeOpacitySet = 1;
456 void setWidth(qreal width)
458 m_stroke.setWidthF(width);
459 m_strokeWidthSet = 1;
460 Q_ASSERT(!m_strokeDashArraySet);
465 return m_stroke.widthF();
468 void setVectorEffect(
bool nonScalingStroke)
470 m_vectorEffect = nonScalingStroke;
471 m_vectorEffectSet = 1;
474 QSvgPaintServer *paintServer()
const
476 return m_paintServer.get();
479 void setPaintStyleId(
const QString &Id)
484 QString paintStyleId()
const
486 return m_paintStyleId;
505 qreal m_strokeOpacity{1.0};
506 qreal m_oldStrokeOpacity{0.};
507 qreal m_strokeDashOffset{0.};
508 qreal m_oldStrokeDashOffset{0.};
510 QSvgPaintServerSharedPtr m_paintServer;
511 QString m_paintStyleId;
512 uint m_vectorEffect : 1;
513 uint m_oldVectorEffect : 1;
515 uint m_strokeSet : 1;
516 uint m_strokeDashArraySet : 1;
517 uint m_strokeDashOffsetSet : 1;
518 uint m_strokeLineCapSet : 1;
519 uint m_strokeLineJoinSet : 1;
520 uint m_strokeMiterLimitSet : 1;
521 uint m_strokeOpacitySet : 1;
522 uint m_strokeWidthSet : 1;
523 uint m_vectorEffectSet : 1;
529 QSvgTransformStyle(
const QTransform &transform);
530 ~QSvgTransformStyle() override;
532 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
533 void revert(QPainter *p, QSvgExtraStates &states) override;
534 Type type()
const override;
536 const QTransform & qtransform()
const
540 bool isDefault()
const override {
return m_transform.isIdentity(); }
543 QTransform m_transform;
544 QStack<QTransform> m_oldWorldTransform;
550 QSvgCompOpStyle(QPainter::CompositionMode mode);
551 ~QSvgCompOpStyle() override;
553 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
554 void revert(QPainter *p, QSvgExtraStates &states) override;
555 Type type()
const override;
557 const QPainter::CompositionMode & compOp()
const
563 QPainter::CompositionMode m_mode;
565 QPainter::CompositionMode m_oldMode{QPainter::CompositionMode_SourceOver};
571 QSvgOffsetStyle() =
default;
572 ~QSvgOffsetStyle() override;
574 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
575 void revert(QPainter *p, QSvgExtraStates &states) override;
576 Type type()
const override;
578 void setPath(
const QPainterPath &path)
583 const QPainterPath &path()
const
588 void setRotateAngle(qreal angle)
590 m_rotateAngle = angle;
593 qreal rotateAngle()
const
595 return m_rotateAngle;
598 void setRotateType(QtSvg::OffsetRotateType type)
603 QtSvg::OffsetRotateType rotateType()
const
608 void setDistance(qreal distance)
610 m_distance = distance;
613 qreal distance()
const
620 qreal m_distance{0.};
621 qreal m_rotateAngle{0.};
622 QtSvg::OffsetRotateType m_rotateType{QtSvg::OffsetRotateType::Auto};
687 ~QSvgAnimatedStyle();
689 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states);
690 void revert(QPainter *p, QSvgExtraStates &states);
693 void savePaintingState(
const QPainter *p,
const QSvgNode *node, QSvgExtraStates &states);
694 void fetchStyleState(
const QSvgAbstractAnimation *animation, QSvgStyleState ¤tStyle);
695 void applyStyle(QPainter *p, QSvgExtraStates &states,
const QSvgStyleState ¤tStyle);
698 QTransform m_worldTransform;
699 QTransform m_transformToNode;
700 QSvgStyleState m_static;