40 QQuickItemGenerator(
const QString &fileName, QQuickVectorImageGenerator::GeneratorFlags flags,
41 QQmlContext *context =
nullptr);
42 ~QQuickItemGenerator() override;
44 QQuickItem *takeRootItem();
46 QString generateNodeBase(
const NodeInfo &info,
const QString &idSuffix = QString{}) override;
47 bool generateRootNode(
const StructureNodeInfo &info) override;
48 bool generateStructureNode(
const StructureNodeInfo &info) override;
49 void generateUseNode(
const UseNodeInfo &info) override;
50 bool generateDefsNode(
const StructureNodeInfo &info) override;
51 void generateDefsInstantiationNode(
const StructureNodeInfo &info) override;
52 void generateImageNode(
const ImageNodeInfo &info) override;
53 void generatePath(
const PathNodeInfo &info,
54 const QRectF &overrideBoundingRect = QRectF{}) override;
55 void generateNode(
const NodeInfo &info) override;
56 void generateTextNode(
const TextNodeInfo &info) override;
57 void generateFilterNode(
const FilterNodeInfo &info) override;
58 bool generateMaskNode(
const MaskNodeInfo &info) override;
59 bool generateMarkerNode(
const MarkerNodeInfo &info) override;
60 bool generatePatternNode(
const PatternNodeInfo &info) override;
61 void outputShapePath(
const PathNodeInfo &info,
const QPainterPath *path,
62 const QQuadPath *quadPath,
63 QQuickVectorImageGenerator::PathSelector pathSelector,
64 const QRectF &boundingRect) override;
69 QQuickItem *container =
nullptr;
71 bool isMaskRectRelativeCoordinates =
false;
72 bool isMaskContentRelativeCoordinates =
false;
73 QQuickItem *transformer =
nullptr;
74 QQuickMatrix4x4 *transformerMatrix =
nullptr;
79 QQuickItem *container =
nullptr;
81 bool isPatternRectRelativeCoordinates =
false;
86 QList<std::function<
void()>> recording;
90 QQuickItem *m_rootItem =
nullptr;
91 QStack<QQuickItem *> m_itemStack;
92 QQmlContext *m_context =
nullptr;
93 QSizeF m_containerSize;
94 quint32 m_nodeCounter = 0;
95 QHash<QString, QList<std::function<
void()>>> m_defs;
96 QList<std::function<
void()>> *m_currentDefsRecord =
nullptr;
97 QList<std::function<
void()>> *m_currentMarkerRecord =
nullptr;
98 QHash<QString, MaskDef> m_maskDefs;
99 QHash<QString, PatternDef> m_patternDefs;
100 QHash<QString, MarkerDef> m_markerDefs;
101 QHash<QString, FilterNodeInfo> m_filterDefs;
102 QQuickItemSpy *m_topLevelScaleSpy =
nullptr;
104 QList<std::function<
void()>> *activeRecord()
const;
105 QQuickShape *createShapeContainer();
106 void pushItem(QQuickItem *item);
107 QQuickItem *popItem();
108 QQuickItem *currentItem()
const;
110 void bindTextureSize(QQuickShaderEffectSource *ses);
111 void generateMaskContainer(
const MaskNodeInfo &info);
112 void generateMask(QQuickItem *item,
const NodeInfo &info);
113 void generatePatternContainer(
const PatternNodeInfo &info);
114 void generatePattern(QQuickShapePath *shapePath,
const PathNodeInfo &info,
115 const QRectF &boundingRect, QTransform &fillTransform);
116 void generateMarkers(
const PathNodeInfo &info);
117 QQuickItem *generateFilter(QQuickItem *item,
const NodeInfo &info);
118 QQuickShaderEffectSource *generateFilterStep(
const FilterNodeInfo::FilterStep &step,
119 QQuickShaderEffectSource *input1,
120 QQuickShaderEffectSource *input2,
121 const QRectF &stepRect,
const QRectF &filterRect);
122 QQuickShaderEffectSource *generateFilterMerge(
const QList<QQuickShaderEffectSource *> &inputs,
123 const QRectF &stepRect,
const QRectF &filterRect);
124 QQuickShaderEffectSource *generateFilterFlood(
const FilterNodeInfo::FilterStep &step,
125 QQuickShaderEffectSource *input,
126 const QRectF &stepRect,
const QRectF &filterRect);
127 QQuickShaderEffectSource *generateFilterOffset(
const FilterNodeInfo::FilterStep &step,
128 QQuickShaderEffectSource *input,
129 const QRectF &stepRect);
130 QQuickShaderEffectSource *generateFilterColorMatrix(
const FilterNodeInfo::FilterStep &step,
131 QQuickShaderEffectSource *input,
132 const QRectF &stepRect,
133 const QRectF &filterRect);
134 QQuickShaderEffectSource *generateFilterBlend(
const FilterNodeInfo::FilterStep &step,
135 QQuickShaderEffectSource *input1,
136 QQuickShaderEffectSource *input2,
137 const QRectF &stepRect,
const QRectF &filterRect);
138 QQuickShaderEffectSource *generateFilterComposite(
const FilterNodeInfo::FilterStep &step,
139 QQuickShaderEffectSource *input1,
140 QQuickShaderEffectSource *input2,
141 const QRectF &stepRect,
142 const QRectF &filterRect);
143 QQuickShaderEffectSource *generateFilterGaussianBlur(
const FilterNodeInfo::FilterStep &step,
144 QQuickShaderEffectSource *input,
145 const QRectF &stepRect,
146 const QRectF &filterRect);