SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
GUIIconSubSys.cpp
Go to the documentation of this file.
1 /****************************************************************************/
9 // Helper for icons loading and usage
10 /****************************************************************************/
11 // SUMO, Simulation of Urban MObility; see http://sumo.dlr.de/
12 // Copyright (C) 2001-2016 DLR (http://www.dlr.de/) and contributors
13 /****************************************************************************/
14 //
15 // This file is part of SUMO.
16 // SUMO is free software: you can redistribute it and/or modify
17 // it under the terms of the GNU General Public License as published by
18 // the Free Software Foundation, either version 3 of the License, or
19 // (at your option) any later version.
20 //
21 /****************************************************************************/
22 
23 
24 // ===========================================================================
25 // included modules
26 // ===========================================================================
27 #ifdef _MSC_VER
28 #include <windows_config.h>
29 #else
30 #include <config.h>
31 #endif
32 
33 #include <fx.h>
34 #include <cassert>
35 #include "GUIIcons.h"
36 #include "GUIIconSubSys.h"
37 
38 #include "filesave.xpm"
39 #include "fileopen.xpm"
40 #include "netopen.xpm"
41 #include "shapeopen.xpm"
42 #include "play.xpm"
43 #include "stop.xpm"
44 #include "step.xpm"
45 #include "new_window.xpm"
46 #include "document.xpm"
47 
48 #include "app_tracker.xpm"
49 #include "app_finder.xpm"
50 #include "app_breakpoints.xpm"
51 #include "app_tlstracker.xpm"
52 #include "app_table.xpm"
53 #include "app_selector.xpm"
54 
55 #include "locate.xpm"
56 #include "locate_junction.xpm"
57 #include "locate_edge.xpm"
58 #include "locate_vehicle.xpm"
59 #include "locate_person.xpm"
60 #include "locate_tls.xpm"
61 #include "locate_add.xpm"
62 #include "locate_poi.xpm"
63 #include "locate_poly.xpm"
64 
65 #include "green_edge.xpm"
66 #include "yellow_edge.xpm"
67 #include "green_vehicle.xpm"
68 #include "yellow_vehicle.xpm"
69 #include "green_person.xpm"
70 #include "yellow_person.xpm"
71 
72 #include "colorwheel.xpm"
73 #include "savedb.xpm"
74 #include "removedb.xpm"
75 #include "recenter_view.xpm"
76 #include "allow_rotation.xpm"
77 #include "show_tooltips.xpm"
78 #include "magnify.xpm"
79 #include "zoomstyle.xpm"
80 #include "yes.xpm"
81 #include "no.xpm"
82 
83 #include "extract_streets.xpm"
84 #include "dilate.xpm"
85 #include "erode.xpm"
86 #include "opening.xpm"
87 #include "closing.xpm"
88 #include "erase_stains.xpm"
89 #include "close_gaps.xpm"
90 #include "skeletonize.xpm"
91 #include "rarify.xpm"
92 #include "create_graph.xpm"
93 #include "open_bmp_dialog.xpm"
94 #include "eyedrop.xpm"
95 #include "rubber1x.xpm"
96 #include "rubber2x.xpm"
97 #include "rubber3x.xpm"
98 #include "rubber4x.xpm"
99 #include "rubber5x.xpm"
100 #include "paintbrush1x.xpm"
101 #include "paintbrush2x.xpm"
102 #include "paintbrush3x.xpm"
103 #include "paintbrush4x.xpm"
104 #include "paintbrush5x.xpm"
105 #include "edit_graph.xpm"
106 
107 
108 #include "flag.cpp"
109 #include "flag_plus.cpp"
110 #include "flag_minus.cpp"
111 #include "windows_cascade.xpm"
112 #include "windows_tile_vertically.xpm"
113 #include "windows_tile_horizontally.xpm"
114 #include "reload.xpm"
115 #include "manip.cpp"
116 #include "camera.xpm"
117 
118 #include "undo.xpm"
119 #include "redo.xpm"
120 #include "netedit.xpm"
121 #include "lock.xpm"
122 #include "add.xpm"
123 #include "remove.xpm"
124 #include "neteditarrow.xpm"
125 
126 #include "lanebike.xpm"
127 #include "lanebus.xpm"
128 #include "lanepedestrian.xpm"
129 
130 #include "cut.xpm"
131 #include "ext.xpm"
132 
133 
134 static const char* empty_xpm[] = {
135  " 1 1 1 1",
136  ". c None",
137  "."
138 };
139 
140 
141 #ifdef CHECK_MEMORY_LEAKS
142 #include <foreign/nvwa/debug_new.h>
143 #endif // CHECK_MEMORY_LEAKS
144 
145 
146 // ===========================================================================
147 // static member variable definitions
148 // ===========================================================================
149 
151 
152 // ===========================================================================
153 // member definitions
154 // ===========================================================================
155 
157  // build icons
158  myIcons[ICON_APP] = new FXXPMIcon(a, document_xpm);
159  myIcons[ICON_EMPTY] = new FXXPMIcon(a, empty_xpm);
160  myIcons[ICON_OPEN_CONFIG] = new FXXPMIcon(a, fileopen_xpm);
161  myIcons[ICON_OPEN_NET] = new FXXPMIcon(a, netopen_xpm);
162  myIcons[ICON_OPEN_SHAPES] = new FXXPMIcon(a, shapeopen_xpm);
163  myIcons[ICON_OPEN_ADDITIONALS] = new FXXPMIcon(a, shapeopen_xpm);
164  myIcons[ICON_RELOAD] = new FXXPMIcon(a, reload_xpm);
165  myIcons[ICON_SAVE] = new FXXPMIcon(a, filesave_xpm);
166  myIcons[ICON_CLOSE] = 0;//new FXXPMIcon(a, close);
167  myIcons[ICON_START] = new FXXPMIcon(a, play_xpm);
168  myIcons[ICON_STOP] = new FXXPMIcon(a, stop_xpm);
169  myIcons[ICON_STEP] = new FXXPMIcon(a, step_xpm);
170  myIcons[ICON_MICROVIEW] = new FXXPMIcon(a, new_window_xpm);
171  myIcons[ICON_LAGGRVIEW] = new FXXPMIcon(a, new_window_xpm);
172  myIcons[ICON_RECENTERVIEW] = new FXXPMIcon(a, recenter_view_xpm);
173  myIcons[ICON_ALLOWROTATION] = new FXXPMIcon(a, allow_rotation_xpm);
174  myIcons[ICON_EDITVIEWPORT] = new FXXPMIcon(a, magnify_xpm);
175  myIcons[ICON_ZOOMSTYLE] = new FXXPMIcon(a, zoomstyle_xpm);
176 
177  myIcons[ICON_APP_TRACKER] = new FXXPMIcon(a, app_tracker_xpm);
178  myIcons[ICON_APP_FINDER] = new FXXPMIcon(a, app_finder_xpm);
179  myIcons[ICON_APP_BREAKPOINTS] = new FXXPMIcon(a, app_breakpoints_xpm);
180  myIcons[ICON_APP_TLSTRACKER] = new FXXPMIcon(a, app_tlstracker_xpm);
181  myIcons[ICON_APP_TABLE] = new FXXPMIcon(a, app_table_xpm);
182  myIcons[ICON_APP_SELECTOR] = new FXXPMIcon(a, app_selector_xpm);
183 
184  myIcons[ICON_LOCATE] = new FXXPMIcon(a, locate_xpm);
185  myIcons[ICON_LOCATEJUNCTION] = new FXXPMIcon(a, locate_junction_xpm);
186  myIcons[ICON_LOCATEEDGE] = new FXXPMIcon(a, locate_edge_xpm);
187  myIcons[ICON_LOCATEVEHICLE] = new FXXPMIcon(a, locate_vehicle_xpm);
188  myIcons[ICON_LOCATEPERSON] = new FXXPMIcon(a, locate_person_xpm);
189  myIcons[ICON_LOCATETLS] = new FXXPMIcon(a, locate_tls_xpm);
190  myIcons[ICON_LOCATEADD] = new FXXPMIcon(a, locate_add_xpm);
191  myIcons[ICON_LOCATEPOI] = new FXXPMIcon(a, locate_poi_xpm);
192  myIcons[ICON_LOCATEPOLY] = new FXXPMIcon(a, locate_poly_xpm);
193 
194  myIcons[ICON_GREENEDGE] = new FXXPMIcon(a, green_edge_xpm);
195  myIcons[ICON_GREENVEHICLE] = new FXXPMIcon(a, green_vehicle_xpm);
196  myIcons[ICON_GREENPERSON] = new FXXPMIcon(a, green_person_xpm);
197  myIcons[ICON_YELLOWEDGE] = new FXXPMIcon(a, yellow_edge_xpm);
198  myIcons[ICON_YELLOWVEHICLE] = new FXXPMIcon(a, yellow_vehicle_xpm);
199  myIcons[ICON_YELLOWPERSON] = new FXXPMIcon(a, yellow_person_xpm);
200 
201  myIcons[ICON_COLORWHEEL] = new FXXPMIcon(a, colorwheel_xpm);
202  myIcons[ICON_SAVEDB] = new FXXPMIcon(a, savedb_xpm);
203  myIcons[ICON_REMOVEDB] = new FXXPMIcon(a, removedb_xpm);
204  myIcons[ICON_SHOWTOOLTIPS] = new FXXPMIcon(a, show_tooltips_xpm);
205  myIcons[ICON_YES] = new FXXPMIcon(a, yes_xpm);
206  myIcons[ICON_NO] = new FXXPMIcon(a, no_xpm);
207  myIcons[ICON_FLAG] = new FXGIFIcon(a, flag);
208  myIcons[ICON_FLAG_PLUS] = new FXGIFIcon(a, flag_plus);
209  myIcons[ICON_FLAG_MINUS] = new FXGIFIcon(a, flag_minus);
210  // window arrangements
211  myIcons[ICON_WINDOWS_CASCADE] = new FXXPMIcon(a, windows_cascade_xpm);
212  myIcons[ICON_WINDOWS_TILE_VERT] = new FXXPMIcon(a, windows_tile_vertically_xpm);
213  myIcons[ICON_WINDOWS_TILE_HORI] = new FXXPMIcon(a, windows_tile_horizontally_xpm);
214  // manipulate
215  myIcons[ICON_MANIP] = new FXGIFIcon(a, manip);
216  myIcons[ICON_CAMERA] = new FXXPMIcon(a, camera_xpm);
217  myIcons[ICON_EXTRACT] = new FXXPMIcon(a, extract_streets_xpm);
218  myIcons[ICON_DILATE] = new FXXPMIcon(a, dilate_xpm);
219  myIcons[ICON_ERODE] = new FXXPMIcon(a, erode_xpm);
220  myIcons[ICON_OPENING] = new FXXPMIcon(a, opening_xpm);
221  myIcons[ICON_CLOSING] = new FXXPMIcon(a, closing_xpm);
222  myIcons[ICON_ERASE_STAINS] = new FXXPMIcon(a, erase_stains_xpm);
223  myIcons[ICON_CLOSE_GAPS] = new FXXPMIcon(a, close_gaps_xpm);
224  myIcons[ICON_SKELETONIZE] = new FXXPMIcon(a, skeletonize_xpm);
225  myIcons[ICON_RARIFY] = new FXXPMIcon(a, rarify_xpm);
226  myIcons[ICON_CREATE_GRAPH] = new FXXPMIcon(a, create_graph_xpm);
227  myIcons[ICON_OPEN_BMP_DIALOG] = new FXXPMIcon(a, open_bmp_dialog_xpm);
228  myIcons[ICON_EYEDROP] = new FXXPMIcon(a, eyedrop_xpm);
229  myIcons[ICON_PAINTBRUSH1X] = new FXXPMIcon(a, paintbrush1x_xpm);
230  myIcons[ICON_PAINTBRUSH2X] = new FXXPMIcon(a, paintbrush2x_xpm);
231  myIcons[ICON_PAINTBRUSH3X] = new FXXPMIcon(a, paintbrush3x_xpm);
232  myIcons[ICON_PAINTBRUSH4X] = new FXXPMIcon(a, paintbrush4x_xpm);
233  myIcons[ICON_PAINTBRUSH5X] = new FXXPMIcon(a, paintbrush5x_xpm);
234  myIcons[ICON_RUBBER1X] = new FXXPMIcon(a, rubber1x_xpm);
235  myIcons[ICON_RUBBER2X] = new FXXPMIcon(a, rubber2x_xpm);
236  myIcons[ICON_RUBBER3X] = new FXXPMIcon(a, rubber3x_xpm);
237  myIcons[ICON_RUBBER4X] = new FXXPMIcon(a, rubber4x_xpm);
238  myIcons[ICON_RUBBER5X] = new FXXPMIcon(a, rubber5x_xpm);
239  myIcons[ICON_EDITGRAPH] = new FXXPMIcon(a, edit_graph_xpm);
240 
241  myIcons[ICON_UNDO] = new FXXPMIcon(a, undo_xpm);
242  myIcons[ICON_REDO] = new FXXPMIcon(a, redo_xpm);
243  myIcons[ICON_NETEDIT] = new FXXPMIcon(a, netedit_xpm);
244  myIcons[ICON_LOCK] = new FXXPMIcon(a, lock_xpm);
245  myIcons[ICON_ADD] = new FXXPMIcon(a, add_xpm);
246  myIcons[ICON_REMOVE] = new FXXPMIcon(a, remove_xpm);
247  myIcons[ICON_NETEDITARROW] = new FXXPMIcon(a, netEditArrow_xmp);
248 
249  myIcons[ICON_LANEPEDESTRIAN] = new FXXPMIcon(a, lanepedestrian);
250  myIcons[ICON_LANEBUS] = new FXXPMIcon(a, lanebus);
251  myIcons[ICON_LANEBIKE] = new FXXPMIcon(a, lanebike);
252 
253 
254  myIcons[ICON_EXT] = new FXXPMIcon(a, ext_xpm);
255  myIcons[ICON_CUT_SWELL] = new FXXPMIcon(a, cut_xpm);
256 
257  // ... and create them
258  for (int i = 0; i < ICON_MAX; i++) {
259  if (myIcons[i] != 0) {
260  myIcons[i]->create();
261  }
262  }
263 }
264 
265 
267  for (int i = 0; i < ICON_MAX; i++) {
268  delete myIcons[i];
269  }
270 }
271 
272 
273 void
275  assert(myInstance == 0);
276  myInstance = new GUIIconSubSys(a);
277 }
278 
279 
280 FXIcon*
282  return myInstance->myIcons[which];
283 }
284 
285 
286 void
288  delete myInstance;
289  myInstance = 0;
290 }
291 
292 
293 /****************************************************************************/
294 
GUIIcon
An enumeration of icons used by the gui applications.
Definition: GUIIcons.h:43
const unsigned char flag[]
Definition: flag.cpp:24
static void init(FXApp *a)
Initiate GUIIconSubSys.
const unsigned char flag_plus[]
Definition: flag_plus.cpp:24
const unsigned char manip[]
Definition: manip.cpp:24
static GUIIconSubSys * myInstance
instance of GUIIconSubSys
Definition: GUIIconSubSys.h:62
FXIcon * myIcons[ICON_MAX]
vector with the icons
Definition: GUIIconSubSys.h:65
static void close()
close GUIIconSubSys
~GUIIconSubSys()
destructor
static const char * empty_xpm[]
GUIIconSubSys(FXApp *a)
constructor
const unsigned char flag_minus[]
Definition: flag_minus.cpp:23
static FXIcon * getIcon(GUIIcon which)
returns a icon previously defined in the enum GUIIcon