Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
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
4#include "qsvgvisitor_p.h"
5
7
9{
10 switch (node->type()) {
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())
38
39 switch (node->type()) {
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
62{
63 switch (node->type()) {
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;
72 visitAnimationNode(static_cast<const QSvgAnimation *>(node));
73 break;
76 visitEllipseNode(static_cast<const QSvgEllipse *>(node));
77 break;
78 case QSvgNode::Image:
79 visitImageNode(static_cast<const QSvgImage *>(node));
80 break;
81 case QSvgNode::Line:
82 visitLineNode(static_cast<const QSvgLine *>(node));
83 break;
84 case QSvgNode::Path:
85 visitPathNode(static_cast<const QSvgPath *>(node));
86 break;
88 visitPolygonNode(static_cast<const QSvgPolygon *>(node));
89 break;
91 visitPolylineNode(static_cast<const QSvgPolyline *>(node));
92 break;
93 case QSvgNode::Rect:
94 visitRectNode(static_cast<const QSvgRect *>(node));
95 break;
96 case QSvgNode::Text:
98 visitTextNode(static_cast<const QSvgText *>(node));
99 break;
100 case QSvgNode::Tspan:
101 visitTspanNode(static_cast<const QSvgTspan *>(node));
102 break;
103 case QSvgNode::Use:
104 visitUseNode(static_cast<const QSvgUse *>(node));
105 break;
106 case QSvgNode::Video:
107 visitVideoNode(static_cast<const QSvgVideo *>(node));
108 break;
109
110 // Enum values that don't have any QSvgNode classes yet:
111 case QSvgNode::Symbol:
112 case QSvgNode::Marker:
114 case QSvgNode::Filter:
123 qDebug() << "Unhandled type in switch" << node->type();
124 break;
125 }
126}
127
@ FeComposite
Definition qsvgnode_p.h:63
@ FeMergenode
Definition qsvgnode_p.h:59
@ FeUnsupported
Definition qsvgnode_p.h:65
@ FeGaussianblur
Definition qsvgnode_p.h:61
@ FeColormatrix
Definition qsvgnode_p.h:60
virtual Type type() const =0
QList< QSvgNode * > renderers() const
virtual bool visitDefsNodeStart(const QSvgDefs *node)
virtual bool visitGroupNodeStart(const QSvgG *node)
virtual void visitPathNode(const QSvgPath *node)
virtual void visitSwitchNodeEnd(const QSvgSwitch *node)
virtual void visitVideoNode(const QSvgVideo *node)
virtual void visitAnimationNode(const QSvgAnimation *node)
virtual void visitTspanNode(const QSvgTspan *node)
virtual void visitDocumentNodeEnd(const QSvgTinyDocument *node)
virtual void visitTextNode(const QSvgText *node)
virtual void visitEllipseNode(const QSvgEllipse *node)
virtual void visitDefsNodeEnd(const QSvgDefs *node)
virtual void visitRectNode(const QSvgRect *node)
virtual void visitPolylineNode(const QSvgPolyline *node)
virtual void visitImageNode(const QSvgImage *node)
virtual void visitUseNode(const QSvgUse *node)
virtual void visitGroupNodeEnd(const QSvgG *node)
virtual void visitMaskNodeEnd(const QSvgMask *node)
virtual bool visitSwitchNodeStart(const QSvgSwitch *node)
void traverse(const QSvgStructureNode *node)
virtual void visitLineNode(const QSvgLine *node)
virtual bool visitDocumentNodeStart(const QSvgTinyDocument *node)
virtual void visitPolygonNode(const QSvgPolygon *node)
virtual bool visitMaskNodeStart(const QSvgMask *node)
Combined button and popup list for selecting options.
#define qDebug
[1]
Definition qlogging.h:164
QLayoutItem * child
[0]