33 QQuickQmlGenerator(
const QString fileName, QQuickVectorImageGenerator::GeneratorFlags flags,
const QString &outFileName);
34 ~QQuickQmlGenerator();
38 void setShapeTypeName(
const QString &name);
39 QString shapeTypeName()
const;
41 void setCommentString(
const QString commentString);
42 QString commentString()
const;
44 void setRetainFilePaths(
bool retainFilePaths)
46 m_retainFilePaths = retainFilePaths;
49 bool retainFilePaths()
const
51 return m_retainFilePaths;
54 void setAssetFileDirectory(
const QString &assetFileDirectory)
56 m_assetFileDirectory = assetFileDirectory;
59 QString assetFileDirectory()
const
61 return m_assetFileDirectory;
64 void setAssetFilePrefix(
const QString &assetFilePrefix)
66 m_assetFilePrefix = assetFilePrefix;
69 QString assetFilePrefix()
const
71 return m_assetFilePrefix;
74 void setUrlPrefix(
const QString &prefix)
79 QString urlPrefix()
const
84 void addExtraImport(
const QString &import)
86 m_extraImports.append(import);
89 QStringList extraImports()
const
91 return m_extraImports;
94 bool isRuntimeGenerator()
const
96 return !m_urlPrefix.isEmpty();
99 QByteArray result()
const
101 return m_result.data();
105 QString generateNodeBase(
const NodeInfo &info,
const QString &idSuffix = QString{}) override;
106 void generateNodeEnd(
const NodeInfo &info);
107 bool generateDefsNode(
const StructureNodeInfo &info) override;
108 void generateDefsInstantiationNode(
const StructureNodeInfo &info) override;
109 void generateImageNode(
const ImageNodeInfo &info) override;
110 void generatePath(
const PathNodeInfo &info,
const QRectF &overrideBoundingRect) override;
111 void generateNode(
const NodeInfo &info) override;
112 void generateTextNode(
const TextNodeInfo &info) override;
113 void generateUseNode(
const UseNodeInfo &info) override;
114 void generateFilterNode(
const FilterNodeInfo &info) override;
115 bool generateStructureNode(
const StructureNodeInfo &info) override;
116 bool generateRootNode(
const StructureNodeInfo &info) override;
117 bool generateMaskNode(
const MaskNodeInfo &info) override;
118 bool generateMarkerNode(
const MarkerNodeInfo &info) override;
119 bool generatePatternNode(
const PatternNodeInfo &info) override;
120 void outputShapePath(
const PathNodeInfo &info,
const QPainterPath *path,
const QQuadPath *quadPath, QQuickVectorImageGenerator::PathSelector pathSelector,
const QRectF &boundingRect) override;
123 enum class AnimationType {
128 QString generateNodeId(
const NodeInfo &info);
129 void generateGradient(
const QGradient *grad,
130 const QString &propertyName,
131 const QRectF &coordinateConversion = QRectF(0.0, 0.0, 1.0, 1.0));
132 void generateTransform(
const QTransform &xf);
133 void generatePathContainer(
const StructureNodeInfo &info);
134 void generateAnimateTransform(
const QString &targetName,
const NodeInfo &info);
135 void generateAnimateMotionPath(
const QString &targetName,
136 const QQuickAnimatedProperty &property);
137 void generateAnimationBindings();
138 void generateItemAnimations(
const QString &idString,
const NodeInfo &nodeInfo);
139 void generateEasing(
const QQuickAnimatedProperty::PropertyAnimation &animation,
int time,
140 int streamFlags = 0);
141 void generateAnimatedPropertySetter(
const QString &targetName,
142 const QString &propertyName,
143 const QVariant &value,
144 const QQuickAnimatedProperty::PropertyAnimation &animation,
147 AnimationType animationType = AnimationType::Auto);
148 void generatePropertyAnimation(
const QQuickAnimatedProperty &property,
149 const QString &targetName,
150 const QString &propertyName,
151 AnimationType animationType = AnimationType::Auto);
153 void generateShaderUse(
const NodeInfo &info);
154 void generateMarkers(
const PathNodeInfo &info);
155 qsizetype generateFilterStep(
const FilterNodeInfo &info, qsizetype stepIndex);
157 bool usingTimelineAnimation()
const
159 return m_flags.testFlag(QQuickVectorImageGenerator::TimelineAnimation);
161 void generateTimelineFields(
const StructureNodeInfo &info);
162 void generateTimelinePropertySetter(
const QString &targetName,
163 const QString &propertyName,
164 const QQuickAnimatedProperty::PropertyAnimation &animation,
165 std::function<QVariant(
const QVariant &)>
const& extractValue,
167 void generateTransformTimeline(
const QString &targetName,
const NodeInfo &info);
168 void generatePropertyTimeline(
const QQuickAnimatedProperty &property,
169 const QString &targetName,
170 const QString &propertyName,
171 AnimationType animationType = AnimationType::Auto);
173 QStringView indent();
174 enum StreamFlags { NoFlags = 0x0, SameLine = 0x1 };
175 QTextStream &stream(
int flags = NoFlags);
176 const char *shapeName()
const;
181 void startDefsSuffixBlock();
182 void endDefsSuffixBlock();
185 int m_indentLevel = 0;
186 int m_textNodeCounter = 0;
187 QStack<
int> m_oldIndentLevels;
188 QTextStream m_stream;
189 QString outputFileName;
190 int m_inShapeItemLevel = 0;
191 QByteArray m_shapeTypeName;
192 QString m_commentString;
193 bool m_retainFilePaths =
false;
194 QString m_assetFileDirectory;
195 QString m_assetFilePrefix;
197 QString m_topLevelIdString;
198 QStringList m_extraImports;
199 QMap<std::array<qreal, 4>, QString> m_easings;
200 quint32 m_nodeCounter = 0;
201 QString m_defsSuffix;
202 QString m_indentString;