4#ifndef QSVGVISITORIMPL_P_H
5#define QSVGVISITORIMPL_P_H
18#include <QtSvg/private/qsvgvisitor_p.h>
21#include <QtQuickVectorImageGenerator/private/qquickvectorimagesource_p.h>
23#include <QtCore/qhash.h>
24#include <QtCore/qset.h>
30class QSvgFeFilterPrimitive;
38 QSvgVisitorImpl(
const QQuickVectorImageSource &source, QQuickGenerator *generator,
39 bool assumeTrustedSource);
44 void visitNode(
const QSvgNode *node)
override;
84 typedef std::pair<
const QSvgAbstractAnimation *,
const QSvgAbstractAnimatedProperty *> AnimationPair;
85 QList<AnimationPair> collectAnimations(
const QSvgNode *node,
const QString &propertyName);
86 void applyAnimationsToProperty(
const QList<AnimationPair> &animations,
87 QQuickAnimatedProperty *property,
88 std::function<QVariant(
const QSvgAbstractAnimatedProperty *,
int index,
int subtype)> calculateValue);
89 QBezier easingForAnimation(
const QSvgEasingInterface *easingInterface, QSvgAbstractAnimation::AnimationType type);
90 void fillCommonNodeInfo(
const QSvgNode *node,
NodeInfo &info,
const QString &idSuffix = QString{});
91 void fillPathAnimationInfo(
const QSvgNode *node,
PathNodeInfo &info);
92 void fillAnimationInfo(
const QSvgNode *node,
NodeInfo &info);
93 void fillColorAnimationInfo(
const QSvgNode *node,
PathNodeInfo &info);
94 void fillTransformAnimationInfo(
const QSvgNode *node,
NodeInfo &info);
95 void fillMotionPathAnimationInfo(
const QSvgNode *node,
NodeInfo &info);
96 void fillFilterPrimitiveInfo(
const QSvgFilterContainer *node,
97 const QSvgFeFilterPrimitive *filterPrimitive,
100 void handleBaseNodeSetup(
const QSvgNode *node);
101 void handleBaseNode(
const QSvgNode *node);
102 void handleBaseNodeEnd(
const QSvgNode *node);
103 void handlePathNode(
const QSvgNode *node,
const QPainterPath &path);
104 void outputShapePath(QPainterPath pathCopy,
const PathNodeInfo &info);
105 QString nextNodeId()
const;
106 QString findOrCreateId(
const QString &id);
107 QString findOrCreateId(
const QSvgNode *node,
const QString &nodeId);
108 static QString gradientCssDescription(
const QGradient *gradient);
109 static QString colorCssDescription(QColor color);
111 bool startDefsBlock(
const QSvgNode *node);
112 void endDefsBlock(
const QSvgNode *node);
114 void pregenerateReferencedNodes(
const QSvgNode *doc);
117 QQuickVectorImageSource m_source;
118 QQuickGenerator *m_generator;
119 bool m_assumeTrustedSource;
120 mutable int m_nodeIdCounter = 0;
121 QHash<QString, QString> m_idForNodeId;
122 QList<
const QSvgFeFilterPrimitive *> m_filterPrimitives;
124 bool m_pregeneratingReferencedNodes =
false;
126 QString m_linkSuffix;
127 std::unique_ptr<QSvgStyleResolver> m_styleResolver;
128 QHash<
const QString,
const QSvgNode *> m_nodesForKeys;
129 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
void visitUseNode(const QSvgUse *node) override
QSvgVisitorImpl(const QQuickVectorImageSource &source, QQuickGenerator *generator, bool assumeTrustedSource)
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
QRectF opacityGroupBounds
QString opacityGroupBoundsReferenceId
std::optional< TimelineInfo > timelineInfo
QQuickAnimatedProperty strokeOpacity
QQuickAnimatedProperty fillColor
QQuickAnimatedProperty strokeColor
QQuickAnimatedProperty fillOpacity
bool generateFrameCounter
QQuickAnimatedProperty frameCounterMapper
QList< LottieMarkerInfo > markers
QString frameCounterReference
qreal frameCounterMultiplier