Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
GUIViewObjectsHandler.h
Go to the documentation of this file.
1/****************************************************************************/
2// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3// Copyright (C) 2001-2024 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/****************************************************************************/
18// class used for handle objects over view
19/****************************************************************************/
20#pragma once
21#include <config.h>
22
23#include <vector>
26
27// ===========================================================================
28// class declaration
29// ===========================================================================
30
31class GNEJunction;
32class GNEEdge;
33class GNELane;
34class GNERoute;
35
36// ===========================================================================
37// class definitions
38// ===========================================================================
39
41
42public:
45
47 ObjectContainer(const GUIGlObject* object_) :
48 object(object_) {}
49
51 const GUIGlObject* object = nullptr;
52
54 std::vector<int> geometryPoints;
55
58
60 double offset = 0;
61 };
62
64 typedef std::map<double, std::vector<ObjectContainer> > GLObjectsSortedContainer;
65
68
70 void reset();
71
75 const Position& getSelectionPosition() const;
76
78 const Boundary& getSelectionBoundary() const;
79
81 void setSelectionPosition(const Position& pos);
82
84 void setSelectionBoundary(const Boundary& boundary);
85
87
91 bool checkBoundaryParentObject(const GUIGlObject* GLObject, const GUIGlObject* parent, const double layer);
92
95 const Position& center, const double radius, const Boundary& circleBoundary,
96 const double layer);
97
100 const PositionVector& shape, const int index, const double layer, const double radius);
101
104 const PositionVector& shape, const double layer, const double distance);
105
107 bool checkShapeObject(const GUIGlObject* GLObject, const PositionVector& shape,
108 const Boundary& shapeBoundary, const double layer);
110
114 bool selectObject(const GUIGlObject* GLObject, const double layer, const bool checkDuplicated,
115 const bool fullBoundary);
116
118 bool selectGeometryPoint(const GUIGlObject* GLObject, const int newIndex, const double layer);
119
121 bool selectPositionOverShape(const GUIGlObject* GLObject, const Position& pos, const double layer, const double offset);
122
124 bool isObjectSelected(const GUIGlObject* GLObject) const;
125
128
130 const std::vector<int>& getSelectedGeometryPoints(const GUIGlObject* GLObject) const;
131
133 const Position& getSelectedPositionOverShape(const GUIGlObject* GLObject) const;
134
136
140 const std::set<const GUIGlObject*> &getRedrawObjects() const;
141
143 void addToRedrawObjects(const GUIGlObject* GLObject);
144
146
150 const std::vector<const GNEJunction*>& getMergingJunctions() const;
151
153 bool addMergingJunctions(const GNEJunction* junction);
154
156
158 void updateFrontObject(const GUIGlObject* GLObject);
159
162
165
167 const GNEEdge* markedEdge = nullptr;
168
170 const GNELane* markedLane = nullptr;
171
173 const GUIGlObject* markedTAZ = nullptr;
174
176 const GNERoute* markedRoute = nullptr;
177
180
183
184protected:
187
189 std::map<const GUIGlObject*, bool> mySelectedObjects;
190
192 std::set<const GUIGlObject*> myRedrawObjects;
193
196
199
202
204 std::vector<int> myEmptyGeometryPoints;
205
207 std::vector<const GNEJunction*> myMergingJunctions;
208
209private:
212
215};
GUIGlObjectType
@ GLO_NETWORK
The network - empty.
A class that stores a 2D geometrical boundary.
Definition Boundary.h:39
A road/street connecting two junctions (netedit-version)
Definition GNEEdge.h:53
This lane is powered by an underlying GNEEdge and basically knows how to draw itself.
Definition GNELane.h:46
Boundary mySelectionBoundary
selection boundary
PositionVector mySelectionBoundaryShape
selection boundary (shape)
bool checkCircleObject(const GUIVisualizationSettings::Detail d, const GUIGlObject *GLObject, const Position &center, const double radius, const Boundary &circleBoundary, const double layer)
check if mouse is within elements geometry (for circles)
bool checkShapeObject(const GUIGlObject *GLObject, const PositionVector &shape, const Boundary &shapeBoundary, const double layer)
check (closed) shape element
const Boundary & getSelectionBoundary() const
get selection boundary
void setSelectionPosition(const Position &pos)
set selection position
std::set< const GUIGlObject * > myRedrawObjects
set with element marked for redrawing
bool selectObject(const GUIGlObject *GLObject, const double layer, const bool checkDuplicated, const bool fullBoundary)
const GNERoute * markedRoute
marked route (used in create vehicle mode)
bool selectGeometryPoint(const GUIGlObject *GLObject, const int newIndex, const double layer)
add geometryPoint into list of elements under cursor
std::vector< const GNEJunction * > myMergingJunctions
merging junctions
GUIViewObjectsHandler(const GUIViewObjectsHandler &)=default
set copy constructor private
const std::set< const GUIGlObject * > & getRedrawObjects() const
void addToRedrawObjects(const GUIGlObject *GLObject)
get redrawing objects
const Position & getSelectionPosition() const
void isolateEdgeGeometryPoints()
isolate edge geometry points (used for moving)
void reset()
reset view objects handler
const GUIGlObject * markedTAZ
marked TAZ (used in create TAZRel mode)
const Position & getSelectedPositionOverShape(const GUIGlObject *GLObject) const
get position over shape
std::map< double, std::vector< ObjectContainer > > GLObjectsSortedContainer
typedef
bool addMergingJunctions(const GNEJunction *junction)
add to merging junctions (used for marking junctions to merge)
void setSelectionBoundary(const Boundary &boundary)
set selection boundary
std::map< const GUIGlObject *, bool > mySelectedObjects
map with selected elements and if was selected with full boundary (used only to avoid double selectio...
GUIGlObjectType recomputeBoundaries
recompute boundaries
const GLObjectsSortedContainer & getSelectedObjects() const
get all elements under cursor sorted by layer
const GNEEdge * markedEdge
marked edge (used in create edge mode, for splitting)
const GNELane * markedLane
marked lane (used in create edge mode, for splitting)
Position mySelectionPosition
position
const GUIGlObject * markedSecondGeometryPoint
marked first geometry point (used for moving/delete geometry points)
bool isObjectSelected(const GUIGlObject *GLObject) const
check if element was already selected
const std::vector< int > & getSelectedGeometryPoints(const GUIGlObject *GLObject) const
get geometry points for the given glObject
bool checkBoundaryParentObject(const GUIGlObject *GLObject, const GUIGlObject *parent, const double layer)
void updateFrontObject(const GUIGlObject *GLObject)
move the given object to the front (currently used only in netedit)
bool checkGeometryPoint(const GUIVisualizationSettings::Detail d, const GUIGlObject *GLObject, const PositionVector &shape, const int index, const double layer, const double radius)
check if mouse is within geometry point
bool checkPositionOverShape(const GUIVisualizationSettings::Detail d, const GUIGlObject *GLObject, const PositionVector &shape, const double layer, const double distance)
check if mouse is within geometry point
GLObjectsSortedContainer mySortedSelectedObjects
selected element sorted by layer
std::vector< int > myEmptyGeometryPoints
empty geometry points
const GUIGlObject * markedFirstGeometryPoint
marked first geometry point (used for moving/delete geometry points)
GUIViewObjectsHandler & operator=(const GUIViewObjectsHandler &)=default
set assignment operator private
bool selectPositionOverShape(const GUIGlObject *GLObject, const Position &pos, const double layer, const double offset)
select position over shape (for example, the position over a lane shape)
const std::vector< const GNEJunction * > & getMergingJunctions() const
A point in 2D or 3D with translation and scaling methods.
Definition Position.h:37
static const Position INVALID
used to indicate that a position is valid
Definition Position.h:322
A list of positions.
ObjectContainer(const GUIGlObject *object_)
parameter constructor
std::vector< int > geometryPoints
vector with geometry points
double offset
offset of position over shape