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