// 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(node))) return; break; case QSvgNode::Doc: if (!visitDocumentNodeStart(static_cast(node))) return; break; case QSvgNode::Defs: if (!visitDefsNodeStart(static_cast(node))) return; break; case QSvgNode::Group: if (!visitGroupNodeStart(static_cast(node))) return; break; case QSvgNode::Mask: if (!visitMaskNodeStart(static_cast(node))) return; break; default: Q_UNREACHABLE(); break; } for (const auto *child : node->renderers()) traverse(child); switch (node->type()) { case QSvgNode::Switch: visitSwitchNodeEnd(static_cast(node)); break; case QSvgNode::Doc: visitDocumentNodeEnd(static_cast(node)); break; case QSvgNode::Defs: visitDefsNodeEnd(static_cast(node)); break; case QSvgNode::Group: visitGroupNodeEnd(static_cast(node)); break; case QSvgNode::Mask: visitMaskNodeEnd(static_cast(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(node)); break; case QSvgNode::Animation: visitAnimationNode(static_cast(node)); break; case QSvgNode::Circle: case QSvgNode::Ellipse: visitEllipseNode(static_cast(node)); break; case QSvgNode::Image: visitImageNode(static_cast(node)); break; case QSvgNode::Line: visitLineNode(static_cast(node)); break; case QSvgNode::Path: visitPathNode(static_cast(node)); break; case QSvgNode::Polygon: visitPolygonNode(static_cast(node)); break; case QSvgNode::Polyline: visitPolylineNode(static_cast(node)); break; case QSvgNode::Rect: visitRectNode(static_cast(node)); break; case QSvgNode::Text: case QSvgNode::Textarea: visitTextNode(static_cast(node)); break; case QSvgNode::Tspan: visitTspanNode(static_cast(node)); break; case QSvgNode::Use: visitUseNode(static_cast(node)); break; case QSvgNode::Video: visitVideoNode(static_cast(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::FeUnsupported: qDebug() << "Unhandled type in switch" << node->type(); break; } } QT_END_NAMESPACE