Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qsvgvisitor.cpp
Go to the documentation of this file.
1// Copyright (C) 2023 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
5
7
8void QSvgVisitor::traverse(const QSvgStructureNode *node)
9{
10 switch (node->type()) {
11 case QSvgNode::Switch:
12 if (!visitSwitchNodeStart(static_cast<const QSvgSwitch *>(node)))
13 return;
14 break;
15 case QSvgNode::Doc:
16 if (!visitDocumentNodeStart(static_cast<const QSvgTinyDocument *>(node)))
17 return;
18 break;
19 case QSvgNode::Defs:
20 if (!visitDefsNodeStart(static_cast<const QSvgDefs *>(node)))
21 return;
22 break;
23 case QSvgNode::Group:
24 if (!visitGroupNodeStart(static_cast<const QSvgG *>(node)))
25 return;
26 break;
27 case QSvgNode::Mask:
28 if (!visitMaskNodeStart(static_cast<const QSvgMask *>(node)))
29 return;
30 break;
31 case QSvgNode::Symbol:
32 if (!visitSymbolNodeStart(static_cast<const QSvgSymbol *>(node)))
33 return;
34 break;
35 default:
36 Q_UNREACHABLE();
37 break;
38 }
39
40 for (const auto *child : node->renderers())
41 traverse(child);
42
43 switch (node->type()) {
44 case QSvgNode::Switch:
45 visitSwitchNodeEnd(static_cast<const QSvgSwitch *>(node));
46 break;
47 case QSvgNode::Doc:
48 visitDocumentNodeEnd(static_cast<const QSvgTinyDocument *>(node));
49 break;
50 case QSvgNode::Defs:
51 visitDefsNodeEnd(static_cast<const QSvgDefs *>(node));
52 break;
53 case QSvgNode::Group:
54 visitGroupNodeEnd(static_cast<const QSvgG *>(node));
55 break;
56 case QSvgNode::Mask:
57 visitMaskNodeEnd(static_cast<const QSvgMask *>(node));
58 break;
59 case QSvgNode::Symbol:
60 visitSymbolNodeEnd(static_cast<const QSvgSymbol *>(node));
61 break;
62 default:
63 Q_UNREACHABLE();
64 break;
65 }
66}
67
68void QSvgVisitor::traverse(const QSvgNode *node)
69{
70 switch (node->type()) {
71 case QSvgNode::Switch:
72 case QSvgNode::Doc:
73 case QSvgNode::Defs:
74 case QSvgNode::Group:
75 case QSvgNode::Mask:
76 case QSvgNode::Symbol:
77 traverse(static_cast<const QSvgStructureNode *>(node));
78 break;
79 case QSvgNode::AnimateColor:
80 case QSvgNode::AnimateTransform:
81 visitAnimateNode(static_cast<const QSvgAnimateNode *>(node));
82 break;
83 case QSvgNode::Circle:
84 case QSvgNode::Ellipse:
85 visitEllipseNode(static_cast<const QSvgEllipse *>(node));
86 break;
87 case QSvgNode::Image:
88 visitImageNode(static_cast<const QSvgImage *>(node));
89 break;
90 case QSvgNode::Line:
91 visitLineNode(static_cast<const QSvgLine *>(node));
92 break;
93 case QSvgNode::Path:
94 visitPathNode(static_cast<const QSvgPath *>(node));
95 break;
96 case QSvgNode::Polygon:
97 visitPolygonNode(static_cast<const QSvgPolygon *>(node));
98 break;
99 case QSvgNode::Polyline:
100 visitPolylineNode(static_cast<const QSvgPolyline *>(node));
101 break;
102 case QSvgNode::Rect:
103 visitRectNode(static_cast<const QSvgRect *>(node));
104 break;
105 case QSvgNode::Text:
106 case QSvgNode::Textarea:
107 visitTextNode(static_cast<const QSvgText *>(node));
108 break;
109 case QSvgNode::Tspan:
110 visitTspanNode(static_cast<const QSvgTspan *>(node));
111 break;
112 case QSvgNode::Use:
113 visitUseNode(static_cast<const QSvgUse *>(node));
114 break;
115 case QSvgNode::Video:
116 visitVideoNode(static_cast<const QSvgVideo *>(node));
117 break;
118
119 // Enum values that don't have any QSvgNode classes yet:
120 case QSvgNode::Marker:
121 case QSvgNode::Pattern:
122 case QSvgNode::Filter:
123 case QSvgNode::FeMerge:
124 case QSvgNode::FeMergenode:
125 case QSvgNode::FeColormatrix:
126 case QSvgNode::FeGaussianblur:
127 case QSvgNode::FeOffset:
128 case QSvgNode::FeComposite:
129 case QSvgNode::FeFlood:
130 case QSvgNode::FeBlend:
131 case QSvgNode::FeUnsupported:
132 qDebug() << "Unhandled type in switch" << node->type();
133 break;
134 }
135}
136
137QT_END_NAMESPACE
Combined button and popup list for selecting options.