153 virtual QBrush brush(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) = 0;
154 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
155 void revert(QPainter *p, QSvgExtraStates &states) override;
161 enum ImageRendering: qint8 {
162 ImageRenderingAuto = 0,
163 ImageRenderingOptimizeSpeed = 1,
164 ImageRenderingOptimizeQuality = 2,
167 QSvgQualityStyle(
int color);
168 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
169 void revert(QPainter *p, QSvgExtraStates &states) override;
170 Type type()
const override;
172 void setImageRendering(ImageRendering);
193 qint32 m_imageRendering: 4;
194 qint32 m_oldImageRendering: 4;
195 quint32 m_imageRenderingSet: 1;
203 QSvgOpacityStyle(qreal opacity);
204 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
205 void revert(QPainter *p, QSvgExtraStates &states) override;
206 Type type()
const override;
207 qreal opacity()
const {
return m_opacity; }
208 bool isDefault()
const {
return qFuzzyCompare(m_opacity, qreal(1.0)); }
219 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
220 void revert(QPainter *p, QSvgExtraStates &states) override;
221 Type type()
const override;
223 void setFillRule(Qt::FillRule f);
224 void setFillOpacity(qreal opacity);
225 void setFillStyle(QSvgPaintStyleProperty* style);
226 void setBrush(QBrush brush);
228 const QBrush & qbrush()
const
233 qreal fillOpacity()
const
235 return m_fillOpacity;
238 Qt::FillRule fillRule()
const
243 QSvgPaintStyleProperty* style()
const
248 void setPaintStyleId(
const QString &Id)
253 QString paintStyleId()
const
255 return m_paintStyleId;
258 void setPaintStyleResolved(
bool resolved)
260 m_paintStyleResolved = resolved;
263 bool isPaintStyleResolved()
const
265 return m_paintStyleResolved;
273 QSvgPaintStyleProperty *m_style;
275 Qt::FillRule m_fillRule;
276 Qt::FillRule m_oldFillRule;
278 qreal m_oldFillOpacity;
280 QString m_paintStyleId;
281 uint m_paintStyleResolved : 1;
283 uint m_fillRuleSet : 1;
284 uint m_fillOpacitySet : 1;
311 static const int LIGHTER = -1;
312 static const int BOLDER = 1;
314 QSvgFontStyle(QSvgFont *font, QSvgTinyDocument *doc);
316 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
317 void revert(QPainter *p, QSvgExtraStates &states) override;
318 Type type()
const override;
320 void setSize(qreal size)
324 m_qfont.setPointSizeF(size);
328 void setTextAnchor(Qt::Alignment anchor)
330 m_textAnchor = anchor;
334 void setFamily(
const QString &family)
336 m_qfont.setFamilies({family});
340 void setStyle(QFont::Style fontStyle) {
341 m_qfont.setStyle(fontStyle);
345 void setVariant(QFont::Capitalization fontVariant)
347 m_qfont.setCapitalization(fontVariant);
351 void setWeight(
int weight)
357 QSvgFont * svgFont()
const
362 const QFont &qfont()
const
367 QSvgTinyDocument *doc()
const {
return m_doc;}
371 QSvgTinyDocument *m_doc;
375 Qt::Alignment m_textAnchor;
377 QSvgFont *m_oldSvgFont;
379 Qt::Alignment m_oldTextAnchor;
382 uint m_familySet : 1;
385 uint m_variantSet : 1;
386 uint m_weightSet : 1;
387 uint m_textAnchorSet : 1;
394 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
395 void revert(QPainter *p, QSvgExtraStates &states) override;
396 Type type()
const override;
398 void setStroke(QBrush brush)
400 m_stroke.setBrush(brush);
405 void setStyle(QSvgPaintStyleProperty *style)
411 void setDashArray(
const QList<qreal> &dashes);
413 void setDashArrayNone()
415 m_stroke.setStyle(Qt::SolidLine);
416 m_strokeDashArraySet = 1;
419 void setDashOffset(qreal offset)
421 m_strokeDashOffset = offset;
422 m_strokeDashOffsetSet = 1;
425 void setLineCap(Qt::PenCapStyle cap)
427 m_stroke.setCapStyle(cap);
428 m_strokeLineCapSet = 1;
431 void setLineJoin(Qt::PenJoinStyle join)
433 m_stroke.setJoinStyle(join);
434 m_strokeLineJoinSet = 1;
437 void setMiterLimit(qreal limit)
439 m_stroke.setMiterLimit(limit);
440 m_strokeMiterLimitSet = 1;
443 void setOpacity(qreal opacity)
445 m_strokeOpacity = opacity;
446 m_strokeOpacitySet = 1;
449 void setWidth(qreal width)
451 m_stroke.setWidthF(width);
452 m_strokeWidthSet = 1;
453 Q_ASSERT(!m_strokeDashArraySet);
458 return m_stroke.widthF();
461 void setVectorEffect(
bool nonScalingStroke)
463 m_vectorEffect = nonScalingStroke;
464 m_vectorEffectSet = 1;
467 QSvgPaintStyleProperty* style()
const
472 void setPaintStyleId(
const QString &Id)
477 QString paintStyleId()
const
479 return m_paintStyleId;
482 void setPaintStyleResolved(
bool resolved)
484 m_paintStyleResolved = resolved;
487 bool isPaintStyleResolved()
const
489 return m_paintStyleResolved;
508 qreal m_strokeOpacity;
509 qreal m_oldStrokeOpacity;
510 qreal m_strokeDashOffset;
511 qreal m_oldStrokeDashOffset;
513 QSvgPaintStyleProperty *m_style;
514 QString m_paintStyleId;
515 uint m_paintStyleResolved : 1;
516 uint m_vectorEffect : 1;
517 uint m_oldVectorEffect : 1;
519 uint m_strokeSet : 1;
520 uint m_strokeDashArraySet : 1;
521 uint m_strokeDashOffsetSet : 1;
522 uint m_strokeLineCapSet : 1;
523 uint m_strokeLineJoinSet : 1;
524 uint m_strokeMiterLimitSet : 1;
525 uint m_strokeOpacitySet : 1;
526 uint m_strokeWidthSet : 1;
527 uint m_vectorEffectSet : 1;
558 QSvgGradientStyle(QGradient *grad);
559 ~QSvgGradientStyle() {
delete m_gradient; }
560 Type type()
const override;
562 void setStopLink(
const QString &link, QSvgTinyDocument *doc);
563 QString stopLink()
const {
return m_link; }
565 void resolveStops_helper(QStringList *visited);
567 void setTransform(
const QTransform &transform);
568 QTransform qtransform()
const
573 QGradient *qgradient()
const
578 bool gradientStopsSet()
const
580 return m_gradientStopsSet;
583 void setGradientStopsSet(
bool set)
585 m_gradientStopsSet = set;
588 QBrush brush(QPainter *,
const QSvgNode *, QSvgExtraStates &) override;
590 QGradient *m_gradient;
591 QTransform m_transform;
593 QSvgTinyDocument *m_doc;
595 bool m_gradientStopsSet;
616 QSvgTransformStyle(
const QTransform &transform);
617 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
618 void revert(QPainter *p, QSvgExtraStates &states) override;
619 Type type()
const override;
621 const QTransform & qtransform()
const
625 bool isDefault()
const {
return m_transform.isIdentity(); }
628 QTransform m_transform;
629 QStack<QTransform> m_oldWorldTransform;
635 QSvgCompOpStyle(QPainter::CompositionMode mode);
636 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
637 void revert(QPainter *p, QSvgExtraStates &states) override;
638 Type type()
const override;
640 const QPainter::CompositionMode & compOp()
const
646 QPainter::CompositionMode m_mode;
648 QPainter::CompositionMode m_oldMode;
657 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states);
658 void revert(QPainter *p, QSvgExtraStates &states);
659 QSvgRefCounter<QSvgQualityStyle> quality;
660 QSvgRefCounter<QSvgFillStyle> fill;
661 QSvgRefCounter<QSvgViewportFillStyle> viewportFill;
662 QSvgRefCounter<QSvgFontStyle> font;
663 QSvgRefCounter<QSvgStrokeStyle> stroke;
664 QSvgRefCounter<QSvgSolidColorStyle> solidColor;
665 QSvgRefCounter<QSvgGradientStyle> gradient;
666 QSvgRefCounter<QSvgPatternStyle> pattern;
667 QSvgRefCounter<QSvgTransformStyle> transform;
668 QSvgRefCounter<QSvgOpacityStyle> opacity;
669 QSvgRefCounter<QSvgCompOpStyle> compop;
677 ~QSvgAnimatedStyle();
679 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states);
680 void revert(QPainter *p, QSvgExtraStates &states);
683 void savePaintingState(
const QPainter *p,
const QSvgNode *node, QSvgExtraStates &states);
684 void applyPropertyAnimation(QPainter *p, QSvgAbstractAnimatedProperty *property,
bool replace, QSvgExtraStates &states);
689 QTransform m_worldTransform;
690 QTransform m_transformToNode;
691 qreal m_fillOpacity = 1.0;
692 qreal m_strokeOpacity = 1.0;
693 qreal m_opacity = 1.0;