4#ifndef QSVGVISITORIMPL_P_H
5#define QSVGVISITORIMPL_P_H
18#include <QtSvg/private/qsvgvisitor_p.h>
22#include <QtCore/qhash.h>
23#include <QtCore/qset.h>
29class QSvgFeFilterPrimitive;
37 QSvgVisitorImpl(
const QString svgFileName, QQuickGenerator *generator,
bool assumeTrustedSource);
42 void visitNode(
const QSvgNode *node)
override;
82 typedef std::pair<
const QSvgAbstractAnimation *,
const QSvgAbstractAnimatedProperty *> AnimationPair;
83 QList<AnimationPair> collectAnimations(
const QSvgNode *node,
const QString &propertyName);
84 void applyAnimationsToProperty(
const QList<AnimationPair> &animations,
85 QQuickAnimatedProperty *property,
86 std::function<QVariant(
const QSvgAbstractAnimatedProperty *,
int index,
int subtype)> calculateValue);
87 QBezier easingForAnimation(
const QSvgEasingInterface *easingInterface, QSvgAbstractAnimation::AnimationType type);
88 void fillCommonNodeInfo(
const QSvgNode *node,
NodeInfo &info,
const QString &idSuffix = QString{});
89 void fillPathAnimationInfo(
const QSvgNode *node,
PathNodeInfo &info);
90 void fillAnimationInfo(
const QSvgNode *node,
NodeInfo &info);
91 void fillColorAnimationInfo(
const QSvgNode *node,
PathNodeInfo &info);
92 void fillTransformAnimationInfo(
const QSvgNode *node,
NodeInfo &info);
93 void fillMotionPathAnimationInfo(
const QSvgNode *node,
NodeInfo &info);
94 void fillFilterPrimitiveInfo(
const QSvgFilterContainer *node,
95 const QSvgFeFilterPrimitive *filterPrimitive,
98 void handleBaseNodeSetup(
const QSvgNode *node);
99 void handleBaseNode(
const QSvgNode *node);
100 void handleBaseNodeEnd(
const QSvgNode *node);
101 void handlePathNode(
const QSvgNode *node,
const QPainterPath &path);
102 void outputShapePath(QPainterPath pathCopy,
const PathNodeInfo &info);
103 QString nextNodeId()
const;
104 QString findOrCreateId(
const QString &id);
105 QString findOrCreateId(
const QSvgNode *node,
const QString &nodeId);
106 static QString gradientCssDescription(
const QGradient *gradient);
107 static QString colorCssDescription(QColor color);
109 bool startDefsBlock(
const QSvgNode *node);
110 void endDefsBlock(
const QSvgNode *node);
112 void pregenerateReferencedNodes(
const QSvgNode *doc);
115 QString m_svgFileName;
116 QQuickGenerator *m_generator;
117 bool m_assumeTrustedSource;
118 mutable int m_nodeIdCounter = 0;
119 QHash<QString, QString> m_idForNodeId;
120 QList<
const QSvgFeFilterPrimitive *> m_filterPrimitives;
122 bool m_pregeneratingReferencedNodes =
false;
124 QString m_linkSuffix;
125 std::unique_ptr<QSvgStyleResolver> m_styleResolver;
126 QHash<
const QString,
const QSvgNode *> m_nodesForKeys;
127 QSvgDocument *m_doc =
nullptr;
bool visitFilterNodeStart(const QSvgFilterContainer *node) override
void visitPolygonNode(const QSvgPolygon *node) override
bool visitSwitchNodeStart(const QSvgSwitch *node) override
void visitMaskNodeEnd(const QSvgMask *node) override
void visitEllipseNode(const QSvgEllipse *node) override
void visitPathNode(const QSvgPath *node) override
void visitMarkerNodeEnd(const QSvgMarker *node) override
bool visitDefsNodeStart(const QSvgDefs *node) override
void visitDefsNodeEnd(const QSvgDefs *node) override
bool visitMaskNodeStart(const QSvgMask *node) override
void visitDocumentNodeEnd(const QSvgDocument *node) override
~QSvgVisitorImpl() override
void visitStructureNodeEnd(const QSvgStructureNode *node) override
void visitRectNode(const QSvgRect *node) override
void visitFeFilterPrimitiveNodeEnd(const QSvgFeFilterPrimitive *node) override
void visitLineNode(const QSvgLine *node) override
void visitNode(const QSvgNode *node) override
bool visitMarkerNodeStart(const QSvgMarker *node) override
void visitPolylineNode(const QSvgPolyline *node) override
QSvgVisitorImpl(const QString svgFileName, QQuickGenerator *generator, bool assumeTrustedSource)
void visitUseNode(const QSvgUse *node) override
bool visitSymbolNodeStart(const QSvgSymbol *node) override
void visitPatternNodeEnd(const QSvgPattern *) override
bool visitDocumentNodeStart(const QSvgDocument *node) override
void visitImageNode(const QSvgImage *node) override
void visitFilterNodeEnd(const QSvgFilterContainer *node) override
bool visitPatternNodeStart(const QSvgPattern *) override
void visitTextNode(const QSvgText *node) override
void visitSwitchNodeEnd(const QSvgSwitch *node) override
void visitSymbolNodeEnd(const QSvgSymbol *node) override
bool visitFeFilterPrimitiveNodeStart(const QSvgFeFilterPrimitive *node) override
bool visitStructureNodeStart(const QSvgStructureNode *node) override
Combined button and popup list for selecting options.
QT_BEGIN_NAMESPACE QT_DECLARE_EXPORTED_QT_LOGGING_CATEGORY(lcAotCompiler, Q_QMLCOMPILER_EXPORT)
CoordinateSystem csFilterParameter
QRectF filterPrimitiveRect
QSGTexture::WrapMode wrapMode
QList< FilterStep > steps
CoordinateSystem csFilterRect
QString externalFileReference
PreserveAspectRatio preserveAspectRatio
bool isMaskContentRelativeCoordinates
bool isMaskRectRelativeCoordinates
QQuickAnimatedProperty opacity
QString transformReferenceId
QQuickAnimatedProperty transform
QQuickAnimatedProperty motionPath
QString transformReferenceChildId
QString boundsReferenceId
QQuickAnimatedProperty fillOpacity
QQuickAnimatedProperty fillColor
QQuickAnimatedProperty path
QQuickAnimatedProperty end
QQuickAnimatedProperty offset
QQuickAnimatedProperty start
bool isPatternRectRelativeCoordinates
QQuickAnimatedProperty color
static StrokeStyle fromPen(const QPen &p)
Qt::PenJoinStyle lineJoinStyle
QQuickAnimatedProperty dashOffset
QQuickAnimatedProperty width
QQuickAnimatedProperty opacity
Qt::PenCapStyle lineCapStyle
std::optional< TimelineInfo > timelineInfo
QQuickAnimatedProperty strokeOpacity
QQuickAnimatedProperty fillColor
QQuickAnimatedProperty strokeColor
QQuickAnimatedProperty fillOpacity
bool generateFrameCounter
QQuickAnimatedProperty frameCounterMapper
QList< LottieMarkerInfo > markers
QString frameCounterReference
qreal frameCounterMultiplier