Eclipse SUMO - Simulation of Urban MObility
GUIDialog_ViewSettings.cpp
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3 // Copyright (C) 2001-2024 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials are made available under the
5 // terms of the Eclipse Public License 2.0 which is available at
6 // https://www.eclipse.org/legal/epl-2.0/
7 // This Source Code may also be made available under the following Secondary
8 // Licenses when the conditions for such availability set forth in the Eclipse
9 // Public License 2.0 are satisfied: GNU General Public License, version 2
10 // or later which is available at
11 // https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12 // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13 /****************************************************************************/
22 // The dialog to change the view (gui) settings.
23 /****************************************************************************/
24 #include <config.h>
25 
26 #include <fstream>
31 #include <utils/common/RGBColor.h>
32 #include <utils/common/ToString.h>
43 
44 #include "GUIDialog_EditViewport.h"
45 #include "GUIDialog_ViewSettings.h"
46 
47 
48 // ===========================================================================
49 // FOX callback mapping
50 // ===========================================================================
51 
55 };
56 
57 FXDEFMAP(GUIDialog_ViewSettings) GUIDialog_ViewSettingsMap[] = {
61  FXMAPFUNC(SEL_COMMAND, MID_SETTINGS_OK, GUIDialog_ViewSettings::onCmdOk),
63  // settings
72  // decals
77 };
78 
79 FXIMPLEMENT(GUIDialog_ViewSettings, FXDialogBox, GUIDialog_ViewSettingsMap, ARRAYNUMBER(GUIDialog_ViewSettingsMap))
80 FXIMPLEMENT(GUIDialog_ViewSettings::SizePanel, FXObject, GUIDialog_SizeMap, ARRAYNUMBER(GUIDialog_SizeMap))
81 
82 // ===========================================================================
83 // method definitions
84 // ===========================================================================
85 
87  FXDialogBox(parent, TL("View Settings"), GUIDesignViewSettingsMainDialog),
88  GUIPersistentWindowPos(this, "VIEWSETTINGS", true, 20, 40, 700, 500, 400, 20),
89  myParent(parent),
90  mySettings(settings),
91  myBackup(settings->name, settings->netedit) {
92  // make a backup copy
93  myBackup.copy(*settings);
94  // create content frame
95  FXVerticalFrame* contentFrame = new FXVerticalFrame(this, GUIDesignViewSettingsVerticalFrame1);
96  // build header
97  buildHeader(contentFrame);
98  // create tabbook for every section
99  FXTabBook* tabbook = new FXTabBook(contentFrame, nullptr, 0, GUIDesignViewSettingsTabBook1);
100  // build background frame
101  buildBackgroundFrame(tabbook);
102  // build streets frame
103  buildStreetsFrame(tabbook);
104  // build vehicles frame
105  buildVehiclesFrame(tabbook);
106  // build persons frame
107  buildPersonsFrame(tabbook);
108  // build containers frame
109  buildContainersFrame(tabbook);
110  // build junctions frame
111  buildJunctionsFrame(tabbook);
112  // build additionals frame
113  buildAdditionalsFrame(tabbook);
114  // build demand frame
115  if (mySettings->netedit) {
116  buildDemandFrame(tabbook);
117  }
118  // build POIs frame
119  buildPOIsFrame(tabbook);
120  // build polygons frame
121  buildPolygonsFrame(tabbook);
122  // build selection frame (only in netedit)
123  if (mySettings->netedit) {
124  buildSelectionFrame(tabbook);
125  }
126  // build data frame (only in netedit)
127  if (mySettings->netedit) {
128  buildDataFrame(tabbook);
129  }
130  // build legend frame
131  buildLegendFrame(tabbook);
132  // build 3D frame
133  build3DFrame(tabbook);
134  if (mySettings->netedit) {
135  myFrame3D->disable();
136  }
137  // build openGL frame
138  buildOpenGLFrame(tabbook);
139  // build buttons
140  buildButtons(contentFrame);
141  // rebuild color matrix
142  rebuildColorMatrices(false);
144  loadWindowPos();
145 }
146 
147 
149  myParent->remove(this);
150  // delete name panels
153  delete myTLSPhaseIndexPanel;
154  delete myTLSPhaseNamePanel;
155  delete myCwaEdgeNamePanel;
156  delete myStreetNamePanel;
157  delete myEdgeValuePanel;
158  delete myEdgeScaleValuePanel;
159  delete myJunctionIndexPanel;
160  delete myTLIndexPanel;
161  delete myJunctionIDPanel;
162  delete myJunctionNamePanel;
163  delete myVehicleNamePanel;
164  delete myVehicleValuePanel;
166  delete myVehicleTextPanel;
167  delete myPersonNamePanel;
168  delete myPersonValuePanel;
169  delete myAddNamePanel;
170  delete myAddFullNamePanel;
171  delete myPOINamePanel;
172  delete myPOITypePanel;
173  delete myPOITextPanel;
174  delete myPolyNamePanel;
175  delete myPolyTypePanel;
176  delete myEdgeNamePanel;
177  delete myDataValuePanel;
178  delete myGeometryIndicesPanel;
179  // delete size panels
180  delete myVehicleSizePanel;
181  delete myPersonSizePanel;
182  delete myJunctionSizePanel;
183  delete myPOISizePanel;
184  delete myPolySizePanel;
185  delete myAddSizePanel;
186  // delete rainbow panels
187  delete myEdgeRainbowPanel;
188  delete myJunctionRainbowPanel;
189  delete myDataRainbowPanel;
190 }
191 
192 
193 void
195  // update buttons that can be changed externally
196  myShowGrid->setCheck(mySettings->showGrid);
199  // create myNewDecalsTable
200  myDecalsTable->create();
202  FXDialogBox::show();
203 }
204 
205 
208  return myParent;
209 }
210 
211 
212 void
214  mySettings = settings;
215  myBackup.copy(*settings);
216  onCmdNameChange(nullptr, 0, nullptr);
217 }
218 
219 
220 long
221 GUIDialog_ViewSettings::onCmdOk(FXObject*, FXSelector, void*) {
222  getApp()->reg().writeIntEntry("SETTINGS", "comboRows", (int)myComboRows->getValue());
223  hide();
224  return 1;
225 }
226 
227 
228 long
229 GUIDialog_ViewSettings::onCmdCancel(FXObject*, FXSelector, void*) {
230  hide();
232  myParent->update();
233  return 1;
234 }
235 
236 
237 long
238 GUIDialog_ViewSettings::onCmdNameChange(FXObject*, FXSelector, void* ptr) {
239  if (ptr != nullptr) {
240  FXString dataS = (char*) ptr; // !!!unicode
241  // check whether this item has been added twice
242  if (dataS.text() == mySchemeName->getItemText(mySchemeName->getNumItems() - 1)) {
243  for (int i = 0; i < mySchemeName->getNumItems() - 1; ++i) {
244  if (dataS.text() == mySchemeName->getItemText(i)) {
246  }
247  }
248  }
249  myBackup.copy(gSchemeStorage.get(dataS.text()));
250  mySettings = &gSchemeStorage.get(dataS.text());
251  }
252  rebuildColorMatrices(true);
253 
255 
264  if (mySettings->netedit) {
275 
282 
295 
301  }
302 
310  myShowRails->setCheck(mySettings->showRails);
326 
331  myShowMinGap->setCheck(mySettings->drawMinGap);
338  /*
339  myShowLaneChangePreference->setCheck(mySettings->drawLaneChangePreference);
340  */
346 
352 
357 
368 
372 
373  myPoiDetail->setValue(mySettings->poiDetail);
378 
382 
386  myDither->setCheck(mySettings->dither);
387  myFPS->setCheck(mySettings->fps);
395 
398 
400  update();
401  myParent->update();
402  return 1;
403 }
404 
405 
406 bool
407 GUIDialog_ViewSettings::updateColorRanges(FXObject* sender, std::vector<FXColorWell*>::const_iterator colIt,
408  std::vector<FXColorWell*>::const_iterator colEnd,
409  std::vector<FXRealSpinner*>::const_iterator threshIt,
410  std::vector<FXRealSpinner*>::const_iterator threshEnd,
411  std::vector<FXButton*>::const_iterator buttonIt,
412  GUIColorScheme& scheme) {
413  UNUSED_PARAMETER(threshEnd);
414  int pos = 0;
415  while (colIt != colEnd) {
416  if (scheme.isFixed()) {
417  if (sender == *colIt) {
418  scheme.setColor(pos, MFXUtils::getRGBColor((*colIt)->getRGBA()));
419  }
420  } else {
421  if (sender == *threshIt) {
422  const double val = (*threshIt)->getValue();
423  scheme.setThreshold(pos, val);
424  return false;
425  }
426  if (sender == *colIt) {
427  scheme.setColor(pos, MFXUtils::getRGBColor((*colIt)->getRGBA()));
428  return false;
429  }
430  if (sender == *buttonIt) {
431  scheme.addColor(MFXUtils::getRGBColor((*colIt)->getRGBA()), (*threshIt)->getValue());
432  return true;
433  } else if (sender == *(buttonIt + 1)) {
434  scheme.removeColor(pos);
435  return true;
436  }
437  // 2 buttons per item (add / remove)
438  threshIt++;
439  buttonIt += 2;
440  }
441  ++colIt;
442  pos++;
443  }
444  return false;
445 }
446 
447 
448 bool
449 GUIDialog_ViewSettings::updateScaleRanges(FXObject* sender, std::vector<FXRealSpinner*>::const_iterator scaleIt,
450  std::vector<FXRealSpinner*>::const_iterator scaleEnd,
451  std::vector<FXRealSpinner*>::const_iterator threshIt,
452  std::vector<FXRealSpinner*>::const_iterator threshEnd,
453  std::vector<FXButton*>::const_iterator buttonIt,
454  GUIScaleScheme& scheme) {
455  int pos = 0;
456  while (scaleIt != scaleEnd) {
457  if (scheme.isFixed()) {
458  if (sender == *scaleIt) {
459  scheme.setColor(pos, (*scaleIt)->getValue());
460  }
461  } else {
462  if (sender == *threshIt) {
463  const double val = (*threshIt)->getValue();
464  double lo, hi;
465  if (pos != 0) {
466  threshIt--;
467  (*threshIt)->getRange(lo, hi);
468  (*threshIt)->setRange(lo, val);
469  threshIt++;
470  }
471  threshIt++;
472  if (threshIt != threshEnd) {
473  (*threshIt)->getRange(lo, hi);
474  (*threshIt)->setRange(val, hi);
475  }
476  scheme.setThreshold(pos, val);
477  return false;
478  }
479  if (sender == *scaleIt) {
480  scheme.setColor(pos, (*scaleIt)->getValue());
481  return false;
482  }
483  if (sender == *buttonIt) {
484  scheme.addColor((*scaleIt)->getValue(), (*threshIt)->getValue());
485  return true;
486  } else if (sender == *(buttonIt + 1)) {
487  scheme.removeColor(pos);
488  return true;
489  }
490  threshIt++;
491  buttonIt += 2;
492  }
493  ++scaleIt;
494  pos++;
495  }
496  return false;
497 }
498 
499 
500 long
501 GUIDialog_ViewSettings::onCmdColorChange(FXObject* sender, FXSelector, void* /*val*/) {
503  tmpSettings.copy(*mySettings);
504  int prevLaneMode = mySettings->getLaneEdgeMode();
505  int prevLaneScaleMode = mySettings->getLaneEdgeScaleMode();
506  int prevVehicleMode = mySettings->vehicleColorer.getActive();
507  int prevVehicleScaleMode = mySettings->vehicleScaler.getActive();
508  int prevPersonMode = mySettings->personColorer.getActive();
509  int prevContainerMode = mySettings->containerColorer.getActive();
510  int prevJunctionMode = mySettings->junctionColorer.getActive();
511  int prevPOIMode = mySettings->poiColorer.getActive();
512  int prevPolyMode = mySettings->polyColorer.getActive();
513  int prevDataMode = mySettings->dataColorer.getActive();
514  bool doRebuildColorMatrices = false;
515 
516  tmpSettings.name = mySettings->name;
517  tmpSettings.backgroundColor = MFXUtils::getRGBColor(myBackgroundColor->getRGBA());
518 
519  // additionals
528  if (mySettings->netedit) {
529  tmpSettings.colorSettings.stopColor = MFXUtils::getRGBColor(myStopColor->getRGBA());
534  tmpSettings.colorSettings.walkColor = MFXUtils::getRGBColor(myWalkColor->getRGBA());
535  tmpSettings.colorSettings.rideColor = MFXUtils::getRGBColor(myRideColor->getRGBA());
539 
540  tmpSettings.widthSettings.tripWidth = myTripWidth->getValue();
541  tmpSettings.widthSettings.personTripWidth = myPersonTripWidth->getValue();
542  tmpSettings.widthSettings.walkWidth = myWalkWidth->getValue();
543  tmpSettings.widthSettings.rideWidth = myRideWidth->getValue();
544  tmpSettings.widthSettings.transportWidth = myTransportWidth->getValue();
545  tmpSettings.widthSettings.transhipWidth = myTranshipWidth->getValue();
546 
559  }
560 
561  tmpSettings.showGrid = (myShowGrid->getCheck() != FALSE);
562  tmpSettings.gridXSize = (double) myGridXSizeDialer->getValue();
563  tmpSettings.gridYSize = (double) myGridYSizeDialer->getValue();
564 
568  } else {
571  }
572  tmpSettings.laneShowBorders = (myShowLaneBorders->getCheck() != FALSE);
573  tmpSettings.showBikeMarkings = (myShowBikeMarkings->getCheck() != FALSE);
574  tmpSettings.showLinkDecals = (myShowLaneDecals->getCheck() != FALSE);
575  tmpSettings.realisticLinkRules = (myRealisticLinkRules->getCheck() != FALSE);
576  tmpSettings.showLinkRules = (myShowLinkRules->getCheck() != FALSE);
577  tmpSettings.showRails = (myShowRails->getCheck() != FALSE);
578  tmpSettings.secondaryShape = (mySecondaryShape->getCheck() != FALSE);
579  tmpSettings.edgeName = myEdgeNamePanel->getSettings();
581  tmpSettings.cwaEdgeName = myCwaEdgeNamePanel->getSettings();
582  tmpSettings.streetName = myStreetNamePanel->getSettings();
583  tmpSettings.edgeValue = myEdgeValuePanel->getSettings();
585  tmpSettings.hideConnectors = (myHideMacroConnectors->getCheck() != FALSE);
586  tmpSettings.showLaneDirection = (myShowLaneDirection->getCheck() != FALSE);
587  tmpSettings.showSublanes = (myShowSublanes->getCheck() != FALSE);
588  tmpSettings.spreadSuperposed = (mySpreadSuperposed->getCheck() != FALSE);
589  tmpSettings.disableHideByZoom = (myDisableHideByZoom->getCheck() != FALSE);
590  if (sender == myParamKey) {
592  tmpSettings.edgeParam = myParamKey->getText().text();
594  tmpSettings.laneParam = myParamKey->getText().text();
596  tmpSettings.edgeData = myParamKey->getText().text();
598  tmpSettings.edgeData = myParamKey->getText().text();
599  }
600  } else if (sender == myScalingParamKey) {
602  tmpSettings.edgeDataScaling = myScalingParamKey->getText().text();
603  }
604  } else if (sender == myVehicleParamKey) {
606  tmpSettings.vehicleParam = myVehicleParamKey->getText().text();
607  }
608  } else if (sender == myVehicleScalingParamKey) {
610  tmpSettings.vehicleScaleParam = myVehicleScalingParamKey->getText().text();
611  }
612  } else if (sender == myDataParamKey) {
614  tmpSettings.relDataAttr = myDataParamKey->getText().text();
615  }
616  } else if (sender == myVehicleTextPanel->myCheck) {
618  } else if (sender == myVehicleTextParamKey) {
619  tmpSettings.vehicleTextParam = myVehicleTextParamKey->getText().text();
620  } else if (sender == myPOITextPanel->myCheck) {
621  updatePOIParams();
622  } else if (sender == myPOITextParamKey) {
623  tmpSettings.poiTextParam = myPOITextParamKey->getText().text();
624  } else if (sender == myMeanDataID) {
625  tmpSettings.edgeDataID = myMeanDataID->getText().text();
626  }
628  tmpSettings.laneWidthExaggeration = myLaneWidthUpscaleDialer->getValue();
629  tmpSettings.laneMinSize = myLaneMinWidthDialer->getValue();
630 
634  tmpSettings.showBlinker = (myShowBlinker->getCheck() != FALSE);
635  tmpSettings.drawMinGap = (myShowMinGap->getCheck() != FALSE);
636  tmpSettings.drawBrakeGap = (myShowBrakeGap->getCheck() != FALSE);
637  tmpSettings.showBTRange = (myShowBTRange->getCheck() != FALSE);
638  tmpSettings.showRouteIndex = (myShowRouteIndex->getCheck() != FALSE);
639  tmpSettings.scaleLength = (myScaleLength->getCheck() != FALSE);
640  tmpSettings.drawReversed = (myDrawReversed->getCheck() != FALSE);
641  tmpSettings.showParkingInfo = (myShowParkingInfo->getCheck() != FALSE);
642  /*
643  tmpSettings.drawLaneChangePreference = (myShowLaneChangePreference->getCheck() != FALSE);
644  */
645  tmpSettings.vehicleName = myVehicleNamePanel->getSettings();
648  tmpSettings.vehicleText = myVehicleTextPanel->getSettings();
649  tmpSettings.vehicleSize = myVehicleSizePanel->getSettings();
650 
653  tmpSettings.personName = myPersonNamePanel->getSettings();
654  tmpSettings.personValue = myPersonValuePanel->getSettings();
655  tmpSettings.personSize = myPersonSizePanel->getSettings();
656 
661 
663  tmpSettings.drawLinkTLIndex = myTLIndexPanel->getSettings();
665  tmpSettings.junctionID = myJunctionIDPanel->getSettings();
672 
673  tmpSettings.addName = myAddNamePanel->getSettings();
674  tmpSettings.addFullName = myAddFullNamePanel->getSettings();
675  tmpSettings.addSize = myAddSizePanel->getSettings();
676 
678  tmpSettings.poiDetail = myPoiDetail->getValue();
679  tmpSettings.poiName = myPOINamePanel->getSettings();
680  tmpSettings.poiType = myPOITypePanel->getSettings();
681  tmpSettings.poiText = myPOITextPanel->getSettings();
682  tmpSettings.poiSize = myPOISizePanel->getSettings();
683 
685  tmpSettings.polyName = myPolyNamePanel->getSettings();
686  tmpSettings.polyType = myPolyTypePanel->getSettings();
687  tmpSettings.polySize = myPolySizePanel->getSettings();
688 
689  if (mySettings->netedit) {
690  tmpSettings.dataValue = myDataValuePanel->getSettings();
692  tmpSettings.dataValue = myDataValuePanel->getSettings();
693  tmpSettings.tazRelWidthExaggeration = myTazRelationUpscaleDialer->getValue();
694  tmpSettings.edgeRelWidthExaggeration = myEdgeRelationUpscaleDialer->getValue();
696  }
697 
698  tmpSettings.showLane2Lane = (myShowLane2Lane->getCheck() != FALSE);
699  tmpSettings.drawJunctionShape = (myDrawJunctionShape->getCheck() != FALSE);
700  tmpSettings.drawCrossingsAndWalkingareas = (myDrawCrossingsAndWalkingAreas->getCheck() != FALSE);
701  tmpSettings.dither = (myDither->getCheck() != FALSE);
702  tmpSettings.fps = (myFPS->getCheck() != FALSE);
703  tmpSettings.drawBoundaries = (myDrawBoundaries->getCheck() != FALSE);
704  tmpSettings.forceDrawForRectangleSelection = (myForceDrawForRectangleSelection->getCheck() != FALSE);
705  tmpSettings.disableDottedContours = (myDisableDottedContours->getCheck() != FALSE);
707  tmpSettings.showSizeLegend = (myShowSizeLegend->getCheck() != FALSE);
708  tmpSettings.showColorLegend = (myShowColorLegend->getCheck() != FALSE);
709  tmpSettings.showVehicleColorLegend = (myShowVehicleColorLegend->getCheck() != FALSE);
710  tmpSettings.show3DTLSDomes = (myShow3DTLSDomes->getCheck() != FALSE);
711  tmpSettings.show3DTLSLinkMarkers = (myShow3DTLSLinkMarkers->getCheck() != FALSE);
712  tmpSettings.show3DHeadUpDisplay = (myShow3DHeadUpDisplay->getCheck() != FALSE);
713  tmpSettings.generate3DTLSModels = (myGenerate3DTLSModels->getCheck() != FALSE);
714  const unsigned char lightFactor = (unsigned char)myLight3DFactor->getValue();
715  tmpSettings.ambient3DLight.set(lightFactor / 2, lightFactor / 2, lightFactor / 2, 255);
716  tmpSettings.diffuse3DLight.set(lightFactor, lightFactor, lightFactor, 255);
717  tmpSettings.skyColor = MFXUtils::getRGBColor(mySkyColor->getRGBA());
718 
719  // lanes (colors)
720  if (sender == myEdgeRainbowPanel->myColorRainbow) {
721  myParent->buildColorRainbow(tmpSettings, tmpSettings.getLaneEdgeScheme(), tmpSettings.getLaneEdgeMode(), GLO_LANE, myEdgeRainbowPanel->getSettings());
722  doRebuildColorMatrices = true;
723  } else if (sender == myJunctionRainbowPanel->myColorRainbow) {
725  doRebuildColorMatrices = true;
726  } else if (myDataRainbowPanel && sender == myDataRainbowPanel->myColorRainbow) {
728  doRebuildColorMatrices = true;
729  }
730  if (tmpSettings.getLaneEdgeMode() == prevLaneMode) {
731  if (updateColorRanges(sender, myLaneColors.begin(), myLaneColors.end(),
732  myLaneThresholds.begin(), myLaneThresholds.end(), myLaneButtons.begin(),
733  tmpSettings.getLaneEdgeScheme())) {
734  doRebuildColorMatrices = true;
735  }
736  if (sender == myLaneColorInterpolation) {
737  tmpSettings.getLaneEdgeScheme().setInterpolated(myLaneColorInterpolation->getCheck() != FALSE);
738  doRebuildColorMatrices = true;
739  }
740  } else {
741  doRebuildColorMatrices = true;
742  }
743  // lanes (scaling)
744  if (tmpSettings.getLaneEdgeScaleMode() == prevLaneScaleMode) {
745  if (updateScaleRanges(sender, myLaneScales.begin(), myLaneScales.end(),
747  tmpSettings.getLaneEdgeScaleScheme())) {
748  doRebuildColorMatrices = true;
749  }
750  if (sender == myLaneScaleInterpolation) {
751  tmpSettings.getLaneEdgeScaleScheme().setInterpolated(myLaneScaleInterpolation->getCheck() != FALSE);
752  doRebuildColorMatrices = true;
753  }
754  } else {
755  doRebuildColorMatrices = true;
756  }
757  // vehicles
758  if (tmpSettings.vehicleColorer.getActive() == prevVehicleMode) {
759  if (updateColorRanges(sender, myVehicleColors.begin(), myVehicleColors.end(),
761  tmpSettings.vehicleColorer.getScheme())) {
762  doRebuildColorMatrices = true;
763  }
764  if (sender == myVehicleColorInterpolation) {
765  tmpSettings.vehicleColorer.getScheme().setInterpolated(myVehicleColorInterpolation->getCheck() != FALSE);
766  doRebuildColorMatrices = true;
767  }
768  } else {
769  doRebuildColorMatrices = true;
770  }
771  // vehicles (scaling)
772  if (tmpSettings.vehicleScaler.getActive() == prevVehicleScaleMode) {
773  if (updateScaleRanges(sender, myVehicleScales.begin(), myVehicleScales.end(),
775  tmpSettings.vehicleScaler.getScheme())) {
776  doRebuildColorMatrices = true;
777  }
778  if (sender == myVehicleScaleInterpolation) {
779  tmpSettings.vehicleScaler.getScheme().setInterpolated(myVehicleScaleInterpolation->getCheck() != FALSE);
780  doRebuildColorMatrices = true;
781  }
782  } else {
783  doRebuildColorMatrices = true;
784  }
785  // persons
786  if (tmpSettings.personColorer.getActive() == prevPersonMode) {
787  if (updateColorRanges(sender, myPersonColors.begin(), myPersonColors.end(),
788  myPersonThresholds.begin(), myPersonThresholds.end(), myPersonButtons.begin(),
789  tmpSettings.personColorer.getScheme())) {
790  doRebuildColorMatrices = true;
791  }
792  if (sender == myPersonColorInterpolation) {
793  tmpSettings.personColorer.getScheme().setInterpolated(myPersonColorInterpolation->getCheck() != FALSE);
794  doRebuildColorMatrices = true;
795  }
796  } else {
797  doRebuildColorMatrices = true;
798  }
799  // containers
800  if (tmpSettings.containerColorer.getActive() == prevContainerMode) {
801  if (updateColorRanges(sender, myContainerColors.begin(), myContainerColors.end(),
803  tmpSettings.containerColorer.getScheme())) {
804  doRebuildColorMatrices = true;
805  }
806  if (sender == myContainerColorInterpolation) {
807  tmpSettings.containerColorer.getScheme().setInterpolated(myContainerColorInterpolation->getCheck() != FALSE);
808  doRebuildColorMatrices = true;
809  }
810  } else {
811  doRebuildColorMatrices = true;
812  }
813  // junctions
814  if (tmpSettings.junctionColorer.getActive() == prevJunctionMode) {
815  if (updateColorRanges(sender, myJunctionColors.begin(), myJunctionColors.end(),
817  tmpSettings.junctionColorer.getScheme())) {
818  doRebuildColorMatrices = true;
819  }
820  if (sender == myJunctionColorInterpolation) {
821  tmpSettings.junctionColorer.getScheme().setInterpolated(myJunctionColorInterpolation->getCheck() != FALSE);
822  doRebuildColorMatrices = true;
823  }
824  } else {
825  doRebuildColorMatrices = true;
826  }
827  // POIs
828  if (tmpSettings.poiColorer.getActive() == prevPOIMode) {
829  if (updateColorRanges(sender, myPOIColors.begin(), myPOIColors.end(),
830  myPOIThresholds.begin(), myPOIThresholds.end(), myPOIButtons.begin(),
831  tmpSettings.poiColorer.getScheme())) {
832  doRebuildColorMatrices = true;
833  }
834  if (sender == myPOIColorInterpolation) {
835  tmpSettings.poiColorer.getScheme().setInterpolated(myPOIColorInterpolation->getCheck() != FALSE);
836  doRebuildColorMatrices = true;
837  }
838  } else {
839  doRebuildColorMatrices = true;
840  }
841  // polygons
842  if (tmpSettings.polyColorer.getActive() == prevPolyMode) {
843  if (updateColorRanges(sender, myPolyColors.begin(), myPolyColors.end(),
844  myPolyThresholds.begin(), myPolyThresholds.end(), myPolyButtons.begin(),
845  tmpSettings.polyColorer.getScheme())) {
846  doRebuildColorMatrices = true;
847  }
848  if (sender == myPolyColorInterpolation) {
849  tmpSettings.polyColorer.getScheme().setInterpolated(myPolyColorInterpolation->getCheck() != FALSE);
850  doRebuildColorMatrices = true;
851  }
852  } else {
853  doRebuildColorMatrices = true;
854  }
855  // data
856  if (tmpSettings.netedit) {
857  if (tmpSettings.dataColorer.getActive() == prevDataMode) {
858  if (updateColorRanges(sender, myDataColors.begin(), myDataColors.end(),
859  myDataThresholds.begin(), myDataThresholds.end(), myDataButtons.begin(),
860  tmpSettings.dataColorer.getScheme())) {
861  doRebuildColorMatrices = true;
862  }
863  if (sender == myDataColorInterpolation) {
864  tmpSettings.dataColorer.getScheme().setInterpolated(myDataColorInterpolation->getCheck() != FALSE);
865  doRebuildColorMatrices = true;
866  }
867  } else {
868  doRebuildColorMatrices = true;
869  }
870  }
871  // openGL
872  if (sender == myRecalculateBoundaries) {
874  }
875 
876  if (sender == myShowPedestrianNetwork) {
877  tmpSettings.showPedestrianNetwork = (myShowPedestrianNetwork->getCheck() != FALSE);
878  myParent->drawPedestrianNetwork(tmpSettings);
879  }
880 
881  if (sender == myPedestrianNetworkColor) {
884  }
885 
886  if (tmpSettings == *mySettings) {
887  return 1;
888  }
889 
890  int index = mySchemeName->getCurrentItem();
891  if (index < (int) gSchemeStorage.getNumInitialSettings()) {
892  // one of the initial settings is modified
893  // every time this happens we create a new scheme
894  int suffix = 1;
895  while (gSchemeStorage.contains("custom_" + toString(suffix))) {
896  suffix++;
897  }
898  tmpSettings.name = "custom_" + toString(suffix);
899  // the newly created settings must be entered in several places:
900  // - the comboBox mySchemeName of this dialog
901  // - the comboBox of the parent view (set as active)
902  // - the comboBox of all other views (only append) XXX @todo
903  index = mySchemeName->appendIconItem(tmpSettings.name.c_str());
905  myParent->getColoringSchemesCombo()->appendIconItem(tmpSettings.name.c_str());
906  }
908  myParent->getColoringSchemesCombo()->findItem(tmpSettings.name.c_str()));
909  gSchemeStorage.add(tmpSettings); // overwrites existing
910  mySettings = &gSchemeStorage.get(tmpSettings.name);
911  myParent->setColorScheme(tmpSettings.name);
912 
913  if (doRebuildColorMatrices) {
914  rebuildColorMatrices(true);
915  }
916  myParent->handle(this, FXSEL(SEL_CHANGED, MID_SIMPLE_VIEW_COLORCHANGE), nullptr);
917  myParent->forceRefresh();
918  getApp()->forceRefresh();
919  return 1;
920 }
921 
922 
923 void
924 GUIDialog_ViewSettings::loadSettings(const std::string& file) {
925  GUISettingsHandler handler(file, true, mySettings->netedit);
926  for (std::string settingsName : handler.addSettings(myParent)) {
927  FXint index = mySchemeName->appendIconItem(settingsName.c_str());
929  mySettings = &gSchemeStorage.get(settingsName);
930  }
931  if (handler.hasDecals()) {
932  myParent->getDecalsLockMutex().lock();
933  myParent->getDecals() = handler.getDecals();
935  myParent->update();
936  myParent->getDecalsLockMutex().unlock();
937  }
938  if (handler.getDelay() >= 0) {
939  myParent->setDelay(handler.getDelay());
940  }
941  if (handler.getBreakpoints().size() > 0) {
943  }
944  handler.applyViewport(myParent);
945  rebuildColorMatrices(true);
946 }
947 
948 
949 void
951  for (const auto& decal : myParent->getDecals()) {
952  // only save decals with non empty filename
953  if (decal.filename.size() > 0) {
954  // check if decal is a light
955  const bool isLight = (decal.filename.substr(0, 5) == "light") && (decal.filename.length() == 6) && isdigit(decal.filename[5]);
956  if (isLight) {
958  dev.writeAttr(SUMO_ATTR_INDEX, decal.filename.substr(5, 1));
959  } else {
961  dev.writeAttr("file", decal.filename);
962  dev.writeAttr("screenRelative", decal.screenRelative);
963  }
964  dev.writeAttr(SUMO_ATTR_CENTER_X, decal.centerX);
965  dev.writeAttr(SUMO_ATTR_CENTER_Y, decal.centerY);
966  dev.writeAttr(SUMO_ATTR_CENTER_Z, decal.centerZ);
967  dev.writeAttr(SUMO_ATTR_WIDTH, decal.width);
968  dev.writeAttr(SUMO_ATTR_HEIGHT, decal.height);
969  dev.writeAttr("altitude", decal.altitude);
970  dev.writeAttr("rotation", decal.rot);
971  dev.writeAttr("tilt", decal.tilt);
972  dev.writeAttr("roll", decal.roll);
973  dev.writeAttr(SUMO_ATTR_LAYER, decal.layer);
974  dev.closeTag();
975  }
976  }
977 }
978 
979 
980 void
981 GUIDialog_ViewSettings::loadDecals(const std::string& file) {
982  myParent->getDecalsLockMutex().lock();
983  GUISettingsHandler handler(file);
984  if (handler.hasDecals()) {
985  myParent->getDecals() = handler.getDecals();
986  }
988  myParent->update();
989  myParent->getDecalsLockMutex().unlock();
990 }
991 
992 
993 long
994 GUIDialog_ViewSettings::onCmdSaveSetting(FXObject*, FXSelector, void* /*data*/) {
995  int index = mySchemeName->getCurrentItem();
996  if (index < (int) gSchemeStorage.getNumInitialSettings()) {
997  return 1;
998  }
999  // get the name
1000  std::string name = "";
1001  while (name.length() == 0) {
1002  FXDialogBox dialog(this, TL("Enter a name"), GUIDesignViewSettingsDialog);
1003  FXVerticalFrame* content = new FXVerticalFrame(&dialog, GUIDesignViewSettingsVerticalFrame5);
1004  new FXLabel(content, TL("Please enter an alphanumeric name: "), nullptr, GUIDesignViewSettingsLabel2);
1005  FXTextField* text = new FXTextField(content, 40, &dialog, FXDialogBox::ID_ACCEPT, GUIDesignViewSettingsTextField1);
1006  new FXHorizontalSeparator(content, GUIDesignHorizontalSeparator);
1007  FXHorizontalFrame* buttons = new FXHorizontalFrame(content, GUIDesignViewSettingsHorizontalFrame3);
1008  GUIDesigns::buildFXButton(buttons, TL("&OK"), "", "", nullptr, &dialog, FXDialogBox::ID_ACCEPT, GUIDesignViewSettingsButton4);
1009  GUIDesigns::buildFXButton(buttons, TL("&Cancel"), "", "", nullptr, &dialog, FXDialogBox::ID_CANCEL, GUIDesignViewSettingsButton5);
1010  dialog.create();
1011  text->setFocus();
1012  if (!dialog.execute()) {
1013  return 1;
1014  }
1015  name = text->getText().text();
1016  for (int i = 0; i < (int)name.length(); ++i) {
1017  if (name[i] != '_' && (name[i] < 'a' || name[i] > 'z') && (name[i] < 'A' || name[i] > 'Z') && (name[i] < '0' || name[i] > '9')) {
1018  name = "";
1019  break;
1020  }
1021  }
1022  }
1024  tmpSettings.copy(*mySettings);
1025  tmpSettings.name = name;
1026  if (name == mySettings->name || StringUtils::startsWith(mySettings->name, "custom_")) {
1028  myParent->getColoringSchemesCombo()->insertIconItem(index, name.c_str());
1029  } else {
1031  index = mySchemeName->appendIconItem(name.c_str());
1034  myParent->getColoringSchemesCombo()->findItem(name.c_str()));
1035  }
1036  gSchemeStorage.add(tmpSettings);
1037  mySchemeName->insertIconItem(index, name.c_str());
1038  myParent->setColorScheme(name);
1039  mySettings = &gSchemeStorage.get(name);
1041  gSchemeStorage.writeSettings(getApp());
1042  return 1;
1043 }
1044 
1045 
1046 long
1047 GUIDialog_ViewSettings::onUpdSaveSetting(FXObject* sender, FXSelector, void* ptr) {
1048  sender->handle(this,
1050  ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
1051  ptr);
1052  return 1;
1053 }
1054 
1055 
1056 long
1057 GUIDialog_ViewSettings::onCmdDeleteSetting(FXObject*, FXSelector, void* /*data*/) {
1058  int index = mySchemeName->getCurrentItem();
1059  if (index < (int) gSchemeStorage.getNumInitialSettings()) {
1060  return 1;
1061  }
1062  std::string name = mySchemeName->getItemText(index);
1063  gSchemeStorage.remove(name);
1064  mySchemeName->removeItem(index);
1065  onCmdNameChange(nullptr, 0, (void*) mySchemeName->getItemText(0).c_str());
1066  gSchemeStorage.writeSettings(getApp());
1067  return 1;
1068 }
1069 
1070 
1071 long
1072 GUIDialog_ViewSettings::onUpdDeleteSetting(FXObject* sender, FXSelector, void* ptr) {
1073  sender->handle(this,
1075  ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
1076  ptr);
1077  return 1;
1078 }
1079 
1080 
1081 long
1082 GUIDialog_ViewSettings::onCmdExportSetting(FXObject*, FXSelector, void* /*data*/) {
1083  FXString file = MFXUtils::getFilename2Write(this, TL("Export view settings"), ".xml", GUIIconSubSys::getIcon(GUIIcon::SAVE), gCurrentFolder);
1084  if (file == "") {
1085  return 1;
1086  }
1087  try {
1088  OutputDevice& dev = OutputDevice::getDevice(file.text(), false);
1090  if (myParent->is3DView()) {
1091  dev.writeAttr(SUMO_ATTR_TYPE, "osg");
1092  }
1093  mySettings->save(dev);
1094  if (mySaveViewPort->getCheck()) {
1096  }
1097  if (mySaveDelay->getCheck()) {
1098  dev.openTag(SUMO_TAG_DELAY);
1100  dev.closeTag();
1101  }
1102  if (mySaveDecals->getCheck()) {
1103  saveDecals(dev);
1104  }
1105  if (!mySettings->netedit && mySaveBreakpoints->getCheck()) {
1106  for (SUMOTime t : myParent->retrieveBreakpoints()) {
1109  dev.closeTag();
1110  }
1111  }
1112  dev.closeTag();
1113  dev.close();
1114  } catch (IOError& e) {
1115  FXMessageBox::error(this, MBOX_OK, TL("Storing failed!"), "%s", e.what());
1116  }
1117  return 1;
1118 }
1119 
1120 
1121 long
1122 GUIDialog_ViewSettings::onUpdExportSetting(FXObject* sender, FXSelector, void* ptr) {
1123  sender->handle(this,
1125  && !mySaveViewPort->getCheck() && !mySaveDelay->getCheck() && !mySaveDecals->getCheck() && !mySaveBreakpoints->getCheck()) ?
1126  FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
1127  ptr);
1128  return 1;
1129 }
1130 
1131 
1132 long
1133 GUIDialog_ViewSettings::onCmdImportSetting(FXObject*, FXSelector, void* /*data*/) {
1134  FXFileDialog opendialog(this, TL("Import view settings"));
1135  opendialog.setIcon(GUIIconSubSys::getIcon(GUIIcon::OPEN));
1136  opendialog.setSelectMode(SELECTFILE_ANY);
1137  opendialog.setPatternList("*.xml,*.xml.gz");
1138  if (gCurrentFolder.length() != 0) {
1139  opendialog.setDirectory(gCurrentFolder);
1140  }
1141  if (opendialog.execute()) {
1142  gCurrentFolder = opendialog.getDirectory();
1143  loadSettings(opendialog.getFilename().text());
1144  }
1145  return 1;
1146 }
1147 
1148 
1149 long
1150 GUIDialog_ViewSettings::onCmdLoadDecal(FXObject*, FXSelector, void* /*data*/) {
1151  FXFileDialog opendialog(this, TL("Load Decals"));
1152  opendialog.setIcon(GUIIconSubSys::getIcon(GUIIcon::EMPTY));
1153  opendialog.setSelectMode(SELECTFILE_ANY);
1154  opendialog.setPatternList("*.xml,*.xml.gz");
1155  if (gCurrentFolder.length() != 0) {
1156  opendialog.setDirectory(gCurrentFolder);
1157  }
1158  if (opendialog.execute()) {
1159  gCurrentFolder = opendialog.getDirectory();
1160  loadDecals(opendialog.getFilename().text());
1161  }
1162  return 1;
1163 }
1164 
1165 
1166 long
1167 GUIDialog_ViewSettings::onCmdLoadXMLDecals(FXObject*, FXSelector, void* /*data*/) {
1168  FXFileDialog opendialog(this, TL("Load Decals"));
1169  opendialog.setIcon(GUIIconSubSys::getIcon(GUIIcon::EMPTY));
1170  opendialog.setSelectMode(SELECTFILE_ANY);
1171  opendialog.setPatternList("*.xml,*.xml.gz");
1172  if (gCurrentFolder.length() != 0) {
1173  opendialog.setDirectory(gCurrentFolder);
1174  }
1175  if (opendialog.execute()) {
1176  gCurrentFolder = opendialog.getDirectory();
1177  loadDecals(opendialog.getFilename().text());
1178  }
1179  return 1;
1180 }
1181 
1182 
1183 long
1184 GUIDialog_ViewSettings::onCmdSaveXMLDecals(FXObject*, FXSelector, void* /*data*/) {
1185  FXString file = MFXUtils::getFilename2Write(this, TL("Save Decals"), ".xml", GUIIconSubSys::getIcon(GUIIcon::EMPTY), gCurrentFolder);
1186  if (file == "") {
1187  return 1;
1188  }
1189  try {
1190  OutputDevice& dev = OutputDevice::getDevice(file.text());
1191  dev.openTag("decals");
1192  saveDecals(dev);
1193  dev.closeTag();
1194  dev.close();
1195  } catch (IOError& e) {
1196  FXMessageBox::error(myParent, MBOX_OK, TL("Storing failed!"), "%s", e.what());
1197  }
1198  return 1;
1199 }
1200 
1201 
1202 long
1203 GUIDialog_ViewSettings::onCmdClearDecals(FXObject*, FXSelector, void* /*data*/) {
1204  // lock decals mutex
1205  myParent->getDecalsLockMutex().lock();
1206  // clear decals
1207  myParent->getDecals().clear();
1208  // update view
1209  myParent->update();
1210  // fill table again
1212  // unlock decals mutex
1213  myParent->getDecalsLockMutex().unlock();
1214  return 1;
1215 }
1216 
1217 
1218 long
1219 GUIDialog_ViewSettings::onUpdImportSetting(FXObject* sender, FXSelector, void* ptr) {
1220  sender->handle(this, FXSEL(SEL_COMMAND, ID_ENABLE), ptr);
1221  return 1;
1222 }
1223 
1224 
1225 FXMatrix*
1227  std::vector<FXColorWell*>& colors,
1228  std::vector<FXRealSpinner*>& thresholds,
1229  std::vector<FXButton*>& buttons,
1230  FXCheckButton* interpolation,
1231  GUIColorScheme& scheme) {
1232  MFXUtils::deleteChildren(frame);
1233  FXMatrix* m = new FXMatrix(frame, 4, GUIDesignViewSettingsMatrix4);
1234  colors.clear();
1235  thresholds.clear();
1236  buttons.clear();
1237  const bool fixed = scheme.isFixed();
1238  std::vector<RGBColor>::const_iterator colIt = scheme.getColors().begin();
1239  std::vector<double>::const_iterator threshIt = scheme.getThresholds().begin();
1240  std::vector<std::string>::const_iterator nameIt = scheme.getNames().begin();
1241  while (colIt != scheme.getColors().end()) {
1242  colors.push_back(new FXColorWell(m, MFXUtils::getFXColor(*colIt), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsColorWell1));
1243  if (fixed) {
1244  new FXLabel(m, nameIt->c_str());
1245  new FXLabel(m, "");
1246  new FXLabel(m, "");
1247  } else {
1248  const int dialerOptions = scheme.allowsNegativeValues() ? SPIN_NOMIN : 0;
1249  FXRealSpinner* threshDialer = new FXRealSpinner(m, 10, this, MID_SIMPLE_VIEW_COLORCHANGE, FRAME_THICK | FRAME_SUNKEN | LAYOUT_TOP | LAYOUT_CENTER_Y | SPIN_NOMAX | dialerOptions);
1250  threshDialer->setValue(*threshIt);
1251  thresholds.push_back(threshDialer);
1252  if (*threshIt == GUIVisualizationSettings::MISSING_DATA) {
1253  threshDialer->disable();
1254  threshDialer->hide();
1255  buttons.push_back(GUIDesigns::buildFXButton(m, "", "", "", nullptr, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsButton1));
1256  buttons.back()->hide();
1257  buttons.push_back(GUIDesigns::buildFXButton(m, TL("No Data"), "", "", nullptr, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsButton1));
1258  buttons.back()->disable();
1259  } else {
1260  buttons.push_back(GUIDesigns::buildFXButton(m, TL("Add"), "", "", nullptr, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsButton1));
1261  buttons.push_back(GUIDesigns::buildFXButton(m, TL("Remove"), "", "", nullptr, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsButton1));
1262  }
1263  }
1264  colIt++;
1265  threshIt++;
1266  nameIt++;
1267  }
1268  interpolation->setCheck(scheme.isInterpolated());
1269  if (fixed) {
1270  interpolation->disable();
1271  } else {
1272  if (colors.size() > 1) {
1273  interpolation->enable();
1274  if (interpolation->getCheck() != FALSE) {
1275  thresholds.front()->enable();
1276  } else {
1277  thresholds.front()->disable();
1278  }
1279  } else {
1280  interpolation->disable();
1281  thresholds.front()->disable();
1282  }
1283  }
1284  return m;
1285 }
1286 
1287 
1288 FXMatrix*
1290  std::vector<FXRealSpinner*>& scales,
1291  std::vector<FXRealSpinner*>& thresholds,
1292  std::vector<FXButton*>& buttons,
1293  FXCheckButton* interpolation,
1294  GUIScaleScheme& scheme) {
1295  MFXUtils::deleteChildren(frame);
1296  FXMatrix* m = new FXMatrix(frame, 4, GUIDesignViewSettingsMatrix4);
1297  scales.clear();
1298  thresholds.clear();
1299  buttons.clear();
1300  const bool fixed = scheme.isFixed();
1301  std::vector<double>::const_iterator scaleIt = scheme.getColors().begin();
1302  std::vector<double>::const_iterator threshIt = scheme.getThresholds().begin();
1303  std::vector<std::string>::const_iterator nameIt = scheme.getNames().begin();
1304  while (scaleIt != scheme.getColors().end()) {
1305  FXRealSpinner* scaleDialer = new FXRealSpinner(m, 10, this, MID_SIMPLE_VIEW_COLORCHANGE, FRAME_THICK | FRAME_SUNKEN | LAYOUT_TOP | LAYOUT_CENTER_Y | SPIN_NOMAX);
1306  scaleDialer->setValue(*scaleIt);
1307  scales.push_back(scaleDialer);
1308  if (fixed) {
1309  new FXLabel(m, nameIt->c_str());
1310  new FXLabel(m, "");
1311  new FXLabel(m, "");
1312  } else {
1313  const int dialerOptions = scheme.allowsNegativeValues() ? SPIN_NOMIN : 0;
1314  FXRealSpinner* threshDialer = new FXRealSpinner(m, 10, this, MID_SIMPLE_VIEW_COLORCHANGE, FRAME_THICK | FRAME_SUNKEN | LAYOUT_TOP | LAYOUT_CENTER_Y | SPIN_NOMAX | dialerOptions);
1315  threshDialer->setValue(*threshIt);
1316  thresholds.push_back(threshDialer);
1317  if (*threshIt == GUIVisualizationSettings::MISSING_DATA) {
1318  threshDialer->disable();
1319  threshDialer->hide();
1320  buttons.push_back(GUIDesigns::buildFXButton(m, "", "", "", nullptr, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsButton1));
1321  buttons.back()->hide();
1322  buttons.push_back(GUIDesigns::buildFXButton(m, TL("No Data"), "", "", nullptr, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsButton1));
1323  buttons.back()->disable();
1324  } else {
1325  buttons.push_back(GUIDesigns::buildFXButton(m, TL("Add"), "", "", nullptr, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsButton1));
1326  buttons.push_back(GUIDesigns::buildFXButton(m, TL("Remove"), "", "", nullptr, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsButton1));
1327  }
1328  }
1329  scaleIt++;
1330  threshIt++;
1331  nameIt++;
1332  }
1333  interpolation->setCheck(scheme.isInterpolated());
1334  if (fixed) {
1335  interpolation->disable();
1336  } else {
1337  if (scales.size() > 1) {
1338  interpolation->enable();
1339  if (interpolation->getCheck() != FALSE) {
1340  thresholds.front()->enable();
1341  } else {
1342  thresholds.front()->disable();
1343  }
1344  } else {
1345  interpolation->disable();
1346  thresholds.front()->disable();
1347  }
1348  }
1349  return m;
1350 }
1351 
1352 
1353 void
1356  if (doCreate) {
1357  m->create();
1358  }
1360  myEdgeRainbowPanel->myColorRainbow->disable();
1361  } else {
1363  }
1366  } else {
1368  }
1369  std::string activeSchemeName = myLaneEdgeColorMode->getText().text();
1370  std::string activeScaleSchemeName = myLaneEdgeScaleMode->getText().text();
1371  myParamKey->clearItems();
1372  myScalingParamKey->clearItems();
1374  myMeanDataID->hide();
1376  myParamKey->appendItem(mySettings->edgeParam.c_str());
1377  for (const std::string& attr : myParent->getEdgeLaneParamKeys(true)) {
1378  if (attr != mySettings->edgeParam) {
1379  myParamKey->appendItem(attr.c_str());
1380  }
1381  }
1382  myParamKey->enable();
1383  } else if (activeSchemeName == GUIVisualizationSettings::SCHEME_NAME_LANE_PARAM_NUMERICAL) {
1384  myParamKey->appendItem(mySettings->laneParam.c_str());
1385  for (const std::string& attr : myParent->getEdgeLaneParamKeys(false)) {
1386  if (attr != mySettings->laneParam) {
1387  myParamKey->appendItem(attr.c_str());
1388  }
1389  }
1390  myParamKey->enable();
1391  } else if (activeSchemeName == GUIVisualizationSettings::SCHEME_NAME_EDGEDATA_NUMERICAL) {
1392  myParamKey->appendItem(mySettings->edgeData.c_str());
1393  for (const std::string& attr : myParent->getEdgeDataAttrs()) {
1394  if (attr != mySettings->edgeData) {
1395  myParamKey->appendItem(attr.c_str());
1396  }
1397  }
1398  myParamKey->enable();
1399  } else if (activeSchemeName == GUIVisualizationSettings::SCHEME_NAME_EDGEDATA_LIVE) {
1400  if (mySettings->edgeDataID != "") {
1402  }
1403  for (const std::string& attr : myParent->getMeanDataIDs()) {
1404  if (attr != mySettings->edgeDataID) {
1405  myMeanDataID->appendIconItem(attr.c_str());
1406  }
1407  }
1408  if (myMeanDataID->getNumItems() > 0) {
1409  if (mySettings->edgeDataID == "") {
1411  }
1412  myMeanDataID->enable();
1413  myMeanDataID->show();
1414  myParamKey->appendItem(mySettings->edgeData.c_str());
1415  for (const std::string& attr : myParent->getMeanDataAttrs(mySettings->edgeDataID)) {
1416  if (attr != mySettings->edgeData) {
1417  myParamKey->appendItem(attr.c_str());
1418  }
1419  }
1420  myParamKey->enable();
1421  }
1422  } else {
1423  myParamKey->disable();
1424  }
1425 
1426  if (activeScaleSchemeName == GUIVisualizationSettings::SCHEME_NAME_EDGEDATA_NUMERICAL) {
1427  myScalingParamKey->appendItem(mySettings->edgeDataScaling.c_str());
1428  for (const std::string& attr : myParent->getEdgeDataAttrs()) {
1429  if (attr != mySettings->edgeDataScaling) {
1430  myScalingParamKey->appendItem(attr.c_str());
1431  }
1432  }
1433  myScalingParamKey->enable();
1434  } else {
1435  myScalingParamKey->disable();
1436  }
1437 
1438  myParamKey->setNumVisible(myParamKey->getNumItems());
1439  myScalingParamKey->setNumVisible(myScalingParamKey->getNumItems());
1440  myLaneColorSettingFrame->getParent()->recalc();
1441 
1443  if (doCreate) {
1444  m->create();
1445  }
1446  myLaneScaleSettingFrame->getParent()->recalc();
1447 
1449  if (doCreate) {
1450  m->create();
1451  }
1452  activeSchemeName = myVehicleColorMode->getText().text();
1455  myVehicleParamKey->enable();
1456  } else {
1457  myVehicleParamKey->disable();
1458  }
1459  myVehicleColorSettingFrame->getParent()->recalc();
1460 
1462  if (doCreate) {
1463  m->create();
1464  }
1465  myVehicleScaleSettingFrame->getParent()->recalc();
1466  activeScaleSchemeName = myVehicleScaleMode->getText().text();
1467  if (activeScaleSchemeName == GUIVisualizationSettings::SCHEME_NAME_PARAM_NUMERICAL) {
1468  myVehicleScalingParamKey->enable();
1469  } else {
1470  myVehicleScalingParamKey->disable();
1471  }
1472 
1473 
1475  if (doCreate) {
1476  m->create();
1477  }
1478  myPersonColorSettingFrame->getParent()->recalc();
1480  if (doCreate) {
1481  m->create();
1482  }
1483  myContainerColorSettingFrame->getParent()->recalc();
1485  if (doCreate) {
1486  m->create();
1487  }
1488  myJunctionColorSettingFrame->getParent()->recalc();
1489  // POIs
1491  if (doCreate) {
1492  m->create();
1493  }
1494  myPOIColorSettingFrame->getParent()->recalc();
1495  // polygons
1497  if (doCreate) {
1498  m->create();
1499  }
1500  myPolyColorSettingFrame->getParent()->recalc();
1501 
1502  // data
1503  if (mySettings->netedit) {
1505  if (doCreate) {
1506  m->create();
1507  }
1508  activeSchemeName = myDataColorMode->getText().text();
1510  myDataParamKey->clearItems();
1511  myDataParamKey->appendItem(mySettings->relDataAttr.c_str());
1512  for (const std::string& attr : myParent->getRelDataAttrs()) {
1513  if (attr != mySettings->relDataAttr) {
1514  myDataParamKey->appendItem(attr.c_str());
1515  }
1516  }
1517  myDataParamKey->enable();
1518  } else {
1519  myDataParamKey->disable();
1520  }
1521  myDataColorSettingFrame->getParent()->recalc();
1522  }
1523 
1524  layout();
1525  update();
1526 }
1527 
1528 
1529 void
1531  myVehicleParamKey->clearItems();
1532  myVehicleTextParamKey->clearItems();
1533  myVehicleScalingParamKey->clearItems();
1534  myVehicleParamKey->appendItem(mySettings->vehicleParam.c_str());
1535  myVehicleTextParamKey->appendItem(mySettings->vehicleTextParam.c_str());
1537  for (const std::string& attr : myParent->getVehicleParamKeys(false)) {
1538  myVehicleParamKey->appendItem(attr.c_str());
1539  myVehicleTextParamKey->appendItem(attr.c_str());
1540  myVehicleScalingParamKey->appendItem(attr.c_str());
1541  }
1542  myVehicleParamKey->setNumVisible(myVehicleParamKey->getNumItems());
1543  myVehicleTextParamKey->setNumVisible(myVehicleTextParamKey->getNumItems());
1544  myVehicleScalingParamKey->setNumVisible(myVehicleScalingParamKey->getNumItems());
1545 }
1546 
1547 
1548 void
1550  myPOITextParamKey->clearItems();
1551  myPOITextParamKey->appendItem(mySettings->poiTextParam.c_str());
1552  for (const std::string& attr : myParent->getPOIParamKeys()) {
1553  myPOITextParamKey->appendItem(attr.c_str());
1554  }
1555  myPOITextParamKey->setNumVisible(myPOITextParamKey->getNumItems());
1556 }
1557 
1558 
1559 std::string
1562 }
1563 
1564 
1565 void
1567  if (name.c_str() == mySchemeName->getItemText(mySchemeName->getCurrentItem())) {
1568  return;
1569  }
1570  for (int i = 0; i < mySchemeName->getNumItems(); ++i) {
1571  if (name.c_str() == mySchemeName->getItemText(i)) {
1573  onCmdNameChange(nullptr, 0, (void*)name.c_str());
1574  return;
1575  }
1576  }
1577 }
1578 
1579 
1581  FXMatrix* parent,
1582  GUIDialog_ViewSettings* target,
1583  const std::string& title,
1584  const GUIVisualizationTextSettings& settings) {
1585  myCheck = new FXCheckButton(parent, title.c_str(), target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1586  myCheck->setCheck(settings.showText);
1587  myMatrix0 = new FXMatrix(parent, 2, GUIDesignViewSettingsMatrix5);
1588  mySelectedCheck = new FXCheckButton(myMatrix0, TL("Only for selected"), target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1589  mySelectedCheck->setCheck(settings.onlySelected);
1590  myConstSizeCheck = new FXCheckButton(myMatrix0, TL("constant text size"), target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1591  myConstSizeCheck->setCheck(settings.constSize);
1592  FXMatrix* m1 = new FXMatrix(parent, 2, GUIDesignViewSettingsMatrix5);
1593  new FXLabel(m1, TL("Size"), nullptr, GUIDesignViewSettingsLabel1);
1594  mySizeDial = new FXRealSpinner(m1, 10, target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
1595  mySizeDial->setRange(5, 1000);
1596  mySizeDial->setValue(settings.size);
1597  FXMatrix* m2 = new FXMatrix(parent, 4, GUIDesignViewSettingsMatrix5);
1598  new FXLabel(m2, TL("Color"), nullptr, GUIDesignViewSettingsLabel1);
1600  new FXLabel(m2, TL("Background"), nullptr, GUIDesignViewSettingsLabel1);
1602 }
1603 
1604 
1607  return GUIVisualizationTextSettings(myCheck->getCheck() != FALSE,
1608  mySizeDial->getValue(),
1609  MFXUtils::getRGBColor(myColorWell->getRGBA()),
1610  MFXUtils::getRGBColor(myBGColorWell->getRGBA()),
1611  myConstSizeCheck->getCheck() != FALSE,
1612  mySelectedCheck->getCheck() != FALSE);
1613 }
1614 
1615 
1616 void
1618  myCheck->setCheck(settings.showText);
1619  mySizeDial->setValue(settings.size);
1620  myColorWell->setRGBA(MFXUtils::getFXColor(settings.color));
1621  myBGColorWell->setRGBA(MFXUtils::getFXColor(settings.bgColor));
1622  myConstSizeCheck->setCheck(settings.constSize);
1623  mySelectedCheck->setCheck(settings.onlySelected);
1624 }
1625 
1626 
1628  const GUIVisualizationSizeSettings& settings, GUIGlObjectType type):
1629  myDialogViewSettings(target),
1630  myType(type) {
1631  myCheck = new FXCheckButton(parent, TL("Draw with constant size when zoomed out"), this, MID_SIMPLE_VIEW_SIZECHANGE, GUIDesignCheckButtonViewSettings);
1632  myCheck->setCheck(settings.constantSize);
1633  myCheckSelected = new FXCheckButton(parent, TL("Only for selected"), this, MID_SIMPLE_VIEW_SIZECHANGE, GUIDesignCheckButtonViewSettings);
1634  myCheckSelected->setCheck(settings.constantSizeSelected);
1635  FXMatrix* m1 = new FXMatrix(parent, 2, GUIDesignViewSettingsMatrix5);
1636  new FXLabel(m1, TL("Minimum Size"), nullptr, GUIDesignViewSettingsLabel1);
1637  myMinSizeDial = new FXRealSpinner(m1, 10, this, MID_SIMPLE_VIEW_SIZECHANGE, GUIDesignViewSettingsSpinDial1);
1638  myMinSizeDial->setValue(settings.minSize);
1639  FXMatrix* m2 = new FXMatrix(parent, 2, GUIDesignViewSettingsMatrix5);
1640  new FXLabel(m2, TL("Exaggerate by"), nullptr, GUIDesignViewSettingsLabel1);
1642  myExaggerateDial->setRange(0, 10000);
1643  myExaggerateDial->setValue(settings.exaggeration);
1644 }
1645 
1646 
1650  myMinSizeDial->getValue(), myExaggerateDial->getValue(),
1651  myCheck->getCheck() != FALSE,
1652  myCheckSelected->getCheck() != FALSE);
1653 }
1654 
1655 
1656 void
1658  myCheck->setCheck(settings.constantSize);
1659  myCheckSelected->setCheck(settings.constantSizeSelected);
1660  myMinSizeDial->setValue(settings.minSize);
1661  myExaggerateDial->setValue(settings.exaggeration);
1662 }
1663 
1664 
1665 long
1666 GUIDialog_ViewSettings::SizePanel::onCmdSizeChange(FXObject* obj, FXSelector sel, void* ptr) {
1667  // mark boundaries for recomputing
1669  // continue as a normal change
1670  return myDialogViewSettings->onCmdColorChange(obj, sel, ptr);
1671 }
1672 
1673 
1675  FXComposite* parent,
1676  GUIDialog_ViewSettings* target,
1677  const GUIVisualizationRainbowSettings& settings) {
1678  FXMatrix* matrixRainbow = new FXMatrix(parent, 9, GUIDesignViewSettingsMatrix3);
1679  myColorRainbow = GUIDesigns::buildFXButton(matrixRainbow, TL("Recalibrate Rainbow"), "", "", nullptr, target, MID_SIMPLE_VIEW_COLORCHANGE,
1680  (BUTTON_DEFAULT | FRAME_RAISED | FRAME_THICK | LAYOUT_TOP | LAYOUT_LEFT), 0, 0, 0, 0, 20, 20, 4, 4);
1681  myRainbowStyle = new MFXComboBoxIcon(matrixRainbow, 5, false, 10, target, MID_SIMPLE_VIEW_RAINBOW_CHANGE, GUIDesignViewSettingsComboBox1);
1682  for (auto item : GUIVisualizationSettings::RAINBOW_SCHEMES) {
1683  myRainbowStyle->appendIconItem(item.first.c_str());
1684  }
1685  myHideMinCheck = new FXCheckButton(matrixRainbow, TL("min"), target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1686  myHideMinCheck->setCheck(settings.hideMin);
1687  myMinThreshold = new FXRealSpinner(matrixRainbow, 6, target, MID_SIMPLE_VIEW_COLORCHANGE, REALSPIN_NOMIN | GUIDesignViewSettingsSpinDial2);
1688  myMinThreshold->setRange(-std::numeric_limits<double>::max(), std::numeric_limits<double>::max());
1689  myMinThreshold->setValue(settings.minThreshold);
1690  myHideMaxCheck = new FXCheckButton(matrixRainbow, TL("max"), target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1691  myHideMaxCheck->setCheck(settings.hideMax);
1692  myMaxThreshold = new FXRealSpinner(matrixRainbow, 6, target, MID_SIMPLE_VIEW_COLORCHANGE, REALSPIN_NOMIN | GUIDesignViewSettingsSpinDial2);
1693  myMaxThreshold->setRange(-std::numeric_limits<double>::max(), std::numeric_limits<double>::max());
1694  myMaxThreshold->setValue(settings.maxThreshold);
1695  mySetNeutral = new FXCheckButton(matrixRainbow, TL("center"), target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1696  mySetNeutral->setCheck(settings.setNeutral);
1697  myNeutralThreshold = new FXRealSpinner(matrixRainbow, 6, target, MID_SIMPLE_VIEW_COLORCHANGE, REALSPIN_NOMIN | GUIDesignViewSettingsSpinDial2);
1698  myNeutralThreshold->setRange(-std::numeric_limits<double>::max(), std::numeric_limits<double>::max());
1699  myNeutralThreshold->setValue(settings.neutralThreshold);
1700  myFixRange = new FXCheckButton(matrixRainbow, TL("fix range"), target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1701  myFixRange->setCheck(settings.fixRange);
1702 }
1703 
1704 
1707  GUIVisualizationRainbowSettings res(myHideMinCheck->getCheck() != FALSE,
1708  myMinThreshold->getValue(),
1709  myHideMaxCheck->getCheck() != FALSE,
1710  myMaxThreshold->getValue(),
1711  mySetNeutral->getCheck() != FALSE,
1712  myNeutralThreshold->getValue(),
1713  myFixRange->getCheck() != FALSE);
1714  std::string sName = myRainbowStyle->getItemText(myRainbowStyle->getCurrentItem());
1716  return res;
1717 }
1718 
1719 
1720 void
1722  myHideMinCheck->setCheck(settings.hideMin);
1723  myMinThreshold->setValue(settings.minThreshold);
1724  myHideMaxCheck->setCheck(settings.hideMax);
1725  myMaxThreshold->setValue(settings.maxThreshold);
1726  mySetNeutral->setCheck(settings.setNeutral);
1727  myNeutralThreshold->setValue(settings.neutralThreshold);
1728  myFixRange->setCheck(settings.fixRange);
1729 }
1730 
1731 void
1732 GUIDialog_ViewSettings::buildHeader(FXVerticalFrame* contentFrame) {
1733  FXHorizontalFrame* horizontalFrame = new FXHorizontalFrame(contentFrame, GUIDesignViewSettingsHorizontalFrame1);
1734  mySchemeName = new MFXComboBoxIcon(horizontalFrame, 20, true, GUIDesignComboBoxVisibleItemsMedium,
1736  for (const auto& name : gSchemeStorage.getNames()) {
1737  const int index = mySchemeName->appendIconItem(name.c_str());
1738  if (name == mySettings->name) {
1739  mySchemeName->setCurrentItem((FXint)index);
1740  }
1741  }
1742 
1743  GUIDesigns::buildFXButton(horizontalFrame, "", "", TL("Save the setting to registry"), GUIIconSubSys::getIcon(GUIIcon::SAVE_DATABASE), this, MID_SIMPLE_VIEW_SAVE, GUIDesignButtonToolbar);
1744  GUIDesigns::buildFXButton(horizontalFrame, "", "", TL("Remove the setting from registry"), GUIIconSubSys::getIcon(GUIIcon::REMOVEDB), this, MID_SIMPLE_VIEW_DELETE, GUIDesignButtonToolbar);
1745  GUIDesigns::buildFXButton(horizontalFrame, "", "", TL("Export setting to file"), GUIIconSubSys::getIcon(GUIIcon::SAVE), this, MID_SIMPLE_VIEW_EXPORT, GUIDesignButtonToolbar);
1746  GUIDesigns::buildFXButton(horizontalFrame, "", "", TL("Load setting from file"), GUIIconSubSys::getIcon(GUIIcon::OPEN), this, MID_SIMPLE_VIEW_IMPORT, GUIDesignButtonToolbar);
1747 
1748  new FXVerticalSeparator(horizontalFrame);
1749  new FXLabel(horizontalFrame, TL("Export includes:"), nullptr, GUIDesignViewSettingsLabel1);
1750  mySaveViewPort = new FXCheckButton(horizontalFrame, TL("Viewport"));
1751  mySaveDelay = new FXCheckButton(horizontalFrame, TL("Delay"));
1752  mySaveDecals = new FXCheckButton(horizontalFrame, TL("Decals"));
1753  mySaveBreakpoints = new FXCheckButton(horizontalFrame, TL("Breakpoints"));
1754  if (mySettings->netedit) {
1755  mySaveBreakpoints->disable();
1756  }
1757 }
1758 
1759 
1760 void
1762  // tab for the background
1763  new FXTabItem(tabbook, TL("Background"), nullptr, GUIDesignViewSettingsTabItemBook1);
1764  FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
1765  FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
1766 
1767  FXMatrix* matrixColor = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
1768  new FXLabel(matrixColor, TL("Color"), nullptr, GUIDesignViewSettingsLabel1);
1770 
1771  FXVerticalFrame* verticalFrameDecals = new FXVerticalFrame(verticalFrame, GUIDesignViewSettingsVerticalFrame3);
1772  new FXLabel(verticalFrameDecals, TL("Decals:"));
1773  myDecalsTable = new MFXDecalsTable(this, verticalFrameDecals);
1774  FXHorizontalFrame* horizontalFrameButtonsDecals = new FXHorizontalFrame(verticalFrameDecals, GUIDesignViewSettingsHorizontalFrame2);
1775  GUIDesigns::buildFXButton(horizontalFrameButtonsDecals, TL("&Load XML Decals"), "", "", nullptr, this, MID_SIMPLE_VIEW_LOAD_DECALS_XML, GUIDesignViewSettingsButton1);
1776  GUIDesigns::buildFXButton(horizontalFrameButtonsDecals, TL("&Save XML Decals"), "", "", nullptr, this, MID_SIMPLE_VIEW_SAVE_DECALS_XML, GUIDesignViewSettingsButton1);
1777  GUIDesigns::buildFXButton(horizontalFrameButtonsDecals, TL("&Clear Decals"), "", "", nullptr, this, MID_SIMPLE_VIEW_CLEAR_DECALS, GUIDesignViewSettingsButton1);
1778 
1779  new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
1780 
1781  FXMatrix* matrixGrid = new FXMatrix(verticalFrame, 2, GUIDesignViewSettingsMatrix1);
1782  myShowGrid = new FXCheckButton(matrixGrid, TL("Toggle grid"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1783  myShowGrid->setCheck(mySettings->showGrid);
1784  new FXLabel(matrixGrid, "");
1785  FXMatrix* matrixGridX = new FXMatrix(matrixGrid, 2, GUIDesignViewSettingsMatrix2);
1786  new FXLabel(matrixGridX, TL("x-spacing"), nullptr, GUIDesignViewSettingsLabel1);
1787  myGridXSizeDialer = new FXRealSpinner(matrixGridX, 10, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
1788  myGridXSizeDialer->setRange(1, 10000);
1790  FXMatrix* matrixGridY = new FXMatrix(matrixGrid, 2, GUIDesignViewSettingsMatrix2);
1791  new FXLabel(matrixGridY, TL("y-spacing"), nullptr, GUIDesignViewSettingsLabel1);
1792  myGridYSizeDialer = new FXRealSpinner(matrixGridY, 10, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
1793  myGridYSizeDialer->setRange(1, 10000);
1795 }
1796 
1797 
1798 void
1800  new FXTabItem(tabbook, TL("Streets"), nullptr, GUIDesignViewSettingsTabItemBook1);
1801  FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
1802  FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
1803  // ... color settings
1804  FXVerticalFrame* verticalFrameColor = new FXVerticalFrame(verticalFrame, GUIDesignViewSettingsVerticalFrame6);
1805  FXMatrix* matrixColor = new FXMatrix(verticalFrameColor, 5, GUIDesignViewSettingsMatrix3);
1806  new FXLabel(matrixColor, TL("Color"), nullptr, GUIDesignViewSettingsLabel1);
1809  myLaneColorInterpolation = new FXCheckButton(matrixColor, TL("Interpolate"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1810  myLaneColorSettingFrame = new FXVerticalFrame(verticalFrameColor, GUIDesignViewSettingsVerticalFrame4);
1813  myMeanDataID->disable();
1814  myMeanDataID->hide();
1815  myParamKey = new FXComboBox(matrixColor, 1, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignComboBoxStatic);
1816  myParamKey->setEditable(true);
1817  myParamKey->disable();
1818 
1819  // rainbow settings
1820  myEdgeRainbowPanel = new RainbowPanel(verticalFrameColor, this, mySettings->edgeValueRainBow);
1821 
1822  new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
1823  // ... scale settings
1824  FXVerticalFrame* verticalFrameScale = new FXVerticalFrame(verticalFrame, GUIDesignViewSettingsVerticalFrame6);
1825  FXMatrix* matrixScale = new FXMatrix(verticalFrameScale, 5, GUIDesignViewSettingsMatrix3);
1826  new FXLabel(matrixScale, TL("Scale width"), nullptr, GUIDesignViewSettingsLabel1);
1829  myLaneScaleInterpolation = new FXCheckButton(matrixScale, TL("Interpolate"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1830  myLaneScaleSettingFrame = new FXVerticalFrame(verticalFrameScale, GUIDesignViewSettingsVerticalFrame4);
1831  myScalingParamKey = new FXComboBox(matrixScale, 1, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignComboBoxStatic);
1832  myScalingParamKey->setEditable(true);
1833  myScalingParamKey->disable();
1834 
1838  } else {
1841  }
1842 
1843  new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
1844  FXMatrix* matrixLanes = new FXMatrix(verticalFrame, 2, GUIDesignViewSettingsMatrix1);
1845 
1846  myShowBikeMarkings = new FXCheckButton(matrixLanes, TL("Show bike markings"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1848  myShowLaneDecals = new FXCheckButton(matrixLanes, TL("Show turning arrows"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1850 
1851  myShowLinkRules = new FXCheckButton(matrixLanes, TL("Show right-of-way rules"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1853  myRealisticLinkRules = new FXCheckButton(matrixLanes, TL("Realistic stop line colors"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1855 
1856  myShowLaneBorders = new FXCheckButton(matrixLanes, TL("Show lane borders"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1858  myShowLaneDirection = new FXCheckButton(matrixLanes, TL("Show lane direction"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1860 
1861  myHideMacroConnectors = new FXCheckButton(matrixLanes, TL("Hide macro connectors"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1863  myShowSublanes = new FXCheckButton(matrixLanes, TL("Show sublanes"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1865 
1866  myShowRails = new FXCheckButton(matrixLanes, TL("Show rails"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1867  myShowRails->setCheck(mySettings->showRails);
1868 
1869  mySpreadSuperposed = new FXCheckButton(matrixLanes, TL("Spread bidirectional railways/roads"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1870  mySpreadSuperposed->setHelpText(TL("Make both directional edges for a bidirectional railways or roads visible"));
1872 
1873  mySecondaryShape = new FXCheckButton(matrixLanes, TL("Secondary shape"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1875  new FXLabel(matrixLanes, " ", nullptr, GUIDesignViewSettingsLabel1);
1876 
1877  FXMatrix* tmp0 = new FXMatrix(matrixLanes, 2, GUIDesignViewSettingsMatrix5);
1878  new FXLabel(tmp0, TL("Exaggerate width by"), nullptr, GUIDesignViewSettingsLabel1);
1880  myLaneWidthUpscaleDialer->setRange(0, 1000000);
1882 
1883  FXMatrix* tmp1 = new FXMatrix(matrixLanes, 2, GUIDesignViewSettingsMatrix5);
1884  new FXLabel(tmp1, TL("Minimum size"), nullptr, GUIDesignViewSettingsLabel1);
1886  myLaneMinWidthDialer->setRange(0, 1000000);
1888 
1889  // edge name
1890  myEdgeNamePanel = new NamePanel(matrixLanes, this, TL("Show edge id"), mySettings->edgeName);
1891  myStreetNamePanel = new NamePanel(matrixLanes, this, TL("Show street name"), mySettings->streetName);
1892  myEdgeValuePanel = new NamePanel(matrixLanes, this, TL("Show edge color value"), mySettings->edgeValue);
1893  myEdgeScaleValuePanel = new NamePanel(matrixLanes, this, TL("Show edge scale value"), mySettings->edgeScaleValue);
1894 }
1895 
1896 
1897 void
1899  new FXTabItem(tabbook, TL("Vehicles"), nullptr, GUIDesignViewSettingsTabItemBook1);
1900  FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
1901  FXVerticalFrame* verticalframe = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
1902 
1903  FXMatrix* matrixShowAs = new FXMatrix(verticalframe, 2, GUIDesignViewSettingsMatrix3);
1904  new FXLabel(matrixShowAs, TL("Show As"), nullptr, GUIDesignViewSettingsLabel1);
1907  myVehicleShapeDetail->appendIconItem(TL("'triangles'"));
1908  myVehicleShapeDetail->appendIconItem(TL("'boxes'"));
1909  myVehicleShapeDetail->appendIconItem(TL("'simple shapes'"));
1910  myVehicleShapeDetail->appendIconItem(TL("'raster images'"));
1911  myVehicleShapeDetail->appendIconItem(TL("'circles'"));
1913 
1914  new FXHorizontalSeparator(verticalframe, GUIDesignHorizontalSeparator);
1915 
1916  FXMatrix* matrixColor = new FXMatrix(verticalframe, 4, GUIDesignViewSettingsMatrix3);
1917  new FXLabel(matrixColor, TL("Color"), nullptr, GUIDesignViewSettingsLabel1);
1921  myVehicleColorInterpolation = new FXCheckButton(matrixColor, TL("Interpolate"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1922  myVehicleParamKey = new FXComboBox(matrixColor, 1, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignComboBoxStatic);
1923  myVehicleParamKey->setEditable(true);
1924  myVehicleParamKey->disable();
1925 
1926  myVehicleColorSettingFrame = new FXVerticalFrame(verticalframe, GUIDesignViewSettingsVerticalFrame4);
1927  new FXHorizontalSeparator(verticalframe, GUIDesignHorizontalSeparator);
1928 
1929  // vehicle scale settings
1930  FXVerticalFrame* verticalFrameScale = new FXVerticalFrame(verticalframe, GUIDesignViewSettingsVerticalFrame6);
1931  FXMatrix* matrixScale = new FXMatrix(verticalFrameScale, 4, GUIDesignViewSettingsMatrix3);
1932  new FXLabel(matrixScale, TL("Scale size"), nullptr, GUIDesignViewSettingsLabel1);
1935  myVehicleScaleInterpolation = new FXCheckButton(matrixScale, TL("Interpolate"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1936  myVehicleScalingParamKey = new FXComboBox(matrixScale, 1, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignComboBoxStatic);
1937  myVehicleScalingParamKey->setEditable(true);
1938  myVehicleScalingParamKey->disable();
1939  myVehicleScaleSettingFrame = new FXVerticalFrame(verticalFrameScale, GUIDesignViewSettingsVerticalFrame4);
1941  new FXHorizontalSeparator(verticalframe, GUIDesignHorizontalSeparator);
1942 
1943  FXMatrix* matrixVehicle = new FXMatrix(verticalframe, 2, GUIDesignMatrixViewSettings);
1944  myVehicleNamePanel = new NamePanel(matrixVehicle, this, TL("Show vehicle id"), mySettings->vehicleName);
1945  myVehicleValuePanel = new NamePanel(matrixVehicle, this, TL("Show vehicle color value"), mySettings->vehicleValue);
1946  myVehicleScaleValuePanel = new NamePanel(matrixVehicle, this, TL("Show vehicle scale value"), mySettings->vehicleScaleValue);
1947  myVehicleTextPanel = new NamePanel(matrixVehicle, this, TL("Show vehicle text param"), mySettings->vehicleText);
1949  myVehicleTextParamKey->setEditable(true);
1950  //new FXHorizontalSeparator(verticalframe, GUIDesignHorizontalSeparator);
1951 
1952  FXMatrix* matrixShow = new FXMatrix(verticalframe, 2, GUIDesignMatrixViewSettings);
1953  myShowBlinker = new FXCheckButton(matrixShow, TL("Show blinker / brake lights"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1954  myShowBlinker->setCheck(mySettings->showBlinker);
1955  myShowMinGap = new FXCheckButton(matrixShow, TL("Show minimum gap"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1956  myShowMinGap->setCheck(mySettings->drawMinGap);
1957  myShowBrakeGap = new FXCheckButton(matrixShow, TL("Show brake gap"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1959  myShowBTRange = new FXCheckButton(matrixShow, TL("Show Bluetooth range"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1960  myShowBTRange->setCheck(mySettings->showBTRange);
1961  myShowRouteIndex = new FXCheckButton(matrixShow, TL("Show route index"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1963  myScaleLength = new FXCheckButton(matrixShow, TL("Scale length with geometry"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1964  myScaleLength->setCheck(mySettings->scaleLength);
1965  myShowParkingInfo = new FXCheckButton(matrixShow, TL("Show parking info"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1967  myDrawReversed = new FXCheckButton(matrixShow, TL("Draw reversed vehicles in reverse"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1969  //new FXLabel(matrixShow, " ", nullptr, GUIDesignViewSettingsLabel1);
1970  //myShowLaneChangePreference = new FXCheckButton(matrixShow, TL("Show lane change preference"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1971  //myShowLaneChangePreference->setCheck(mySettings->drawLaneChangePreference);
1972  //tmpc = new FXCheckButton(matrixShow, TL("Show needed headway"), 0 ,0);
1973  //tmpc->disable();
1974 
1975  //new FXHorizontalSeparator(frame3, GUIDesignHorizontalSeparator);
1976 
1977  FXMatrix* matrixSize = new FXMatrix(verticalframe, 2, GUIDesignViewSettingsMatrix1);
1978  myVehicleSizePanel = new SizePanel(matrixSize, this, mySettings->vehicleSize, GLO_VEHICLE);
1979 }
1980 
1981 
1982 void
1984  new FXTabItem(tabbook, TL("Persons"), nullptr, GUIDesignViewSettingsTabItemBook1);
1985  FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
1986  FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
1987 
1988  FXMatrix* m101 = new FXMatrix(verticalFrame, 2, GUIDesignViewSettingsMatrix3);
1989  new FXLabel(m101, TL("Show As"), nullptr, GUIDesignViewSettingsLabel1);
1992  myPersonShapeDetail->appendIconItem(TL("'triangles'"));
1993  myPersonShapeDetail->appendIconItem(TL("'circles'"));
1994  myPersonShapeDetail->appendIconItem(TL("'simple shapes'"));
1995  myPersonShapeDetail->appendIconItem(TL("'raster images'"));
1997 
1998  new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
1999 
2000  FXMatrix* m102 = new FXMatrix(verticalFrame, 3, GUIDesignViewSettingsMatrix3);
2001  new FXLabel(m102, TL("Color"), nullptr, GUIDesignViewSettingsLabel1);
2005  myPersonColorInterpolation = new FXCheckButton(m102, TL("Interpolate"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
2006 
2007  myPersonColorSettingFrame = new FXVerticalFrame(verticalFrame, GUIDesignViewSettingsVerticalFrame4);
2008 
2009  new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2010 
2011  FXMatrix* m103 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2012  myPersonNamePanel = new NamePanel(m103, this, TL("Show person id"), mySettings->personName);
2013  myPersonValuePanel = new NamePanel(m103, this, TL("Show person color value"), mySettings->personValue);
2014 
2015  new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2016 
2017  FXMatrix* m104 = new FXMatrix(verticalFrame, 2, GUIDesignViewSettingsMatrix1);
2019 
2020  FXMatrix* m105 = new FXMatrix(verticalFrame, 2, GUIDesignViewSettingsMatrix3);
2021  myShowPedestrianNetwork = new FXCheckButton(m105, TL("Show JuPedSim pedestrian network"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2024 #ifdef JPS_VERSION
2025  if (mySettings->netedit) {
2026 #endif
2027  myShowPedestrianNetwork->disable();
2028  myPedestrianNetworkColor->disable();
2029 #ifdef JPS_VERSION
2030  }
2031 #endif
2032 }
2033 
2034 
2035 void
2037  new FXTabItem(tabbook, TL("Containers"), nullptr, GUIDesignViewSettingsTabItemBook1);
2038  FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2039  FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2040 
2041  FXMatrix* m101 = new FXMatrix(verticalFrame, 2, GUIDesignViewSettingsMatrix3);
2042  new FXLabel(m101, TL("Show As"), nullptr, GUIDesignViewSettingsLabel1);
2045  myContainerShapeDetail->appendIconItem(TL("'triangles'"));
2047  myContainerShapeDetail->appendIconItem(TL("'simple shapes'"));
2048  myContainerShapeDetail->appendIconItem(TL("'raster images'"));
2050 
2051  new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2052 
2053  FXMatrix* m102 = new FXMatrix(verticalFrame, 3, GUIDesignViewSettingsMatrix3);
2054  new FXLabel(m102, TL("Color"), nullptr, GUIDesignViewSettingsLabel1);
2058  myContainerColorInterpolation = new FXCheckButton(m102, TL("Interpolate"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
2059 
2060  myContainerColorSettingFrame = new FXVerticalFrame(verticalFrame, GUIDesignViewSettingsVerticalFrame4);
2061 
2062  new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2063 
2064  FXMatrix* m103 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2065  myContainerNamePanel = new NamePanel(m103, this, TL("Show container id"), mySettings->containerName);
2066 
2067  new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2068 
2069  FXMatrix* m104 = new FXMatrix(verticalFrame, 2, GUIDesignViewSettingsMatrix1);
2071 }
2072 
2073 
2074 void
2076  new FXTabItem(tabbook, TL("Junctions"), nullptr, GUIDesignViewSettingsTabItemBook1);
2077  FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2078  FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2079  FXMatrix* m41 = new FXMatrix(verticalFrame, 3, GUIDesignViewSettingsMatrix3);
2080  new FXLabel(m41, TL("Color"), nullptr, GUIDesignViewSettingsLabel1);
2084  myJunctionColorInterpolation = new FXCheckButton(m41, TL("Interpolate"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
2085 
2086  myJunctionColorSettingFrame = new FXVerticalFrame(verticalFrame, GUIDesignViewSettingsVerticalFrame4);
2088 
2089  new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2090  FXMatrix* m42 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2092  myDrawJunctionShape = new FXCheckButton(m42, TL("Draw junction shape"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2094  myDrawCrossingsAndWalkingAreas = new FXCheckButton(m42, TL("Draw crossings/walkingareas"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2096  myShowLane2Lane = new FXCheckButton(m42, TL("Show lane to lane connections"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2098  new FXLabel(m42, " ", nullptr, GUIDesignViewSettingsLabel1);
2099 
2100  myTLIndexPanel = new NamePanel(m42, this, TL("Show link tls index"), mySettings->drawLinkTLIndex);
2101  myJunctionIndexPanel = new NamePanel(m42, this, TL("Show link junction index"), mySettings->drawLinkJunctionIndex);
2102  myJunctionIDPanel = new NamePanel(m42, this, TL("Show junction id"), mySettings->junctionID);
2103  myInternalJunctionNamePanel = new NamePanel(m42, this, TL("Show internal junction id"), mySettings->internalJunctionName);
2104  myInternalEdgeNamePanel = new NamePanel(m42, this, TL("Show internal edge id"), mySettings->internalEdgeName);
2105  myCwaEdgeNamePanel = new NamePanel(m42, this, TL("Show crossing and walkingarea id"), mySettings->cwaEdgeName);
2106  myTLSPhaseIndexPanel = new NamePanel(m42, this, TL("Show traffic light phase index"), mySettings->tlsPhaseIndex);
2107  myTLSPhaseNamePanel = new NamePanel(m42, this, TL("Show traffic light phase name"), mySettings->tlsPhaseName);
2108  myJunctionNamePanel = new NamePanel(m42, this, TL("Show junction name"), mySettings->junctionName);
2109 }
2110 
2111 
2112 void
2114  new FXTabItem(tabbook, TL("Additional"), nullptr, GUIDesignViewSettingsTabItemBook1);
2115  FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2116  FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2117  // IDs
2118  FXMatrix* matrixIDs = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2119  myAddNamePanel = new NamePanel(matrixIDs, this, TL("Show object id"), mySettings->addName);
2120  myAddFullNamePanel = new NamePanel(matrixIDs, this, TL("Show full name"), mySettings->addFullName);
2121  new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2122  //Sizes
2123  FXMatrix* matrixSizes = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2124  myAddSizePanel = new SizePanel(matrixSizes, this, mySettings->addSize, GLO_ADDITIONALELEMENT);
2125  // color
2126  FXMatrix* matrixColor = new FXMatrix(verticalFrame, 3, GUIDesignMatrixViewSettings);
2127  new FXLabel(matrixColor, TL("StoppingPlace"), nullptr, GUIDesignViewSettingsLabel1);
2128  new FXLabel(matrixColor, TL("body"), nullptr, GUIDesignViewSettingsLabel1);
2129  new FXLabel(matrixColor, TL("sign"), nullptr, GUIDesignViewSettingsLabel1);
2130  new FXLabel(matrixColor, "busStops", nullptr, GUIDesignViewSettingsLabel1);
2133  new FXLabel(matrixColor, "trainStops", nullptr, GUIDesignViewSettingsLabel1);
2136  new FXLabel(matrixColor, "containerStops", nullptr, GUIDesignViewSettingsLabel1);
2139  new FXLabel(matrixColor, "chargingStations", nullptr, GUIDesignViewSettingsLabel1);
2142 }
2143 
2144 
2145 void
2147  new FXTabItem(tabbook, TL("Demand"), nullptr, GUIDesignViewSettingsTabItemBook1);
2148  FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2149  FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2150  // elements
2151  FXMatrix* demandMatrix = new FXMatrix(verticalFrame, 3, GUIDesignMatrixViewSettings);
2152  new FXLabel(demandMatrix, TL("element"), nullptr, GUIDesignViewSettingsLabel1);
2153  new FXLabel(demandMatrix, TL("color"), nullptr, GUIDesignViewSettingsLabel1);
2154  new FXLabel(demandMatrix, TL("width"), nullptr, GUIDesignViewSettingsLabel1);
2155  new FXLabel(demandMatrix, "trips", nullptr, GUIDesignViewSettingsLabel1);
2157  myTripWidth = new FXRealSpinner(demandMatrix, 10, target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
2159  new FXLabel(demandMatrix, "personTrips", nullptr, GUIDesignViewSettingsLabel1);
2161  myPersonTripWidth = new FXRealSpinner(demandMatrix, 10, target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
2163  new FXLabel(demandMatrix, "walks", nullptr, GUIDesignViewSettingsLabel1);
2165  myWalkWidth = new FXRealSpinner(demandMatrix, 10, target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
2167  new FXLabel(demandMatrix, "rides", nullptr, GUIDesignViewSettingsLabel1);
2169  myRideWidth = new FXRealSpinner(demandMatrix, 10, target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
2171  new FXLabel(demandMatrix, "transport", nullptr, GUIDesignViewSettingsLabel1);
2173  myTransportWidth = new FXRealSpinner(demandMatrix, 10, target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
2175  new FXLabel(demandMatrix, "tranship", nullptr, GUIDesignViewSettingsLabel1);
2177  myTranshipWidth = new FXRealSpinner(demandMatrix, 10, target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
2179  // stops
2180  FXMatrix* stopMatrix = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2181  new FXLabel(stopMatrix, "stop", nullptr, GUIDesignViewSettingsLabel1);
2183  new FXLabel(stopMatrix, "waypoint", nullptr, GUIDesignViewSettingsLabel1);
2185  new FXLabel(stopMatrix, "stop (persons)", nullptr, GUIDesignViewSettingsLabel1);
2187  new FXLabel(stopMatrix, "stop (containers)", nullptr, GUIDesignViewSettingsLabel1);
2189 }
2190 
2191 
2192 void
2194  new FXTabItem(tabbook, TL("POIs"), nullptr, GUIDesignViewSettingsTabItemBook1);
2195  FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2196  FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2197 
2198  FXMatrix* m63 = new FXMatrix(verticalFrame, 3, GUIDesignViewSettingsMatrix3);
2199  new FXLabel(m63, TL("Color"), nullptr, GUIDesignViewSettingsLabel1);
2203  myPOIColorInterpolation = new FXCheckButton(m63, TL("Interpolate"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
2204  myPOIColorSettingFrame = new FXVerticalFrame(verticalFrame, GUIDesignViewSettingsVerticalFrame4);
2205 
2206  new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2207 
2208  FXMatrix* m61 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2209 
2210  new FXLabel(m61, TL("POI detail"), nullptr, GUIDesignViewSettingsLabel1);
2212  myPoiDetail->setRange(3, 100);
2213  myPoiDetail->setValue(mySettings->poiDetail);
2214 
2215  myPOINamePanel = new NamePanel(m61, this, TL("Show poi id"), mySettings->poiName);
2216  myPOITypePanel = new NamePanel(m61, this, TL("Show poi type"), mySettings->poiType);
2217  myPOITextPanel = new NamePanel(m61, this, TL("Show poi text param"), mySettings->poiText);
2219  myPOITextParamKey->setEditable(true);
2220  new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2221 
2222  FXMatrix* m62 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2223  myPOISizePanel = new SizePanel(m62, this, mySettings->poiSize, GLO_POI);
2224 }
2225 
2226 
2227 void
2229  new FXTabItem(tabbook, TL("Polygons"), nullptr, GUIDesignViewSettingsTabItemBook1);
2230  FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2231  FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2232 
2233  FXMatrix* m63 = new FXMatrix(verticalFrame, 3, GUIDesignViewSettingsMatrix3);
2234  new FXLabel(m63, TL("Color"), nullptr, GUIDesignViewSettingsLabel1);
2238  myPolyColorInterpolation = new FXCheckButton(m63, TL("Interpolate"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
2239  myPolyColorSettingFrame = new FXVerticalFrame(verticalFrame, GUIDesignViewSettingsVerticalFrame4);
2240 
2241  new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2242 
2243  FXMatrix* m91 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2244  myPolyNamePanel = new NamePanel(m91, this, TL("Show polygon id"), mySettings->polyName);
2245  myPolyTypePanel = new NamePanel(m91, this, TL("Show polygon types"), mySettings->polyType);
2246  new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2247 
2249 }
2250 
2251 
2252 void
2254  new FXTabItem(tabbook, TL("Selection"), nullptr, GUIDesignViewSettingsTabItemBook1);
2255  FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2256  FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2257 
2258  FXMatrix* m102 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2259  new FXLabel(m102, TL("Default Selection Color"), nullptr, GUIDesignViewSettingsLabel1);
2260  new FXLabel(m102, "", nullptr, GUIDesignViewSettingsLabel1);
2261 
2262  new FXLabel(m102, TL("Miscellaneous"), nullptr, GUIDesignViewSettingsLabel1);
2264  new FXLabel(m102, "Edge", nullptr, GUIDesignViewSettingsLabel1);
2266  new FXLabel(m102, "Lane Edge", nullptr, GUIDesignViewSettingsLabel1);
2268  new FXLabel(m102, "Connection", nullptr, GUIDesignViewSettingsLabel1);
2270  new FXLabel(m102, "Prohibition", nullptr, GUIDesignViewSettingsLabel1);
2272  new FXLabel(m102, "Crossing", nullptr, GUIDesignViewSettingsLabel1);
2274  new FXLabel(m102, "Additional", nullptr, GUIDesignViewSettingsLabel1);
2276  new FXLabel(m102, "Route", nullptr, GUIDesignViewSettingsLabel1);
2278  new FXLabel(m102, "Vehicle", nullptr, GUIDesignViewSettingsLabel1);
2280  new FXLabel(m102, "Person", nullptr, GUIDesignViewSettingsLabel1);
2282  new FXLabel(m102, "PersonPlan", nullptr, GUIDesignViewSettingsLabel1);
2284  new FXLabel(m102, "edgeData", nullptr, GUIDesignViewSettingsLabel1);
2286 }
2287 
2288 
2289 void
2291  new FXTabItem(tabbook, TL("Data"), nullptr, GUIDesignViewSettingsTabItemBook1);
2292  FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2293  FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2294  // ... color settings
2295  FXVerticalFrame* verticalFrame2 = new FXVerticalFrame(verticalFrame, GUIDesignViewSettingsVerticalFrame6);
2296  FXMatrix* m111 = new FXMatrix(verticalFrame2, 4, GUIDesignViewSettingsMatrix3);
2297  new FXLabel(m111, TL("Color"), nullptr, GUIDesignViewSettingsLabel1);
2300  myDataColorInterpolation = new FXCheckButton(m111, TL("Interpolate"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
2301  myDataColorSettingFrame = new FXVerticalFrame(verticalFrame2, GUIDesignViewSettingsVerticalFrame4);
2302  myDataParamKey = new FXComboBox(m111, 1, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignComboBoxWidth100);
2303  myDataParamKey->setEditable(true);
2304  myDataParamKey->disable();
2306 
2307  // rainbow settings
2308  myDataRainbowPanel = new RainbowPanel(verticalFrame2, this, mySettings->dataValueRainBow);
2309 
2310  new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2311  FXMatrix* m112 = new FXMatrix(verticalFrame, 2, GUIDesignViewSettingsMatrix1);
2312 
2313  new FXLabel(m112, TL("Exaggerate edgeRelation width by"), nullptr, GUIDesignViewSettingsLabel1);
2315  myEdgeRelationUpscaleDialer->setRange(0, 1000000);
2317 
2318  new FXLabel(m112, TL("Exaggerate tazRelation width by"), nullptr, GUIDesignViewSettingsLabel1);
2320  myTazRelationUpscaleDialer->setRange(0, 1000000);
2322 
2323  // text decoration
2324  myDataValuePanel = new NamePanel(m112, this, TL("Show data color value"), mySettings->dataValue);
2325 }
2326 
2327 
2328 void
2330  new FXTabItem(tabbook, TL("Legend"), nullptr, GUIDesignViewSettingsTabItemBook1);
2331  FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2332  FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2333 
2334  FXMatrix* m72 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2335  myShowSizeLegend = new FXCheckButton(m72, TL("Show Size Legend"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2337  new FXLabel(m72, "");
2338  myShowColorLegend = new FXCheckButton(m72, TL("Show Edge Color Legend"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2340  new FXLabel(m72, "");
2341  myShowVehicleColorLegend = new FXCheckButton(m72, TL("Show Vehicle Color Legend"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2343  new FXLabel(m72, "");
2344 }
2345 
2346 
2347 void
2349  new FXTabItem(tabbook, "openGL", nullptr, GUIDesignViewSettingsTabItemBook1);
2350  FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2351  FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2352 
2353  FXMatrix* m81 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2354  new FXLabel(m81, TL("Combobox max rows"), nullptr, GUIDesignViewSettingsLabel1);
2355  myComboRows = new FXRealSpinner(m81, 10, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
2357  FXMatrix* m82 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2358  myDisableHideByZoom = new FXCheckButton(m82, TL("Disable hide by zoom"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2359  myDisableHideByZoom->setHelpText(TL("Disable hiding edges with high zoom out"));
2361  FXMatrix* m83 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2362  myDither = new FXCheckButton(m83, TL("Dither"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2363  myDither->setCheck(mySettings->dither);
2364  FXMatrix* m84 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2365  myFPS = new FXCheckButton(m84, "FPS", this, MID_SIMPLE_VIEW_COLORCHANGE);
2366  myFPS->setCheck(mySettings->fps);
2367  FXMatrix* m85 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2368  myDrawBoundaries = new FXCheckButton(m85, TL("Draw boundaries"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2370  FXMatrix* m86 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2371  myForceDrawForRectangleSelection = new FXCheckButton(m86, TL("Force draw for rectangle selection"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2373  FXMatrix* m87 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2374  myDisableDottedContours = new FXCheckButton(m87, TL("Disable dotted contours during selection/deletion"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2376  FXMatrix* m88 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2377  myRecalculateBoundaries = GUIDesigns::buildFXButton(m88, TL("Recalculate boundaries"), "", "", nullptr, this, MID_SIMPLE_VIEW_COLORCHANGE,
2378  (BUTTON_DEFAULT | FRAME_RAISED | FRAME_THICK | LAYOUT_TOP | LAYOUT_LEFT), 0, 0, 0, 0, 20, 20, 4, 4);
2379  FXMatrix* m89 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2380  myGeometryIndicesPanel = new NamePanel(m89, this, TL("Show geometry point indices"), mySettings->geometryIndices);
2381 }
2382 
2383 
2384 void
2386  myFrame3D = new FXTabItem(tabbook, TL("3D view"), nullptr, GUIDesignViewSettingsTabItemBook1);
2387  FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2388  FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2389 
2390  FXMatrix* m82 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2391  myShow3DTLSLinkMarkers = new FXCheckButton(m82, TL("Show TLS link markers"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2393  //FXMatrix* m83 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2394  myShow3DTLSDomes = new FXCheckButton(m82, TL("Show domes around TLS models from decals"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2396  //FXMatrix* m84 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2397  myGenerate3DTLSModels = new FXCheckButton(m82, TL("Show auto-generated TLS models"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2399  myShow3DHeadUpDisplay = new FXCheckButton(m82, TL("Show head-up display"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2401 
2402  new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2403 
2404  FXMatrix* m2 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2405  new FXLabel(m2, TL("Sun brightness"), nullptr, GUIDesignViewSettingsLabel1);
2407  myLight3DFactor->setRange(0, 255);
2409  /*
2410  new FXLabel(m2, "Ambient", nullptr, GUIDesignViewSettingsLabel1);
2411  myAmbient3DLight = new FXColorWell(m2, MFXUtils::getFXColor(mySettings->ambient3DLight), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsColorWell);
2412  myAmbient3DLight->setOpaqueOnly(true);
2413  new FXLabel(m2, "Diffuse", nullptr, GUIDesignViewSettingsLabel1);
2414  myDiffuse3DLight = new FXColorWell(m2, MFXUtils::getFXColor(mySettings->diffuse3DLight), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsColorWell);
2415  myDiffuse3DLight->setOpaqueOnly(true);
2416  */
2417  new FXLabel(m2, TL("Sky color"), nullptr, GUIDesignViewSettingsLabel1);
2419  mySkyColor->setOpaqueOnly(true);
2420 
2421 #ifdef HAVE_OSG
2423 #else
2424  myFrame3D->disable();
2425 #endif
2426 }
2427 
2428 
2429 void
2430 GUIDialog_ViewSettings::buildButtons(FXVerticalFrame* contentFrame) {
2431  FXHorizontalFrame* horizontalFrameButtons = new FXHorizontalFrame(contentFrame, GUIDesignViewSettingsHorizontalFrame2);
2432  FXButton* OK = GUIDesigns::buildFXButton(horizontalFrameButtons, TL("&OK"), "", "", nullptr, this, MID_SETTINGS_OK, GUIDesignViewSettingsButton2);
2433  GUIDesigns::buildFXButton(horizontalFrameButtons, TL("&Cancel"), "", "", nullptr, this, MID_SETTINGS_CANCEL, GUIDesignViewSettingsButton3);
2434  OK->setFocus();
2435 }
2436 
2437 /****************************************************************************/
long long int SUMOTime
Definition: GUI.h:35
@ MID_SIMPLE_VIEW_NAMECHANGE
Informs the dialog about switching to another scheme.
Definition: GUIAppEnum.h:631
@ MID_SIMPLE_VIEW_CLEAR_DECALS
For the clear-decals - button.
Definition: GUIAppEnum.h:647
@ MID_SIMPLE_VIEW_RAINBOW_CHANGE
For changing rainbow style.
Definition: GUIAppEnum.h:649
@ MID_SIMPLE_VIEW_SAVE
For the save-to-db - button.
Definition: GUIAppEnum.h:633
@ MID_SIMPLE_VIEW_IMPORT
For the import-from-file - button.
Definition: GUIAppEnum.h:639
@ MID_SIMPLE_VIEW_EXPORT
For the export-to-file - button.
Definition: GUIAppEnum.h:637
@ MID_SIMPLE_VIEW_DELETE
For the delete - button.
Definition: GUIAppEnum.h:635
@ MID_SIMPLE_VIEW_LOAD_DECALS_XML
For the load-decals - button.
Definition: GUIAppEnum.h:643
@ MID_SIMPLE_VIEW_LOAD_DECAL
For the load-decals - button.
Definition: GUIAppEnum.h:641
@ MID_SETTINGS_OK
Ok-button was pushed.
Definition: GUIAppEnum.h:551
@ MID_SETTINGS_CANCEL
Cancel-button was pushed.
Definition: GUIAppEnum.h:553
@ MID_SIMPLE_VIEW_SIZECHANGE
Informs the dialog about a size value's change.
Definition: GUIAppEnum.h:629
@ MID_SIMPLE_VIEW_COLORCHANGE
Informs the dialog about a value's change.
Definition: GUIAppEnum.h:627
@ MID_SIMPLE_VIEW_SAVE_DECALS_XML
For the save-decals - button.
Definition: GUIAppEnum.h:645
GUICompleteSchemeStorage gSchemeStorage
#define GUIDesignViewSettingsColorWell2
Definition: GUIDesigns.h:588
#define GUIDesignViewSettingsMatrix3
Definition: GUIDesigns.h:545
#define GUIDesignViewSettingsMainDialog
Definition: GUIDesigns.h:516
#define GUIDesignViewSettingsMatrix5
Definition: GUIDesigns.h:549
#define GUIDesignComboBoxStatic
Combo box static (not editable)
Definition: GUIDesigns.h:302
#define GUIDesignViewSettingsComboBox1
Combo boxes.
Definition: GUIDesigns.h:552
#define GUIDesignComboBoxWidth100
comboBox with thick frame, width 100
Definition: GUIDesigns.h:314
#define GUIDesignViewSettingsHorizontalFrame3
Definition: GUIDesigns.h:538
#define GUIDesignViewSettingsVerticalFrame6
Definition: GUIDesigns.h:531
#define GUIDesignViewSettingsHorizontalFrame2
Definition: GUIDesigns.h:536
#define GUIDesignViewSettingsButton2
Definition: GUIDesigns.h:577
#define GUIDesignComboBoxVisibleItemsLarge
combo box large small
Definition: GUIDesigns.h:56
#define GUIDesignButtonToolbar
little button with icon placed in navigation toolbar
Definition: GUIDesigns.h:129
#define GUIDesignViewSettingsMatrix1
Matrix.
Definition: GUIDesigns.h:541
#define GUIDesignViewSettingsColorWell1
Color wells.
Definition: GUIDesigns.h:586
#define GUIDesignComboBoxVisibleItemsMedium
combo box medium small
Definition: GUIDesigns.h:53
#define GUIDesignViewSettingsButton4
Definition: GUIDesigns.h:581
#define GUIDesignViewSettingsDialog
Definition: GUIDesigns.h:518
#define GUIDesignViewSettingsMatrix4
Definition: GUIDesigns.h:547
#define GUIDesignViewSettingsSpinDial2
Definition: GUIDesigns.h:559
#define GUIDesignViewSettingsButton5
Definition: GUIDesigns.h:583
#define GUIDesignViewSettingsHorizontalFrame1
Horizontal frames.
Definition: GUIDesigns.h:534
#define GUIDesignViewSettingsSpinDial1
Definition: GUIDesigns.h:557
#define GUIDesignViewSettingsVerticalFrame5
Definition: GUIDesigns.h:529
#define GUIDesignViewSettingsMatrix2
Definition: GUIDesigns.h:543
#define GUIDesignViewSettingsLabel1
Label.
Definition: GUIDesigns.h:567
#define GUIDesignViewSettingsTabBook1
Tab books.
Definition: GUIDesigns.h:562
#define GUIDesignViewSettingsButton3
Definition: GUIDesigns.h:579
#define GUIDesignMatrixViewSettings
FXMatrix used to pack values in Viewsettings.
Definition: GUIDesigns.h:361
#define GUIDesignViewSettingsVerticalFrame2
Definition: GUIDesigns.h:523
#define GUIDesignViewSettingsVerticalFrame3
Definition: GUIDesigns.h:525
#define GUIDesignViewSettingsColorWell
ColorWell.
Definition: GUIDesigns.h:555
#define GUIDesignHorizontalSeparator
Definition: GUIDesigns.h:466
#define GUIDesignViewSettingsVerticalFrame4
Definition: GUIDesigns.h:527
#define GUIDesignViewSettingsTabItemBook1
Definition: GUIDesigns.h:564
#define GUIDesignViewSettingsVerticalFrame1
vertical frames
Definition: GUIDesigns.h:521
#define GUIDesignViewSettingsLabel2
Definition: GUIDesigns.h:569
#define GUIDesignViewSettingsTextField1
textFields
Definition: GUIDesigns.h:572
#define GUIDesignCheckButtonViewSettings
CheckButton for Frames without thick extended over the frame.
Definition: GUIDesigns.h:213
#define GUIDesignViewSettingsButton1
Buttons.
Definition: GUIDesigns.h:575
FXDEFMAP(GUIDialog_ViewSettings::SizePanel) GUIDialog_SizeMap[]
GUIGlObjectType
@ GLO_TAZRELDATA
TAZ relation data.
@ GLO_JUNCTION
a junction
@ GLO_LANE
a lane
@ GLO_CONTAINER
a container
@ GLO_ADDITIONALELEMENT
reserved GLO type for packing all additionals elements
@ GLO_VEHICLE
a vehicle
@ GLO_PERSON
a person
@ GLO_POI
poi (over view, geo and lane)
@ GLO_POLYGON
polygon
GUIViewObjectsHandler gViewObjectsHandler
FXString gCurrentFolder
The folder used as last.
@ OPEN
open icons
@ SAVE_DATABASE
@ SAVE
save icons
#define TL(string)
Definition: MsgHandler.h:315
std::string time2string(SUMOTime t, bool humanReadable)
convert SUMOTime to string (independently of global format setting)
Definition: SUMOTime.cpp:69
@ SUMO_TAG_DELAY
@ SUMO_TAG_BREAKPOINT
@ SUMO_TAG_VIEWSETTINGS_DECAL
@ SUMO_TAG_VIEWSETTINGS
@ SUMO_TAG_VIEWSETTINGS_LIGHT
@ SUMO_ATTR_VALUE
@ SUMO_ATTR_CENTER_Y
@ SUMO_ATTR_INDEX
@ SUMO_ATTR_LAYER
A layer number.
@ SUMO_ATTR_HEIGHT
@ SUMO_ATTR_TYPE
@ SUMO_ATTR_CENTER_Z
@ SUMO_ATTR_CENTER_X
@ SUMO_ATTR_WIDTH
@ SUMO_ATTR_TIME
trigger: the time of the step
#define UNUSED_PARAMETER(x)
Definition: StdDefs.h:30
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
Definition: ToString.h:46
bool contains(const std::string &name) const
Returns the information whether a setting with the given name is stored.
GUIVisualizationSettings & get(const std::string &name)
Returns the named scheme.
void remove(const std::string name)
Removes the setting with the given name.
const std::vector< std::string > & getNames() const
Returns a list of stored settings names.
void add(const GUIVisualizationSettings &scheme)
Adds a visualization scheme.
int getNumInitialSettings() const
Returns the number of initial settings.
void writeSettings(FXApp *app)
Writes the current scheme into the registry.
static FXButton * buildFXButton(FXComposite *p, const std::string &text, const std::string &tip, const std::string &help, FXIcon *ic, FXObject *tgt, FXSelector sel, FXuint opts=BUTTON_NORMAL, FXint x=0, FXint y=0, FXint w=0, FXint h=0, FXint pl=DEFAULT_PAD, FXint pr=DEFAULT_PAD, FXint pt=DEFAULT_PAD, FXint pb=DEFAULT_PAD)
build button
Definition: GUIDesigns.cpp:128
void writeXML(OutputDevice &dev)
write the settings to the given device
GUIVisualizationTextSettings getSettings()
get settings
FXColorWell * myBGColorWell
BGColor well.
void update(const GUIVisualizationTextSettings &settings)
update
FXCheckButton * myCheck
check button
FXCheckButton * myConstSizeCheck
const size check
NamePanel(FXMatrix *parent, GUIDialog_ViewSettings *target, const std::string &title, const GUIVisualizationTextSettings &settings)
constructor
FXCheckButton * mySelectedCheck
draw only for selected?
void update(const GUIVisualizationRainbowSettings &settings)
update
GUIVisualizationRainbowSettings getSettings()
get settings
RainbowPanel(FXComposite *parent, GUIDialog_ViewSettings *target, const GUIVisualizationRainbowSettings &settings)
constructor
FXCheckButton * myCheckSelected
check selected button
FXCheckButton * myCheck
check button
long onCmdSizeChange(FXObject *obj, FXSelector sel, void *ptr)
FXRealSpinner * myMinSizeDial
min size dial
void update(const GUIVisualizationSizeSettings &settings)
update
GUIVisualizationSizeSettings getSettings()
get settings
SizePanel(FXMatrix *parent, GUIDialog_ViewSettings *target, const GUIVisualizationSizeSettings &settings, GUIGlObjectType type)
FOX Declaration.
FXRealSpinner * myExaggerateDial
exaggerate dial
The dialog to change the view (gui) settings.
long onCmdExportSetting(FXObject *, FXSelector, void *data)
Called if the settings shall be exported into a file.
FXVerticalFrame * myVehicleColorSettingFrame
void buildBackgroundFrame(FXTabBook *tabbook)
build frames
FXCheckButton * myVehicleColorInterpolation
std::string getCurrentScheme() const
Returns the name of the currently chosen scheme.
MFXComboBoxIcon * myPolyColorMode
Polygons.
FXCheckButton * myShowPedestrianNetwork
FXVerticalFrame * myDataColorSettingFrame
GUISUMOAbstractView * myParent
The parent view (which settings are changed)
std::vector< FXColorWell * > myPolyColors
MFXComboBoxIcon * myJunctionColorMode
junctions
FXVerticalFrame * myJunctionColorSettingFrame
void buildSelectionFrame(FXTabBook *tabbook)
void buildOpenGLFrame(FXTabBook *tabbook)
long onCmdNameChange(FXObject *, FXSelector, void *)
Called if the name of the scheme was changed.
FXVerticalFrame * myContainerColorSettingFrame
FXRealSpinner * myLaneWidthUpscaleDialer
std::vector< FXColorWell * > myPOIColors
FXColorWell * myBusStopColor
additional colors
FXTabItem * myFrame3D
Frame3D.
std::vector< FXButton * > myLaneScaleButtons
FXCheckButton * myDisableDottedContours
std::vector< FXColorWell * > myPersonColors
MFXComboBoxIcon * myVehicleShapeDetail
std::vector< FXButton * > myDataButtons
std::vector< FXRealSpinner * > myVehicleScales
std::vector< FXRealSpinner * > myPolyThresholds
FXCheckButton * myPOIColorInterpolation
std::vector< FXButton * > myContainerButtons
std::vector< FXRealSpinner * > myJunctionThresholds
FXCheckButton * myVehicleScaleInterpolation
FXMatrix * rebuildColorMatrix(FXVerticalFrame *frame, std::vector< FXColorWell * > &colors, std::vector< FXRealSpinner * > &thresholds, std::vector< FXButton * > &buttons, FXCheckButton *interpolation, GUIColorScheme &scheme)
Rebuilds manipulators for the current coloring scheme.
void buildJunctionsFrame(FXTabBook *tabbook)
std::vector< FXRealSpinner * > myPersonThresholds
FXCheckButton * myRealisticLinkRules
void show()
show view settings dialog
std::vector< FXButton * > myJunctionButtons
FXColorWell * mySelectedProhibitionColor
FXCheckButton * myGenerate3DTLSModels
FXCheckButton * myShowVehicleColorLegend
void buildStreetsFrame(FXTabBook *tabbook)
FXRealSpinner * myTripWidth
demand widths
FXCheckButton * mySaveViewPort
load/save-menu
void buildVehiclesFrame(FXTabBook *tabbook)
std::vector< FXColorWell * > myJunctionColors
FXRealSpinner * myLaneMinWidthDialer
MFXComboBoxIcon * myLaneEdgeScaleMode
... lane scaler
FXCheckButton * myPersonColorInterpolation
long onCmdLoadXMLDecals(FXObject *, FXSelector, void *data)
Called if the decals shall be loaded from a file.
FXColorWell * mySelectionColor
selection colors
RainbowPanel * myEdgeRainbowPanel
rainbow panels
FXVerticalFrame * myLaneScaleSettingFrame
FXCheckButton * myHideMacroConnectors
std::vector< FXColorWell * > myVehicleColors
FXMatrix * rebuildScaleMatrix(FXVerticalFrame *frame, std::vector< FXRealSpinner * > &scales, std::vector< FXRealSpinner * > &thresholds, std::vector< FXButton * > &buttons, FXCheckButton *interpolation, GUIScaleScheme &scheme)
Rebuilds manipulators for the current scaling scheme.
std::vector< FXRealSpinner * > myVehicleThresholds
void setCurrentScheme(const std::string &)
Sets the named scheme as the current.
FXCheckButton * myPolyColorInterpolation
std::vector< FXButton * > myPersonButtons
FXCheckButton * myJunctionColorInterpolation
FXRealSpinner * myTazRelationUpscaleDialer
void buildHeader(FXVerticalFrame *contentFrame)
build header
long onCmdCancel(FXObject *, FXSelector, void *)
Called if the Cancel-button was pressed.
FXCheckButton * myShow3DHeadUpDisplay
FXVerticalFrame * myLaneColorSettingFrame
MFXComboBoxIcon * myPersonShapeDetail
FXCheckButton * myLaneScaleInterpolation
void buildDemandFrame(FXTabBook *tabbook)
long onCmdImportSetting(FXObject *, FXSelector, void *data)
Called if the settings shall be read from a file.
FXVerticalFrame * myVehicleScaleSettingFrame
long onUpdImportSetting(FXObject *, FXSelector, void *data)
Called when updating the button that allows to read settings from a file.
void setCurrent(GUIVisualizationSettings *settings)
Sets current settings (called if reopened)
void rebuildColorMatrices(bool doCreate=false)
Rebuilds color changing dialogs after choosing another coloring scheme.
void saveDecals(OutputDevice &dev) const
Writes the currently used decals into a file.
FXVerticalFrame * myPolyColorSettingFrame
std::vector< FXRealSpinner * > myLaneScales
void loadSettings(const std::string &file)
Loads a scheme from a file.
long onCmdClearDecals(FXObject *, FXSelector, void *data)
Called if the decals shall be cleared.
std::vector< FXRealSpinner * > myDataThresholds
FXCheckButton * myDataColorInterpolation
FXCheckButton * myDrawCrossingsAndWalkingAreas
std::vector< FXButton * > myLaneButtons
FXCheckButton * myLaneColorInterpolation
FXVerticalFrame * myPersonColorSettingFrame
void buildContainersFrame(FXTabBook *tabbook)
MFXComboBoxIcon * myVehicleColorMode
Vehicles.
void buildLegendFrame(FXTabBook *tabbook)
std::vector< FXRealSpinner * > myVehicleScaleThresholds
long onCmdLoadDecal(FXObject *, FXSelector, void *data)
Called if the decal shall be loaded from a file.
FXCheckButton * myContainerColorInterpolation
std::vector< FXColorWell * > myLaneColors
SizePanel * myVehicleSizePanel
size panels
GUIVisualizationSettings * mySettings
The current settings.
long onCmdDeleteSetting(FXObject *, FXSelector, void *data)
Called if the settings shall be deleted.
void loadDecals(const std::string &file)
Loads decals from a file.
FXVerticalFrame * myPOIColorSettingFrame
long onCmdColorChange(FXObject *, FXSelector, void *)
Called if something (color, width, etc.) has been changed.
std::vector< FXColorWell * > myContainerColors
FXCheckButton * myForceDrawForRectangleSelection
GUISUMOAbstractView * getSUMOAbstractView()
get GUISUMOAbstractView parent
MFXComboBoxIcon * myContainerColorMode
Containers.
std::vector< FXRealSpinner * > myLaneScaleThresholds
FXCheckButton * myDither
openGL
MFXComboBoxIcon * myContainerShapeDetail
GUIVisualizationSettings myBackup
A backup of the settings (used if the "Cancel" button is pressed)
std::vector< FXRealSpinner * > myContainerThresholds
void buildPersonsFrame(FXTabBook *tabbook)
FXCheckButton * myShow3DTLSLinkMarkers
3D
MFXComboBoxIcon * myPOIColorMode
POIs.
void updatePOIParams()
reload known POI parameters
FXCheckButton * myShowLane2Lane
buttons
std::vector< FXColorWell * > myDataColors
long onCmdOk(FXObject *, FXSelector, void *)
Called if the OK-button was pressed.
long onCmdSaveSetting(FXObject *, FXSelector, void *data)
Called if the settings shall be saved into the registry.
MFXComboBoxIcon * myLaneEdgeColorMode
... lane colorer
long onCmdSaveXMLDecals(FXObject *, FXSelector, void *data)
Called if the decals shall be saved to a file.
void buildAdditionalsFrame(FXTabBook *tabbook)
void buildPOIsFrame(FXTabBook *tabbook)
void buildPolygonsFrame(FXTabBook *tabbook)
void buildDataFrame(FXTabBook *tabbook)
long onUpdSaveSetting(FXObject *, FXSelector, void *data)
Called when updating the button that allows to save the settings into the registry.
void buildButtons(FXVerticalFrame *contentFrame)
build buttons
MFXComboBoxIcon * myVehicleScaleMode
vehicle scaler
std::vector< FXButton * > myVehicleScaleButtons
MFXComboBoxIcon * myPersonColorMode
Persons.
bool updateColorRanges(FXObject *sender, std::vector< FXColorWell * >::const_iterator colIt, std::vector< FXColorWell * >::const_iterator colEnd, std::vector< FXRealSpinner * >::const_iterator threshIt, std::vector< FXRealSpinner * >::const_iterator threshEnd, std::vector< FXButton * >::const_iterator buttonIt, GUIColorScheme &scheme)
update color ranges
std::vector< FXRealSpinner * > myLaneThresholds
long onUpdDeleteSetting(FXObject *, FXSelector, void *data)
Called when updating the button that allows to delete settings.
bool updateScaleRanges(FXObject *sender, std::vector< FXRealSpinner * >::const_iterator colIt, std::vector< FXRealSpinner * >::const_iterator colEnd, std::vector< FXRealSpinner * >::const_iterator threshIt, std::vector< FXRealSpinner * >::const_iterator threshEnd, std::vector< FXButton * >::const_iterator buttonIt, GUIScaleScheme &scheme)
update scale ranges
void build3DFrame(FXTabBook *tabbook)
long onUpdExportSetting(FXObject *, FXSelector, void *data)
Called when updating the button that allows to export settings into a file.
MFXComboBoxIcon * myDataColorMode
Data.
std::vector< FXButton * > myPOIButtons
FXColorWell * myChargingStationColorSign
NamePanel * myEdgeNamePanel
name panels
FXRealSpinner * myEdgeRelationUpscaleDialer
void updateVehicleParams()
reload known vehicle parameters
std::vector< FXRealSpinner * > myPOIThresholds
std::vector< FXButton * > myPolyButtons
std::vector< FXButton * > myVehicleButtons
static FXIcon * getIcon(const GUIIcon which)
returns a icon previously defined in the enum GUIIcon
Persists window position in the registry.
const std::string & getName() const
const std::vector< double > & getThresholds() const
void setColor(const int pos, const T &color)
void setThreshold(const int pos, const double threshold)
void removeColor(const int pos)
const std::vector< T > & getColors() const
int addColor(const T &color, const double threshold, const std::string &name="")
void setInterpolated(const bool interpolate, double interpolationStart=0.f)
bool isInterpolated() const
const std::vector< std::string > & getNames() const
bool allowsNegativeValues() const
void fill(MFXComboBoxIcon &cb)
Fills the given combobox with the names of available colorings.
MFXComboBoxIcon * getColoringSchemesCombo()
get coloring schemes combo
virtual std::vector< std::string > getMeanDataAttrs(const std::string &meanDataID) const
return list of available attributes for the given meanData id
virtual std::vector< std::string > getPOIParamKeys() const
return list of available vehicle parameters
virtual std::vector< std::string > getMeanDataIDs() const
return list of loaded edgeData ids (being computed in the current simulation)
virtual void buildColorRainbow(const GUIVisualizationSettings &, GUIColorScheme &, int, GUIGlObjectType, const GUIVisualizationRainbowSettings &)
recalibrate color scheme according to the current value range
void setDelay(double delay)
Sets the delay of the parent application.
virtual std::vector< std::string > getRelDataAttrs() const
return list of loaded edgeRelation and tazRelation attributes
GUIDialog_EditViewport * getViewportEditor()
get the viewport and create it on first access
virtual const std::vector< SUMOTime > retrieveBreakpoints() const
retrieve breakpoints if provided by the application
std::vector< Decal > & getDecals()
The list of decals to show.
double getDelay() const
Returns the delay of the parent application.
virtual std::vector< std::string > getEdgeDataAttrs() const
return list of loaded edgeData attributes
virtual void drawPedestrianNetwork(const GUIVisualizationSettings &) const
Draw (or not) the JuPedSim pedestrian network.
virtual std::vector< std::string > getVehicleParamKeys(bool) const
return list of available vehicle parameters
virtual void recalculateBoundaries()
recalculate boundaries
virtual std::vector< std::string > getEdgeLaneParamKeys(bool) const
return list of available edge parameters
FXMutex & getDecalsLockMutex()
The mutex to use before accessing the decals list in order to avoid thread conflicts.
virtual bool is3DView() const
return whether this is a 3D view
virtual void changePedestrianNetworkColor(const GUIVisualizationSettings &) const
Change the color of the JuPedSim pedestrian network.
void setBreakpoints(const std::vector< SUMOTime > &breakpoints)
Sets the breakpoints of the parent application.
virtual bool setColorScheme(const std::string &)
set color scheme
void remove(GUIDialog_EditViewport *)
remove viewport
An XML-handler for visualisation schemes.
double getDelay() const
Returns the parsed delay.
bool hasDecals() const
Returns whether any decals have been parsed.
const std::vector< std::string > & addSettings(GUISUMOAbstractView *view=0) const
Adds the parsed settings to the global list of settings.
const std::vector< SUMOTime > & getBreakpoints() const
Returns the parsed breakpoints.
void applyViewport(GUISUMOAbstractView *view) const
Sets the viewport which has been parsed.
const std::vector< GUISUMOAbstractView::Decal > & getDecals() const
Returns the parsed decals.
GUIGlObjectType recomputeBoundaries
recompute boundaries
Stores the information about how to visualize structures.
GUIVisualizationTextSettings addName
GUIVisualizationTextSettings tlsPhaseIndex
GUIVisualizationTextSettings vehicleName
GUIVisualizationTextSettings junctionName
RGBColor backgroundColor
The background color to use.
GUIVisualizationSizeSettings vehicleSize
GUIVisualizationSizeSettings containerSize
bool showBlinker
Information whether vehicle blinkers shall be drawn.
GUIVisualizationTextSettings internalEdgeName
bool showPedestrianNetwork
Flag for visualizing the pedestrian network generated for JuPedSim.
RGBColor skyColor
sky background color
GUIVisualizationSizeSettings junctionSize
static const std::string SCHEME_NAME_DATA_ATTRIBUTE_NUMERICAL
bool drawBoundaries
enable or disable draw boundaries
static const std::string SCHEME_NAME_EDGEDATA_NUMERICAL
bool showBikeMarkings
Information whether bicycle lane marking shall be drawn.
std::string edgeDataID
id for coloring by live edgeData
GUIScaler laneScaler
The lane scaler.
GUIVisualizationTextSettings edgeScaleValue
bool dither
Information whether dithering shall be enabled.
GUIColorer vehicleColorer
The vehicle colorer.
bool disableHideByZoom
disable hide by zoom
static const std::string SCHEME_NAME_EDGEDATA_LIVE
GUIVisualizationTextSettings personValue
bool showLinkRules
Information whether link rules (colored bars) shall be drawn.
GUIVisualizationTextSettings poiType
GUIVisualizationSizeSettings addSize
std::string name
The name of this setting.
GUIColorer edgeColorer
The mesoscopic edge colorer.
int containerQuality
The quality of container drawing.
RGBColor pedestrianNetworkColor
The color of the pedestrian network generated for JuPedSim.
GUIVisualizationTextSettings internalJunctionName
GUIVisualizationTextSettings vehicleScaleValue
GUIVisualizationSizeSettings poiSize
bool drawJunctionShape
whether the shape of the junction should be drawn
std::string edgeData
key for coloring by edgeData
GUIVisualizationTextSettings geometryIndices
GUIVisualizationTextSettings dataValue
bool show3DTLSDomes
whether the semi-transparent domes around 3D TL models should be drawn
bool realisticLinkRules
Information whether link rules (colored bars) shall be drawn with a realistic color scheme.
int personQuality
The quality of person drawing.
GUIColorer poiColorer
The POI colorer.
GUIVisualizationWidthSettings widthSettings
width settings
GUIVisualizationTextSettings poiName
std::string vehicleScaleParam
key for scaling by vehicle parameter
bool showParkingInfo
Set whether parking related information should be shown.
GUIVisualizationTextSettings vehicleValue
bool disableDottedContours
flag for disable dotted contours in netedit
GUIColorer polyColorer
The polygon colorer.
int vehicleQuality
The quality of vehicle drawing.
GUIVisualizationTextSettings drawLinkJunctionIndex
bool generate3DTLSModels
whether 3D TLS models should be generated automatically
static const std::string SCHEME_NAME_LANE_PARAM_NUMERICAL
GUIVisualizationTextSettings addFullName
GUIVisualizationTextSettings edgeValue
bool fps
Information whether frames-per-second should be drawn.
std::string vehicleParam
key for coloring by vehicle parameter
bool showRails
Information whether rails shall be drawn.
GUIVisualizationSizeSettings personSize
double laneWidthExaggeration
The lane exaggeration (upscale thickness)
GUIVisualizationTextSettings cwaEdgeName
GUIVisualizationTextSettings junctionID
std::string vehicleTextParam
key for rendering vehicle textual parameter
bool showLane2Lane
Information whether lane-to-lane arrows shall be drawn.
GUIVisualizationColorSettings colorSettings
color settings
bool showSublanes
Whether to show sublane boundaries.
GUIVisualizationRainbowSettings edgeValueRainBow
checks and thresholds for rainbow coloring
bool showGrid
Information whether a grid shall be shown.
bool scaleLength
Whether vehicle length shall be scaled with length/geometry factor.
bool showVehicleColorLegend
Information whether the vehicle color legend shall be drawn.
double edgeRelWidthExaggeration
The edgeRelation exaggeration (upscale thickness)
bool hideConnectors
flag to show or hide connectors
GUIScaler vehicleScaler
The size scaling settings for vehicles.
static bool UseMesoSim
this should be set at the same time as MSGlobals::gUseMesoSim
GUIColorer personColorer
The person colorer.
void save(OutputDevice &dev) const
Writes the settings into an output device.
GUIScaleScheme & getLaneEdgeScaleScheme()
Returns the current lane (edge) scaling schme.
int getLaneEdgeMode() const
Returns the number of the active lane (edge) coloring schme.
RGBColor ambient3DLight
3D material light components
GUIVisualizationRainbowSettings junctionValueRainBow
bool forceDrawForRectangleSelection
flag to force draw for rectangle selection (see drawForRectangleSelection)
bool netedit
Whether the settings are for Netedit.
bool showLaneDirection
Whether to show direction indicators for lanes.
GUIVisualizationRainbowSettings dataValueRainBow
value below which edgeData and edgeRelation data value should not be rendered
bool secondaryShape
whether secondary lane shape shall be drawn
GUIColorScheme & getLaneEdgeScheme()
Returns the current lane (edge) coloring schme.
GUIScaler edgeScaler
The mesoscopic edge scaler.
bool drawMinGap
Information whether the minimum gap shall be drawn.
GUIVisualizationTextSettings streetName
GUIVisualizationTextSettings poiText
GUIVisualizationTextSettings vehicleText
int getLaneEdgeScaleMode() const
Returns the number of the active lane (edge) scaling schme.
bool showLinkDecals
Information whether link textures (arrows) shall be drawn.
bool show3DHeadUpDisplay
whether to draw the head up display items
GUIColorer laneColorer
The lane colorer.
GUIVisualizationTextSettings polyName
double tazRelWidthExaggeration
The tazRelation exaggeration (upscale thickness)
bool laneShowBorders
Information whether lane borders shall be drawn.
GUIVisualizationTextSettings tlsPhaseName
GUIVisualizationTextSettings edgeName
bool showSizeLegend
Information whether the size legend shall be drawn.
double laneMinSize
The minimum visual lane width for drawing.
GUIVisualizationTextSettings drawLinkTLIndex
GUIVisualizationTextSettings containerName
static std::map< std::string, std::vector< RGBColor > > RAINBOW_SCHEMES
GUIVisualizationSizeSettings polySize
GUIColorer containerColorer
The container colorer.
double gridXSize
Information about the grid spacings.
bool showBTRange
Information whether the communication range shall be drawn.
bool drawReversed
Whether to draw reversed vehicles in their reversed state.
GUIVisualizationTextSettings personName
bool showColorLegend
Information whether the edge color legend shall be drawn.
std::string poiTextParam
key for rendering poi textual parameter
bool showRouteIndex
Information whether the route index should be shown.
bool drawCrossingsAndWalkingareas
whether crosings and walkingareas shall be drawn
static const std::string SCHEME_NAME_EDGE_PARAM_NUMERICAL
scheme names
bool spreadSuperposed
Whether to improve visualisation of superposed (rail) edges.
std::string relDataAttr
key for coloring by edgeRelation / tazRelation attribute
GUIColorer junctionColorer
The junction colorer.
void copy(const GUIVisualizationSettings &s)
copy all content from another GUIVisualizationSettings (note: DON'T USE in DrawGL functions!...
static const std::string SCHEME_NAME_PARAM_NUMERICAL
std::string edgeParam
key for coloring by edge parameter
bool drawBrakeGap
Information whether the brake gap shall be drawn.
GUIVisualizationTextSettings polyType
int poiDetail
The detail level for drawing POIs.
std::string edgeDataScaling
key for scaling by edgeData
ComboBox with icon.
FXint insertIconItem(FXint index, const FXString &text, FXIcon *icon=nullptr, FXColor bgColor=FXRGB(255, 255, 255), void *ptr=nullptr)
insert icon item in the given position
long setCurrentItem(const FXint index, FXbool notify=FALSE)
Set the current item (index is zero-based)
FXint getCurrentItem() const
Get the current item's index.
FXint findItem(const FXString &text) const
find item
void removeItem(FXint index)
Remove this item from the list.
FXint getNumItems() const
Return the number of items in the list.
FXString getText() const
Get the text.
void clearItems()
Remove all items from the list.
std::string getItemText(FXint index) const
Get text for specified item.
void disable()
Disable combo box.
FXint appendIconItem(const FXString &text, FXIcon *icon=nullptr, FXColor bgColor=FXRGB(255, 255, 255), void *ptr=nullptr)
append icon item in the last position
void enable()
Enable combo box.
void fillTable()
fill table
static void deleteChildren(FXWindow *w)
Deletes all children of the given window.
Definition: MFXUtils.cpp:30
static FXString getFilename2Write(FXWindow *parent, const FXString &header, const FXString &extension, FXIcon *icon, FXString &currentFolder)
Returns the file name to write.
Definition: MFXUtils.cpp:82
static FXColor getFXColor(const RGBColor &col)
converts FXColor to RGBColor
Definition: MFXUtils.cpp:112
static RGBColor getRGBColor(FXColor col)
converts FXColor to RGBColor
Definition: MFXUtils.cpp:106
Static storage of an output device and its base (abstract) implementation.
Definition: OutputDevice.h:61
void close()
Closes the device and removes it from the dictionary.
OutputDevice & openTag(const std::string &xmlElement)
Opens an XML tag.
OutputDevice & writeAttr(const SumoXMLAttr attr, const T &val)
writes a named attribute
Definition: OutputDevice.h:254
bool closeTag(const std::string &comment="")
Closes the most recently opened tag and optionally adds a comment.
static OutputDevice & getDevice(const std::string &name, bool usePrefix=true)
Returns the described OutputDevice.
unsigned char red() const
Returns the red-amount of the color.
Definition: RGBColor.cpp:74
void set(unsigned char r, unsigned char g, unsigned char b, unsigned char a)
assigns new values
Definition: RGBColor.cpp:98
static bool startsWith(const std::string &str, const std::string prefix)
Checks whether a given string starts with the prefix.
RGBColor vehicleTripColor
color for vehicle trips
RGBColor selectionColor
basic selection color
RGBColor selectedEdgeColor
edge selection color
RGBColor selectedPersonPlanColor
person plan selection color (Rides, Walks, stopPersons...)
RGBColor stopPersonColor
color for stopPersons
RGBColor selectedCrossingColor
crossings selection color
RGBColor chargingStationColor
color for chargingStations
RGBColor selectedLaneColor
lane selection color
RGBColor selectedRouteColor
route selection color (used for routes and vehicle stops)
RGBColor selectedEdgeDataColor
edge data selection color
RGBColor trainStopColorSign
color for trainStops signs
RGBColor transhipColor
color for tranships
RGBColor waypointColor
color for Waypoints
RGBColor containerStopColor
color for containerStops
RGBColor selectedProhibitionColor
prohibition selection color
RGBColor selectedConnectionColor
connection selection color
RGBColor busStopColorSign
color for busStops signs
RGBColor containerStopColorSign
color for containerStop signs
RGBColor selectedAdditionalColor
additional selection color (busStops, Detectors...)
RGBColor transportColor
color for transport
RGBColor busStopColor
color for busStops
RGBColor selectedVehicleColor
vehicle selection color
RGBColor selectedPersonColor
person selection color
RGBColor personTripColor
color for stopPersons
RGBColor stopContainerColor
color for containerStops
RGBColor trainStopColor
color for trainStops
RGBColor chargingStationColorSign
color for chargingStation sign
bool hideMax
whether data above threshold should not be colored
bool setNeutral
whether the scale should be centered at a specific value
bool fixRange
whether the color scale should be fixed to the given min/max values
double minThreshold
threshold below which value should not be colored
std::vector< RGBColor > colors
color steps for the rainbow;
bool hideMin
whether data below threshold should not be colored
double neutralThreshold
neutral point of scale
double maxThreshold
threshold above which value should not be colored
double exaggeration
The size exaggeration (upscale)
bool constantSize
whether the object shall be drawn with constant size regardless of zoom
double minSize
The minimum size to draw this object.
bool constantSizeSelected
whether only selected objects shall be drawn with constant
RGBColor bgColor
background text color
bool onlySelected
whether only selected objects shall have text drawn
bool constSize
@brif flag to avoid size changes
double personTripWidth
width for person trips