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 /****************************************************************************/
18 // Storage for available visualization settings
19 /****************************************************************************/
20 
21 
22 // ===========================================================================
23 // included modules
24 // ===========================================================================
25 #include <config.h>
26 
28 #include <utils/common/ToString.h>
30 #include <utils/common/RGBColor.h>
34 
35 
36 // ===========================================================================
37 // static variable definitions
38 // ===========================================================================
40 
41 
42 // ===========================================================================
43 // method definitions
44 // ===========================================================================
46 
47 
49 
50 
51 
52 void
54  std::string name = scheme.name;
55  if (std::find(mySortedSchemeNames.begin(), mySortedSchemeNames.end(), name) == mySortedSchemeNames.end()) {
56  mySortedSchemeNames.push_back(name);
57  }
58  mySettings[name] = scheme;
59 }
60 
61 
63 GUICompleteSchemeStorage::get(const std::string& name) {
64  return mySettings.find(name)->second;
65 }
66 
67 
70  return mySettings.find(myDefaultSettingName)->second;
71 }
72 
73 
74 bool
75 GUICompleteSchemeStorage::contains(const std::string& name) const {
76  return mySettings.find(name) != mySettings.end();
77 }
78 
79 
80 void
81 GUICompleteSchemeStorage::remove(const std::string& name) {
82  if (!contains(name)) {
83  return;
84  }
85  mySortedSchemeNames.erase(find(mySortedSchemeNames.begin(), mySortedSchemeNames.end(), name));
86  mySettings.erase(mySettings.find(name));
87 }
88 
89 
90 void
91 GUICompleteSchemeStorage::setDefault(const std::string& name) {
92  if (!contains(name)) {
93  return;
94  }
95  myDefaultSettingName = name;
96 }
97 
98 
99 const std::vector<std::string>&
101  return mySortedSchemeNames;
102 }
103 
104 
105 int
107  return myNumInitialSettings;
108 }
109 
110 
111 void
112 GUICompleteSchemeStorage::init(FXApp* app, bool netedit) {
113  {
114  GUIVisualizationSettings vs(netedit);
115  vs.name = "standard";
116  vs.laneShowBorders = true;
117  gSchemeStorage.add(vs);
118  }
119  {
120  GUIVisualizationSettings vs(netedit);
121  vs.name = "faster standard";
122  vs.laneShowBorders = false;
123  vs.showLinkDecals = false;
124  vs.showRails = false;
125  vs.showRails = false;
126  vs.showSublanes = false;
127  gSchemeStorage.add(vs);
128  }
129  {
130  GUIVisualizationSettings vs(netedit);
131  vs.name = "real world";
132  vs.vehicleQuality = 2;
133  vs.backgroundColor = RGBColor(51, 128, 51, 255);
134  vs.laneShowBorders = true;
135  vs.hideConnectors = true;
136  vs.vehicleSize.minSize = 0;
137  vs.personQuality = 2;
138  vs.containerQuality = 2;
139  vs.showSublanes = false;
140  gSchemeStorage.add(vs);
141  }
142  {
143  GUIVisualizationSettings vs(netedit);
144  vs.name = "rail";
145  vs.vehicleQuality = 2;
146  vs.showLaneDirection = true;
147  vs.spreadSuperposed = true;
148  vs.junctionSize.constantSize = true;
150  gSchemeStorage.add(vs);
151  }
152 
153  if (!netedit) {
154  GUIVisualizationSettings vs(netedit);
155  vs.name = "selection";
164  gSchemeStorage.add(vs);
165  }
167  // add saved settings
168  int noSaved = app->reg().readIntEntry("VisualizationSettings", "settingNo", 0);
169  for (int i = 0; i < noSaved; ++i) {
170  std::string name = "visset#" + toString(i);
171  std::string setting = app->reg().readStringEntry("VisualizationSettings", name.c_str(), "");
172  if (setting != "") {
173  GUIVisualizationSettings vs(netedit);
174 
175  vs.name = setting;
176  app->reg().readStringEntry("VisualizationSettings", name.c_str(), "");
177 
178  // add saved xml setting
179  int xmlSize = app->reg().readIntEntry(name.c_str(), "xmlSize", 0);
180  std::string content = "";
181  int index = 0;
182  while (xmlSize > 0) {
183  std::string part = app->reg().readStringEntry(name.c_str(), ("xml" + toString(index)).c_str(), "");
184  if (part == "") {
185  break;
186  }
187  content += part;
188  xmlSize -= (int) part.size();
189  index++;
190  }
191  if (content != "" && xmlSize == 0) {
192  try {
193  GUISettingsHandler handler(content, false, netedit);
194  handler.addSettings();
195  } catch (ProcessError&) { }
196  }
197  }
198  }
200  myLookFrom.set(0, 0, 0);
201 }
202 
203 
204 void
206  const std::vector<std::string>& names = getNames();
207  app->reg().writeIntEntry("VisualizationSettings", "settingNo", (FXint) names.size() - myNumInitialSettings);
208  int gidx = 0;
209  for (std::vector<std::string>::const_iterator i = names.begin() + myNumInitialSettings; i != names.end(); ++i, ++gidx) {
210  const GUIVisualizationSettings& item = mySettings.find(*i)->second;
211  std::string sname = "visset#" + toString(gidx);
212 
213  app->reg().writeStringEntry("VisualizationSettings", sname.c_str(), item.name.c_str());
215  item.save(dev);
216  std::string content = dev.getString();
217  app->reg().writeIntEntry(sname.c_str(), "xmlSize", (FXint)(content.size()));
218  const unsigned maxSize = 1500; // this is a fox limitation for registry entries
219  for (int i = 0; i < (int)content.size(); i += maxSize) {
220  const std::string b = content.substr(i, maxSize);
221  app->reg().writeStringEntry(sname.c_str(), ("xml" + toString(i / maxSize)).c_str(), b.c_str());
222  }
223  }
224 }
225 
226 
227 void
228 GUICompleteSchemeStorage::saveViewport(const double x, const double y, const double z, const double rot) {
229  myLookFrom.set(x, y, z);
230  myRotation = rot;
231 }
232 
233 
234 void
236  if (myLookFrom.z() > 0) {
237  // look straight down
239  } else {
240  view->recenterView();
241  }
242 }
243 
244 
245 /****************************************************************************/
246 
GUICompleteSchemeStorage.h
GUICompleteSchemeStorage::myDefaultSettingName
std::string myDefaultSettingName
Name of the default setting.
Definition: GUICompleteSchemeStorage.h:135
GUIVisualizationSettings::name
std::string name
The name of this setting.
Definition: GUIVisualizationSettings.h:397
GUIVisualizationSettings::edgeColorer
GUIColorer edgeColorer
The mesoscopic edge colorer.
Definition: GUIVisualizationSettings.h:429
GUISUMOAbstractView::setViewportFromToRot
virtual void setViewportFromToRot(const Position &lookFrom, const Position &lookAt, double rotation)
applies the given viewport settings
Definition: GUISUMOAbstractView.cpp:1328
ToString.h
GUIVisualizationSettings::hideConnectors
bool hideConnectors
flag to show or hidde connectors
Definition: GUIVisualizationSettings.h:462
GUICompleteSchemeStorage::getDefault
GUIVisualizationSettings & getDefault()
Returns the default scheme.
Definition: GUICompleteSchemeStorage.cpp:69
GUIVisualizationSettings::laneShowBorders
bool laneShowBorders
Information whether lane borders shall be drawn.
Definition: GUIVisualizationSettings.h:444
GUISUMOAbstractView
Definition: GUISUMOAbstractView.h:73
GUICompleteSchemeStorage::writeSettings
void writeSettings(FXApp *app)
Writes the current scheme into the registry.
Definition: GUICompleteSchemeStorage.cpp:205
GUIVisualizationSettings::junctionSize
GUIVisualizationSizeSettings junctionSize
Definition: GUIVisualizationSettings.h:569
OutputDevice_String
An output device that encapsulates an ofstream.
Definition: OutputDevice_String.h:40
GUIPropertySchemeStorage::setSchemeByName
void setSchemeByName(std::string name)
Definition: GUIPropertySchemeStorage.h:101
GUICompleteSchemeStorage::remove
void remove(const std::string &name)
Removes the setting with the given name.
Definition: GUICompleteSchemeStorage.cpp:81
Position::z
double z() const
Returns the z-position.
Definition: Position.h:67
GUICompleteSchemeStorage::GUICompleteSchemeStorage
GUICompleteSchemeStorage()
Constructor.
Definition: GUICompleteSchemeStorage.cpp:45
GUICompleteSchemeStorage::add
void add(const GUIVisualizationSettings &scheme)
Adds a visualization scheme.
Definition: GUICompleteSchemeStorage.cpp:53
GUICompleteSchemeStorage::myLookFrom
Position myLookFrom
The default viewport.
Definition: GUICompleteSchemeStorage.h:141
GUICompleteSchemeStorage::myNumInitialSettings
int myNumInitialSettings
The number of settings which were present at startup.
Definition: GUICompleteSchemeStorage.h:138
GUIVisualizationSettings::personColorer
GUIColorer personColorer
The person colorer.
Definition: GUIVisualizationSettings.h:523
GUIVisualizationSettings::vehicleSize
GUIVisualizationSizeSettings vehicleSize
Definition: GUIVisualizationSettings.h:511
GUIVisualizationSettings::showRails
bool showRails
Information whether rails shall be drawn.
Definition: GUIVisualizationSettings.h:456
GUIVisualizationSettings::vehicleColorer
GUIColorer vehicleColorer
The vehicle colorer.
Definition: GUIVisualizationSettings.h:490
GUISettingsHandler.h
GUIVisualizationSettings::polyColorer
GUIColorer polyColorer
The polygon colorer.
Definition: GUIVisualizationSettings.h:604
RGBColor.h
OutputDevice_String::getString
std::string getString() const
Returns the current content as a string.
Definition: OutputDevice_String.cpp:44
GUIVisualizationSettings::junctionColorer
GUIColorer junctionColorer
The junction colorer.
Definition: GUIVisualizationSettings.h:557
GUICompleteSchemeStorage::getNames
const std::vector< std::string > & getNames() const
Returns a list of stored settings names.
Definition: GUICompleteSchemeStorage.cpp:100
RGBColor
Definition: RGBColor.h:40
GUIVisualizationSettings::backgroundColor
RGBColor backgroundColor
The background color to use.
Definition: GUIVisualizationSettings.h:415
GUIVisualizationSettings::save
void save(OutputDevice &dev) const
Writes the settings into an output device.
Definition: GUIVisualizationSettings.cpp:1178
GUICompleteSchemeStorage::getNumInitialSettings
int getNumInitialSettings() const
Returns the number of initial settings.
Definition: GUICompleteSchemeStorage.cpp:106
GUIVisualizationSettings::showLinkDecals
bool showLinkDecals
Information whether link textures (arrows) shall be drawn.
Definition: GUIVisualizationSettings.h:450
Position::set
void set(double x, double y)
set positions x and y
Definition: Position.h:87
GUIVisualizationSettings::SCHEME_NAME_SELECTION
static const std::string SCHEME_NAME_SELECTION
Definition: GUIVisualizationSettings.h:644
GUIVisualizationSizeSettings::constantSize
bool constantSize
whether the object shall be drawn with constant size regardless of zoom
Definition: GUIVisualizationSettings.h:110
GUIVisualizationSettings::vehicleQuality
int vehicleQuality
The quality of vehicle drawing.
Definition: GUIVisualizationSettings.h:493
GUIVisualizationSettings::showSublanes
bool showSublanes
Whether to show sublane boundaries.
Definition: GUIVisualizationSettings.h:474
ProcessError
Definition: UtilExceptions.h:40
Position
A point in 2D or 3D with translation and scaling methods.
Definition: Position.h:39
GUIVisualizationSettings::containerQuality
int containerQuality
The quality of container drawing.
Definition: GUIVisualizationSettings.h:543
gSchemeStorage
GUICompleteSchemeStorage gSchemeStorage
Definition: GUICompleteSchemeStorage.cpp:39
Position::x
double x() const
Returns the x-position.
Definition: Position.h:57
GUISettingsHandler
An XML-handler for visualisation schemes.
Definition: GUISettingsHandler.h:45
GUICompleteSchemeStorage::setDefault
void setDefault(const std::string &name)
Makes the scheme with the given name the default.
Definition: GUICompleteSchemeStorage.cpp:91
GUICompleteSchemeStorage
Storage for available visualization settings.
Definition: GUICompleteSchemeStorage.h:41
GUICompleteSchemeStorage::~GUICompleteSchemeStorage
~GUICompleteSchemeStorage()
Destructor.
Definition: GUICompleteSchemeStorage.cpp:48
GUIVisualizationSizeSettings::minSize
double minSize
The minimum size to draw this object.
Definition: GUIVisualizationSettings.h:104
GUICompleteSchemeStorage::myRotation
double myRotation
Definition: GUICompleteSchemeStorage.h:142
GUIVisualizationSettings::SCHEME_NAME_TYPE
static const std::string SCHEME_NAME_TYPE
Definition: GUIVisualizationSettings.h:645
toString
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
Definition: ToString.h:48
StringUtils.h
Position::y
double y() const
Returns the y-position.
Definition: Position.h:62
GUIVisualizationSettings::showLaneDirection
bool showLaneDirection
Whether to show direction indicators for lanes.
Definition: GUIVisualizationSettings.h:471
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:228
GUIVisualizationSettings::personQuality
int personQuality
The quality of person drawing.
Definition: GUIVisualizationSettings.h:526
config.h
GUIVisualizationSettings::laneColorer
GUIColorer laneColorer
The lane colorer.
Definition: GUIVisualizationSettings.h:438
GUIVisualizationSettings::containerColorer
GUIColorer containerColorer
The container colorer.
Definition: GUIVisualizationSettings.h:540
GUIVisualizationSettings::spreadSuperposed
bool spreadSuperposed
Whether to improve visualisation of superposed (rail) edges.
Definition: GUIVisualizationSettings.h:477
GUICompleteSchemeStorage::init
void init(FXApp *app, bool netedit=false)
Initialises the storage with some default settings.
Definition: GUICompleteSchemeStorage.cpp:112
GUISUMOAbstractView::recenterView
virtual void recenterView()
recenters the view
Definition: GUISUMOAbstractView.cpp:763
GUIVisualizationSettings::poiColorer
GUIColorer poiColorer
The POI colorer.
Definition: GUIVisualizationSettings.h:592
GUIVisualizationSettings
Stores the information about how to visualize structures.
Definition: GUIVisualizationSettings.h:346
GUICompleteSchemeStorage::mySettings
std::map< std::string, GUIVisualizationSettings > mySettings
A map of settings referenced by their names.
Definition: GUICompleteSchemeStorage.h:129
GUICompleteSchemeStorage::setViewport
void setViewport(GUISUMOAbstractView *view)
Sets the default viewport.
Definition: GUICompleteSchemeStorage.cpp:235
GUICompleteSchemeStorage::mySortedSchemeNames
std::vector< std::string > mySortedSchemeNames
List of known setting names.
Definition: GUICompleteSchemeStorage.h:132
GUISettingsHandler::addSettings
std::string addSettings(GUISUMOAbstractView *view=0) const
Adds the parsed settings to the global list of settings.
Definition: GUISettingsHandler.cpp:370
GUICompleteSchemeStorage::contains
bool contains(const std::string &name) const
Returns the information whether a setting with the given name is stored.
Definition: GUICompleteSchemeStorage.cpp:75
GUICompleteSchemeStorage::get
GUIVisualizationSettings & get(const std::string &name)
Returns the named scheme.
Definition: GUICompleteSchemeStorage.cpp:63