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 default:
32 Q_UNREACHABLE();
33 break;
34 }
35
36 for (const auto *child : node->renderers())
37 traverse(child);
38
39 switch (node->type()) {
40 case QSvgNode::Switch:
41 visitSwitchNodeEnd(static_cast<const QSvgSwitch *>(node));
42 break;
43 case QSvgNode::Doc:
44 visitDocumentNodeEnd(static_cast<const QSvgTinyDocument *>(node));
45 break;
46 case QSvgNode::Defs:
47 visitDefsNodeEnd(static_cast<const QSvgDefs *>(node));
48 break;
49 case QSvgNode::Group:
50 visitGroupNodeEnd(static_cast<const QSvgG *>(node));
51 break;
52 case QSvgNode::Mask:
53 visitMaskNodeEnd(static_cast<const QSvgMask *>(node));
54 break;
55 default:
56 Q_UNREACHABLE();
57 break;
58 }
59}
60
61void QSvgVisitor::traverse(const QSvgNode *node)
62{
63 switch (node->type()) {
64 case QSvgNode::Switch:
65 case QSvgNode::Doc:
66 case QSvgNode::Defs:
67 case QSvgNode::Group:
68 case QSvgNode::Mask:
69 traverse(static_cast<const QSvgStructureNode *>(node));
70 break;
71 case QSvgNode::AnimateColor:
72 case QSvgNode::AnimateTransform:
73 visitAnimateNode(static_cast<const QSvgAnimateNode *>(node));
74 break;
75 case QSvgNode::Circle:
76 case QSvgNode::Ellipse:
77 visitEllipseNode(static_cast<const QSvgEllipse *>(node));
78 break;
79 case QSvgNode::Image:
80 visitImageNode(static_cast<const QSvgImage *>(node));
81 break;
82 case QSvgNode::Line:
83 visitLineNode(static_cast<const QSvgLine *>(node));
84 break;
85 case QSvgNode::Path:
86 visitPathNode(static_cast<const QSvgPath *>(node));
87 break;
88 case QSvgNode::Polygon:
89 visitPolygonNode(static_cast<const QSvgPolygon *>(node));
90 break;
91 case QSvgNode::Polyline:
92 visitPolylineNode(static_cast<const QSvgPolyline *>(node));
93 break;
94 case QSvgNode::Rect:
95 visitRectNode(static_cast<const QSvgRect *>(node));
96 break;
97 case QSvgNode::Text:
98 case QSvgNode::Textarea:
99 visitTextNode(static_cast<const QSvgText *>(node));
100 break;
101 case QSvgNode::Tspan:
102 visitTspanNode(static_cast<const QSvgTspan *>(node));
103 break;
104 case QSvgNode::Use:
105 visitUseNode(static_cast<const QSvgUse *>(node));
106 break;
107 case QSvgNode::Video:
108 visitVideoNode(static_cast<const QSvgVideo *>(node));
109 break;
110
111 // Enum values that don't have any QSvgNode classes yet:
112 case QSvgNode::Symbol:
113 case QSvgNode::Marker:
114 case QSvgNode::Pattern:
115 case QSvgNode::Filter:
116 case QSvgNode::FeMerge:
117 case QSvgNode::FeMergenode:
118 case QSvgNode::FeColormatrix:
119 case QSvgNode::FeGaussianblur:
120 case QSvgNode::FeOffset:
121 case QSvgNode::FeComposite:
122 case QSvgNode::FeFlood:
123 case QSvgNode::FeBlend:
124 case QSvgNode::FeUnsupported:
125 qDebug() << "Unhandled type in switch" << node->type();
126 break;
127 }
128}
129
130QT_END_NAMESPACE