76 lines
1.8 KiB
C++
Executable File
76 lines
1.8 KiB
C++
Executable File
/**
|
|
**
|
|
** @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
|