Eclipse SUMO - Simulation of Urban MObility
GUITextureSubSys.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-2020 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 /****************************************************************************/
18 // Helper for Gifs loading and usage
19 /****************************************************************************/
20 #include <config.h>
21 
22 #include <fx.h>
23 #include <cassert>
25 #include <utils/common/ToString.h>
27 
28 #include "GUITextureSubSys.h"
29 
30 #include "GNETexture_Lock.cpp"
32 #include "GNETexture_Empty.cpp"
34 #include "GNETexture_TLS.cpp"
35 #include "GNETexture_E3.cpp"
37 #include "GNETexture_Rerouter.cpp"
41 #include "GNETexture_Vaporizer.cpp"
45 #include "GNETexture_NotMoving.cpp"
47 #include "GNETexture_LaneBus.cpp"
49 #include "GNETexture_LaneBike.cpp"
50 
51 
52 // ===========================================================================
53 // static member variable definitions
54 // ===========================================================================
55 
57 
58 // ===========================================================================
59 // member definitions
60 // ===========================================================================
61 
63  myApp(a) {
64  // Fill map of textures
85 }
86 
87 
89 }
90 
91 
92 void
94  assert(myInstance == 0);
96 }
97 
98 
99 GUIGlID
101  // If texture isn't loaded, load it
102  if (myInstance->myTextures.at(which) == 0) {
103  switch (which) {
104  case GNETEXTURE_E3 :
105  myInstance->myTextures[which] = GUITexturesHelper::add(new FXGIFImage(myInstance->myApp, GNETexture_E3, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP));
106  break;
107  case GNETEXTURE_E3SELECTED :
108  myInstance->myTextures[which] = GUITexturesHelper::add(new FXGIFImage(myInstance->myApp, GNETexture_E3Selected, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP));
109  break;
110  case GNETEXTURE_EMPTY :
111  myInstance->myTextures[which] = GUITexturesHelper::add(new FXGIFImage(myInstance->myApp, GNETexture_Empty, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP));
112  break;
114  myInstance->myTextures[which] = GUITexturesHelper::add(new FXGIFImage(myInstance->myApp, GNETexture_EmptySelected, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP));
115  break;
116  case GNETEXTURE_LOCK :
117  myInstance->myTextures[which] = GUITexturesHelper::add(new FXGIFImage(myInstance->myApp, GNETexture_Lock, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP));
118  break;
120  myInstance->myTextures[which] = GUITexturesHelper::add(new FXGIFImage(myInstance->myApp, GNETexture_LockSelected, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP));
121  break;
122  case GNETEXTURE_NOTMOVING :
123  myInstance->myTextures[which] = GUITexturesHelper::add(new FXGIFImage(myInstance->myApp, GNETexture_NotMoving, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP));
124  break;
126  myInstance->myTextures[which] = GUITexturesHelper::add(new FXGIFImage(myInstance->myApp, GNETexture_NotMovingSelected, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP));
127  break;
128  case GNETEXTURE_REROUTER :
129  myInstance->myTextures[which] = GUITexturesHelper::add(new FXGIFImage(myInstance->myApp, GNETexture_Rerouter, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP));
130  break;
132  myInstance->myTextures[which] = GUITexturesHelper::add(new FXGIFImage(myInstance->myApp, GNETexture_RerouterSelected, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP));
133  break;
134  case GNETEXTURE_ROUTEPROBE :
135  myInstance->myTextures[which] = GUITexturesHelper::add(new FXGIFImage(myInstance->myApp, GNETexture_RouteProbe, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP));
136  break;
138  myInstance->myTextures[which] = GUITexturesHelper::add(new FXGIFImage(myInstance->myApp, GNETexture_RouteProbeSelected, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP));
139  break;
140  case GNETEXTURE_TLS :
141  myInstance->myTextures[which] = GUITexturesHelper::add(new FXGIFImage(myInstance->myApp, GNETexture_TLS, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP));
142  break;
143  case GNETEXTURE_VAPORIZER :
144  myInstance->myTextures[which] = GUITexturesHelper::add(new FXGIFImage(myInstance->myApp, GNETexture_Vaporizer, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP));
145  break;
147  myInstance->myTextures[which] = GUITexturesHelper::add(new FXGIFImage(myInstance->myApp, GNETexture_VaporizerSelected, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP));
148  break;
150  myInstance->myTextures[which] = GUITexturesHelper::add(new FXGIFImage(myInstance->myApp, GNETexture_VariableSpeedSign, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP));
151  break;
153  myInstance->myTextures[which] = GUITexturesHelper::add(new FXGIFImage(myInstance->myApp, GNETexture_VariableSpeedSignSelected, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP));
154  break;
155  case GNETEXTURE_LANEBIKE :
156  myInstance->myTextures[which] = GUITexturesHelper::add(new FXGIFImage(myInstance->myApp, GNETexture_LaneBike, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP));
157  break;
158  case GNETEXTURE_LANEBUS :
159  myInstance->myTextures[which] = GUITexturesHelper::add(new FXGIFImage(myInstance->myApp, GNETexture_LaneBus, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP));
160  break;
162  myInstance->myTextures[which] = GUITexturesHelper::add(new FXGIFImage(myInstance->myApp, GNETexture_LanePedestrian, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP));
163  break;
164  default:
165  throw ProcessError("Undefined texture");
166  }
167  }
168  // Return GLID associated to the texture
169  return myInstance->myTextures.at(which);
170 }
171 
172 
173 void
175  // Reset all textures
177  for (auto& i : myInstance->myTextures) {
178  i.second = 0;
179  }
180 }
181 
182 
183 void
185  delete myInstance;
186  myInstance = nullptr;
187 }
188 
189 
190 /****************************************************************************/
const unsigned char GNETexture_E3[]
const unsigned char GNETexture_E3Selected[]
const unsigned char GNETexture_Empty[]
const unsigned char GNETexture_EmptySelected[]
const unsigned char GNETexture_LaneBike[]
const unsigned char GNETexture_LaneBus[]
const unsigned char GNETexture_LanePedestrian[]
const unsigned char GNETexture_Lock[]
const unsigned char GNETexture_LockSelected[]
const unsigned char GNETexture_NotMoving[]
const unsigned char GNETexture_NotMovingSelected[]
const unsigned char GNETexture_Rerouter[]
const unsigned char GNETexture_RerouterSelected[]
const unsigned char GNETexture_RouteProbe[]
const unsigned char GNETexture_RouteProbeSelected[]
const unsigned char GNETexture_TLS[]
const unsigned char GNETexture_Vaporizer[]
const unsigned char GNETexture_VaporizerSelected[]
const unsigned char GNETexture_VariableSpeedSign[]
const unsigned char GNETexture_VariableSpeedSignSelected[]
unsigned int GUIGlID
Definition: GUIGlObject.h:40
GUITexture
An enumeration of gifs used by the gui applications.
Definition: GUITextures.h:31
@ GNETEXTURE_REROUTER
Definition: GUITextures.h:40
@ GNETEXTURE_LANEBUS
Definition: GUITextures.h:50
@ GNETEXTURE_EMPTYSELECTED
Definition: GUITextures.h:35
@ GNETEXTURE_NOTMOVING
Definition: GUITextures.h:38
@ GNETEXTURE_ROUTEPROBESELECTED
Definition: GUITextures.h:43
@ GNETEXTURE_TLS
Definition: GUITextures.h:44
@ GNETEXTURE_REROUTERSELECTED
Definition: GUITextures.h:41
@ GNETEXTURE_NOTMOVINGSELECTED
Definition: GUITextures.h:39
@ GNETEXTURE_LOCKSELECTED
Definition: GUITextures.h:37
@ GNETEXTURE_EMPTY
Definition: GUITextures.h:34
@ GNETEXTURE_VAPORIZER
Definition: GUITextures.h:45
@ GNETEXTURE_VARIABLESPEEDSIGNSELECTED
Definition: GUITextures.h:48
@ GNETEXTURE_LOCK
Definition: GUITextures.h:36
@ GNETEXTURE_VARIABLESPEEDSIGN
Definition: GUITextures.h:47
@ GNETEXTURE_LANEBIKE
Definition: GUITextures.h:49
@ GNETEXTURE_LANEPEDESTRIAN
Definition: GUITextures.h:51
@ GNETEXTURE_ROUTEPROBE
Definition: GUITextures.h:42
@ GNETEXTURE_VAPORIZERSELECTED
Definition: GUITextures.h:46
@ GNETEXTURE_E3SELECTED
Definition: GUITextures.h:33
@ GNETEXTURE_E3
Definition: GUITextures.h:32
static void close()
close GUITextureSubSys
static void resetTextures()
Reset textures.
std::map< GUITexture, GUIGlID > myTextures
vector with the Gifs
static void initTextures(FXApp *a)
Initiate GUITextureSubSys for textures.
~GUITextureSubSys()
destructor
static GUITextureSubSys * myInstance
instance of GUITextureSubSys
FXApp * myApp
@pointer to Fox App
static GUIGlID getTexture(GUITexture which)
returns a texture previously defined in the enum GUITexture
GUITextureSubSys(FXApp *a)
constructor private because is called by the static function init(FXApp* a
static GUIGlID add(FXImage *i)
Adds a texture to use.
static void clearTextures()
clears loaded textures