57 FXIMPLEMENT(
GUIParameterTracker, FXMainWindow, GUIParameterTrackerMap, ARRAYNUMBER(GUIParameterTrackerMap))
64 const std::
string& name)
65 : FXMainWindow(app.getApp(), "Tracker",
nullptr,
nullptr, DECOR_ALL, 20, 20, 300, 200),
69 FXVerticalFrame* glcanvasFrame =
new FXVerticalFrame(
this, FRAME_SUNKEN | LAYOUT_SIDE_TOP | LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0);
71 setTitle(name.c_str());
78 for (std::vector<TrackerValueDesc*>::iterator i1 =
myTracked.begin(); i1 !=
myTracked.end(); i1++) {
92 FXMainWindow::create();
103 new FXButton(
myToolBar,
"\t\tSave the data...",
131 return FXMainWindow::onConfigure(sender, sel, ptr);
138 return FXMainWindow::onPaint(sender, sel, ptr);
176 for (std::vector<TrackerValueDesc*>::iterator i1 =
myTracked.begin(); i1 !=
myTracked.end(); i1++) {
177 (*i1)->setAggregationSpan(
TIME2STEPS(aggInt));
192 std::vector<TrackerValueDesc*>::iterator i;
213 for (
int j = 0; j < max; j++) {
226 FXMessageBox::error(
this, MBOX_OK,
"Storing failed!",
"%s", e.what());
249 : FXGLCanvas(c, app.getGLVisual(), app.getBuildGLCanvas(), (FXObject*)
nullptr, (FXSelector) 0, LAYOUT_SIDE_TOP | LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 300, 200),
250 myParent(&parent), myApplication(&app) {}
258 glMatrixMode(GL_PROJECTION);
260 glMatrixMode(GL_MODELVIEW);
262 glDisable(GL_TEXTURE_2D);
264 for (std::vector<TrackerValueDesc*>::iterator i = myParent->myTracked.begin(); i != myParent->myTracked.end(); i++) {
267 (
double) myWidthInPixels / (
double) myParent->myTracked.size() * (
double) run);
276 const double fontWidth = 0.1 * 300. / myWidthInPixels;
277 const double fontHeight = 0.1 * 300. / myHeightInPixels;
283 glScaled(0.8, 0.8, 1);
285 double ys = (double) 2.0 / (
double) desc.
getRange();
286 glScaled(1.0, ys, 1.0);
296 glVertex2d(0, desc.
getMin());
297 glVertex2d(2.0, desc.
getMin());
300 glVertex2d(0, desc.
getMax());
301 glVertex2d(2.0, desc.
getMax());
303 glColor4ub(red, green, blue, 77);
304 for (
int a = 1; a < 6; a++) {
305 const double yp = desc.
getRange() / 6.0 * (double) a + desc.
getMin();
313 if (values.size() < 2) {
318 latest = values.back();
320 const double xStep = 2.0 / (double) values.size();
321 std::vector<double>::const_iterator i = values.begin();
325 glColor4ub(red, green, blue, 255);
326 for (; i != values.end(); i++) {
328 double xn = xp + xStep;
341 glColor3b(red, green, blue);
346 double w = 50 / myWidthInPixels;
347 glTranslated(-0.8 - w / 2., -0.88, 0);
349 glTranslated(0.8 + w / 2., 0.88, 0);
352 glTranslated(0.75, -0.88, 0);
355 glTranslated(-0.75, 0.88, 0);
358 glTranslated(-0.98, -0.82, 0);
360 glTranslated(0.98, 0.82, 0);
363 glTranslated(-0.98, 0.78, 0);
365 glTranslated(0.98, -0.78, 0);
368 double p = (double) 0.8 -
370 glTranslated(-0.98, -(p + .02), 0);
372 glTranslated(0.98, p + .02, 0);
375 glTranslated(-0.98, .92, 0);
377 glTranslated(0.98, -.92, 0);
385 myWidthInPixels = myParent->getWidth();
386 myHeightInPixels = myParent->getHeight();
387 if (myWidthInPixels != 0 && myHeightInPixels != 0) {
388 glViewport(0, 0, myWidthInPixels - 1, myHeightInPixels - 1);
389 glClearColor(1.0, 1.0, 1.0, 1);
390 glDisable(GL_DEPTH_TEST);
391 glDisable(GL_LIGHTING);
392 glDisable(GL_LINE_SMOOTH);
394 glEnable(GL_ALPHA_TEST);
395 glDisable(GL_COLOR_MATERIAL);
397 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
412 myWidthInPixels = getWidth();
413 myHeightInPixels = getHeight();
414 if (myWidthInPixels != 0 && myHeightInPixels != 0) {
415 glViewport(0, 0, myWidthInPixels - 1, myHeightInPixels - 1);
416 glClearColor(1.0, 1.0, 1.0, 1);
417 glDisable(GL_DEPTH_TEST);
418 glDisable(GL_LIGHTING);
419 glDisable(GL_LINE_SMOOTH);
421 glEnable(GL_ALPHA_TEST);
422 glDisable(GL_COLOR_MATERIAL);
424 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
426 glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);