94 enum ImageRendering: qint8 {
95 ImageRenderingAuto = 0,
96 ImageRenderingOptimizeSpeed = 1,
97 ImageRenderingOptimizeQuality = 2,
100 QSvgQualityStyle(
int color);
101 ~QSvgQualityStyle() override;
103 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
104 void revert(QPainter *p, QSvgExtraStates &states) override;
105 Type type()
const override;
107 void setImageRendering(ImageRendering);
128 qint32 m_imageRendering: 4;
129 qint32 m_oldImageRendering: 4;
130 quint32 m_imageRenderingSet: 1;
138 QSvgOpacityStyle(qreal opacity);
139 ~QSvgOpacityStyle() override;
141 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
142 void revert(QPainter *p, QSvgExtraStates &states) override;
143 Type type()
const override;
144 qreal opacity()
const {
return m_opacity; }
145 bool isDefault()
const override
147 return qFuzzyCompare(m_opacity, qreal(1.0));
159 ~QSvgFillStyle() override;
161 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
162 void revert(QPainter *p, QSvgExtraStates &states) override;
163 Type type()
const override;
165 void setFillRule(Qt::FillRule f);
166 void setFillOpacity(qreal opacity);
167 void setPaintServer(QSvgPaintServerSharedPtr paintServer);
168 void setBrush(QBrush brush);
170 const QBrush & qbrush()
const
175 qreal fillOpacity()
const
177 return m_fillOpacity;
180 Qt::FillRule fillRule()
const
185 QSvgPaintServer *paintServer()
const
187 return m_paintServer.get();
190 void setPaintStyleId(
const QString &Id)
195 QString paintStyleId()
const
197 return m_paintStyleId;
205 QSvgPaintServerSharedPtr m_paintServer;
207 Qt::FillRule m_fillRule{Qt::WindingFill};
208 Qt::FillRule m_oldFillRule{Qt::WindingFill};
209 qreal m_fillOpacity{1.0};
210 qreal m_oldFillOpacity{0.};
212 QString m_paintStyleId;
214 uint m_fillRuleSet : 1;
215 uint m_fillOpacitySet : 1;
244 static const int LIGHTER = -1;
245 static const int BOLDER = 1;
248 ~QSvgFontStyle() override;
250 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
251 void revert(QPainter *p, QSvgExtraStates &states) override;
252 Type type()
const override;
254 void setSize(qreal size)
258 m_qfont.setPointSizeF(size);
262 void setTextAnchor(Qt::Alignment anchor)
264 m_textAnchor = anchor;
268 void setFamily(
const QString &family)
270 m_qfont.setFamilies({family});
274 void setStyle(QFont::Style fontStyle) {
275 m_qfont.setStyle(fontStyle);
279 void setVariant(QFont::Capitalization fontVariant)
281 m_qfont.setCapitalization(fontVariant);
285 void setWeight(
int weight)
291 const QFont &qfont()
const
300 Qt::Alignment m_textAnchor;
302 QSvgFont *m_oldSvgFont =
nullptr;
304 Qt::Alignment m_oldTextAnchor;
307 uint m_familySet : 1;
310 uint m_variantSet : 1;
311 uint m_weightSet : 1;
312 uint m_textAnchorSet : 1;
319 ~QSvgStrokeStyle() override;
321 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
322 void revert(QPainter *p, QSvgExtraStates &states) override;
323 Type type()
const override;
325 void setStroke(QBrush brush)
327 m_stroke.setBrush(brush);
328 m_paintServer.reset();
332 void setPaintServer(QSvgPaintServerSharedPtr paintServer)
334 m_paintServer = std::move(paintServer);
338 void setDashArray(
const QList<qreal> &dashes);
340 void setDashArrayNone()
342 m_stroke.setStyle(Qt::SolidLine);
343 m_strokeDashArraySet = 1;
346 void setDashOffset(qreal offset)
348 m_strokeDashOffset = offset;
349 m_strokeDashOffsetSet = 1;
352 void setLineCap(Qt::PenCapStyle cap)
354 m_stroke.setCapStyle(cap);
355 m_strokeLineCapSet = 1;
358 void setLineJoin(Qt::PenJoinStyle join)
360 m_stroke.setJoinStyle(join);
361 m_strokeLineJoinSet = 1;
364 void setMiterLimit(qreal limit)
366 m_stroke.setMiterLimit(limit);
367 m_strokeMiterLimitSet = 1;
370 void setOpacity(qreal opacity)
372 m_strokeOpacity = opacity;
373 m_strokeOpacitySet = 1;
376 void setWidth(qreal width)
378 m_stroke.setWidthF(width);
379 m_strokeWidthSet = 1;
380 Q_ASSERT(!m_strokeDashArraySet);
385 return m_stroke.widthF();
388 void setVectorEffect(
bool nonScalingStroke)
390 m_vectorEffect = nonScalingStroke;
391 m_vectorEffectSet = 1;
394 QSvgPaintServer *paintServer()
const
396 return m_paintServer.get();
399 void setPaintStyleId(
const QString &Id)
404 QString paintStyleId()
const
406 return m_paintStyleId;
425 qreal m_strokeOpacity{1.0};
426 qreal m_oldStrokeOpacity{0.};
427 qreal m_strokeDashOffset{0.};
428 qreal m_oldStrokeDashOffset{0.};
430 QSvgPaintServerSharedPtr m_paintServer;
431 QString m_paintStyleId;
432 uint m_vectorEffect : 1;
433 uint m_oldVectorEffect : 1;
435 uint m_strokeSet : 1;
436 uint m_strokeDashArraySet : 1;
437 uint m_strokeDashOffsetSet : 1;
438 uint m_strokeLineCapSet : 1;
439 uint m_strokeLineJoinSet : 1;
440 uint m_strokeMiterLimitSet : 1;
441 uint m_strokeOpacitySet : 1;
442 uint m_strokeWidthSet : 1;
443 uint m_vectorEffectSet : 1;
449 QSvgTransformStyle(
const QTransform &transform);
450 ~QSvgTransformStyle() override;
452 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
453 void revert(QPainter *p, QSvgExtraStates &states) override;
454 Type type()
const override;
456 const QTransform & qtransform()
const
460 bool isDefault()
const override {
return m_transform.isIdentity(); }
463 QTransform m_transform;
464 QStack<QTransform> m_oldWorldTransform;
470 QSvgCompOpStyle(QPainter::CompositionMode mode);
471 ~QSvgCompOpStyle() override;
473 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
474 void revert(QPainter *p, QSvgExtraStates &states) override;
475 Type type()
const override;
477 const QPainter::CompositionMode & compOp()
const
483 QPainter::CompositionMode m_mode;
485 QPainter::CompositionMode m_oldMode{QPainter::CompositionMode_SourceOver};
491 QSvgOffsetStyle() =
default;
492 ~QSvgOffsetStyle() override;
494 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states) override;
495 void revert(QPainter *p, QSvgExtraStates &states) override;
496 Type type()
const override;
498 void setPath(
const QPainterPath &path)
503 const QPainterPath &path()
const
508 void setRotateAngle(qreal angle)
510 m_rotateAngle = angle;
513 qreal rotateAngle()
const
515 return m_rotateAngle;
518 void setRotateType(QtSvg::OffsetRotateType type)
523 QtSvg::OffsetRotateType rotateType()
const
528 void setDistance(qreal distance)
530 m_distance = distance;
533 qreal distance()
const
540 qreal m_distance{0.};
541 qreal m_rotateAngle{0.};
542 QtSvg::OffsetRotateType m_rotateType{QtSvg::OffsetRotateType::Auto};
607 ~QSvgAnimatedStyle();
609 void apply(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states);
610 void revert(QPainter *p, QSvgExtraStates &states);
613 void savePaintingState(
const QPainter *p,
const QSvgNode *node, QSvgExtraStates &states);
614 void fetchStyleState(
const QSvgAbstractAnimation *animation, QSvgStyleState ¤tStyle);
615 void applyStyle(QPainter *p, QSvgExtraStates &states,
const QSvgStyleState ¤tStyle);
618 QTransform m_worldTransform;
619 QTransform m_transformToNode;
620 QSvgStyleState m_static;