74 #pragma GCC diagnostic push 75 #pragma GCC diagnostic ignored "-Wpedantic" 77 #include <gdal_priv.h> 79 #pragma GCC diagnostic pop 109 FXIMPLEMENT_ABSTRACT(
GUISUMOAbstractView, FXGLCanvas, GUISUMOAbstractViewMap, ARRAYNUMBER(GUISUMOAbstractViewMap))
116 FXGLCanvas(p, glVis, share, p,
MID_GLCANVAS, LAYOUT_SIDE_TOP | LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0),
121 myMouseHotspotX(app.getDefaultCursor()->getHotX()),
122 myMouseHotspotY(app.getDefaultCursor()->getHotY()),
124 myUseToolTips(false),
125 myAmInitialised(false),
126 myViewportChooser(0),
127 myWindowCursorPositionX(getWidth() / 2),
128 myWindowCursorPositionY(getHeight() / 2),
129 myVisualizationChanger(0) {
132 flags |= FLAG_ENABLED;
133 myInEditMode =
false;
137 myVisualizationSettings->
gaming = myApp->isGaming();
150 for (std::vector<GUISUMOAbstractView::Decal>::iterator it =
myDecals.begin(); it !=
myDecals.end(); ++it) {
199 double xNet = bound.
xmin() + bound.
getWidth() * x / getWidth();
201 double yNet = bound.
ymin() + bound.
getHeight() * (getHeight() - y) / getHeight();
252 if (getWidth() == 0 || getHeight() == 0) {
271 glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
272 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
277 glDisable(GL_DITHER);
281 glEnable(GL_POLYGON_SMOOTH);
282 glEnable(GL_LINE_SMOOTH);
285 glDisable(GL_POLYGON_SMOOTH);
286 glDisable(GL_LINE_SMOOTH);
311 const double SENSITIVITY = 0.1;
314 selection.
grow(SENSITIVITY);
319 for (std::vector<GUIGlID>::const_iterator it = ids.begin(); it != ids.end(); it++) {
331 double layer = (double)type;
336 layer =
dynamic_cast<Shape*
>(o)->getLayer();
343 if (layer > maxLayer) {
358 selection.
grow(radius);
360 std::vector<GUIGlID> result;
362 for (std::vector<GUIGlID>::const_iterator it = ids.begin(); it != ids.end(); it++) {
374 result.push_back(
id);
384 const int NB_HITS_MAX = 1024 * 1024;
386 static GUIGlID hits[NB_HITS_MAX];
387 static GLint nb_hits = 0;
388 glSelectBuffer(NB_HITS_MAX, hits);
400 nb_hits = glRenderMode(GL_RENDER);
404 std::vector<GUIGlID> result;
407 for (
int i = 0; i < nb_hits; ++i) {
410 for (
int j = 0; j < (int)numNames; j++) {
411 result.push_back(*ptr);
441 glEnable(GL_DEPTH_TEST);
456 glTranslated(0, 0, .55);
457 glColor3d(0.5, 0.5, 0.5);
460 while (ypos <= ymax) {
461 glVertex2d(xmin, ypos);
462 glVertex2d(xmax, ypos);
466 while (xpos <= xmax) {
467 glVertex2d(xpos, ymin);
468 glVertex2d(xpos, ymax);
472 glTranslated(0, 0, -.55);
481 const std::string text(
"10000000000");
483 int pixelSize = (int)
m2p((
double) length);
484 while (pixelSize <= 20) {
487 if (noDigits > (
int)text.length()) {
490 pixelSize = (int)
m2p((
double) length);
494 glMatrixMode(GL_PROJECTION);
497 glMatrixMode(GL_MODELVIEW);
502 glDisable(GL_TEXTURE_2D);
503 glDisable(GL_ALPHA_TEST);
505 glEnable(GL_DEPTH_TEST);
507 double len = (double) pixelSize / (
double)(getWidth() - 1) * (
double) 2.0;
509 double o = double(15) / double(getHeight());
511 double oo = double(5) / double(getHeight());
514 glVertex2d(-.98, -1. + o);
515 glVertex2d(-.98 + len, -1. + o);
517 glVertex2d(-.98, -1. + o);
518 glVertex2d(-.98, -1. + o2);
520 glVertex2d(-.98 + len, -1. + o);
521 glVertex2d(-.98 + len, -1. + o2);
524 double w = double(35) / double(getWidth());
525 double h = double(35) / double(getHeight());
528 glRotated(180, 1, 0, 0);
530 glRotated(-180, 1, 0, 0);
533 glRotated(180, 1, 0, 0);
535 glRotated(-180, 1, 0, 0);
538 glMatrixMode(GL_PROJECTION);
540 glMatrixMode(GL_MODELVIEW);
566 if (o != 0 && dynamic_cast<GUIGlObject*>(o) != 0) {
567 if (applyZoom && zoomDist < 0) {
603 FXbool ret = FXGLCanvas::makeCurrent();
611 glViewport(0, 0, getWidth() - 1, getHeight() - 1);
650 FXEvent* e = (FXEvent*) data;
652 if ((e->state & CONTROLMASK) != 0) {
670 if (e->click_count == 2) {
671 handle(
this, FXSEL(SEL_DOUBLECLICKED, 0), data);
776 myApp->getCursorPosition(x, y, b);
791 FXGLCanvas::onKeyPress(o, sel, data);
798 FXGLCanvas::onKeyRelease(o, sel, data);
812 std::string errorMessage;
813 FXString ext = FXPath::extension(destFile.c_str());
814 const bool useGL2PS = ext ==
"ps" || ext ==
"eps" || ext ==
"pdf" || ext ==
"svg" || ext ==
"tex" || ext ==
"pgf";
816 const bool useVideo = destFile ==
"" || ext ==
"h264" || ext ==
"hevc";
827 glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
828 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
833 glDisable(GL_DITHER);
837 glEnable(GL_POLYGON_SMOOTH);
838 glEnable(GL_LINE_SMOOTH);
841 glDisable(GL_POLYGON_SMOOTH);
842 glDisable(GL_LINE_SMOOTH);
848 GLint format = GL2PS_PS;
851 }
else if (ext ==
"eps") {
853 }
else if (ext ==
"pdf") {
855 }
else if (ext ==
"tex") {
857 }
else if (ext ==
"svg") {
859 }
else if (ext ==
"pgf") {
862 return "Could not save '" + destFile +
"'.\n Unrecognized format '" + std::string(ext.text()) +
"'.";
864 FILE* fp = fopen(destFile.c_str(),
"wb");
866 return "Could not save '" + destFile +
"'.\n Could not open file for writing";
868 GLint buffsize = 0, state = GL2PS_OVERFLOW;
870 glGetIntegerv(GL_VIEWPORT, viewport);
871 while (state == GL2PS_OVERFLOW) {
872 buffsize += 1024 * 1024;
873 gl2psBeginPage(destFile.c_str(),
"sumo-gui; http://sumo.dlr.de", viewport, format, GL2PS_SIMPLE_SORT,
874 GL2PS_DRAW_BACKGROUND | GL2PS_USE_CURRENT_VIEWPORT,
875 GL_RGBA, 0, NULL, 0, 0, 0, buffsize, fp,
"out.eps");
876 glMatrixMode(GL_MODELVIEW);
878 glDisable(GL_TEXTURE_2D);
879 glDisable(GL_ALPHA_TEST);
881 glEnable(GL_DEPTH_TEST);
891 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
893 const float minB[2] = { (float)viewPort.
xmin(), (float)viewPort.
ymin() };
894 const float maxB[2] = { (float)viewPort.
xmax(), (float)viewPort.
ymax() };
896 glEnable(GL_POLYGON_OFFSET_FILL);
897 glEnable(GL_POLYGON_OFFSET_LINE);
903 state = gl2psEndPage();
915 FXMALLOC(&buf, FXColor, getWidth()*getHeight());
917 glReadBuffer(GL_BACK);
919 glReadPixels(0, 0, getWidth(), getHeight(), GL_RGBA, GL_UNSIGNED_BYTE, (GLvoid*)buf);
923 int mwidth = getWidth();
924 int mheight = getHeight();
926 FXColor* pbb = buf + mwidth * (mheight - 1);
943 errorMessage =
"video";
944 }
catch (std::runtime_error& err) {
945 errorMessage = err.what();
950 errorMessage =
"Could not save '" + destFile +
"'.";
953 errorMessage =
"Could not save '" + destFile +
"'.\n" + e.what();
1109 GDALDataset* poDataset = (GDALDataset*)GDALOpen(d.
filename.c_str(), GA_ReadOnly);
1110 if (poDataset == 0) {
1113 const int xSize = poDataset->GetRasterXSize();
1114 const int ySize = poDataset->GetRasterYSize();
1116 if (d.
width <= 0.) {
1117 double adfGeoTransform[6];
1118 if (poDataset->GetGeoTransform(adfGeoTransform) == CE_None) {
1119 Position topLeft(adfGeoTransform[0], adfGeoTransform[3]);
1120 const double horizontalSize = xSize * adfGeoTransform[1];
1121 const double verticalSize = ySize * adfGeoTransform[5];
1122 Position bottomRight(topLeft.
x() + horizontalSize, topLeft.
y() + verticalSize);
1124 d.
width = bottomRight.x() - topLeft.
x();
1125 d.
height = topLeft.
y() - bottomRight.y();
1126 d.
centerX = (topLeft.
x() + bottomRight.x()) / 2;
1127 d.
centerY = (topLeft.
y() + bottomRight.y()) / 2;
1135 if (d.
width <= 0.) {
1142 const int picSize = xSize * ySize;
1144 if (!FXMALLOC(&result, FXColor, picSize)) {
1148 for (
int j = 0; j < picSize; j++) {
1149 result[j] = FXRGB(0, 0, 0);
1152 for (
int i = 1; i <= poDataset->GetRasterCount(); i++) {
1153 GDALRasterBand* poBand = poDataset->GetRasterBand(i);
1155 if (poBand->GetColorInterpretation() == GCI_RedBand) {
1157 }
else if (poBand->GetColorInterpretation() == GCI_GreenBand) {
1159 }
else if (poBand->GetColorInterpretation() == GCI_BlueBand) {
1161 }
else if (poBand->GetColorInterpretation() == GCI_AlphaBand) {
1168 assert(xSize == poBand->GetXSize() && ySize == poBand->GetYSize());
1169 if (poBand->RasterIO(GF_Read, 0, 0, xSize, ySize, ((
unsigned char*)result) + shift, xSize, ySize, GDT_Byte, 4, 4 * xSize) == CE_Failure) {
1174 GDALClose(poDataset);
1176 return new FXImage(getApp(), result, IMAGE_OWNED | IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP, xSize, ySize);
1188 for (std::vector<GUISUMOAbstractView::Decal>::iterator l =
myDecals.begin(); l !=
myDecals.end(); ++l) {
1211 glTranslated(center.
x(), center.
y(), d.
layer);
1215 glRotated(d.
rot, 0, 0, 1);
1217 double halfWidth = d.
width / 2.;
1218 double halfHeight = d.
height / 2.;
1220 halfWidth =
p2m(halfWidth);
1221 halfHeight =
p2m(halfHeight);
1273 glMatrixMode(GL_PROJECTION);
1278 glOrtho(0, getWidth(), 0, getHeight(), -
GLO_MAX - 1,
GLO_MAX + 1);
1279 glMatrixMode(GL_MODELVIEW);
1281 double scaleX = (double)getWidth() / bound.
getWidth();
1282 double scaleY = (double)getHeight() / bound.
getHeight();
1283 glScaled(scaleX, scaleY, 1);
1284 glTranslated(-bound.
xmin(), -bound.
ymin(), 0);
1314 screenRelative(false),
GUIDialog_EditViewport * getViewportEditor()
get the viewport and create it on first access
static void drawTexturedBox(int which, double size)
Draws a named texture as a box with the given size.
void paintGLGrid()
paints a grid
A decal (an image) that can be shown.
virtual long onConfigure(FXObject *, FXSelector, void *)
mouse functions
void showToolTips(bool val)
show tool tips
int pfDrawString(const char *c)
double ymin() const
Returns minimum y-coordinate.
std::vector< GUIGlID > getObjectsAtPosition(Position pos, double radius)
returns the ids of the object at position within the given (rectangular) radius using GL_SELECT ...
double xmax() const
Returns maximum x-coordinate.
bool haveGrabbed() const
Returns the information whether one of the spin dialers is grabbed.
GUICompleteSchemeStorage gSchemeStorage
bool showSizeLegend
Information whether the size legend shall be drawn.
virtual void centerTo(const Position &pos, double radius, bool applyZoom=true)=0
Centers the view to the given position, setting it to a size that covers the radius. Used for: Centering of vehicles and junctions */.
double scale
information about a lane's width (temporary, used for a single view)
FXImage * checkGDALImage(Decal &d)
check whether we can read image data or position with gdal
FXImage * image
The image pointer for later cleanup.
virtual long onDoubleClicked(FXObject *, FXSelector, void *)
void setDefault(const std::string &name)
Makes the scheme with the given name the default.
double z() const
Returns the z-position.
virtual void setViewportFromTo(const Position &lookFrom, const Position &lookAt)
applies the given viewport settings
bool myAmInitialised
Internal information whether doInit() was called.
void add(const Position &pos)
Adds the given position to this one.
virtual void recenterView()
recenters the view
FXint myWindowCursorPositionY
SUMORTree * myGrid
The visualization speed-up.
static GUIGlID add(FXImage *i)
Adds a texture to use.
void toggleSelection(GUIGlID id)
Toggles selection of an object.
bool gaming
whether the application is in gaming mode or not
virtual long onMouseMove(FXObject *, FXSelector, void *)
unsigned char alpha() const
Returns the alpha-amount of the color.
virtual long onMiddleBtnPress(FXObject *, FXSelector, void *)
Stores the information about how to visualize structures.
The dialog to change the view (gui) settings.
static GeoConvHelper & getProcessing()
the coordinate transformation to use for input conversion and processing
void setDelay(double delay)
Sets the delay of the parent application.
const double SUMO_const_laneWidth
void displayLegend()
a line with ticks, and the length information.
bool x2cartesian(Position &from, bool includeInBoundary=true)
void updatePositionInformation() const
update position information
double y() const
Returns the y-position.
void remove(GUIDialog_EditViewport *)
remove viewport
GUIVisualizationSettings * getVisualisationSettings() const
get visualitation settings
GUIMainWindow * myApp
The application.
Position snapToActiveGrid(const Position &pos) const
Returns a position that is mapped to the closest grid point if the grid is active.
double x() const
Returns the x-position.
virtual void saveFrame(const std::string &destFile, FXColor *buf)
Adds a frame to a video snapshot which will be initialized if neccessary.
MFXMutex myDecalsLock
The mutex to use before accessing the decals list in order to avoid thread conficts.
double centerX
The center of the image in x-direction (net coordinates, in m)
bool screenRelative
Whether this image should be skipped in 2D-views.
virtual long onLeftBtnPress(FXObject *, FXSelector, void *)
double getWidth() const
Returns the width of the boudary (x-axis)
bool myInEditMode
Information whether too-tip informations shall be generated.
virtual void openObjectDialog()
virtual Boundary getCenteringBoundary() const =0
virtual long onKeyRelease(FXObject *o, FXSelector sel, void *data)
unsigned char blue() const
Returns the blue-amount of the color.
void saveViewport(const double x, const double y, const double z)
Makes the given viewport the default.
bool addAdditionalGLVisualisation(const GUIGlObject *const which)
Adds an object to call its additional visualisation method.
void pfSetPosition(double x, double y)
int glID
whether the decal shall be drawn in screen coordinates, rather than network coordinates ...
void setSnapshots(std::map< SUMOTime, std::string > snaps)
Sets the snapshot time to file map.
static const RGBColor BLACK
virtual void copyViewportTo(GUISUMOAbstractView *view)
copy the viewport to the given view
virtual void onGamingClick(Position)
on gaming click
GUIDialog_ViewSettings * myVisualizationChanger
Visualization changer.
virtual double getZPos() const =0
Returns the camera height corresponding to the current zoom factor.
virtual void stopTrack()
stop track
GUIDialog_EditViewport * myViewportChooser
viewport chooser
virtual void setDelay(double)
Sets the delay of the parent application.
A RT-tree for efficient storing of SUMO's GL-objects.
double getGridHeight() const
get grid Height
bool dither
Information whether dithering shall be enabled.
double height
The height of the image (net coordinates in y-direction, in m)
#define UNUSED_PARAMETER(x)
A class that stores a 2D geometrical boundary.
int myMouseHotspotX
Offset to the mouse-hotspot from the mouse position.
void addDecals(const std::vector< Decal > &decals)
add decals
double getDelay() const
Returns the delay of the parent application.
bool removeAdditionalGLVisualisation(const GUIGlObject *const which)
Removes an object from the list of objects that show additional things.
#define WRITE_WARNING(msg)
double layer
The layer of the image.
double p2m(double pixel) const
pixels-to-meters conversion method
std::map< const GUIGlObject *, int > myAdditionallyDrawn
List of objects for which GUIGlObject::drawGLAdditional is called.
void cartesian2geo(Position &cartesian) const
Converts the given cartesian (shifted) position to its geo (lat/long) representation.
FXLabel & getCartesianLabel()
GUIVisualizationSizeSettings addSize
std::vector< Decal > myDecals
double getGridWidth() const
get grid width
GUIGlID getObjectAtPosition(Position pos)
returns the id of the object at position using GL_SELECT
static FXbool scalePower2(FXImage *image, int maxSize=(2<< 29))
virtual GUIGlID getTrackedID() const
get tracked id
virtual void startTrack(int)
star track
virtual long onPaint(FXObject *, FXSelector, void *)
GUIGlObjectType getType() const
Returns the type of the object as coded in GUIGlObjectType.
std::string name
The name of this setting.
double gridXSize
Information about the grid spacings.
void showToolTipFor(const GUIGlID id)
invokes the tooltip for the given object
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
virtual void setStatusBarText(const std::string &)
virtual long onKeyPress(FXObject *o, FXSelector sel, void *data)
keyboard functions
static void sleep(long ms)
virtual void setViewport(double zoom, double xPos, double yPos)=0
Sets the viewport Used for: Adapting a new viewport.
bool isInEditMode()
returns true, if the edit button was pressed
void show()
show view settings dialog
A point in 2D or 3D with translation and scaling methods.
void setx(double x)
set position x
virtual GUIGLObjectPopupMenu * getPopUpMenu(GUIMainWindow &app, GUISUMOAbstractView &parent)=0
Returns an own popup-menu.
FXComboBox & getColoringSchemesCombo()
static GUIGlObjectStorage gIDStorage
A single static instance of this class.
double rot
The rotation of the image in the ground plane (in degrees)
virtual void centerTo(GUIGlID id, bool applyZoom, double zoomDist=20)
centers to the chosen artifact
bool isGaming() const
return whether the gui is in gaming mode
GUIPerspectiveChanger & getChanger() const
get changer
virtual bool onLeftBtnRelease(void *data)
called when user releases left button
FXComboBox & getColoringSchemesCombo()
get coloring schemes combo
bool initialised
Whether this image was initialised (inserted as a texture)
double xmin() const
Returns minimum x-coordinate.
virtual bool onRightBtnRelease(void *data)
called when user releases right button
virtual void doInit()
doInit
double centerY
The center of the image in y-direction (net coordinates, in m)
Boundary & grow(double by)
extends the boundary by the given amount
virtual long onMouseWheel(FXObject *, FXSelector, void *)
virtual void checkSnapshots()
Checks whether it is time for a snapshot.
virtual ~GUISUMOAbstractView()
destructor
std::string filename
The path to the file the image is located at.
virtual double getZoom() const =0
Returns the zoom factor computed stored in this changer.
virtual int doPaintGL(int, const Boundary &)
paint GL
Position screenPos2NetPos(int x, int y) const
Translate screen position to network position.
std::map< SUMOTime, std::string > mySnapshots
Snapshots.
static FXbool saveImage(const std::string &file, int width, int height, FXColor *data)
GUIPerspectiveChanger * myChanger
The perspective changer.
bool myUseToolTips
use tool tips
std::string makeSnapshot(const std::string &destFile)
Takes a snapshots and writes it into the given file.
virtual void onLeftBtnPress(void *data)
mouse functions
GUIGLObjectPopupMenu * myPopup
The current popup-menu.
RGBColor backgroundColor
The background color to use.
void destroyPopup()
destoys the popup
bool antialiase
Information whether antialiase shall be enabled.
FXint myWindowCursorPositionX
Position of the cursor relative to the window.
virtual long onMiddleBtnRelease(FXObject *, FXSelector, void *)
Boundary getViewport(bool fixRatio=true)
get viewport
double width
The width of the image (net coordinates in x-direction, in m)
virtual bool setColorScheme(const std::string &)
set color scheme
void unlock()
release mutex lock
virtual void showViewportEditor()
show viewport editor
FXbool makeCurrent()
A reimplementation due to some internal reasons.
void applyGLTransform(bool fixRatio=true)
applies gl-transformations to fit the Boundary given by myChanger onto the canvas. If fixRatio is true, this boundary will be enlarged to prevent anisotropic stretching. (this should be set to false when doing selections)
virtual long onLeftBtnRelease(FXObject *, FXSelector, void *)
GUIVisualizationSettings & getDefault()
Returns the default scheme.
double m2p(double meter) const
meter-to-pixels conversion method
static void drawTextBox(const std::string &text, const Position &pos, const double layer, const double size, const RGBColor &txtColor=RGBColor::BLACK, const RGBColor &bgColor=RGBColor::WHITE, const RGBColor &borderColor=RGBColor::BLACK, const double angle=0)
draw Text box with given parameters
GUIGlObject * getNetObject() const
Returns the network object.
void setViewport(GUISUMOAbstractView *view)
Sets the default viewport.
GUIVisualizationSettings * myVisualizationSettings
visualization settings
double getHeight() const
Returns the height of the boundary (y-axis)
virtual void onMouseWheel(void *data)
called when user changes mouse wheel
bool isAdditionalGLVisualisationEnabled(GUIGlObject *const which) const
Check if an object is added in the additional GL visualitation.
unsigned char green() const
Returns the green-amount of the color.
void paintGL()
performs the painting of the simulation
virtual long onKeyPress(void *data)
called when user press a key
void sety(double y)
set position y
void setWindowCursorPosition(FXint x, FXint y)
Returns the information whether rotation is allowd.
void setCurrent(GUIVisualizationSettings *settings)
Sets current settings (called if reopened)
void show()
overload show function to focus always in OK Button
static const GUIGlID INVALID_ID
static FXImage * loadImage(FXApp *a, const std::string &file)
static const GeoConvHelper & getFinal()
the coordinate transformation for writing the location element and for tracking the original coordina...
virtual double getDelay() const
Returns the delay (should be overwritten by subclasses if applicable)
bool showGrid
Information whether a grid shall be shown.
void drawDecals()
Draws the stored decals.
static int getMaxTextureSize()
return maximum number of pixels in x and y direction
virtual double getYPos() const =0
Returns the y-offset of the field to show stored in this changer.
GUIGlID getGlID() const
Returns the numerical id of the object.
Position getCenter() const
Returns the center of the boundary.
double getExaggeration(const GUIVisualizationSettings &s, double factor=20) const
return the drawing size including exaggeration and constantSize values
unsigned char red() const
Returns the red-amount of the color.
bool skip2D
Whether this image should be skipped in 2D-views.
virtual void onMouseMove(void *data)
called when user moves mouse
virtual SUMOTime getCurrentTimeStep() const
get the current simulation time
Position getPositionInformation() const
Returns the cursor's x/y position within the network.
Boundary getVisibleBoundary() const
get visible boundary
void updateToolTip()
A method that updates the tooltip.
A dialog to change the viewport.
void setValues(double zoom, double xoff, double yoff)
Sets the given values into the dialog.
virtual void onRightBtnPress(void *data)
called when user press right button
void unblockObject(GUIGlID id)
Marks an object as unblocked.
static bool UseMesoSim
this should be set at the same time as MSGlobals::gUseMesoSim
virtual void setViewportFrom(double xPos, double yPos, double zPos)=0
Alternative method for setting the viewport.
void showViewschemeEditor()
show viewsscheme editor
virtual long onRightBtnPress(FXObject *, FXSelector, void *)
const std::string & getFullName() const
void add(double x, double y, double z=0)
Makes the boundary include the given coordinate.
virtual long onMouseLeft(FXObject *, FXSelector, void *)
GUIGlID getObjectUnderCursor()
returns the id of the object under the cursor using GL_SELECT
bool drawForSelecting
whether drawing is performed for the purpose of selecting objects
double ymax() const
Returns maximum y-coordinate.
#define WRITE_MESSAGE(msg)
GUIGlObject * getObjectBlocking(GUIGlID id)
Returns the object from the container locking it.
virtual long onKeyRelease(void *data)
called when user releases a key
virtual int Search(const float a_min[2], const float a_max[2], const GUIVisualizationSettings &c) const
Find all within search rectangle.
GUISelectedStorage gSelected
A global holder of selected objects.
virtual double getXPos() const =0
Returns the x-offset of the field to show stored in this changer.
void pfSetScaleXY(double sx, double sy)
FXDEFMAP(GUISUMOAbstractView) GUISUMOAbstractViewMap[]
GUIGlChildWindow * myParent
The parent window.
virtual long onRightBtnRelease(FXObject *, FXSelector, void *)
static const Position INVALID
used to indicate that a position is valid
std::vector< GUIGlID > getObjectsInBoundary(const Boundary &bound)
returns the ids of all objects in the given boundary
void setOldValues(const Position &lookFrom, const Position &lookAt)
Resets old values.