/** ** ** @RDE_HEADER@ ** Node visitor for GeometryModel. ** $Id$ ** $HeadURL$ ** $Author$ ** ** ----------------------------------------------------------------------------------------------- ** ** Hardware-Environment: Intel-PC ** Software-Environment: Windows 7, Qt 5.4. ArcGIS 10.2.5 ** ** Language ........: C++ 11 ** ** ----------------------------------------------------------------------------------------------- ** ** Author ...........: Jörg Turla, SPD G, Tel. 3132 ** ** ----------------------------------------------------------------------------------------------- ** ** Notes .........: ** ** 07.07.2016, JT : First edition for use with Qt5 ** ** ----------------------------------------------------------------------------------------------- */ #include "geometry_node_visitor.h" namespace SituationMap { GeometryNodeVisitor::GeometryNodeVisitor(GeometryModel *geoModel) : m_geometryModel(geoModel) {;} bool GeometryNodeVisitor::traverse() { if (!m_geometryModel) return true; return traverse(m_geometryModel->getRootNode()); } // bool GeometryNodeVisitor::traverse() bool GeometryNodeVisitor::traverse(GeometryModel::Node node) { if (!m_geometryModel) return true; if (node.isValid()) { const GeometryModel::PrimitiveType primitiveType = m_geometryModel->getType(node); if ((GeometryModel::PrimitiveType::RootNode == primitiveType) || (GeometryModel::PrimitiveType::Node == primitiveType)) { if (node.hasChildNodes()) { node = node.firstChildNode(); while (node.isValid()) { if (!traverse(node)) return false; node = node.next(); } } } if (!apply(m_geometryModel, node, primitiveType)) return false; } // if return true; } } // namespace SituationMap