Eclipse SUMO - Simulation of Urban MObility
GUICompleteSchemeStorage.cpp
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2001-2019 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials
5 // are made available under the terms of the Eclipse Public License v2.0
6 // which accompanies this distribution, and is available at
7 // http://www.eclipse.org/legal/epl-v20.html
8 // SPDX-License-Identifier: EPL-2.0
9 /****************************************************************************/
17 // Storage for available visualization settings
18 /****************************************************************************/
19 
20 
21 // ===========================================================================
22 // included modules
23 // ===========================================================================
24 #include <config.h>
25 
27 #include <utils/common/ToString.h>
29 #include <utils/common/RGBColor.h>
33 
34 
35 // ===========================================================================
36 // static variable definitions
37 // ===========================================================================
39 
40 
41 // ===========================================================================
42 // method definitions
43 // ===========================================================================
45 
46 
48 
49 
50 
51 void
53  std::string name = scheme.name;
54  if (std::find(mySortedSchemeNames.begin(), mySortedSchemeNames.end(), name) == mySortedSchemeNames.end()) {
55  mySortedSchemeNames.push_back(name);
56  }
57  mySettings[name] = scheme;
58 }
59 
60 
62 GUICompleteSchemeStorage::get(const std::string& name) {
63  return mySettings.find(name)->second;
64 }
65 
66 
69  return mySettings.find(myDefaultSettingName)->second;
70 }
71 
72 
73 bool
74 GUICompleteSchemeStorage::contains(const std::string& name) const {
75  return mySettings.find(name) != mySettings.end();
76 }
77 
78 
79 void
80 GUICompleteSchemeStorage::remove(const std::string& name) {
81  if (!contains(name)) {
82  return;
83  }
84  mySortedSchemeNames.erase(find(mySortedSchemeNames.begin(), mySortedSchemeNames.end(), name));
85  mySettings.erase(mySettings.find(name));
86 }
87 
88 
89 void
90 GUICompleteSchemeStorage::setDefault(const std::string& name) {
91  if (!contains(name)) {
92  return;
93  }
94  myDefaultSettingName = name;
95 }
96 
97 
98 const std::vector<std::string>&
100  return mySortedSchemeNames;
101 }
102 
103 
104 int
106  return myNumInitialSettings;
107 }
108 
109 
110 void
111 GUICompleteSchemeStorage::init(FXApp* app, bool netedit) {
112  {
113  GUIVisualizationSettings vs(netedit);
114  vs.name = "standard";
115  vs.laneShowBorders = true;
116  gSchemeStorage.add(vs);
117  }
118  {
119  GUIVisualizationSettings vs(netedit);
120  vs.name = "faster standard";
121  vs.laneShowBorders = false;
122  vs.showLinkDecals = false;
123  vs.showRails = false;
124  vs.showRails = false;
125  vs.showSublanes = false;
126  gSchemeStorage.add(vs);
127  }
128  {
129  GUIVisualizationSettings vs(netedit);
130  vs.name = "real world";
131  vs.vehicleQuality = 2;
132  vs.backgroundColor = RGBColor(51, 128, 51, 255);
133  vs.laneShowBorders = true;
134  vs.hideConnectors = true;
135  vs.vehicleSize.minSize = 0;
136  vs.personQuality = 2;
137  vs.containerQuality = 2;
138  vs.showSublanes = false;
139  gSchemeStorage.add(vs);
140  }
141  {
142  GUIVisualizationSettings vs(netedit);
143  vs.name = "rail";
144  vs.vehicleQuality = 2;
145  vs.showLaneDirection = true;
146  vs.spreadSuperposed = true;
147  vs.junctionSize.constantSize = true;
149  gSchemeStorage.add(vs);
150  }
151 
152  if (!netedit) {
153  GUIVisualizationSettings vs(netedit);
154  vs.name = "selection";
163  gSchemeStorage.add(vs);
164  }
166  // add saved settings
167  int noSaved = app->reg().readIntEntry("VisualizationSettings", "settingNo", 0);
168  for (int i = 0; i < noSaved; ++i) {
169  std::string name = "visset#" + toString(i);
170  std::string setting = app->reg().readStringEntry("VisualizationSettings", name.c_str(), "");
171  if (setting != "") {
172  GUIVisualizationSettings vs(netedit);
173 
174  vs.name = setting;
175  app->reg().readStringEntry("VisualizationSettings", name.c_str(), "");
176 
177  // add saved xml setting
178  int xmlSize = app->reg().readIntEntry(name.c_str(), "xmlSize", 0);
179  std::string content = "";
180  int index = 0;
181  while (xmlSize > 0) {
182  std::string part = app->reg().readStringEntry(name.c_str(), ("xml" + toString(index)).c_str(), "");
183  if (part == "") {
184  break;
185  }
186  content += part;
187  xmlSize -= (int) part.size();
188  index++;
189  }
190  if (content != "" && xmlSize == 0) {
191  try {
192  GUISettingsHandler handler(content, false, netedit);
193  handler.addSettings();
194  } catch (ProcessError&) { }
195  }
196  }
197  }
199  myLookFrom.set(0, 0, 0);
200 }
201 
202 
203 void
205  const std::vector<std::string>& names = getNames();
206  app->reg().writeIntEntry("VisualizationSettings", "settingNo", (FXint) names.size() - myNumInitialSettings);
207  int gidx = 0;
208  for (std::vector<std::string>::const_iterator i = names.begin() + myNumInitialSettings; i != names.end(); ++i, ++gidx) {
209  const GUIVisualizationSettings& item = mySettings.find(*i)->second;
210  std::string sname = "visset#" + toString(gidx);
211 
212  app->reg().writeStringEntry("VisualizationSettings", sname.c_str(), item.name.c_str());
214  item.save(dev);
215  std::string content = dev.getString();
216  app->reg().writeIntEntry(sname.c_str(), "xmlSize", (FXint)(content.size()));
217  const unsigned maxSize = 1500; // this is a fox limitation for registry entries
218  for (int i = 0; i < (int)content.size(); i += maxSize) {
219  const std::string b = content.substr(i, maxSize);
220  app->reg().writeStringEntry(sname.c_str(), ("xml" + toString(i / maxSize)).c_str(), b.c_str());
221  }
222  }
223 }
224 
225 
226 void
227 GUICompleteSchemeStorage::saveViewport(const double x, const double y, const double z, const double rot) {
228  myLookFrom.set(x, y, z);
229  myRotation = rot;
230 }
231 
232 
233 void
235  if (myLookFrom.z() > 0) {
236  // look straight down
238  } else {
239  view->recenterView();
240  }
241 }
242 
243 
244 /****************************************************************************/
245 
GUICompleteSchemeStorage.h
GUICompleteSchemeStorage::myDefaultSettingName
std::string myDefaultSettingName
Name of the default setting.
Definition: GUICompleteSchemeStorage.h:134
GUIVisualizationSettings::name
std::string name
The name of this setting.
Definition: GUIVisualizationSettings.h:399
GUIVisualizationSettings::edgeColorer
GUIColorer edgeColorer
The mesoscopic edge colorer.
Definition: GUIVisualizationSettings.h:431
GUISUMOAbstractView::setViewportFromToRot
virtual void setViewportFromToRot(const Position &lookFrom, const Position &lookAt, double rotation)
applies the given viewport settings
Definition: GUISUMOAbstractView.cpp:1366
ToString.h
GUIVisualizationSettings::hideConnectors
bool hideConnectors
flag to show or hidde connectors
Definition: GUIVisualizationSettings.h:464
GUICompleteSchemeStorage::getDefault
GUIVisualizationSettings & getDefault()
Returns the default scheme.
Definition: GUICompleteSchemeStorage.cpp:68
GUIVisualizationSettings::laneShowBorders
bool laneShowBorders
Information whether lane borders shall be drawn.
Definition: GUIVisualizationSettings.h:446
GUISUMOAbstractView
Definition: GUISUMOAbstractView.h:72
GUICompleteSchemeStorage::writeSettings
void writeSettings(FXApp *app)
Writes the current scheme into the registry.
Definition: GUICompleteSchemeStorage.cpp:204
GUIVisualizationSettings::junctionSize
GUIVisualizationSizeSettings junctionSize
Definition: GUIVisualizationSettings.h:578
OutputDevice_String
An output device that encapsulates an ofstream.
Definition: OutputDevice_String.h:39
GUIPropertySchemeStorage::setSchemeByName
void setSchemeByName(std::string name)
Definition: GUIPropertySchemeStorage.h:100
GUICompleteSchemeStorage::remove
void remove(const std::string &name)
Removes the setting with the given name.
Definition: GUICompleteSchemeStorage.cpp:80
Position::z
double z() const
Returns the z-position.
Definition: Position.h:66
GUICompleteSchemeStorage::GUICompleteSchemeStorage
GUICompleteSchemeStorage()
Constructor.
Definition: GUICompleteSchemeStorage.cpp:44
GUICompleteSchemeStorage::add
void add(const GUIVisualizationSettings &scheme)
Adds a visualization scheme.
Definition: GUICompleteSchemeStorage.cpp:52
GUICompleteSchemeStorage::myLookFrom
Position myLookFrom
The default viewport.
Definition: GUICompleteSchemeStorage.h:140
GUICompleteSchemeStorage::myNumInitialSettings
int myNumInitialSettings
The number of settings which were present at startup.
Definition: GUICompleteSchemeStorage.h:137
GUIVisualizationSettings::personColorer
GUIColorer personColorer
The person colorer.
Definition: GUIVisualizationSettings.h:532
GUIVisualizationSettings::vehicleSize
GUIVisualizationSizeSettings vehicleSize
Definition: GUIVisualizationSettings.h:520
GUIVisualizationSettings::showRails
bool showRails
Information whether rails shall be drawn.
Definition: GUIVisualizationSettings.h:458
GUIVisualizationSettings::vehicleColorer
GUIColorer vehicleColorer
The vehicle colorer.
Definition: GUIVisualizationSettings.h:496
GUISettingsHandler.h
GUIVisualizationSettings::polyColorer
GUIColorer polyColorer
The polygon colorer.
Definition: GUIVisualizationSettings.h:613
RGBColor.h
OutputDevice_String::getString
std::string getString() const
Returns the current content as a string.
Definition: OutputDevice_String.cpp:43
GUIVisualizationSettings::junctionColorer
GUIColorer junctionColorer
The junction colorer.
Definition: GUIVisualizationSettings.h:566
GUICompleteSchemeStorage::getNames
const std::vector< std::string > & getNames() const
Returns a list of stored settings names.
Definition: GUICompleteSchemeStorage.cpp:99
RGBColor
Definition: RGBColor.h:39
GUIVisualizationSettings::backgroundColor
RGBColor backgroundColor
The background color to use.
Definition: GUIVisualizationSettings.h:417
GUIVisualizationSettings::save
void save(OutputDevice &dev) const
Writes the settings into an output device.
Definition: GUIVisualizationSettings.cpp:1197
GUICompleteSchemeStorage::getNumInitialSettings
int getNumInitialSettings() const
Returns the number of initial settings.
Definition: GUICompleteSchemeStorage.cpp:105
GUIVisualizationSettings::showLinkDecals
bool showLinkDecals
Information whether link textures (arrows) shall be drawn.
Definition: GUIVisualizationSettings.h:452
Position::set
void set(double x, double y)
set positions x and y
Definition: Position.h:86
GUIVisualizationSettings::SCHEME_NAME_SELECTION
static const std::string SCHEME_NAME_SELECTION
Definition: GUIVisualizationSettings.h:672
GUIVisualizationSizeSettings::constantSize
bool constantSize
whether the object shall be drawn with constant size regardless of zoom
Definition: GUIVisualizationSettings.h:109
GUIVisualizationSettings::vehicleQuality
int vehicleQuality
The quality of vehicle drawing.
Definition: GUIVisualizationSettings.h:499
GUIVisualizationSettings::showSublanes
bool showSublanes
Whether to show sublane boundaries.
Definition: GUIVisualizationSettings.h:476
ProcessError
Definition: UtilExceptions.h:39
Position
A point in 2D or 3D with translation and scaling methods.
Definition: Position.h:38
GUIVisualizationSettings::containerQuality
int containerQuality
The quality of container drawing.
Definition: GUIVisualizationSettings.h:552
gSchemeStorage
GUICompleteSchemeStorage gSchemeStorage
Definition: GUICompleteSchemeStorage.cpp:38
Position::x
double x() const
Returns the x-position.
Definition: Position.h:56
GUISettingsHandler
An XML-handler for visualisation schemes.
Definition: GUISettingsHandler.h:44
GUICompleteSchemeStorage::setDefault
void setDefault(const std::string &name)
Makes the scheme with the given name the default.
Definition: GUICompleteSchemeStorage.cpp:90
GUICompleteSchemeStorage
Storage for available visualization settings.
Definition: GUICompleteSchemeStorage.h:40
GUICompleteSchemeStorage::~GUICompleteSchemeStorage
~GUICompleteSchemeStorage()
Destructor.
Definition: GUICompleteSchemeStorage.cpp:47
GUIVisualizationSizeSettings::minSize
double minSize
The minimum size to draw this object.
Definition: GUIVisualizationSettings.h:103
GUICompleteSchemeStorage::myRotation
double myRotation
Definition: GUICompleteSchemeStorage.h:141
GUIVisualizationSettings::SCHEME_NAME_TYPE
static const std::string SCHEME_NAME_TYPE
Definition: GUIVisualizationSettings.h:673
toString
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
Definition: ToString.h:47
StringUtils.h
Position::y
double y() const
Returns the y-position.
Definition: Position.h:61
GUIVisualizationSettings::showLaneDirection
bool showLaneDirection
Whether to show direction indicators for lanes.
Definition: GUIVisualizationSettings.h:473
OutputDevice_String.h
MFXUtils.h
GUICompleteSchemeStorage::saveViewport
void saveViewport(const double x, const double y, const double z, const double rot)
Makes the given viewport the default.
Definition: GUICompleteSchemeStorage.cpp:227
GUIVisualizationSettings::personQuality
int personQuality
The quality of person drawing.
Definition: GUIVisualizationSettings.h:535
config.h
GUIVisualizationSettings::laneColorer
GUIColorer laneColorer
The lane colorer.
Definition: GUIVisualizationSettings.h:440
GUIVisualizationSettings::containerColorer
GUIColorer containerColorer
The container colorer.
Definition: GUIVisualizationSettings.h:549
GUIVisualizationSettings::spreadSuperposed
bool spreadSuperposed
Whether to improve visualisation of superposed (rail) edges.
Definition: GUIVisualizationSettings.h:479
GUICompleteSchemeStorage::init
void init(FXApp *app, bool netedit=false)
Initialises the storage with some default settings.
Definition: GUICompleteSchemeStorage.cpp:111
GUISUMOAbstractView::recenterView
virtual void recenterView()
recenters the view
Definition: GUISUMOAbstractView.cpp:783
GUIVisualizationSettings::poiColorer
GUIColorer poiColorer
The POI colorer.
Definition: GUIVisualizationSettings.h:601
GUIVisualizationSettings
Stores the information about how to visualize structures.
Definition: GUIVisualizationSettings.h:345
GUICompleteSchemeStorage::mySettings
std::map< std::string, GUIVisualizationSettings > mySettings
A map of settings referenced by their names.
Definition: GUICompleteSchemeStorage.h:128
GUICompleteSchemeStorage::setViewport
void setViewport(GUISUMOAbstractView *view)
Sets the default viewport.
Definition: GUICompleteSchemeStorage.cpp:234
GUICompleteSchemeStorage::mySortedSchemeNames
std::vector< std::string > mySortedSchemeNames
List of known setting names.
Definition: GUICompleteSchemeStorage.h:131
GUISettingsHandler::addSettings
std::string addSettings(GUISUMOAbstractView *view=0) const
Adds the parsed settings to the global list of settings.
Definition: GUISettingsHandler.cpp:368
GUICompleteSchemeStorage::contains
bool contains(const std::string &name) const
Returns the information whether a setting with the given name is stored.
Definition: GUICompleteSchemeStorage.cpp:74
GUICompleteSchemeStorage::get
GUIVisualizationSettings & get(const std::string &name)
Returns the named scheme.
Definition: GUICompleteSchemeStorage.cpp:62