49 #ifdef CHECK_MEMORY_LEAKS
51 #endif // CHECK_MEMORY_LEAKS
74 const std::
string& name)
75 :
FXMainWindow(app.getApp(), "Tracker", NULL, NULL, DECOR_ALL, 20, 20, 300, 200),
78 app.addChild(
this,
true);
79 FXVerticalFrame* glcanvasFrame =
new FXVerticalFrame(
this, FRAME_SUNKEN | LAYOUT_SIDE_TOP | LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0);
81 setTitle(name.c_str());
88 for (std::vector<TrackerValueDesc*>::iterator i1 =
myTracked.begin(); i1 !=
myTracked.end(); i1++) {
102 FXMainWindow::create();
111 new FXToolBarGrip(
myToolBar,
myToolBar, FXToolBar::ID_TOOLBARGRIP, TOOLBARGRIP_DOUBLE);
115 ICON_ABOVE_TEXT | BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
119 FRAME_SUNKEN | LAYOUT_LEFT | LAYOUT_TOP | COMBOBOX_STATIC);
142 return FXMainWindow::onConfigure(sender, sel, data);
149 return FXMainWindow::onPaint(sender, sel, data);
187 for (std::vector<TrackerValueDesc*>::iterator i1 =
myTracked.begin(); i1 !=
myTracked.end(); i1++) {
188 (*i1)->setAggregationSpan(
TIME2STEPS(aggInt));
203 std::vector<TrackerValueDesc*>::iterator i;
224 for (
unsigned int j = 0; j <
max; j++) {
237 FXMessageBox::error(
this, MBOX_OK,
"Storing failed!",
"%s", e.what());
260 :
FXGLCanvas(c, app.getGLVisual(), app.getBuildGLCanvas(), (
FXObject*) 0, (FXSelector) 0, LAYOUT_SIDE_TOP | LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 300, 200),
261 myParent(&parent), myApplication(&app) {}
272 glMatrixMode(GL_PROJECTION);
274 glMatrixMode(GL_MODELVIEW);
276 glDisable(GL_TEXTURE_2D);
278 for (std::vector<TrackerValueDesc*>::iterator i = myParent->myTracked.begin(); i != myParent->myTracked.end(); i++) {
294 glScaled(0.8, 0.8, 1);
297 glScaled(1.0, ys, 1.0);
308 glVertex2d(0, desc.
getMin());
309 glVertex2d(2.0, desc.
getMin());
312 glVertex2d(0, desc.
getMax());
313 glVertex2d(2.0, desc.
getMax());
315 glColor4f(red, green, blue, 0.3f);
316 for (
int a = 1; a < 6; a++) {
320 glVertex2d(2.0, ypos);
325 if (values.size() < 2) {
330 latest = values.back();
333 std::vector<SUMOReal>::const_iterator i = values.begin();
337 glColor4f(red, green, blue, 1.0f);
338 for (; i != values.end(); i++) {
353 glColor3d(red, green, blue);
359 glRotated(180, 1, 0, 0);
361 glTranslated(-0.8 - w / 2., 0.88, 0);
363 glTranslated(0.8 + w / 2., -0.88, 0);
364 glRotated(-180, 1, 0, 0);
367 glRotated(180, 1, 0, 0);
369 glTranslated(0.75, 0.88, 0);
371 glTranslated(-0.75, -0.88, 0);
372 glRotated(-180, 1, 0, 0);
375 glRotated(180, 1, 0, 0);
377 glTranslated(-0.98, 0.82, 0);
379 glTranslated(0.98, -0.82, 0);
380 glRotated(-180, 1, 0, 0);
383 glRotated(180, 1, 0, 0);
385 glTranslated(-0.98, -0.78, 0);
387 glTranslated(0.98, 0.78, 0);
388 glRotated(-180, 1, 0, 0);
391 glRotated(180, 1, 0, 0);
395 glTranslated(-0.98, p + .02, 0);
397 glTranslated(0.98, -(p + .02), 0);
398 glRotated(-180, 1, 0, 0);
401 glRotated(180, 1, 0, 0);
403 glTranslated(-0.98, -.92, 0);
405 glTranslated(0.98, .92, 0);
406 glRotated(-180, 1, 0, 0);
414 myWidthInPixels = myParent->getWidth();
415 myHeightInPixels = myParent->getHeight();
416 if (myWidthInPixels != 0 && myHeightInPixels != 0) {
417 glViewport(0, 0, myWidthInPixels - 1, myHeightInPixels - 1);
418 glClearColor(1.0, 1.0, 1.0, 1);
419 glDisable(GL_DEPTH_TEST);
420 glDisable(GL_LIGHTING);
421 glDisable(GL_LINE_SMOOTH);
423 glEnable(GL_ALPHA_TEST);
424 glDisable(GL_COLOR_MATERIAL);
426 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
441 myWidthInPixels = getWidth();
442 myHeightInPixels = getHeight();
443 if (myWidthInPixels != 0 && myHeightInPixels != 0) {
444 glViewport(0, 0, myWidthInPixels - 1, myHeightInPixels - 1);
445 glClearColor(1.0, 1.0, 1.0, 1);
446 glDisable(GL_DEPTH_TEST);
447 glDisable(GL_LIGHTING);
448 glDisable(GL_LINE_SMOOTH);
450 glEnable(GL_ALPHA_TEST);
451 glDisable(GL_COLOR_MATERIAL);
453 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
455 glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);