Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
SUMOPolygon.cpp
Go to the documentation of this file.
1/****************************************************************************/
2// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3// Copyright (C) 2004-2025 German Aerospace Center (DLR) and others.
4// This program and the accompanying materials are made available under the
5// terms of the Eclipse Public License 2.0 which is available at
6// https://www.eclipse.org/legal/epl-2.0/
7// This Source Code may also be made available under the following Secondary
8// Licenses when the conditions for such availability set forth in the Eclipse
9// Public License 2.0 are satisfied: GNU General Public License, version 2
10// or later which is available at
11// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13/****************************************************************************/
20// A 2D-polygon
21/****************************************************************************/
22#include <config.h>
23
28
29#include "SUMOPolygon.h"
30
31// ===========================================================================
32// member definitions
33// ===========================================================================
34SUMOPolygon::SUMOPolygon(const std::string& id, const std::string& type, const RGBColor& color,
35 const PositionVector& shape, bool geo, bool fill, double lineWidth,
36 double layer, double angle, const std::string& imgFile, const std::string& name,
37 const Parameterised::Map& parameters) :
38 Shape(id, type, color, layer, angle, imgFile, name),
39 Parameterised(parameters),
40 myShape(shape),
41 myGEO(geo),
42 myFill(fill),
43 myLineWidth(lineWidth) {
44}
45
46
48
49
50const PositionVector&
52 return myShape;
53}
54
55
56const std::vector<PositionVector>&
58 return myHoles;
59}
60
61
62bool
64 return myFill;
65}
66
67
68double
70 return myLineWidth;
71}
72
73
74void
76 myFill = fill;
77}
78
79
80void
81SUMOPolygon::setLineWidth(double lineWidth) {
82 myLineWidth = lineWidth;
83}
84
85
86void
88 myShape = shape;
89}
90
91void
92SUMOPolygon::setHoles(const std::vector<PositionVector>& holes) {
93 myHoles = holes;
94}
95
96
97void
98SUMOPolygon::writeXML(OutputDevice& out, bool geo) const {
101 if (getShapeType().size() > 0) {
103 }
106 if (getLineWidth() != 1) {
108 }
110 if (!getShapeName().empty()) {
112 }
113 PositionVector shape = getShape();
114 if (geo) {
115 out.writeAttr(SUMO_ATTR_GEO, true);
116 for (int i = 0; i < (int) shape.size(); i++) {
118 }
119 }
121 out.writeAttr(SUMO_ATTR_SHAPE, shape);
122 out.setPrecision();
125 }
128 }
129 writeParams(out);
130 out.closeTag();
131}
132
133
134/****************************************************************************/
@ SUMO_TAG_POLY
begin/end of the description of a polygon
@ SUMO_ATTR_LINEWIDTH
@ SUMO_ATTR_GEO
@ SUMO_ATTR_SHAPE
edge: the shape in xml-definition
@ SUMO_ATTR_FILL
Fill the polygon.
@ SUMO_ATTR_NAME
@ SUMO_ATTR_LAYER
A layer number.
@ SUMO_ATTR_ANGLE
@ SUMO_ATTR_TYPE
@ SUMO_ATTR_COLOR
A color information.
@ SUMO_ATTR_ID
@ SUMO_ATTR_IMGFILE
int gPrecisionGeo
Definition StdDefs.cpp:29
static const GeoConvHelper & getFinal()
the coordinate transformation for writing the location element and for tracking the original coordina...
void cartesian2geo(Position &cartesian) const
Converts the given cartesian (shifted) position to its geo (lat/long) representation.
const std::string & getID() const
Returns the id.
Definition Named.h:74
Static storage of an output device and its base (abstract) implementation.
OutputDevice & writeAttr(const SumoXMLAttr attr, const T &val)
writes a named attribute
OutputDevice & openTag(const std::string &xmlElement)
Opens an XML tag.
bool closeTag(const std::string &comment="")
Closes the most recently opened tag and optionally adds a comment.
void setPrecision(int precision=gPrecision)
Sets the precision or resets it to default.
std::map< std::string, std::string > Map
parameters map
Parameterised()
Default constructor.
void writeParams(OutputDevice &device) const
write Params in the given outputdevice
A list of positions.
const PositionVector & getShape() const
Returns the shape of the polygon.
virtual void setHoles(const std::vector< PositionVector > &holes)
Sets the holes of the polygon.
PositionVector myShape
The positions of the polygon.
SUMOPolygon(const std::string &id, const std::string &type, const RGBColor &color, const PositionVector &shape, bool geo, bool fill, double lineWidth, double layer=DEFAULT_LAYER, double angle=DEFAULT_ANGLE, const std::string &imgFile=DEFAULT_IMG_FILE, const std::string &name=DEFAULT_NAME, const Parameterised::Map &parameters=DEFAULT_PARAMETERS)
Constructor.
double myLineWidth
The line width for drawing an unfilled polygon.
~SUMOPolygon()
Destructor.
void setFill(bool fill)
Sets whether the polygon shall be filled.
bool myGEO
specify if shape is handled as GEO coordinate (Main used in netedit)
void setLineWidth(double lineWidth)
set line width
double getLineWidth() const
Returns whether the polygon is filled.
virtual void setShape(const PositionVector &shape)
Sets the shape of the polygon.
std::vector< PositionVector > myHoles
The collection of the holes of the polygon, each given by a sequence of coodinates.
const std::vector< PositionVector > & getHoles() const
Returns the holers of the polygon.
void writeXML(OutputDevice &out, bool geo=false) const
bool myFill
Information whether the polygon has to be filled.
bool getFill() const
Returns whether the polygon is filled.
static const std::string DEFAULT_IMG_FILE
Definition Shape.h:47
const std::string & getShapeType() const
Returns the (abstract) type of the Shape.
Definition Shape.cpp:103
static const double DEFAULT_ANGLE
Definition Shape.h:46
double getShapeLayer() const
Returns the layer of the Shape.
Definition Shape.cpp:115
const std::string & getShapeImgFile() const
Returns the imgFile of the Shape.
Definition Shape.cpp:127
Shape(const std::string &id)
default consructor
Definition Shape.cpp:47
const std::string & getShapeName() const
Returns the name of the Shape.
Definition Shape.cpp:133
const RGBColor & getShapeColor() const
Returns the color of the Shape.
Definition Shape.cpp:109
double getShapeNaviDegree() const
Returns the angle of the Shape in navigational degrees.
Definition Shape.cpp:121
static std::string escapeXML(const std::string &orig, const bool maskDoubleHyphen=false)
Replaces the standard escapes by their XML entities.