00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifdef _MSC_VER
00025 #include <windows_config.h>
00026 #else
00027 #include <config.h>
00028 #endif
00029
00030 #include <map>
00031 #include <vector>
00032 #include <guisim/GUILaneWrapper.h>
00033 #include <guisim/GUIEdge.h>
00034 #include <guisim/GUIVehicle.h>
00035 #include "GUIVisualizationSettings.h"
00036
00037 #ifdef CHECK_MEMORY_LEAKS
00038 #include <foreign/nvwa/debug_new.h>
00039 #endif // CHECK_MEMORY_LEAKS
00040
00041
00042
00043
00044
00045 GUIVisualizationSettings::GUIVisualizationSettings() throw()
00046 : name(""), antialiase(false), dither(false), vehicleQuality(0),
00047 backgroundColor(RGBColor((SUMOReal) 1, (SUMOReal) 1, (SUMOReal) 1)),
00048 showGrid(false), gridXSize(100), gridYSize(100),
00049 laneShowBorders(false), showLinkDecals(true), showRails(true),
00050 drawEdgeName(false), edgeNameSize(50),
00051 edgeNameColor(RGBColor((SUMOReal) 1, (SUMOReal) .5, (SUMOReal) 0)),
00052 drawInternalEdgeName(false), internalEdgeNameSize(25),
00053 internalEdgeNameColor(RGBColor((SUMOReal) .5, (SUMOReal) .25, (SUMOReal) 0)),
00054 hideConnectors(false),
00055 minVehicleSize(1), vehicleExaggeration(1), showBlinker(true),
00056 drawLaneChangePreference(false),
00057 drawVehicleName(false), vehicleNameSize(50),
00058 vehicleNameColor(RGBColor((SUMOReal) .8, (SUMOReal) .6, (SUMOReal) 0)),
00059 junctionMode(0), drawLinkTLIndex(false), drawLinkJunctionIndex(false),
00060 drawJunctionName(false), junctionNameSize(50),
00061 junctionNameColor(RGBColor((SUMOReal) 0, (SUMOReal) 1, (SUMOReal) .5)),
00062 showLane2Lane(false), addMode(0), minAddSize(1), addExaggeration(1),
00063 drawAddName(false), addNameSize(50),
00064 minPOISize(0), poiExaggeration(1), drawPOIName(false), poiNameSize(50),
00065 poiNameColor(RGBColor((SUMOReal) 1., (SUMOReal) 0, (SUMOReal) .5)),
00066 showSizeLegend(true) {
00067 }
00068
00069
00070 size_t
00071 GUIVisualizationSettings::getLaneEdgeMode() const {
00072 #ifdef HAVE_MESOSIM
00073 if (MSGlobals::gUseMesoSim) {
00074 return edgeColorer.getActive();
00075 }
00076 #endif
00077 return laneColorer.getActive();
00078 }
00079
00080
00081 GUIColorScheme&
00082 GUIVisualizationSettings::getLaneEdgeScheme() {
00083 #ifdef HAVE_MESOSIM
00084 if (MSGlobals::gUseMesoSim) {
00085 return edgeColorer.getScheme();
00086 }
00087 #endif
00088 return laneColorer.getScheme();
00089 }
00090
00091
00092 void
00093 GUIVisualizationSettings::save(OutputDevice &dev) const throw(IOError) {
00094 dev << "<viewsettings>\n";
00095 dev << " <scheme name=\"" << name << "\">\n";
00096 dev << " <opengl antialiase=\"" << antialiase << "\" dither=\"" << dither << "\"/>\n";
00097 dev << " <background backgroundColor=\"" << backgroundColor << "\"\n"
00098 << " showGrid=\"" << showGrid
00099 << "\" gridXSize=\"" << gridXSize << "\" gridYSize=\"" << gridYSize << "\"/>\n";
00100 dev << " <edges laneEdgeMode=\"" << getLaneEdgeMode()
00101 << "\" laneShowBorders=\"" << laneShowBorders
00102 << "\" showLinkDecals=\"" << showLinkDecals
00103 << "\" showRails=\"" << showRails << "\"\n"
00104 << " drawEdgeName=\"" << drawEdgeName
00105 << "\" edgeNameSize=\"" << edgeNameSize
00106 << "\" edgeNameColor=\"" << edgeNameColor << "\"\n"
00107 << " drawInternalEdgeName=\"" << drawInternalEdgeName
00108 << "\" internalEdgeNameSize=\"" << internalEdgeNameSize
00109 << "\" internalEdgeNameColor=\"" << internalEdgeNameColor
00110 << "\" hideConnectors=\"" << hideConnectors
00111 << "\">\n";
00112 laneColorer.save(dev);
00113 #ifdef HAVE_MESOSIM
00114 edgeColorer.save(dev);
00115 #endif
00116 dev << " </edges>\n";
00117
00118 dev << " <vehicles vehicleMode=\"" << vehicleColorer.getActive()
00119 << "\" vehicleQuality=\"" << vehicleQuality
00120 << "\" minVehicleSize=\"" << minVehicleSize
00121 << "\" vehicleExaggeration=\"" << vehicleExaggeration
00122 << "\" showBlinker=\"" << showBlinker << "\"\n"
00123 << " drawVehicleName=\"" << drawVehicleName
00124 << "\" vehicleNameSize=\"" << vehicleNameSize
00125 << "\" vehicleNameColor=\"" << vehicleNameColor << "\">\n";
00126 vehicleColorer.save(dev);
00127 dev << " </vehicles>\n";
00128
00129 dev << " <junctions junctionMode=\"" << junctionMode
00130 << "\" drawLinkTLIndex=\"" << drawLinkTLIndex
00131 << "\" drawLinkJunctionIndex=\"" << drawLinkJunctionIndex << "\"\n"
00132 << " drawJunctionName=\"" << drawJunctionName
00133 << "\" junctionNameSize=\"" << junctionNameSize
00134 << "\" junctionNameColor=\"" << junctionNameColor
00135 << "\" showLane2Lane=\"" << showLane2Lane << "\"/>\n";
00136
00137 dev << " <additionals addMode=\"" << addMode
00138 << "\" minAddSize=\"" << minAddSize
00139 << "\" addExaggeration=\"" << addExaggeration
00140 << "\" drawAddName=\"" << drawAddName
00141 << "\" addNameSize=\"" << addNameSize << "\"/>\n";
00142
00143 dev << " <pois poiExaggeration=\"" << poiExaggeration
00144 << "\" minPOISize=\"" << minPOISize
00145 << "\" drawPOIName=\"" << drawPOIName
00146 << "\" poiNameSize=\"" << poiNameSize
00147 << "\" poiNameColor=\"" << poiNameColor << "\"/>\n";
00148
00149 dev << " <legend showSizeLegend=\"" << showSizeLegend << "\"/>\n";
00150 dev << " </scheme>\n";
00151 dev << "</viewsettings>\n";
00152 }
00153
00154
00155 bool
00156 GUIVisualizationSettings::operator==(const GUIVisualizationSettings &v2) {
00157 if (antialiase!=v2.antialiase) return false;
00158 if (dither!=v2.dither) return false;
00159 if (backgroundColor!=v2.backgroundColor) return false;
00160 if (showBackgroundDecals!=v2.showBackgroundDecals) return false;
00161 if (showGrid!=v2.showGrid) return false;
00162 if (gridXSize!=v2.gridXSize) return false;
00163 if (gridYSize!=v2.gridYSize) return false;
00164
00165 #ifdef HAVE_MESOSIM
00166 if (!(edgeColorer==v2.edgeColorer)) return false;
00167 #endif
00168 if (!(laneColorer==v2.laneColorer)) return false;
00169 if (laneShowBorders!=v2.laneShowBorders) return false;
00170 if (showLinkDecals!=v2.showLinkDecals) return false;
00171 if (showRails!=v2.showRails) return false;
00172 if (drawEdgeName!=v2.drawEdgeName) return false;
00173 if (edgeNameSize!=v2.edgeNameSize) return false;
00174 if (edgeNameColor!=v2.edgeNameColor) return false;
00175 if (drawInternalEdgeName!=v2.drawInternalEdgeName) return false;
00176 if (internalEdgeNameSize!=v2.internalEdgeNameSize) return false;
00177 if (internalEdgeNameColor!=v2.internalEdgeNameColor) return false;
00178 if (hideConnectors!=v2.hideConnectors) return false;
00179
00180 if (!(vehicleColorer==v2.vehicleColorer)) return false;
00181 if (vehicleQuality!=v2.vehicleQuality) return false;
00182 if (minVehicleSize!=v2.minVehicleSize) return false;
00183 if (vehicleExaggeration!=v2.vehicleExaggeration) return false;
00184 if (showBlinker!=v2.showBlinker) return false;
00185 if (drawLaneChangePreference!=v2.drawLaneChangePreference) return false;
00186 if (drawVehicleName!=v2.drawVehicleName) return false;
00187 if (vehicleNameSize!=v2.vehicleNameSize) return false;
00188 if (vehicleNameColor!=v2.vehicleNameColor) return false;
00189
00190 if (junctionMode!=v2.junctionMode) return false;
00191 if (drawLinkTLIndex!=v2.drawLinkTLIndex) return false;
00192 if (drawLinkJunctionIndex!=v2.drawLinkJunctionIndex) return false;
00193 if (drawJunctionName!=v2.drawJunctionName) return false;
00194 if (junctionNameSize!=v2.junctionNameSize) return false;
00195 if (junctionNameColor!=v2.junctionNameColor) return false;
00196
00197 if (showLane2Lane!=v2.showLane2Lane) return false;
00198
00199 if (addMode!=v2.addMode) return false;
00200 if (minAddSize!=v2.minAddSize) return false;
00201 if (addExaggeration!=v2.addExaggeration) return false;
00202 if (drawAddName!=v2.drawAddName) return false;
00203 if (addNameSize!=v2.addNameSize) return false;
00204
00205 if (minPOISize!=v2.minPOISize) return false;
00206 if (poiExaggeration!=v2.poiExaggeration) return false;
00207 if (drawPOIName!=v2.drawPOIName) return false;
00208 if (poiNameSize!=v2.poiNameSize) return false;
00209 if (poiNameColor!=v2.poiNameColor) return false;
00210
00211 if (showSizeLegend!=v2.showSizeLegend) return false;
00212
00213 return true;
00214 }
00215
00216
00217
00218
00219