SUMO - Simulation of Urban MObility
GLHelper Class Reference

Some methods which help to draw certain geometrical objects in openGL. More...

#include <GLHelper.h>

Collaboration diagram for GLHelper:
Collaboration graph

Static Public Member Functions

static void debugVertices (const PositionVector &shape, double size, double layer=256)
 draw vertex numbers for the given shape (in a random color) More...
 
static void drawBoxLine (const Position &beg, double rot, double visLength, double width, double offset=0)
 Draws a thick line. More...
 
static void drawBoxLine (const Position &beg1, const Position &beg2, double rot, double visLength, double width)
 Draws a thick line using the mean of both given points as begin position. More...
 
static void drawBoxLines (const PositionVector &geom, const std::vector< double > &rots, const std::vector< double > &lengths, double width, int cornerDetail=0, double offset=0)
 Draws thick lines. More...
 
static void drawBoxLines (const PositionVector &geom, const std::vector< double > &rots, const std::vector< double > &lengths, const std::vector< RGBColor > &cols, double width, int cornerDetail=0, double offset=0)
 Draws thick lines with varying color. More...
 
static void drawBoxLines (const PositionVector &geom1, const PositionVector &geom2, const std::vector< double > &rots, const std::vector< double > &lengths, double width)
 Draws thick lines using the mean of the points given in the point lists as begin positions. More...
 
static void drawBoxLines (const PositionVector &geom, double width)
 Draws thick lines. More...
 
static void drawFilledCircle (double width, int steps=8)
 Draws a filled circle around (0,0) More...
 
static void drawFilledCircle (double width, int steps, double beg, double end)
 Draws a filled circle around (0,0) More...
 
static void drawFilledPoly (const PositionVector &v, bool close)
 Draws a filled polygon described by the list of points. More...
 
static void drawFilledPolyTesselated (const PositionVector &v, bool close)
 Draws a filled polygon described by the list of points. More...
 
static void drawLine (const Position &beg, double rot, double visLength)
 Draws a thin line. More...
 
static void drawLine (const Position &beg1, const Position &beg2, double rot, double visLength)
 Draws a thin line using the mean of both given points as begin position. More...
 
static void drawLine (const PositionVector &v)
 Draws a thin line along the given position vector. More...
 
static void drawLine (const PositionVector &v, const std::vector< RGBColor > &cols)
 Draws a thin line along the given position vector with variable color. More...
 
static void drawLine (const Position &beg, const Position &end)
 Draws a thin line between the two points. More...
 
static void drawOutlineCircle (double width, double iwidth, int steps=8)
 Draws an unfilled circle around (0,0) More...
 
static void drawOutlineCircle (double width, double iwidth, int steps, double beg, double end)
 Draws an unfilled circle around (0,0) More...
 
static void drawText (const std::string &text, const Position &pos, const double layer, const double size, const RGBColor &col=RGBColor::BLACK, const double angle=0, int align=0, double width=-1)
 
static void drawTextAtEnd (const std::string &text, const PositionVector &shape, double x, double size, RGBColor color)
 draw text and the end of shape More...
 
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 More...
 
static void drawTriangleAtEnd (const Position &p1, const Position &p2, double tLength, double tWidth)
 Draws a triangle at the end of the given line. More...
 
static RGBColor getColor ()
 gets the gl-color More...
 
static void resetFont ()
 to be called when the font context is invalidated More...
 
static void setColor (const RGBColor &c)
 Sets the gl-color to this value. More...
 

Static Private Member Functions

static int angleLookup (double angleDeg)
 normalize angle for lookup in myCircleCoords More...
 
static bool initFont ()
 init myFont More...
 
static bool rightTurn (double angle1, double angle2)
 whether the road makes a right turn (or goes straight) More...
 

Static Private Attributes

static std::vector< std::pair< double, double > > myCircleCoords
 Storage for precomputed sin/cos-values describing a circle. More...
 
static struct FONScontextmyFont = 0
 Font context. More...
 
static double myFontSize = 50.0
 

Detailed Description

Some methods which help to draw certain geometrical objects in openGL.

This class offers some static methods for drawing primitives in openGL.

Definition at line 49 of file GLHelper.h.

Member Function Documentation

◆ angleLookup()

int GLHelper::angleLookup ( double  angleDeg)
staticprivate

normalize angle for lookup in myCircleCoords

Definition at line 338 of file GLHelper.cpp.

References CIRCLE_RESOLUTION, and myCircleCoords.

Referenced by drawFilledCircle().

◆ debugVertices()

void GLHelper::debugVertices ( const PositionVector shape,
double  size,
double  layer = 256 
)
static

draw vertex numbers for the given shape (in a random color)

Definition at line 556 of file GLHelper.cpp.

References drawText(), RGBColor::fromHSV(), RandHelper::rand(), and toString().

Referenced by GUIPolygon::drawGL(), GUIJunctionWrapper::drawGL(), and GUILane::drawGL().

◆ drawBoxLine() [1/2]

void GLHelper::drawBoxLine ( const Position beg,
double  rot,
double  visLength,
double  width,
double  offset = 0 
)
static

Draws a thick line.

The line is drawn as a GL_QUADS.

Parameters
[in]begThe begin position of the line
[in]rotThe direction the line shall be drawn to (in radiants)
[in]visLengthThe length of the line
[in]widthThe width of the line
[in]offsetThe orthogonal offset

Definition at line 137 of file GLHelper.cpp.

References Position::x(), and Position::y().

Referenced by GUIBaseVehicle::drawAction_drawVehicleAsPoly(), GNELane::drawArrows(), GUILane::drawArrows(), drawBoxLines(), GNEDetectorExit::drawGL(), GNEDetectorEntry::drawGL(), GNEJunction::drawGL(), GUIBusStop::drawGL(), GUIE3Collector::MyWrapper::drawSingleCrossing(), and drawTextBox().

◆ drawBoxLine() [2/2]

void GLHelper::drawBoxLine ( const Position beg1,
const Position beg2,
double  rot,
double  visLength,
double  width 
)
static

Draws a thick line using the mean of both given points as begin position.

The line is drawn as a GL_QUADS.

Parameters
[in]beg1One of the begin positions of the line to use the mean of
[in]beg2One of the begin positions of the line to use the mean of
[in]rotThe direction the line shall be drawn to (in radiants)
[in]visLengthThe length of the line
[in]widthThe width of the line

Definition at line 153 of file GLHelper.cpp.

References Position::x(), and Position::y().

◆ drawBoxLines() [1/4]

void GLHelper::drawBoxLines ( const PositionVector geom,
const std::vector< double > &  rots,
const std::vector< double > &  lengths,
double  width,
int  cornerDetail = 0,
double  offset = 0 
)
static

Draws thick lines.

Each line is drawn using drawBoxLine.

Parameters
[in]geomThe list of begin positions of the lines
[in]rotsThe directions the lines shall be drawn to (in radiants)
[in]lengthsThe lengths of the lines
[in]widthThe width of the lines
[in]cornerDetailDetail level for filling the corners between angled segments
[in]theorthogonal offset
See also
drawBoxLine

Definition at line 183 of file GLHelper.cpp.

References drawBoxLine(), drawFilledCircle(), MIN2(), and rightTurn().

Referenced by GUIPerson::drawAction_drawWalkingareaPath(), GUIVehicle::drawBestLanes(), GNEContainerStop::drawGL(), GNEBusStop::drawGL(), GNEDetectorE2::drawGL(), GNEInternalLane::drawGL(), GNELane::drawGL(), GNEChargingStation::drawGL(), GNEConnection::drawGL(), GUIChargingStation::drawGL(), GUIContainerStop::drawGL(), GUIBusStop::drawGL(), GUIParkingArea::drawGL(), GNEPoly::drawGL(), GUIE2Collector::MyWrapper::drawGL(), GUILane::drawGL(), GUIPerson::drawGLAdditional(), GUILane::drawMarkings(), GNELane::drawMarkings(), GUIVehicle::drawRouteHelper(), GUIMEVehicle::drawRouteHelper(), and GUIPolygon::performTesselation().

◆ drawBoxLines() [2/4]

void GLHelper::drawBoxLines ( const PositionVector geom,
const std::vector< double > &  rots,
const std::vector< double > &  lengths,
const std::vector< RGBColor > &  cols,
double  width,
int  cornerDetail = 0,
double  offset = 0 
)
static

Draws thick lines with varying color.

Each line is drawn using drawBoxLine.

Parameters
[in]geomThe list of begin positions of the lines
[in]rotsThe directions the lines shall be drawn to (in radiants)
[in]lengthsThe lengths of the lines
[in]colsThe colors of the lines
[in]widthThe width of the lines
[in]cornerDetailDetail level for filling the corners between angled segments
[in]theorthogonal offset
See also
drawBoxLine

Definition at line 225 of file GLHelper.cpp.

References drawBoxLine(), drawFilledCircle(), and setColor().

◆ drawBoxLines() [3/4]

void GLHelper::drawBoxLines ( const PositionVector geom1,
const PositionVector geom2,
const std::vector< double > &  rots,
const std::vector< double > &  lengths,
double  width 
)
static

Draws thick lines using the mean of the points given in the point lists as begin positions.

Each line is drawn using drawBoxLine.

Parameters
[in]geom1One of the lists to obtain the lines' begin positions to use the mean of
[in]geom2One of the lists to obtain the lines' begin positions to use the mean of
[in]rotsThe directions the lines shall be drawn to (in radiants)
[in]lengthsThe lengths of the lines
[in]widthThe width of the lines
See also
drawBoxLine

Definition at line 249 of file GLHelper.cpp.

References drawBoxLine(), and MIN4().

◆ drawBoxLines() [4/4]

void GLHelper::drawBoxLines ( const PositionVector geom,
double  width 
)
static

Draws thick lines.

Widths and length are computed internally by this method, each line is then drawn using drawBoxLine.

Parameters
[in]geomThe list of begin positions of the lines
[in]widthThe width of the lines
See also
drawBoxLine

Definition at line 262 of file GLHelper.cpp.

References Position::distanceTo(), drawBoxLine(), RAD2DEG, Position::x(), and Position::y().

◆ drawFilledCircle() [1/2]

◆ drawFilledCircle() [2/2]

void GLHelper::drawFilledCircle ( double  width,
int  steps,
double  beg,
double  end 
)
static

Draws a filled circle around (0,0)

The circle is drawn use GL_TRIANGLES.

Parameters
[in]widthThe width of the circle
[in]stepsThe number of steps to divide the circle into
[in]begThe begin angle in degress
[in]endThe end angle in degress

Definition at line 356 of file GLHelper.cpp.

References angleLookup(), CIRCLE_RESOLUTION, DEG2RAD, and myCircleCoords.

◆ drawFilledPoly()

void GLHelper::drawFilledPoly ( const PositionVector v,
bool  close 
)
static

Draws a filled polygon described by the list of points.

Note
this only works well for convex polygons
Parameters
[in]vThe polygon to draw
[in]closeWhether the first point shall be appended

Definition at line 83 of file GLHelper.cpp.

References Position::x(), and Position::y().

Referenced by GNEJunction::drawGL(), GUIJunctionWrapper::drawGL(), and GUILane::drawGL().

◆ drawFilledPolyTesselated()

void GLHelper::drawFilledPolyTesselated ( const PositionVector v,
bool  close 
)
static

Draws a filled polygon described by the list of points.

Note
this works for convex and concave polygons but is slower than drawFilledPoly
Parameters
[in]vThe polygon to draw
[in]closeWhether the first point shall be appended

Definition at line 102 of file GLHelper.cpp.

References combCallback().

Referenced by GNEJunction::drawGL(), GUIJunctionWrapper::drawGL(), and GUILane::drawGL().

◆ drawLine() [1/5]

void GLHelper::drawLine ( const Position beg,
double  rot,
double  visLength 
)
static

Draws a thin line.

The line is drawn as a GL_LINES.

Parameters
[in]begThe begin position of the line
[in]rotThe direction the line shall be drawn to (in radiants)
[in]visLengthThe length of the line

Definition at line 276 of file GLHelper.cpp.

References Position::x(), and Position::y().

Referenced by GUILane::debugDrawFoeIntersections(), GNEViewNet::doPaintGL(), GUIVehicle::drawAction_drawPersonsAndContainers(), GUIVehicle::drawBestLanes(), GNEAdditional::drawChildConnections(), GNEInternalLane::drawGL(), GNELane::drawGL(), GNEConnection::drawGL(), GUIE2Collector::MyWrapper::drawGL(), GUILane::drawGL(), and GUIPolygon::performTesselation().

◆ drawLine() [2/5]

void GLHelper::drawLine ( const Position beg1,
const Position beg2,
double  rot,
double  visLength 
)
static

Draws a thin line using the mean of both given points as begin position.

The line is drawn as a GL_LINES.

Parameters
[in]beg1One of the begin positions of the line to use the mean of
[in]beg2One of the begin positions of the line to use the mean of
[in]rotThe direction the line shall be drawn to (in radiants)
[in]visLengthThe length of the line

Definition at line 289 of file GLHelper.cpp.

References Position::x(), and Position::y().

◆ drawLine() [3/5]

void GLHelper::drawLine ( const PositionVector v)
static

Draws a thin line along the given position vector.

The line is drawn as a GL_LINES.

Parameters
[in]vThe positions vector to use

Definition at line 304 of file GLHelper.cpp.

◆ drawLine() [4/5]

void GLHelper::drawLine ( const PositionVector v,
const std::vector< RGBColor > &  cols 
)
static

Draws a thin line along the given position vector with variable color.

The line is drawn as a GL_LINES.

Parameters
[in]vThe positions vector to use
[in]colsvector with the color of every line
Note
cols must have the same size as v

Definition at line 316 of file GLHelper.cpp.

References setColor().

◆ drawLine() [5/5]

void GLHelper::drawLine ( const Position beg,
const Position end 
)
static

Draws a thin line between the two points.

The line is drawn as a GL_LINES.

Parameters
[in]begBegin of the line
[in]endEnd of the line

Definition at line 329 of file GLHelper.cpp.

References Position::x(), and Position::y().

◆ drawOutlineCircle() [1/2]

void GLHelper::drawOutlineCircle ( double  width,
double  iwidth,
int  steps = 8 
)
static

Draws an unfilled circle around (0,0)

The circle is drawn by calling drawOutlineCircle(width, iwidth, steps, 0, 360).

Parameters
[in]widthThe (outer) width of the circle
[in]iwidthThe inner width of the circle
[in]stepsThe number of steps to divide the circle into

Definition at line 381 of file GLHelper.cpp.

Referenced by GNELane::drawArrows(), and GUIBaseVehicle::drawOnPos().

◆ drawOutlineCircle() [2/2]

void GLHelper::drawOutlineCircle ( double  width,
double  iwidth,
int  steps,
double  beg,
double  end 
)
static

Draws an unfilled circle around (0,0)

The circle is drawn use GL_TRIANGLES.

Parameters
[in]widthThe (outer) width of the circle
[in]iwidthThe inner width of the circle
[in]stepsThe number of steps to divide the circle into
[in]begThe begin angle in degress
[in]endThe end angle in degress

Definition at line 387 of file GLHelper.cpp.

References DEG2RAD, and myCircleCoords.

◆ drawText()

◆ drawTextAtEnd()

void GLHelper::drawTextAtEnd ( const std::string &  text,
const PositionVector shape,
double  x,
double  size,
RGBColor  color 
)
static

draw text and the end of shape

Definition at line 543 of file GLHelper.cpp.

References drawText(), RAD2DEG, Position::x(), and Position::y().

Referenced by GNELane::drawLinkNo(), GUILane::drawLinkNo(), GNELane::drawTLSLinkNo(), and GUILane::drawTLSLinkNo().

◆ drawTextBox()

void GLHelper::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 
)
static

draw Text box with given parameters

Definition at line 511 of file GLHelper.cpp.

References Position::add(), drawBoxLine(), drawText(), fonsTextBounds(), initFont(), myFont, myFontSize, setColor(), and Position::sub().

Referenced by GUISUMOAbstractView::showToolTipFor().

◆ drawTriangleAtEnd()

void GLHelper::drawTriangleAtEnd ( const Position p1,
const Position p2,
double  tLength,
double  tWidth 
)
static

Draws a triangle at the end of the given line.

Parameters
[in]p1The start of the line at which end the triangle shall be drawn
[in]p2The end of the line at which end the triangle shall be drawn
[in]tLengthThe length of the triangle
[in]tWidthThe width of the triangle

Definition at line 428 of file GLHelper.cpp.

References Position::angleTo2D(), Position::distanceTo(), GeomHelper::naviDegree(), PositionVector::positionAtOffset(), Position::x(), and Position::y().

Referenced by GNELane::drawArrows(), GUILane::drawArrows(), GNEDetectorExit::drawGL(), GNEDetectorEntry::drawGL(), GNELane::drawLane2LaneConnections(), GUILane::drawLane2LaneConnections(), and GUIE3Collector::MyWrapper::drawSingleCrossing().

◆ getColor()

◆ initFont()

bool GLHelper::initFont ( )
staticprivate

◆ resetFont()

void GLHelper::resetFont ( )
static

to be called when the font context is invalidated

Definition at line 466 of file GLHelper.cpp.

References glfonsDelete(), and myFont.

Referenced by GUIApplicationWindow::closeAllWindows(), and GNEApplicationWindow::closeAllWindows().

◆ rightTurn()

bool GLHelper::rightTurn ( double  angle1,
double  angle2 
)
staticprivate

whether the road makes a right turn (or goes straight)

Definition at line 170 of file GLHelper.cpp.

Referenced by drawBoxLines().

◆ setColor()

void GLHelper::setColor ( const RGBColor c)
static

Sets the gl-color to this value.

Definition at line 449 of file GLHelper.cpp.

References RGBColor::alpha(), RGBColor::blue(), RGBColor::green(), and RGBColor::red().

Referenced by GNEViewNet::doPaintGL(), GUIContainer::drawAction_drawAsPoly(), GUIPerson::drawAction_drawAsPoly(), GUIPerson::drawAction_drawAsTriangle(), GUIVehicle::drawAction_drawRailCarriages(), GUIBaseVehicle::drawAction_drawVehicleAsPoly(), drawBoxLines(), GNEAdditional::drawChildConnections(), GNEDetectorE1::drawGL(), GNEDetectorExit::drawGL(), GNEDetectorEntry::drawGL(), GNEContainerStop::drawGL(), GNEBusStop::drawGL(), GNEDetectorE2::drawGL(), GNEVaporizer::drawGL(), GNEInternalLane::drawGL(), GUIPolygon::drawGL(), GNELane::drawGL(), GNERouteProbe::drawGL(), GNEChargingStation::drawGL(), GUIJunctionWrapper::drawGL(), GUIPointOfInterest::drawGL(), GNEConnection::drawGL(), GUIE3Collector::MyWrapper::drawGL(), GUIChargingStation::drawGL(), GUIContainerStop::drawGL(), GUIBusStop::drawGL(), GUIParkingArea::drawGL(), GNEPoly::drawGL(), GNEEdge::drawGL(), GNECalibrator::drawGL(), GUILane::drawGL(), GUIPerson::drawGLAdditional(), GUILane::drawLane2LaneConnections(), drawLine(), GUILane::drawLinkRule(), GNELane::drawMarkings(), drawTextBox(), GUITLLogicPhasesTrackerWindow::drawValues(), GUIContainer::setColor(), GUIPerson::setColor(), GNEJunction::setColor(), GUILane::setColor(), GUIBaseVehicle::setColor(), GUIContainer::setFunctionalColor(), GNELane::setFunctionalColor(), GUIPerson::setFunctionalColor(), GUILane::setFunctionalColor(), GUIBaseVehicle::setFunctionalColor(), and GNELane::setLaneColor().

Field Documentation

◆ myCircleCoords

std::vector< std::pair< double, double > > GLHelper::myCircleCoords
staticprivate

Storage for precomputed sin/cos-values describing a circle.

Definition at line 321 of file GLHelper.h.

Referenced by angleLookup(), drawFilledCircle(), and drawOutlineCircle().

◆ myFont

FONScontext * GLHelper::myFont = 0
staticprivate

Font context.

Definition at line 324 of file GLHelper.h.

Referenced by drawText(), drawTextBox(), initFont(), and resetFont().

◆ myFontSize

double GLHelper::myFontSize = 50.0
staticprivate

Definition at line 325 of file GLHelper.h.

Referenced by drawText(), drawTextBox(), and initFont().


The documentation for this class was generated from the following files: