44 #ifdef CHECK_MEMORY_LEAKS
46 #endif // CHECK_MEMORY_LEAKS
63 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
65 for (PositionVector::ContType ::const_iterator i = v.
begin(); i != v.
end(); i++) {
67 glVertex2d(p.
x(), p.
y());
71 glVertex2d(p.
x(), p.
y());
81 glTranslated(beg.
x(), beg.
y(), 0);
82 glRotated(rot, 0, 0, 1);
84 glVertex2d(-width, 0);
85 glVertex2d(-width, -visLength);
86 glVertex2d(width, -visLength);
98 glTranslated((beg2.
x() + beg1.
x())*.5, (beg2.
y() + beg1.
y())*.5, 0);
99 glRotated(rot, 0, 0, 1);
101 glVertex2d(-width, 0);
102 glVertex2d(-width, -visLength);
103 glVertex2d(width, -visLength);
104 glVertex2d(width, 0);
112 const std::vector<SUMOReal> &rots,
113 const std::vector<SUMOReal> &lengths,
116 for (
int i = 0; i < e; i++) {
125 const std::vector<SUMOReal> &rots,
126 const std::vector<SUMOReal> &lengths,
128 int minS = (
int)
MIN4(rots.size(), lengths.size(), geom1.
size(), geom2.
size());
129 for (
int i = 0; i < minS; i++) {
138 for (
int i = 0; i < e; i++) {
152 glTranslated(beg.
x(), beg.
y(), 0);
153 glRotated(rot, 0, 0, 1);
156 glVertex2d(0, -visLength);
166 glTranslated((beg2.
x() + beg1.
x())*.5, (beg2.
y() + beg1.
y())*.5, 0);
167 glRotated(rot, 0, 0, 1);
170 glVertex2d(0, -visLength);
181 for (
int i = 0; i < e; ++i) {
182 glVertex2d(v[i].x(), v[i].y());
183 glVertex2d(v[i + 1].x(), v[i + 1].y());
193 glVertex2d(beg.
x(), beg.
y());
194 glVertex2d(end.
x(), end.
y());
209 for (
int i = 0; i < 360; i += 10) {
215 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
216 std::pair<SUMOReal, SUMOReal> p1 =
218 for (
int i = (
int)(beg / 10); i < steps && (36.0 / (
SUMOReal) steps * (
SUMOReal) i) * 10 < end; i++) {
219 const std::pair<SUMOReal, SUMOReal> &p2 =
221 glBegin(GL_TRIANGLES);
222 glVertex2d(p1.first * width, p1.second * width);
223 glVertex2d(p2.first * width, p2.second * width);
228 const std::pair<SUMOReal, SUMOReal> &p2 =
230 glBegin(GL_TRIANGLES);
231 glVertex2d(p1.first * width, p1.second * width);
232 glVertex2d(p2.first * width, p2.second * width);
248 for (
int i = 0; i < 360; i += 10) {
254 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
255 std::pair<SUMOReal, SUMOReal> p1 =
257 for (
int i = (
int)(beg / 10); i < steps && (36.0 / (
SUMOReal) steps * (
SUMOReal) i) * 10 < end; i++) {
258 const std::pair<SUMOReal, SUMOReal> &p2 =
260 glBegin(GL_TRIANGLES);
261 glVertex2d(p1.first * width, p1.second * width);
262 glVertex2d(p2.first * width, p2.second * width);
263 glVertex2d(p2.first * iwidth, p2.second * iwidth);
265 glVertex2d(p2.first * iwidth, p2.second * iwidth);
266 glVertex2d(p1.first * iwidth, p1.second * iwidth);
267 glVertex2d(p1.first * width, p1.second * width);
271 const std::pair<SUMOReal, SUMOReal> &p2 =
273 glBegin(GL_TRIANGLES);
274 glVertex2d(p1.first * width, p1.second * width);
275 glVertex2d(p2.first * width, p2.second * width);
276 glVertex2d(p2.first * iwidth, p2.second * iwidth);
278 glVertex2d(p2.first * iwidth, p2.second * iwidth);
279 glVertex2d(p1.first * iwidth, p1.second * iwidth);
280 glVertex2d(p1.first * width, p1.second * width);
288 if (l.
length() < tLength) {
289 tWidth = tWidth * l.
length() / tLength;
294 glTranslated(rl.p1().x(), rl.p1().y(), 0);
296 glBegin(GL_TRIANGLES);
297 glVertex2d(0, -tLength);
298 glVertex2d(-tWidth, 0);
299 glVertex2d(+tWidth, 0);
314 glGetDoublev(GL_CURRENT_COLOR, current);
315 return RGBColor(current[0], current[1], current[2]);
324 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
326 glTranslated(pos.
x(), pos.
y(), layer);
330 glRotated(180, 1, 0, 0);
331 glRotated(angle, 0, 0, 1);
332 glTranslated(-w / 2., 0.4, 0);
343 if (boxAngle > 360) {
348 const SUMOReal borderWidth = size / 20;
349 const SUMOReal boxHeight = size * 0.8;
350 const SUMOReal boxWidth = stringWidth + size / 2;
352 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
353 glTranslated(0, 0, layer);
356 left.
sub(boxWidth / 2, -boxHeight / 2.7);
358 left.
add(borderWidth * 1.5, 0);
360 glTranslated(0, 0, 0.01);
361 drawBoxLine(left, boxAngle, boxWidth - 3 * borderWidth, boxHeight - 2 * borderWidth);
366 glTranslated(pos.
x(), pos.
y(), 0.01);
369 glRotated(180, 1, 0, 0);
370 glRotated(angle, 0, 0, 1);
371 glTranslated(-stringWidth / 2., 0, 0);