157 virtual QBrush brush(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) = 0;
158 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
159 void revert(QPainter *p, QSvgExtraStates &states) override;
165 enum ImageRendering: qint8 {
166 ImageRenderingAuto = 0,
167 ImageRenderingOptimizeSpeed = 1,
168 ImageRenderingOptimizeQuality = 2,
171 QSvgQualityStyle(
int color);
172 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
173 void revert(QPainter *p, QSvgExtraStates &states) override;
174 Type type()
const override;
176 void setImageRendering(ImageRendering);
197 qint32 m_imageRendering: 4;
198 qint32 m_oldImageRendering: 4;
199 quint32 m_imageRenderingSet: 1;
207 QSvgOpacityStyle(qreal opacity);
208 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
209 void revert(QPainter *p, QSvgExtraStates &states) override;
210 Type type()
const override;
211 qreal opacity()
const {
return m_opacity; }
212 bool isDefault()
const {
return qFuzzyCompare(m_opacity, qreal(1.0)); }
223 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
224 void revert(QPainter *p, QSvgExtraStates &states) override;
225 Type type()
const override;
227 void setFillRule(Qt::FillRule f);
228 void setFillOpacity(qreal opacity);
229 void setFillStyle(QSvgPaintStyleProperty* style);
230 void setBrush(QBrush brush);
232 const QBrush & qbrush()
const
237 qreal fillOpacity()
const
239 return m_fillOpacity;
242 Qt::FillRule fillRule()
const
247 QSvgPaintStyleProperty* style()
const
252 void setPaintStyleId(
const QString &Id)
257 QString paintStyleId()
const
259 return m_paintStyleId;
262 void setPaintStyleResolved(
bool resolved)
264 m_paintStyleResolved = resolved;
267 bool isPaintStyleResolved()
const
269 return m_paintStyleResolved;
277 QSvgPaintStyleProperty *m_style;
279 Qt::FillRule m_fillRule;
280 Qt::FillRule m_oldFillRule;
282 qreal m_oldFillOpacity;
284 QString m_paintStyleId;
285 uint m_paintStyleResolved : 1;
287 uint m_fillRuleSet : 1;
288 uint m_fillOpacitySet : 1;
315 static const int LIGHTER = -1;
316 static const int BOLDER = 1;
318 QSvgFontStyle(QSvgFont *font, QSvgDocument *doc);
320 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
321 void revert(QPainter *p, QSvgExtraStates &states) override;
322 Type type()
const override;
324 void setSize(qreal size)
328 m_qfont.setPointSizeF(size);
332 void setTextAnchor(Qt::Alignment anchor)
334 m_textAnchor = anchor;
338 void setFamily(
const QString &family)
340 m_qfont.setFamilies({family});
344 void setStyle(QFont::Style fontStyle) {
345 m_qfont.setStyle(fontStyle);
349 void setVariant(QFont::Capitalization fontVariant)
351 m_qfont.setCapitalization(fontVariant);
355 void setWeight(
int weight)
361 QSvgFont * svgFont()
const
366 const QFont &qfont()
const
371 QSvgDocument *doc()
const {
return m_doc;}
379 Qt::Alignment m_textAnchor;
381 QSvgFont *m_oldSvgFont =
nullptr;
383 Qt::Alignment m_oldTextAnchor;
386 uint m_familySet : 1;
389 uint m_variantSet : 1;
390 uint m_weightSet : 1;
391 uint m_textAnchorSet : 1;
398 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
399 void revert(QPainter *p, QSvgExtraStates &states) override;
400 Type type()
const override;
402 void setStroke(QBrush brush)
404 m_stroke.setBrush(brush);
409 void setStyle(QSvgPaintStyleProperty *style)
415 void setDashArray(
const QList<qreal> &dashes);
417 void setDashArrayNone()
419 m_stroke.setStyle(Qt::SolidLine);
420 m_strokeDashArraySet = 1;
423 void setDashOffset(qreal offset)
425 m_strokeDashOffset = offset;
426 m_strokeDashOffsetSet = 1;
429 void setLineCap(Qt::PenCapStyle cap)
431 m_stroke.setCapStyle(cap);
432 m_strokeLineCapSet = 1;
435 void setLineJoin(Qt::PenJoinStyle join)
437 m_stroke.setJoinStyle(join);
438 m_strokeLineJoinSet = 1;
441 void setMiterLimit(qreal limit)
443 m_stroke.setMiterLimit(limit);
444 m_strokeMiterLimitSet = 1;
447 void setOpacity(qreal opacity)
449 m_strokeOpacity = opacity;
450 m_strokeOpacitySet = 1;
453 void setWidth(qreal width)
455 m_stroke.setWidthF(width);
456 m_strokeWidthSet = 1;
457 Q_ASSERT(!m_strokeDashArraySet);
462 return m_stroke.widthF();
465 void setVectorEffect(
bool nonScalingStroke)
467 m_vectorEffect = nonScalingStroke;
468 m_vectorEffectSet = 1;
471 QSvgPaintStyleProperty* style()
const
476 void setPaintStyleId(
const QString &Id)
481 QString paintStyleId()
const
483 return m_paintStyleId;
486 void setPaintStyleResolved(
bool resolved)
488 m_paintStyleResolved = resolved;
491 bool isPaintStyleResolved()
const
493 return m_paintStyleResolved;
512 qreal m_strokeOpacity;
513 qreal m_oldStrokeOpacity;
514 qreal m_strokeDashOffset;
515 qreal m_oldStrokeDashOffset;
517 QSvgPaintStyleProperty *m_style;
518 QString m_paintStyleId;
519 uint m_paintStyleResolved : 1;
520 uint m_vectorEffect : 1;
521 uint m_oldVectorEffect : 1;
523 uint m_strokeSet : 1;
524 uint m_strokeDashArraySet : 1;
525 uint m_strokeDashOffsetSet : 1;
526 uint m_strokeLineCapSet : 1;
527 uint m_strokeLineJoinSet : 1;
528 uint m_strokeMiterLimitSet : 1;
529 uint m_strokeOpacitySet : 1;
530 uint m_strokeWidthSet : 1;
531 uint m_vectorEffectSet : 1;
562 QSvgGradientStyle(QGradient *grad);
563 ~QSvgGradientStyle() {
delete m_gradient; }
564 Type type()
const override;
566 void setStopLink(
const QString &link, QSvgDocument *doc);
567 QString stopLink()
const {
return m_link; }
569 void resolveStops_helper(QStringList *visited);
571 void setTransform(
const QTransform &transform);
572 QTransform qtransform()
const
577 QGradient *qgradient()
const
582 bool gradientStopsSet()
const
584 return m_gradientStopsSet;
587 void setGradientStopsSet(
bool set)
589 m_gradientStopsSet = set;
592 QBrush brush(QPainter *,
const QSvgNode *, QSvgExtraStates &) override;
594 QGradient *m_gradient;
595 QTransform m_transform;
599 bool m_gradientStopsSet;
620 QSvgTransformStyle(
const QTransform &transform);
621 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
622 void revert(QPainter *p, QSvgExtraStates &states) override;
623 Type type()
const override;
625 const QTransform & qtransform()
const
629 bool isDefault()
const {
return m_transform.isIdentity(); }
632 QTransform m_transform;
633 QStack<QTransform> m_oldWorldTransform;
639 QSvgCompOpStyle(QPainter::CompositionMode mode);
640 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
641 void revert(QPainter *p, QSvgExtraStates &states) override;
642 Type type()
const override;
644 const QPainter::CompositionMode & compOp()
const
650 QPainter::CompositionMode m_mode;
652 QPainter::CompositionMode m_oldMode;
716 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states);
717 void revert(QPainter *p, QSvgExtraStates &states);
718 QSvgRefCounter<QSvgQualityStyle> quality;
719 QSvgRefCounter<QSvgFillStyle> fill;
720 QSvgRefCounter<QSvgViewportFillStyle> viewportFill;
721 QSvgRefCounter<QSvgFontStyle> font;
722 QSvgRefCounter<QSvgStrokeStyle> stroke;
723 QSvgRefCounter<QSvgSolidColorStyle> solidColor;
724 QSvgRefCounter<QSvgGradientStyle> gradient;
725 QSvgRefCounter<QSvgPatternStyle> pattern;
726 QSvgRefCounter<QSvgTransformStyle> transform;
727 QSvgRefCounter<QSvgOpacityStyle> opacity;
728 QSvgRefCounter<QSvgCompOpStyle> compop;
729 QSvgRefCounter<QSvgOffsetStyle> offset;
752 ~QSvgAnimatedStyle();
754 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states);
755 void revert(QPainter *p, QSvgExtraStates &states);
758 void savePaintingState(
const QPainter *p,
const QSvgNode *node, QSvgExtraStates &states);
759 void fetchStyleState(
const QSvgAbstractAnimation *animation, QSvgStyleState ¤tStyle);
760 void applyStyle(QPainter *p, QSvgExtraStates &states,
const QSvgStyleState ¤tStyle);
763 QTransform m_worldTransform;
764 QTransform m_transformToNode;
765 QSvgStyleState m_static;