46 #ifdef CHECK_MEMORY_LEAKS
48 #endif // CHECK_MEMORY_LEAKS
74 :
FXGLCanvas(c, app.getGLVisual(), app.getBuildGLCanvas(), (
FXObject*) 0, (FXSelector) 0, LAYOUT_SIDE_TOP | LAYOUT_FILL_X | LAYOUT_FILL_Y),
75 myParent(&parent), myApplication(&app) {}
85 int widthInPixels = getWidth();
86 int heightInPixels = getHeight();
87 if (widthInPixels != 0 && heightInPixels != 0) {
88 glViewport(0, 0, widthInPixels - 1, heightInPixels - 1);
89 glClearColor(0, 0, 0, 1);
90 glDisable(GL_DEPTH_TEST);
91 glDisable(GL_LIGHTING);
92 glDisable(GL_LINE_SMOOTH);
94 glEnable(GL_ALPHA_TEST);
95 glDisable(GL_COLOR_MATERIAL);
97 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
111 int widthInPixels = getWidth();
112 int heightInPixels = getHeight();
113 if (widthInPixels != 0 && heightInPixels != 0) {
114 glViewport(0, 0, widthInPixels - 1, heightInPixels - 1);
115 glClearColor(0, 0, 0, 1);
116 glDisable(GL_DEPTH_TEST);
117 glDisable(GL_LIGHTING);
118 glDisable(GL_LINE_SMOOTH);
120 glEnable(GL_ALPHA_TEST);
121 glDisable(GL_COLOR_MATERIAL);
123 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
125 glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
126 myParent->drawValues(*
this);
156 :
FXMainWindow(app.getApp(), "TLS-Tracker", NULL, NULL, DECOR_ALL,
162 new FXToolBarGrip(
myToolBar,
myToolBar, FXToolBar::ID_TOOLBARGRIP, TOOLBARGRIP_DOUBLE);
173 app.addChild(
this,
true);
177 FXVerticalFrame* glcanvasFrame =
178 new FXVerticalFrame(
this,
179 FRAME_SUNKEN | LAYOUT_SIDE_TOP | LAYOUT_FILL_X | LAYOUT_FILL_Y,
180 0, 0, 0, 0, 0, 0, 0, 0);
183 setTitle((logic.getID() +
" - " + logic.getProgramID() +
" - tracker").c_str());
193 :
FXMainWindow(app.getApp(),
"TLS-Tracker", NULL, NULL, DECOR_ALL,
199 setTitle(
"TLS-Tracker");
204 FXVerticalFrame* glcanvasFrame =
205 new FXVerticalFrame(
this,
206 FRAME_SUNKEN | LAYOUT_SIDE_TOP | LAYOUT_FILL_X | LAYOUT_FILL_Y,
207 0, 0, 0, 0, 0, 0, 0, 0);
229 FXMainWindow::create();
241 size_t leftOffset = 0;
248 MSSimpleTrafficLightLogic::Phases::const_iterator j;
251 for (j = phases.begin(); j != phases.end(); ++j) {
264 DurationsVector::reverse_iterator i =
myDurations.rbegin();
266 if (durs + (*i) > beginOffset) {
279 leftOffset = beginOffset - durs;
284 glMatrixMode(GL_PROJECTION);
286 glMatrixMode(GL_MODELVIEW);
288 glTranslated(-1, -1, 0);
290 glDisable(GL_TEXTURE_2D);
308 glVertex2d((
SUMOReal)(30. / width), h);
311 if (i < myTLLogic->getLinks().size()) {
312 glRotated(180, 1, 0, 0);
314 glTranslated(0.0, -h + h20 - h4, 0);
316 glTranslated(-0.0, h - h20 + h4, 0);
317 glRotated(-180, 1, 0, 0);
323 glVertex2d(0, h + h20);
324 glVertex2d(1.0, h + h20);
331 glVertex2d((
SUMOReal) 30 / width, 1.0);
332 glVertex2d((
SUMOReal) 30 / width, h);
353 size_t duration = *pd - fpo;
363 LinkState state = (*pi).getSignalState(j);
368 glColor3d(0, 1.0, 0);
370 glVertex2d(x, h - h16);
371 glVertex2d(x, h - h4);
372 glVertex2d(x2, h - h4);
373 glVertex2d(x2, h - h16);
378 glColor3d(1.0, 1.0, 0);
380 glVertex2d(x, h - h16);
381 glVertex2d(x, h - h4);
382 glVertex2d(x2, h - h4);
383 glVertex2d(x2, h - h16);
387 glColor3d(1.0, 0, 0);
389 glVertex2d(x, h - h10);
390 glVertex2d(x2, h - h10);
415 while (t > (width - 31.) / 4.) {
417 t -= (
SUMOReal)((width - 31.) / 4.);
428 while (pos < width + 50) {
431 glRotated(180, 1, 0, 0);
433 glTranslated(glpos - w / 2., -glh + h20 - h4, 0);
435 glTranslated(-glpos + w / 2., glh - h20 + h4, 0);
436 glRotated(-180, 1, 0, 0);
439 glVertex2d(glpos, glh);
440 glVertex2d(glpos, glh - h4);
446 currTime += tickDist;
476 FXSelector sel,
void* data) {
478 return FXMainWindow::onConfigure(sender, sel, data);
484 FXSelector sel,
void* data) {
486 return FXMainWindow::onPaint(sender, sel, data);
The link has green light, may pass.
int pfDrawString(const char *c)
bool myAmInTrackingMode
Information whether the tracking mode is on.
GUIMainWindow * myApplication
The main application.
The link has green light, has to brake.
long onSimStep(FXObject *sender, FXSelector sel, void *data)
called on a simulation step
void create()
Creates the window (FOX-Toolkit)
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(GUIDialog_AppSettings) GUIDialog_AppSettingsMap[]
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.
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 yellow light, may pass.
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
The link has yellow light, has to brake anyway.
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.