/usr/include/citygml/geometry.h is in libcitygml-dev 2.0-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 | #pragma once
#include <memory>
#include <vector>
#include <unordered_set>
#include <citygml/citygml_api.h>
#include <citygml/appearancetarget.h>
class Tesselator;
namespace citygml {
class LineString;
class Polygon;
class AppearanceManager;
class Appearance;
class ParserParams;
class CityGMLFactory;
class CityGMLLogger;
class LIBCITYGML_EXPORT Geometry : public AppearanceTarget
{
friend class CityGMLFactory;
public:
enum class GeometryType
{
GT_Unknown = 1 << 0,
GT_Roof = 1 << 1,
GT_Wall = 1 << 2,
GT_Ground = 1 << 3,
GT_Closure = 1 << 4,
GT_Floor = 1 << 5,
GT_InteriorWall = 1 << 6,
GT_Ceiling = 1 << 7
};
unsigned int getLOD() const;
unsigned int getPolygonsCount() const;
std::shared_ptr<Polygon> getPolygon( unsigned int i );
std::shared_ptr<const Polygon> getPolygon( unsigned int i ) const;
unsigned int getLineStringCount() const;
std::shared_ptr<LineString> getLineString( unsigned int i );
std::shared_ptr<const LineString> getLineString( unsigned int i ) const;
unsigned int getGeometriesCount() const;
const Geometry& getGeometry( unsigned int i ) const;
Geometry& getGeometry( unsigned int i );
void addGeometry(Geometry* geom);
GeometryType getType() const;
std::string getTypeAsString() const;
unsigned int lod() const;
void setLod(unsigned int lod);
void addPolygon(std::shared_ptr<Polygon> );
void addLineString(std::shared_ptr<LineString>);
/**
* @brief finishes the geometry by finishing its child polygons after broadcasting its appearances to all child polygons
* @param tesselate determines wether the polygons are tesselated
* @param tesselator the tesselator to be used for tesselation
* @param mergePolygons determines wether all polygons are merged into one
*/
void finish(Tesselator& tesselator, bool optimize, std::shared_ptr<CityGMLLogger> logger);
~Geometry();
protected:
Geometry( const std::string& id, GeometryType type = GeometryType::GT_Unknown, unsigned int lod = 0 );
bool m_finished;
GeometryType m_type;
unsigned int m_lod;
std::vector<std::shared_ptr<Geometry>> m_childGeometries;
std::vector<std::shared_ptr<Polygon>> m_polygons;
std::vector<std::shared_ptr<LineString>> m_lineStrings;
};
std::ostream& operator<<( std::ostream& os, const citygml::Geometry& s );
}
|