SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
NBSign.cpp
Go to the documentation of this file.
1 /****************************************************************************/
7 // A class representing a street sign
8 /****************************************************************************/
9 // SUMO, Simulation of Urban MObility; see http://sumo.sourceforge.net/
10 // Copyright (C) 2001-2012 DLR (http://www.dlr.de/) and contributors
11 /****************************************************************************/
12 //
13 // This file is part of SUMO.
14 // SUMO is free software: you can redistribute it and/or modify
15 // it under the terms of the GNU General Public License as published by
16 // the Free Software Foundation, either version 3 of the License, or
17 // (at your option) any later version.
18 //
19 /****************************************************************************/
20 
21 
22 // ===========================================================================
23 // included modules
24 // ===========================================================================
25 #ifdef _MSC_VER
26 #include <windows_config.h>
27 #else
28 #include <config.h>
29 #endif
30 
31 #include <cassert>
32 #include <utils/common/ToString.h>
34 #include "NBEdge.h"
35 #include "NBSign.h"
36 
37 #ifdef CHECK_MEMORY_LEAKS
38 #include <foreign/nvwa/debug_new.h>
39 #endif // CHECK_MEMORY_LEAKS
40 
41 
42 // ===========================================================================
43 // static members
44 // ===========================================================================
46  {"speed limit", NBSign::SIGN_TYPE_SPEED},
47  {"yield", NBSign::SIGN_TYPE_YIELD},
48  {"on ramp", NBSign::SIGN_TYPE_ON_RAMP},
49  {"priority", NBSign::SIGN_TYPE_PRIORITY},
50  {"right before left", NBSign::SIGN_TYPE_RIGHT_BEFORE_LEFT},
51  {"roundabout", NBSign::SIGN_TYPE_ROUNDABOUT},
52  {"rail crossing", NBSign::SIGN_TYPE_RAIL_CROSSING},
53  {"slope", NBSign::SIGN_TYPE_SLOPE},
54  {"city limits", NBSign::SIGN_TYPE_CITY},
55  {"info", NBSign::SIGN_TYPE_INFO},
56 };
57 
59  signTypeStringsInitializaer, NBSign::SIGN_TYPE_INFO);
60 
61 
63  {"0.5,0.5,0.5", NBSign::SIGN_TYPE_SPEED},
64  {"1.0,0.0,0.0", NBSign::SIGN_TYPE_YIELD},
65  {"1.0,0.0,0.0", NBSign::SIGN_TYPE_ON_RAMP},
66  {"1.0,1.0,0.0", NBSign::SIGN_TYPE_PRIORITY},
67  {"1.0,0.6,0.0", NBSign::SIGN_TYPE_RIGHT_BEFORE_LEFT},
68  {"0.0,0.0,1.0", NBSign::SIGN_TYPE_ROUNDABOUT},
69  {"1.0,0.0,0.0", NBSign::SIGN_TYPE_RAIL_CROSSING},
70  {"0.5,0.5,0.5", NBSign::SIGN_TYPE_SLOPE},
71  {"0.5,0.5,0.5", NBSign::SIGN_TYPE_CITY},
72  {"0.5,0.5,0.5", NBSign::SIGN_TYPE_INFO},
73 };
74 
76  SignTypeColorsInitializaer, NBSign::SIGN_TYPE_INFO);
77 
78 // ===========================================================================
79 // member method definitions
80 // ===========================================================================
81 
82 NBSign::NBSign(SignType type, SUMOReal offset, const std::string label) :
83  myType(type),
84  myOffset(offset),
85  myLabel(label)
86 { }
87 
88 
90 
91 
92 void
93 NBSign::writeAsPOI(OutputDevice& into, const NBEdge* edge) const {
94  PositionVector shp = edge->getLanes()[0].shape;
95  shp.move2side(3);
97  into.openTag(SUMO_TAG_POI);
98  into.writeAttr(SUMO_ATTR_ID, edge->getID() + "." + toString(myOffset));
101  into.writeAttr(SUMO_ATTR_X, pos.x());
102  into.writeAttr(SUMO_ATTR_Y, pos.y());
103  into.writeAttr(SUMO_ATTR_ANGLE, 0); // XXX use road angle?
104  // @todo add image resources and default images for all signs
105  //into.writeAttr(SUMO_ATTR_IMGFILE, p->getImgFile());
106  //into.writeAttr(SUMO_ATTR_WIDTH, p->getWidth());
107  //into.writeAttr(SUMO_ATTR_HEIGHT, p->getHeight());
108  into.closeTag(true);
109 }
110 
111 
112 /****************************************************************************/
113