2#include "util/uuid.hpp"
3#include "nlohmann/json_fwd.hpp"
6#include "util/uuid_ptr.hpp"
15 virtual UUID get_uuid()
const = 0;
16 virtual ObjectType get_type()
const = 0;
17 template <
typename T>
bool is_type()
const
19 return dynamic_cast<const T *
>(
this);
32 enum class Type { LINE, ARC };
34 Vertex(
const json &j);
35 Vertex(
const Coordi &c);
39 json serialize()
const;
42 Type type = Type::LINE;
53 Polygon(
const UUID &uu,
const json &j);
54 Polygon(
const UUID &uu);
55 UUID get_uuid()
const;
57 Vertex *append_vertex(
const Coordi &pos = Coordi());
58 std::pair<unsigned int, unsigned int> get_vertices_for_edge(
unsigned int edge);
59 const Vertex &get_vertex(
int edge)
const;
60 Vertex &get_vertex(
int edge);
66 Polygon
remove_arcs(
unsigned int precision = 16)
const;
72 bool is_valid()
const;
73 std::pair<Coordi, Coordi> get_bbox()
const;
83 std::vector<Vertex> vertices;
85 std::string parameter_class;
88 json serialize()
const;
Definition polygon.hpp:13
Definition polygon.hpp:30
bool arc_reverse
false: counter clockwise true: clockwise
Definition polygon.hpp:49
Polygon remove_arcs(unsigned int precision=16) const
Definition polygon.cpp:53
bool has_arcs() const
Definition polygon.cpp:114
This class encapsulates a UUID and allows it to be uses as a value type.
Definition uuid.hpp:16
Definition uuid_ptr.hpp:8
basic_json<> json
default JSON class
Definition json_fwd.hpp:62