47 #ifdef CHECK_MEMORY_LEAKS
49 #endif // CHECK_MEMORY_LEAKS
75 :
FXGLCanvas(c, app.getGLVisual(), app.getBuildGLCanvas(), (
FXObject*) 0, (FXSelector) 0, LAYOUT_SIDE_TOP | LAYOUT_FILL_X | LAYOUT_FILL_Y),
76 myParent(&parent), myApplication(&app) {}
86 int widthInPixels = getWidth();
87 int heightInPixels = getHeight();
88 if (widthInPixels != 0 && heightInPixels != 0) {
89 glViewport(0, 0, widthInPixels - 1, heightInPixels - 1);
90 glClearColor(0, 0, 0, 1);
91 glDisable(GL_DEPTH_TEST);
92 glDisable(GL_LIGHTING);
93 glDisable(GL_LINE_SMOOTH);
95 glEnable(GL_ALPHA_TEST);
96 glDisable(GL_COLOR_MATERIAL);
98 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
112 int widthInPixels = getWidth();
113 int heightInPixels = getHeight();
114 if (widthInPixels != 0 && heightInPixels != 0) {
115 glViewport(0, 0, widthInPixels - 1, heightInPixels - 1);
116 glClearColor(0, 0, 0, 1);
117 glDisable(GL_DEPTH_TEST);
118 glDisable(GL_LIGHTING);
119 glDisable(GL_LINE_SMOOTH);
121 glEnable(GL_ALPHA_TEST);
122 glDisable(GL_COLOR_MATERIAL);
124 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
126 glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
127 myParent->drawValues(*
this);
157 :
FXMainWindow(app.getApp(), "TLS-Tracker", NULL, NULL, DECOR_ALL,
163 new FXToolBarGrip(
myToolBar,
myToolBar, FXToolBar::ID_TOOLBARGRIP, TOOLBARGRIP_DOUBLE);
174 app.addChild(
this,
true);
178 FXVerticalFrame* glcanvasFrame =
179 new FXVerticalFrame(
this,
180 FRAME_SUNKEN | LAYOUT_SIDE_TOP | LAYOUT_FILL_X | LAYOUT_FILL_Y,
181 0, 0, 0, 0, 0, 0, 0, 0);
184 setTitle((logic.getID() +
" - " + logic.getProgramID() +
" - tracker").c_str());
194 :
FXMainWindow(app.getApp(),
"TLS-Tracker", NULL, NULL, DECOR_ALL,
200 setTitle(
"TLS-Tracker");
205 FXVerticalFrame* glcanvasFrame =
206 new FXVerticalFrame(
this,
207 FRAME_SUNKEN | LAYOUT_SIDE_TOP | LAYOUT_FILL_X | LAYOUT_FILL_Y,
208 0, 0, 0, 0, 0, 0, 0, 0);
230 FXMainWindow::create();
242 size_t leftOffset = 0;
249 MSSimpleTrafficLightLogic::Phases::const_iterator j;
252 for (j = phases.begin(); j != phases.end(); ++j) {
265 DurationsVector::reverse_iterator i =
myDurations.rbegin();
267 if (durs + (*i) > beginOffset) {
280 leftOffset = beginOffset - durs;
285 glMatrixMode(GL_PROJECTION);
287 glMatrixMode(GL_MODELVIEW);
289 glTranslated(-1, -1, 0);
291 glDisable(GL_TEXTURE_2D);
309 glVertex2d((
SUMOReal)(30. / width), h);
312 if (i < myTLLogic->getLinks().size()) {
313 glRotated(180, 1, 0, 0);
315 glTranslated(0.0, -h + h20 - h4, 0);
317 glTranslated(-0.0, h - h20 + h4, 0);
318 glRotated(-180, 1, 0, 0);
324 glVertex2d(0, h + h20);
325 glVertex2d(1.0, h + h20);
332 glVertex2d((
SUMOReal) 30 / width, 1.0);
333 glVertex2d((
SUMOReal) 30 / width, h);
354 size_t duration = *pd - fpo;
364 LinkState state = (*pi).getSignalState(j);
371 glVertex2d(x, h - h10);
372 glVertex2d(x2, h - h10);
378 glVertex2d(x, h - h16);
379 glVertex2d(x, h - h4);
380 glVertex2d(x2, h - h4);
381 glVertex2d(x2, h - h16);
404 while (t > (width - 31.) / 4.) {
406 t -= (
SUMOReal)((width - 31.) / 4.);
417 while (pos < width + 50) {
420 glRotated(180, 1, 0, 0);
422 glTranslated(glpos - w / 2., -glh + h20 - h4, 0);
424 glTranslated(-glpos + w / 2., glh - h20 + h4, 0);
425 glRotated(-180, 1, 0, 0);
428 glVertex2d(glpos, glh);
429 glVertex2d(glpos, glh - h4);
435 currTime += tickDist;
465 FXSelector sel,
void* data) {
467 return FXMainWindow::onConfigure(sender, sel, data);
473 FXSelector sel,
void* data) {
475 return FXMainWindow::onPaint(sender, sel, data);
int pfDrawString(const char *c)
bool myAmInTrackingMode
Information whether the tracking mode is on.
GUIMainWindow * myApplication
The main application.
long onSimStep(FXObject *sender, FXSelector sel, void *data)
called on a simulation step
void create()
Creates the window (FOX-Toolkit)
const RGBColor & getLinkColor(const LinkState &ls)
std::string time2string(SUMOTime t)
std::vector< std::string > myLinkNames
The names of links.
void pfSetPosition(SUMOReal x, SUMOReal y)
PhasesVector myPhases
The list of phases.
DurationsVector myDurations
The list of phase durations.
long onConfigure(FXObject *sender, FXSelector sel, void *data)
called on size change
FXDEFMAP(GUITLLogicPhasesTrackerWindow::GUITLLogicPhasesTrackerPanel) GUITLLogicPhasesTrackerPanelMap[]
A fixed traffic light logic.
size_t myFirstPhase2Show
The index of the first phase that fits into the window.
A Simulation step was performed.
void drawValues(GUITLLogicPhasesTrackerPanel &caller)
Draws all values.
const std::string & getID() const
Returns the id.
~GUITLLogicPhasesTrackerPanel()
Destructor.
void addChild(FXMDIChild *child, bool updateOnSimStep=true)
Adds a further child window to the list.
SUMOTime myFirstTime2Show
The time the diagram begins at.
static void setColor(const RGBColor &c)
Sets the gl-color to this value.
long onConfigure(FXObject *, FXSelector, void *)
called on size change
const LinkVectorVector & getLinks() const
Returns the list of lists of all affected links.
LinkState
The right-of-way state of a link between two lanes used when constructing a NBTrafficLightLogic, in MSLink and GNEInternalLane.
size_t myFirstPhaseOffset
The offset to draw the first phase (left offset)
FXRealSpinDial * myBeginOffset
The offset changer (tracking mode)
FXToolBarShell * myToolBarDrag
The tool bar drag (tracking mode)
void removeChild(FXMDIChild *child)
removes the given child window from the list
SUMOTime myLastTime
The last time a phase was added at.
void pfSetScaleXY(SUMOReal sx, SUMOReal sy)
void addValue(std::pair< SUMOTime, MSPhaseDefinition > def)
Adds a further phase definition.
GLObjectValuePassConnector< std::pair< SUMOTime, MSPhaseDefinition > > * myConnector
The connector for retrieval of further phases.
std::vector< MSPhaseDefinition * > Phases
Definition of a list of phases, being the junction logic.
void unlock()
release mutex lock
The link has red light (must brake)
MSTrafficLightLogic * myTLLogic
The logic to display.
long onPaint(FXObject *sender, FXSelector sel, void *data)
called if the widget shall be repainted
GUITLLogicPhasesTrackerPanel * myPanel
The panel to draw on.
This window displays a phase diagram for a chosen tl-logic.
SUMOReal pfdkGetStringWidth(const char *c)
The parent class for traffic light logics.
The canvas for the visualisation of phases.
MFXMutex myLock
A lock to avoid addition of new values while drawing.
const std::string & getProgramID() const
Returns this tl-logic's id.
FXToolBar * myToolBar
The tool bar (tracking mode)
void setBeginTime(SUMOTime time)
Sets the time the display shall be shown as beginning at.
GUITLLogicPhasesTrackerWindow()
protected constructor for FOX
long onPaint(FXObject *, FXSelector, void *)
called if the widget shall be repainted
The definition of a single phase of a tls logic.
static FXIcon * getIcon(GUIIcon which)
SUMOTime myBeginTime
The first time a phase was added at.
~GUITLLogicPhasesTrackerWindow()
Destructor.
Class passing values from a GUIGlObject to another object.