Ticket #8490: RoadAttributes.mapcss

File RoadAttributes.mapcss, 238.8 KB (added by imagic, 13 years ago)

Patched version of the style

Line 
1meta
2{
3 title: "Lane and road attributes";
4 description: "Visualization of lanes, width, turn lanes, changing the lane, destination, lighting and street lamps, sidewalk, cycletracks, bicycle lanes, bus lanes, psv lanes.";
5 link: "http://josm.openstreetmap.de/wiki/Styles/Lane_and_Road_Attributes";
6 author: "Martin Vonwald";
7 version: "1.0-patched-[[revision]]_[[date]]";
8 license: "CC-BY-SA";
9 min-josm-version: "5714";
10}
11
12meta[lang=de]
13{
14 title: "Fahrspur- und Straßenattribute";
15 description: "Anzeige von Fahrspuren, Breite, Abbiegespuren, Spurwechsel, Zielangaben, Beleuchtung inkl. Straßenlampen, Gehsteig/Bürgersteig, Radwege, Fahrradspuren, Busspuren, Öffi-Spuren.";
16}
17
18
19/***************************************************************************************************************************************************/
20/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
21/* Global settings and initialization */
22/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
23/***************************************************************************************************************************************************/
24way
25{
26 /* Settings: change if necessary */
27 style_right_hand_traffic: yes;
28 style_lane_opacity: 0.5;
29 style_ground_opacity: 0.5;
30 style_markings_opacity: 0.9;
31 style_show_warnings: yes;
32 style_show_errors: yes;
33 style_show_disputed: no;
34
35 /* Color of the sidewalk: none (ignored), sidewalk only, cycletrack only, sidewalk and cycletrack */
36 style_sidewalk_color: eval(list(#000000,#808080,#8080C0,#C08080));
37
38 /* Color of the lane if bicycle=designated */
39 style_bicycle_color: #8080C0;
40
41 /* Color of the dashes if lane is access=no */
42 style_noaccess_color: red;
43
44 /* Color of the dashes if lane is psv=designated */
45 style_psv_color: lightgreen;
46
47 /* Color of the dashes if lane is bus=designated */
48 style_bus_color: lightgreen;
49}
50
51/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
52/* Decide which roads should be rendered */
53/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
54way[lanes][!leisure],
55way[lanes:forward],
56way[lanes:backward],
57way[turn:lanes],way[turn:lanes:forward],way[turn:lanes:backward],way[turn:lanes:both_ways],
58way[change:lanes],way[change:lanes:forward],way[change:lanes:backward],way[change:lanes:both_ways],
59way[sidewalk][highway],
60way[cycleway=track],way[cycleway:left],way[cycleway:right],way[cycleway:both],
61way[destination],way[destination:forward],way[destination:backward]
62{ ok: yes; }
63
64/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
65/* One-ways */
66/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
67way[is_prop_set(ok)] { oneway_type: 0; }
68way[is_prop_set(ok)][oneway?] { oneway_type: 1; }
69way[is_prop_set(ok)][oneway=-1] { oneway_type: -1; }
70way[is_prop_set(ok)][junction=roundabout][!oneway] { oneway_type: 1; }
71
72/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
73/* Overrule left-hand/right-hand traffic */
74/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
75way[driving_side]
76{
77 style_right_hand_traffic: eval((tag(driving_side)="left")?no:yes);
78}
79
80/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
81/* Pixel per metre (on average) */
82/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
83*|z17 { pixel_per_metre: 1.25; }
84*|z18 { pixel_per_metre: 2.5; }
85*|z19 { pixel_per_metre: 5; }
86*|z20 { pixel_per_metre: 10; }
87*|z21 { pixel_per_metre: 20; }
88*|z22- { pixel_per_metre: 40; }
89
90/***************************************************************************************************************************************************/
91/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
92/* Colors */
93/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
94/***************************************************************************************************************************************************/
95way[is_prop_set(ok)]
96{
97 /* Base color of the carriage way */
98 ground-color: #404040;
99
100 /* Individual colors for each direction */
101 color_forward: eval(rgb(red(prop(ground-color)) ,green(prop(ground-color))+0.1,blue(prop(ground-color)) ));
102 color_backward: eval(rgb(red(prop(ground-color))+0.1,green(prop(ground-color)) ,blue(prop(ground-color)) ));
103 color_bothways: eval(rgb(red(prop(ground-color)) ,green(prop(ground-color)) ,blue(prop(ground-color))+0.1));
104}
105
106/***************************************************************************************************************************************************/
107/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
108/* Lane initializiation */
109/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
110/***************************************************************************************************************************************************/
111way|z17- {} /* ATTENTION: For whatever reason this is needed, otherwise the following won't be interpreted correctly */
112way|z17-[is_prop_set(ok)]
113{
114 change_forward_1_left: yes; change_forward_1_right: yes;
115 change_forward_2_left: yes; change_forward_2_right: yes;
116 change_forward_3_left: yes; change_forward_3_right: yes;
117 change_forward_4_left: yes; change_forward_4_right: yes;
118 change_forward_5_left: yes; change_forward_5_right: yes;
119 change_forward_6_left: yes; change_forward_6_right: yes;
120 change_forward_7_left: yes; change_forward_7_right: yes;
121 change_forward_8_left: yes; change_forward_8_right: yes;
122
123 change_backward_1_left: yes; change_backward_1_right: yes;
124 change_backward_2_left: yes; change_backward_2_right: yes;
125 change_backward_3_left: yes; change_backward_3_right: yes;
126 change_backward_4_left: yes; change_backward_4_right: yes;
127 change_backward_5_left: yes; change_backward_5_right: yes;
128 change_backward_6_left: yes; change_backward_6_right: yes;
129 change_backward_7_left: yes; change_backward_7_right: yes;
130 change_backward_8_left: yes; change_backward_8_right: yes;
131
132 change_bothways_1_left: yes; change_bothways_1_right: yes;
133 change_bothways_2_left: yes; change_bothways_2_right: yes;
134 change_bothways_3_left: yes; change_bothways_3_right: yes;
135 change_bothways_4_left: yes; change_bothways_4_right: yes;
136
137 color_forward_1: prop(color_forward);
138 color_forward_2: prop(color_forward);
139 color_forward_3: prop(color_forward);
140 color_forward_4: prop(color_forward);
141 color_forward_5: prop(color_forward);
142 color_forward_6: prop(color_forward);
143 color_forward_7: prop(color_forward);
144 color_forward_8: prop(color_forward);
145
146 color_backward_1: prop(color_backward);
147 color_backward_2: prop(color_backward);
148 color_backward_3: prop(color_backward);
149 color_backward_4: prop(color_backward);
150 color_backward_5: prop(color_backward);
151 color_backward_6: prop(color_backward);
152 color_backward_7: prop(color_backward);
153 color_backward_8: prop(color_backward);
154
155 color_bothways_1: prop(color_bothways);
156 color_bothways_2: prop(color_bothways);
157 color_bothways_3: prop(color_bothways);
158 color_bothways_4: prop(color_bothways);
159
160 tag_lanes_all_min: 9999; tag_lanes_all_max: 0;
161 tag_lanes_fwd_min: 9999; tag_lanes_fwd_max: 0;
162 tag_lanes_bwd_min: 9999; tag_lanes_bwd_max: 0;
163 tag_lanes_both_min: 9999; tag_lanes_both_max: 0;
164
165}
166
167/***************************************************************************************************************************************************/
168/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
169/* Determine allowed lane changes */
170/* TODO: change:lanes without oneway, but only with values yes or no */
171/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
172/***************************************************************************************************************************************************/
173/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
174/* Error checking */
175/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
176way["change"]
177{
178 data_error: eval(regexp_test("^(yes|no|only_left|only_right|not_left|not_right)$",tag("change"))?prop(data_error):"invalid change value");
179}
180way["change:forward"]
181{
182 data_error: eval(regexp_test("^(yes|no|only_left|only_right|not_left|not_right)$",tag("change:forward"))?prop(data_error):"invalid change:forward value");
183}
184way["change:backward"]
185{
186 data_error: eval(regexp_test("^(yes|no|only_left|only_right|not_left|not_right)$",tag("change:backward"))?prop(data_error):"invalid change:backward value");
187}
188way["change:both_ways"]
189{
190 data_error: eval(regexp_test("^(yes|no|only_left|only_right|not_left|not_right)$",tag("change:both_ways"))?prop(data_error):"invalid change:both_ways value");
191}
192way["change:lanes"][!(prop(oneway_type)=0)]
193{
194 data_error: eval(regexp_test("^(yes|no|only_left|only_right|not_left|not_right|\\|)*$",tag("change:lanes"))?prop(data_error):"invalid change:lanes value");
195}
196way["change:lanes"][prop(oneway_type)=0]
197{
198 data_error: eval(regexp_test("^(yes|no|\\|)*$",tag("change:lanes"))?prop(data_error):"invalid change:lanes value");
199}
200way["change:lanes:forward"]
201{
202 data_error: eval(regexp_test("^(yes|no|only_left|only_right|not_left|not_right|\\|)*$",tag("change:lanes:forward"))?prop(data_error):"invalid change:lanes:forward value");
203}
204way["change:lanes:backward"]
205{
206 data_error: eval(regexp_test("^(yes|no|only_left|only_right|not_left|not_right|\\|)*$",tag("change:lanes:backward"))?prop(data_error):"invalid change:lanes:backward value");
207}
208way["change:lanes:both_ways"]
209{
210 data_error: eval(regexp_test("^(yes|no|only_left|only_right|not_left|not_right|\\|)*$",tag("change:lanes:both_ways"))?prop(data_error):"invalid change:lanes:both_ways value");
211}
212
213/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
214/* Forward lanes */
215/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
216way|z17-[is_prop_set(ok)]["change:lanes:forward"],
217way|z17-[is_prop_set(ok)]["change:forward"],
218way|z17-[is_prop_set(ok)]["change:lanes"][prop(oneway_type)=1],
219way|z17-[is_prop_set(ok)]["change"][prop(oneway_type)=1]
220{
221 temp: eval(cond(has_tag_key("change:lanes"),tag("change:lanes"),cond(has_tag_key("change"),tag("change"),
222 cond(has_tag_key("change:lanes:forward"),tag("change:lanes:forward"),tag("change:forward")))));
223 temp_list: eval(split("|",prop(temp)));
224 temp_length: eval(length(prop(temp_list)));
225 change_forward_1_left: eval((prop(temp_length)>0) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),0)));
226 change_forward_1_right: eval((prop(temp_length)>0) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),0)));
227 change_forward_2_left: eval((prop(temp_length)>1) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),1)));
228 change_forward_2_right: eval((prop(temp_length)>1) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),1)));
229 change_forward_3_left: eval((prop(temp_length)>2) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),2)));
230 change_forward_3_right: eval((prop(temp_length)>2) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),2)));
231 change_forward_4_left: eval((prop(temp_length)>3) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),3)));
232 change_forward_4_right: eval((prop(temp_length)>3) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),3)));
233 change_forward_5_left: eval((prop(temp_length)>4) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),4)));
234 change_forward_5_right: eval((prop(temp_length)>4) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),4)));
235 change_forward_6_left: eval((prop(temp_length)>5) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),5)));
236 change_forward_6_right: eval((prop(temp_length)>5) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),5)));
237 change_forward_7_left: eval((prop(temp_length)>6) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),6)));
238 change_forward_7_right: eval((prop(temp_length)>6) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),6)));
239 change_forward_8_left: eval((prop(temp_length)>7) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),7)));
240 change_forward_8_right: eval((prop(temp_length)>7) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),7)));
241
242 /* Lane count based on :lanes values */
243 tag_lanes_all_min: eval(has_tag_key("change:lanes")?min(prop(tag_lanes_all_min),prop(temp_length)):prop(tag_lanes_all_min));
244 tag_lanes_all_max: eval(has_tag_key("change:lanes")?max(prop(tag_lanes_all_max),prop(temp_length)):prop(tag_lanes_all_max));
245 tag_lanes_fwd_min: eval(has_tag_key("change:lanes:forward")?min(prop(tag_lanes_fwd_min),prop(temp_length)):prop(tag_lanes_fwd_min));
246 tag_lanes_fwd_max: eval(has_tag_key("change:lanes:forward")?max(prop(tag_lanes_fwd_max),prop(temp_length)):prop(tag_lanes_fwd_max));
247}
248
249/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
250/* Backward lanes */
251/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
252way|z17-[is_prop_set(ok)]["change:lanes:backward"],
253way|z17-[is_prop_set(ok)]["change:backward"],
254way|z17-[is_prop_set(ok)]["change:lanes"][prop(oneway_type)=(-1)],
255way|z17-[is_prop_set(ok)]["change"][prop(oneway_type)=(-1)]
256{
257 temp: eval(cond(has_tag_key("change:lanes"),tag("change:lanes"),cond(has_tag_key("change"),tag("change"),
258 cond(has_tag_key("change:lanes:backward"),tag("change:lanes:backward"),tag("change:backward")))));
259 temp_list: eval(split("|",prop(temp)));
260 temp_length: eval(length(prop(temp_list)));
261 change_lanes_bwd: eval(length(prop(temp_list)));
262 change_backward_1_left: eval((prop(temp_length)>0) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),0)));
263 change_backward_1_right: eval((prop(temp_length)>0) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),0)));
264 change_backward_2_left: eval((prop(temp_length)>1) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),1)));
265 change_backward_2_right: eval((prop(temp_length)>1) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),1)));
266 change_backward_3_left: eval((prop(temp_length)>2) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),2)));
267 change_backward_3_right: eval((prop(temp_length)>2) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),2)));
268 change_backward_4_left: eval((prop(temp_length)>3) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),3)));
269 change_backward_4_right: eval((prop(temp_length)>3) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),3)));
270 change_backward_5_left: eval((prop(temp_length)>4) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),4)));
271 change_backward_5_right: eval((prop(temp_length)>4) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),4)));
272 change_backward_6_left: eval((prop(temp_length)>5) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),5)));
273 change_backward_6_right: eval((prop(temp_length)>5) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),5)));
274 change_backward_7_left: eval((prop(temp_length)>6) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),6)));
275 change_backward_7_right: eval((prop(temp_length)>6) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),6)));
276 change_backward_8_left: eval((prop(temp_length)>7) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),7)));
277 change_backward_8_right: eval((prop(temp_length)>7) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),7)));
278
279 /* Lane count based on :lanes values */
280 tag_lanes_bwd_min: eval(has_tag_key("change:lanes:backward")?min(prop(tag_lanes_bwd_min),prop(temp_length)):prop(tag_lanes_bwd_min));
281 tag_lanes_bwd_max: eval(has_tag_key("change:lanes:backward")?max(prop(tag_lanes_bwd_max),prop(temp_length)):prop(tag_lanes_bwd_max));
282}
283
284/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
285/* Bothways lanes */
286/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
287way|z17-[is_prop_set(ok)]["change:lanes:both_ways"],
288way|z17-[is_prop_set(ok)]["change:both_ways"]
289{
290 temp: eval(cond(has_tag_key("change:lanes:both_ways"),tag("change:lanes:both_ways"),tag("change:both_ways")));
291 temp_list: eval(split("|",prop(temp)));
292 temp_length: eval(length(prop(temp_list)));
293
294 change_lanes_bth: eval(length(prop(temp_list)));
295 change_bothways_1_left: eval((prop(temp_length)>0) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),0)));
296 change_bothways_1_right: eval((prop(temp_length)>0) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),0)));
297 change_bothways_2_left: eval((prop(temp_length)>1) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),1)));
298 change_bothways_2_right: eval((prop(temp_length)>1) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),1)));
299 change_bothways_3_left: eval((prop(temp_length)>2) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),2)));
300 change_bothways_3_right: eval((prop(temp_length)>2) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),2)));
301 change_bothways_4_left: eval((prop(temp_length)>3) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),3)));
302 change_bothways_4_right: eval((prop(temp_length)>3) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),3)));
303
304 /* Lane count based on :lanes values */
305 tag_lanes_both_min: eval(has_tag_key("change:lanes:both_ways")?min(prop(tag_lanes_both_min),prop(temp_length)):prop(tag_lanes_both_min));
306 tag_lanes_both_max: eval(has_tag_key("change:lanes:both_ways")?max(prop(tag_lanes_both_max),prop(temp_length)):prop(tag_lanes_both_max));
307}
308
309/***************************************************************************************************************************************************/
310/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
311/* Determine turning lanes */
312/* TODO: rendering of "reverse" is missing */
313/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
314/***************************************************************************************************************************************************/
315/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
316/* Forward lanes */
317/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
318way|z17-[is_prop_set(ok)]
319{
320 /* Pixel matrix 9x24; numbers are off/on/off/on/off; 0.01 is - more or less - ignored */
321 turn_matrix:
322 list(
323 "",
324 list(list(24,0.01,0.01,0.01,0.01),list(24,0.01,0.01,0.01,0.01),list(15,1,8,0.01,0.01),list(15,2,7,0.01,0.01),list(6,12,6,0.01,0.01),list(15,2,7,0.01,0.01),list(15,1,8,0.01,0.01),list(24,0.01,0.01,0.01,0.01),list(24,0.01,0.01,0.01,0.01)),
325 list(list(11,1,12,0.01,0.01),list(10,3,11,0.01,0.01),list(9,5,10,0.01,0.01),list(11,1,12,0.01,0.01),list(6,6,12,0.01,0.01),list(24,0.01,0.01,0.01,0.01),list(24,0.01,0.01,0.01,0.01),list(24,0.01,0.01,0.01,0.01),list(24,0.01,0.01,0.01,0.01)),
326 list(list(11,1,12,0.01,0.01),list(10,3,11,0.01,0.01),list(9,5,1,1,8),list(11,1,3,2,7),list(6,12,6,0.01,0.01),list(15,2,7,0.01,0.01),list(15,1,8,0.01,0.01),list(24,0.01,0.01,0.01,0.01),list(24,0.01,0.01,0.01,0.01)),
327 list(list(24,0.01,0.01,0.01,0.01),list(24,0.01,0.01,0.01,0.01),list(24,0.01,0.01,0.01,0.01),list(24,0.01,0.01,0.01,0.01),list(6,6,12,0.01,0.01),list(11,1,12,0.01,0.01),list(9,5,10,0.01,0.01),list(10,3,11,0.01,0.01),list(11,1,12,0.01,0.01)),
328 list(list(24,0.01,0.01,0.01,0.01),list(24,0.01,0.01,0.01,0.01),list(15,1,8,0.01,0.01),list(15,2,7,0.01,0.01),list(6,12,6,0.01,0.01),list(11,1,3,2,7),list(9,5,1,1,8),list(10,3,11,0.01,0.01),list(11,1,12,0.01,0.01)),
329 list(list(11,1,12,0.01,0.01),list(10,3,11,0.01,0.01),list(9,5,10,0.01,0.01),list(11,1,12,0.01,0.01),list(6,6,12,0.01,0.01),list(11,1,12,0.01,0.01),list(9,5,10,0.01,0.01),list(10,3,11,0.01,0.01),list(11,1,12,0.01,0.01)),
330 list(list(11,1,12,0.01,0.01),list(10,3,11,0.01,0.01),list(9,5,1,1,8),list(11,1,3,2,7),list(6,12,6,0.01,0.01),list(11,1,3,2,7),list(9,5,1,1,8),list(10,3,11,0.01,0.01),list(11,1,12,0.01,0.01))
331 );
332}
333
334
335way|z17-[is_prop_set(ok)]["turn:lanes:forward"],
336way|z17-[is_prop_set(ok)]["turn:forward"],
337way|z17-[is_prop_set(ok)]["turn:lanes"][prop(oneway_type)=1],
338way|z17-[is_prop_set(ok)]["turn"][prop(oneway_type)=1]
339{
340 temp: eval(cond(has_tag_key("turn:lanes"),tag("turn:lanes"),
341 cond(has_tag_key("turn"),tag("turn"),
342 cond(has_tag_key("turn:lanes:forward"),tag("turn:lanes:forward"),
343 tag("turn:forward")
344 ))));
345 data_error: eval(regexp_test("^(none|through|left|slight_left|sharp_left|right|slight_right|sharp_right|merge_to_left|merge_to_right|reverse|;|\\|)*$",prop(temp))?prop(data_error):"invalid forward turn lanes");
346 temp_list: eval(split("|",prop(temp)));
347 temp_length: eval(length(prop(temp_list)));
348
349 /* Binary coded: through=1, left=2, right=4 => result is index in the turn_matrix list*/
350 turn_forward_1: eval(length((prop(temp_length)>0)?(concat(regexp_test(".*left.*",get(prop(temp_list),0))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),0))?"t":"",regexp_test(".*right.*",get(prop(temp_list),0))?"rrrr":"")):""));
351 turn_forward_2: eval(length((prop(temp_length)>1)?(concat(regexp_test(".*left.*",get(prop(temp_list),1))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),1))?"t":"",regexp_test(".*right.*",get(prop(temp_list),1))?"rrrr":"")):""));
352 turn_forward_3: eval(length((prop(temp_length)>2)?(concat(regexp_test(".*left.*",get(prop(temp_list),2))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),2))?"t":"",regexp_test(".*right.*",get(prop(temp_list),2))?"rrrr":"")):""));
353 turn_forward_4: eval(length((prop(temp_length)>3)?(concat(regexp_test(".*left.*",get(prop(temp_list),3))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),3))?"t":"",regexp_test(".*right.*",get(prop(temp_list),3))?"rrrr":"")):""));
354 turn_forward_5: eval(length((prop(temp_length)>4)?(concat(regexp_test(".*left.*",get(prop(temp_list),4))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),4))?"t":"",regexp_test(".*right.*",get(prop(temp_list),4))?"rrrr":"")):""));
355 turn_forward_6: eval(length((prop(temp_length)>5)?(concat(regexp_test(".*left.*",get(prop(temp_list),5))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),5))?"t":"",regexp_test(".*right.*",get(prop(temp_list),5))?"rrrr":"")):""));
356 turn_forward_7: eval(length((prop(temp_length)>6)?(concat(regexp_test(".*left.*",get(prop(temp_list),6))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),6))?"t":"",regexp_test(".*right.*",get(prop(temp_list),6))?"rrrr":"")):""));
357 turn_forward_8: eval(length((prop(temp_length)>7)?(concat(regexp_test(".*left.*",get(prop(temp_list),7))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),7))?"t":"",regexp_test(".*right.*",get(prop(temp_list),7))?"rrrr":"")):""));
358
359 /* Get the relevant code from the list or unset the property*/
360 turn_forward_1: eval((prop(turn_forward_1)>0)?get(prop(turn_matrix),prop(turn_forward_1)):prop(unset_property));
361 turn_forward_2: eval((prop(turn_forward_2)>0)?get(prop(turn_matrix),prop(turn_forward_2)):prop(unset_property));
362 turn_forward_3: eval((prop(turn_forward_3)>0)?get(prop(turn_matrix),prop(turn_forward_3)):prop(unset_property));
363 turn_forward_4: eval((prop(turn_forward_4)>0)?get(prop(turn_matrix),prop(turn_forward_4)):prop(unset_property));
364 turn_forward_5: eval((prop(turn_forward_5)>0)?get(prop(turn_matrix),prop(turn_forward_5)):prop(unset_property));
365 turn_forward_6: eval((prop(turn_forward_6)>0)?get(prop(turn_matrix),prop(turn_forward_6)):prop(unset_property));
366 turn_forward_7: eval((prop(turn_forward_7)>0)?get(prop(turn_matrix),prop(turn_forward_7)):prop(unset_property));
367 turn_forward_8: eval((prop(turn_forward_8)>0)?get(prop(turn_matrix),prop(turn_forward_8)):prop(unset_property));
368
369 /* Lane count based on :lanes values */
370 tag_lanes_all_min: eval(has_tag_key("turn:lanes")?min(prop(tag_lanes_all_min),prop(temp_length)):prop(tag_lanes_all_min));
371 tag_lanes_all_max: eval(has_tag_key("turn:lanes")?max(prop(tag_lanes_all_max),prop(temp_length)):prop(tag_lanes_all_max));
372 tag_lanes_fwd_min: eval(has_tag_key("turn:lanes:forward")?min(prop(tag_lanes_fwd_min),prop(temp_length)):prop(tag_lanes_fwd_min));
373 tag_lanes_fwd_max: eval(has_tag_key("turn:lanes:forward")?max(prop(tag_lanes_fwd_max),prop(temp_length)):prop(tag_lanes_fwd_max));
374}
375
376
377/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
378/* Backward lanes */
379/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
380way|z17-[is_prop_set(ok)]["turn:lanes:backward"],
381way|z17-[is_prop_set(ok)]["turn:backward"],
382way|z17-[is_prop_set(ok)]["turn:lanes"][prop(oneway_type)=(-1)],
383way|z17-[is_prop_set(ok)]["turn"][prop(oneway_type)=(-1)]
384{
385 temp: eval(cond(has_tag_key("turn:lanes"),tag("turn:lanes"),
386 cond(has_tag_key("turn"),tag("turn"),
387 cond(has_tag_key("turn:lanes:backward"),tag("turn:lanes:backward"),
388 tag("turn:backward")
389 ))));
390 data_error: eval(regexp_test("^(none|through|left|slight_left|sharp_left|right|slight_right|sharp_right|merge_to_left|merge_to_right|reverse|;|\\|)*$",prop(temp))?prop(data_error):"invalid backward turn lanes");
391 temp_list: eval(split("|",prop(temp)));
392 temp_length: eval(length(prop(temp_list)));
393
394 /* Binary coded: through=1, left=2, right=4 => result is index in the turn_matrix list */
395 turn_backward_1: eval(length((prop(temp_length)>0)?(concat(regexp_test(".*left.*",get(prop(temp_list),0))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),0))?"t":"",regexp_test(".*right.*",get(prop(temp_list),0))?"rrrr":"")):""));
396 turn_backward_2: eval(length((prop(temp_length)>1)?(concat(regexp_test(".*left.*",get(prop(temp_list),1))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),1))?"t":"",regexp_test(".*right.*",get(prop(temp_list),1))?"rrrr":"")):""));
397 turn_backward_3: eval(length((prop(temp_length)>2)?(concat(regexp_test(".*left.*",get(prop(temp_list),2))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),2))?"t":"",regexp_test(".*right.*",get(prop(temp_list),2))?"rrrr":"")):""));
398 turn_backward_4: eval(length((prop(temp_length)>3)?(concat(regexp_test(".*left.*",get(prop(temp_list),3))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),3))?"t":"",regexp_test(".*right.*",get(prop(temp_list),3))?"rrrr":"")):""));
399 turn_backward_5: eval(length((prop(temp_length)>4)?(concat(regexp_test(".*left.*",get(prop(temp_list),4))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),4))?"t":"",regexp_test(".*right.*",get(prop(temp_list),4))?"rrrr":"")):""));
400 turn_backward_6: eval(length((prop(temp_length)>5)?(concat(regexp_test(".*left.*",get(prop(temp_list),5))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),5))?"t":"",regexp_test(".*right.*",get(prop(temp_list),5))?"rrrr":"")):""));
401 turn_backward_7: eval(length((prop(temp_length)>6)?(concat(regexp_test(".*left.*",get(prop(temp_list),6))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),6))?"t":"",regexp_test(".*right.*",get(prop(temp_list),6))?"rrrr":"")):""));
402 turn_backward_8: eval(length((prop(temp_length)>7)?(concat(regexp_test(".*left.*",get(prop(temp_list),7))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),7))?"t":"",regexp_test(".*right.*",get(prop(temp_list),7))?"rrrr":"")):""));
403
404 /* Get the relevant code from the list or unset the property */
405 turn_backward_1: eval((prop(turn_backward_1)>0)?get(prop(turn_matrix),prop(turn_backward_1)):prop(unset_property));
406 turn_backward_2: eval((prop(turn_backward_2)>0)?get(prop(turn_matrix),prop(turn_backward_2)):prop(unset_property));
407 turn_backward_3: eval((prop(turn_backward_3)>0)?get(prop(turn_matrix),prop(turn_backward_3)):prop(unset_property));
408 turn_backward_4: eval((prop(turn_backward_4)>0)?get(prop(turn_matrix),prop(turn_backward_4)):prop(unset_property));
409 turn_backward_5: eval((prop(turn_backward_5)>0)?get(prop(turn_matrix),prop(turn_backward_5)):prop(unset_property));
410 turn_backward_6: eval((prop(turn_backward_6)>0)?get(prop(turn_matrix),prop(turn_backward_6)):prop(unset_property));
411 turn_backward_7: eval((prop(turn_backward_7)>0)?get(prop(turn_matrix),prop(turn_backward_7)):prop(unset_property));
412 turn_backward_8: eval((prop(turn_backward_8)>0)?get(prop(turn_matrix),prop(turn_backward_8)):prop(unset_property));
413
414 /* Lane count based on :lanes values */
415 tag_lanes_bwd_min: eval(has_tag_key("turn:lanes:backward")?min(prop(tag_lanes_bwd_min),prop(temp_length)):prop(tag_lanes_bwd_min));
416 tag_lanes_bwd_max: eval(has_tag_key("turn:lanes:backward")?max(prop(tag_lanes_bwd_max),prop(temp_length)):prop(tag_lanes_bwd_max));
417}
418
419/***************************************************************************************************************************************************/
420/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
421/* Lane access (no and designated) */
422/* The property designated_color_xxx will be overwritten by later rules */
423/* TODO: both_ways is not implemented */
424/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
425/***************************************************************************************************************************************************/
426/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
427/* Access=no forward lanes */
428/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
429way|z17-[is_prop_set(ok)]["access:lanes:forward"],
430way|z17-[is_prop_set(ok)]["access:forward"],
431way|z17-[is_prop_set(ok)]["access:lanes"][prop(oneway_type)=1],
432way|z17-[is_prop_set(ok)]["access"][prop(oneway_type)=1]
433{
434 temp: eval(cond(has_tag_key("access:lanes"),tag("access:lanes"),
435 cond(has_tag_key("access"),tag("access"),
436 cond(has_tag_key("access:lanes:forward"),tag("access:lanes:forward"),
437 tag("access:forward")
438 ))));
439 temp_list: eval(split("|",prop(temp)));
440 temp_length: eval(length(prop(temp_list)));
441 designated_color_forward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="no") || (get(prop(temp_list),0)="private")))?prop(style_noaccess_color):prop(designated_color_forward_1));
442 designated_color_forward_2: eval(((prop(temp_length)>0) && ((get(prop(temp_list),1)="no") || (get(prop(temp_list),1)="private")))?prop(style_noaccess_color):prop(designated_color_forward_2));
443 designated_color_forward_3: eval(((prop(temp_length)>0) && ((get(prop(temp_list),2)="no") || (get(prop(temp_list),2)="private")))?prop(style_noaccess_color):prop(designated_color_forward_3));
444 designated_color_forward_4: eval(((prop(temp_length)>0) && ((get(prop(temp_list),3)="no") || (get(prop(temp_list),3)="private")))?prop(style_noaccess_color):prop(designated_color_forward_4));
445 designated_color_forward_5: eval(((prop(temp_length)>0) && ((get(prop(temp_list),4)="no") || (get(prop(temp_list),4)="private")))?prop(style_noaccess_color):prop(designated_color_forward_5));
446 designated_color_forward_6: eval(((prop(temp_length)>0) && ((get(prop(temp_list),5)="no") || (get(prop(temp_list),5)="private")))?prop(style_noaccess_color):prop(designated_color_forward_6));
447 designated_color_forward_7: eval(((prop(temp_length)>0) && ((get(prop(temp_list),6)="no") || (get(prop(temp_list),6)="private")))?prop(style_noaccess_color):prop(designated_color_forward_7));
448 designated_color_forward_8: eval(((prop(temp_length)>0) && ((get(prop(temp_list),7)="no") || (get(prop(temp_list),7)="private")))?prop(style_noaccess_color):prop(designated_color_forward_8));
449
450 /* Lane count based on :lanes values */
451 tag_lanes_all_min: eval(has_tag_key("access:lanes")?min(prop(tag_lanes_all_min),prop(temp_length)):prop(tag_lanes_all_min));
452 tag_lanes_all_max: eval(has_tag_key("access:lanes")?max(prop(tag_lanes_all_max),prop(temp_length)):prop(tag_lanes_all_max));
453 tag_lanes_fwd_min: eval(has_tag_key("access:lanes:forward")?min(prop(tag_lanes_fwd_min),prop(temp_length)):prop(tag_lanes_fwd_min));
454 tag_lanes_fwd_max: eval(has_tag_key("access:lanes:forward")?max(prop(tag_lanes_fwd_max),prop(temp_length)):prop(tag_lanes_fwd_max));
455}
456
457/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
458/* Access=no backward lanes */
459/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
460way|z17-[is_prop_set(ok)]["access:lanes:backward"],
461way|z17-[is_prop_set(ok)]["access:backward"],
462way|z17-[is_prop_set(ok)]["access:lanes"][prop(oneway_type)=(-1)],
463way|z17-[is_prop_set(ok)]["access"][prop(oneway_type)=(-1)]
464{
465 temp: eval(cond(has_tag_key("access:lanes"),tag("access:lanes"),
466 cond(has_tag_key("access"),tag("access"),
467 cond(has_tag_key("access:lanes:backward"),tag("access:lanes:backward"),
468 tag("access:backward")
469 ))));
470 temp_list: eval(split("|",prop(temp)));
471 temp_length: eval(length(prop(temp_list)));
472 designated_color_backward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="no") || (get(prop(temp_list),0)="private")))?prop(style_noaccess_color):prop(designated_color_backward_1));
473 designated_color_backward_2: eval(((prop(temp_length)>0) && ((get(prop(temp_list),1)="no") || (get(prop(temp_list),1)="private")))?prop(style_noaccess_color):prop(designated_color_backward_2));
474 designated_color_backward_3: eval(((prop(temp_length)>0) && ((get(prop(temp_list),2)="no") || (get(prop(temp_list),2)="private")))?prop(style_noaccess_color):prop(designated_color_backward_3));
475 designated_color_backward_4: eval(((prop(temp_length)>0) && ((get(prop(temp_list),3)="no") || (get(prop(temp_list),3)="private")))?prop(style_noaccess_color):prop(designated_color_backward_4));
476 designated_color_backward_5: eval(((prop(temp_length)>0) && ((get(prop(temp_list),4)="no") || (get(prop(temp_list),4)="private")))?prop(style_noaccess_color):prop(designated_color_backward_5));
477 designated_color_backward_6: eval(((prop(temp_length)>0) && ((get(prop(temp_list),5)="no") || (get(prop(temp_list),5)="private")))?prop(style_noaccess_color):prop(designated_color_backward_6));
478 designated_color_backward_7: eval(((prop(temp_length)>0) && ((get(prop(temp_list),6)="no") || (get(prop(temp_list),6)="private")))?prop(style_noaccess_color):prop(designated_color_backward_7));
479 designated_color_backward_8: eval(((prop(temp_length)>0) && ((get(prop(temp_list),7)="no") || (get(prop(temp_list),7)="private")))?prop(style_noaccess_color):prop(designated_color_backward_8));
480
481 /* Lane count based on :lanes values */
482 tag_lanes_all_min: eval(has_tag_key("access:lanes")?min(prop(tag_lanes_all_min),prop(temp_length)):prop(tag_lanes_all_min));
483 tag_lanes_all_max: eval(has_tag_key("access:lanes")?max(prop(tag_lanes_all_max),prop(temp_length)):prop(tag_lanes_all_max));
484 tag_lanes_bwd_min: eval(has_tag_key("access:lanes:backward")?min(prop(tag_lanes_bwd_min),prop(temp_length)):prop(tag_lanes_bwd_min));
485 tag_lanes_bwd_max: eval(has_tag_key("access:lanes:backward")?max(prop(tag_lanes_bwd_max),prop(temp_length)):prop(tag_lanes_bwd_max));
486}
487
488/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
489/* Bus forward lanes */
490/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
491way|z17-[is_prop_set(ok)]["bus:lanes:forward"],
492way|z17-[is_prop_set(ok)]["bus:forward"],
493way|z17-[is_prop_set(ok)]["bus:lanes"][prop(oneway_type)=1],
494way|z17-[is_prop_set(ok)]["bus"][prop(oneway_type)=1]
495{
496 temp: eval(cond(has_tag_key("bus:lanes"),tag("bus:lanes"),
497 cond(has_tag_key("bus"),tag("bus"),
498 cond(has_tag_key("bus:lanes:forward"),tag("bus:lanes:forward"),
499 tag("bus:forward")
500 ))));
501 temp_list: eval(split("|",prop(temp)));
502 temp_length: eval(length(prop(temp_list)));
503 tempa: eval(cond(has_tag_key("access:lanes"),tag("access:lanes"),
504 cond(has_tag_key("access"),tag("access"),
505 cond(has_tag_key("access:lanes:forward"),tag("access:lanes:forward"),
506 tag("access:forward")
507 ))));
508 tempa_list: eval(split("|",prop(tempa)));
509 tempa_length: eval(length(prop(tempa_list)));
510 designated_color_forward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="designated") || ((get(prop(temp_list),0)="yes") && (get(prop(tempa_list),0)="no"))))?prop(style_bus_color):prop(designated_color_forward_1));
511 designated_color_forward_2: eval(((prop(temp_length)>1) && ((get(prop(temp_list),1)="designated") || ((get(prop(temp_list),1)="yes") && (get(prop(tempa_list),1)="no"))))?prop(style_bus_color):prop(designated_color_forward_2));
512 designated_color_forward_3: eval(((prop(temp_length)>2) && ((get(prop(temp_list),2)="designated") || ((get(prop(temp_list),2)="yes") && (get(prop(tempa_list),2)="no"))))?prop(style_bus_color):prop(designated_color_forward_3));
513 designated_color_forward_4: eval(((prop(temp_length)>3) && ((get(prop(temp_list),3)="designated") || ((get(prop(temp_list),3)="yes") && (get(prop(tempa_list),3)="no"))))?prop(style_bus_color):prop(designated_color_forward_4));
514 designated_color_forward_5: eval(((prop(temp_length)>4) && ((get(prop(temp_list),4)="designated") || ((get(prop(temp_list),4)="yes") && (get(prop(tempa_list),4)="no"))))?prop(style_bus_color):prop(designated_color_forward_5));
515 designated_color_forward_6: eval(((prop(temp_length)>5) && ((get(prop(temp_list),5)="designated") || ((get(prop(temp_list),5)="yes") && (get(prop(tempa_list),5)="no"))))?prop(style_bus_color):prop(designated_color_forward_6));
516 designated_color_forward_7: eval(((prop(temp_length)>6) && ((get(prop(temp_list),6)="designated") || ((get(prop(temp_list),6)="yes") && (get(prop(tempa_list),6)="no"))))?prop(style_bus_color):prop(designated_color_forward_7));
517 designated_color_forward_8: eval(((prop(temp_length)>7) && ((get(prop(temp_list),7)="designated") || ((get(prop(temp_list),7)="yes") && (get(prop(tempa_list),7)="no"))))?prop(style_bus_color):prop(designated_color_forward_8));
518
519 /* Lane count based on :lanes values */
520 tag_lanes_all_min: eval(has_tag_key("bus:lanes")?min(prop(tag_lanes_all_min),prop(temp_length)):prop(tag_lanes_all_min));
521 tag_lanes_all_max: eval(has_tag_key("bus:lanes")?max(prop(tag_lanes_all_max),prop(temp_length)):prop(tag_lanes_all_max));
522 tag_lanes_fwd_min: eval(has_tag_key("bus:lanes:forward")?min(prop(tag_lanes_fwd_min),prop(temp_length)):prop(tag_lanes_fwd_min));
523 tag_lanes_fwd_max: eval(has_tag_key("bus:lanes:forward")?max(prop(tag_lanes_fwd_max),prop(temp_length)):prop(tag_lanes_fwd_max));
524}
525
526/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
527/* Bus backward lanes */
528/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
529way|z17-[is_prop_set(ok)]["bus:lanes:backward"],
530way|z17-[is_prop_set(ok)]["bus:backward"],
531way|z17-[is_prop_set(ok)]["bus:lanes"][prop(oneway_type)=(-1)],
532way|z17-[is_prop_set(ok)]["bus"][prop(oneway_type)=(-1)]
533{
534 temp: eval(cond(has_tag_key("bus:lanes"),tag("bus:lanes"),
535 cond(has_tag_key("bus"),tag("bus"),
536 cond(has_tag_key("bus:lanes:backward"),tag("bus:lanes:backward"),
537 tag("bus:backward")
538 ))));
539 temp_list: eval(split("|",prop(temp)));
540 temp_length: eval(length(prop(temp_list)));
541 /* TODO: oneway=-1*/
542 tempa: eval(cond(has_tag_key("access:lanes:backward"),tag("access:lanes:backward"),tag("access:backward")));
543 tempa_list: eval(split("|",prop(tempa)));
544 tempa_length: eval(length(prop(tempa_list)));
545 designated_color_backward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="designated") || ((get(prop(temp_list),0)="yes") && (get(prop(tempa_list),0)="no"))))?prop(style_bus_color):prop(designated_color_forward_1));
546 designated_color_backward_2: eval(((prop(temp_length)>1) && ((get(prop(temp_list),1)="designated") || ((get(prop(temp_list),1)="yes") && (get(prop(tempa_list),1)="no"))))?prop(style_bus_color):prop(designated_color_forward_2));
547 designated_color_backward_3: eval(((prop(temp_length)>2) && ((get(prop(temp_list),2)="designated") || ((get(prop(temp_list),2)="yes") && (get(prop(tempa_list),2)="no"))))?prop(style_bus_color):prop(designated_color_forward_3));
548 designated_color_backward_4: eval(((prop(temp_length)>3) && ((get(prop(temp_list),3)="designated") || ((get(prop(temp_list),3)="yes") && (get(prop(tempa_list),3)="no"))))?prop(style_bus_color):prop(designated_color_forward_4));
549 designated_color_backward_5: eval(((prop(temp_length)>4) && ((get(prop(temp_list),4)="designated") || ((get(prop(temp_list),4)="yes") && (get(prop(tempa_list),4)="no"))))?prop(style_bus_color):prop(designated_color_forward_5));
550 designated_color_backward_6: eval(((prop(temp_length)>5) && ((get(prop(temp_list),5)="designated") || ((get(prop(temp_list),5)="yes") && (get(prop(tempa_list),5)="no"))))?prop(style_bus_color):prop(designated_color_forward_6));
551 designated_color_backward_7: eval(((prop(temp_length)>6) && ((get(prop(temp_list),6)="designated") || ((get(prop(temp_list),6)="yes") && (get(prop(tempa_list),6)="no"))))?prop(style_bus_color):prop(designated_color_forward_7));
552 designated_color_backward_8: eval(((prop(temp_length)>7) && ((get(prop(temp_list),7)="designated") || ((get(prop(temp_list),7)="yes") && (get(prop(tempa_list),7)="no"))))?prop(style_bus_color):prop(designated_color_forward_8));
553
554 /* Lane count based on :lanes values */
555 tag_lanes_bwd_min: eval(has_tag_key("bus:lanes:backward")?min(prop(tag_lanes_bwd_min),prop(temp_length)):prop(tag_lanes_bwd_min));
556 tag_lanes_bwd_max: eval(has_tag_key("bus:lanes:backward")?max(prop(tag_lanes_bwd_max),prop(temp_length)):prop(tag_lanes_bwd_max));
557}
558
559/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
560/* PSV forward lanes */
561/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
562way|z17-[is_prop_set(ok)]["psv:lanes:forward"],
563way|z17-[is_prop_set(ok)]["psv:forward"],
564way|z17-[is_prop_set(ok)]["psv:lanes"][prop(oneway_type)=1],
565way|z17-[is_prop_set(ok)]["psv"][prop(oneway_type)=1]
566{
567 temp: eval(cond(has_tag_key("psv:lanes"),tag("psv:lanes"),
568 cond(has_tag_key("psv"),tag("psv"),
569 cond(has_tag_key("psv:lanes:forward"),tag("psv:lanes:forward"),
570 tag("psv:forward")
571 ))));
572 temp_list: eval(split("|",prop(temp)));
573 temp_length: eval(length(prop(temp_list)));
574 tempa: eval(cond(has_tag_key("access:lanes"),tag("access:lanes"),
575 cond(has_tag_key("access"),tag("access"),
576 cond(has_tag_key("access:lanes:forward"),tag("access:lanes:forward"),
577 tag("access:forward")
578 ))));
579 tempa_list: eval(split("|",prop(tempa)));
580 tempa_length: eval(length(prop(tempa_list)));
581
582
583 designated_color_forward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="designated") || ((get(prop(temp_list),0)="yes") && (get(prop(tempa_list),0)="no"))))?prop(style_psv_color):prop(designated_color_forward_1));
584 designated_color_forward_2: eval(((prop(temp_length)>1) && ((get(prop(temp_list),1)="designated") || ((get(prop(temp_list),1)="yes") && (get(prop(tempa_list),1)="no"))))?prop(style_psv_color):prop(designated_color_forward_2));
585 designated_color_forward_3: eval(((prop(temp_length)>2) && ((get(prop(temp_list),2)="designated") || ((get(prop(temp_list),2)="yes") && (get(prop(tempa_list),2)="no"))))?prop(style_psv_color):prop(designated_color_forward_3));
586 designated_color_forward_4: eval(((prop(temp_length)>3) && ((get(prop(temp_list),3)="designated") || ((get(prop(temp_list),3)="yes") && (get(prop(tempa_list),3)="no"))))?prop(style_psv_color):prop(designated_color_forward_4));
587 designated_color_forward_5: eval(((prop(temp_length)>4) && ((get(prop(temp_list),4)="designated") || ((get(prop(temp_list),4)="yes") && (get(prop(tempa_list),4)="no"))))?prop(style_psv_color):prop(designated_color_forward_5));
588 designated_color_forward_6: eval(((prop(temp_length)>5) && ((get(prop(temp_list),5)="designated") || ((get(prop(temp_list),5)="yes") && (get(prop(tempa_list),5)="no"))))?prop(style_psv_color):prop(designated_color_forward_6));
589 designated_color_forward_7: eval(((prop(temp_length)>6) && ((get(prop(temp_list),6)="designated") || ((get(prop(temp_list),6)="yes") && (get(prop(tempa_list),6)="no"))))?prop(style_psv_color):prop(designated_color_forward_7));
590 designated_color_forward_8: eval(((prop(temp_length)>7) && ((get(prop(temp_list),7)="designated") || ((get(prop(temp_list),7)="yes") && (get(prop(tempa_list),7)="no"))))?prop(style_psv_color):prop(designated_color_forward_8));
591
592 /* Lane count based on :lanes values */
593 tag_lanes_all_min: eval(has_tag_key("psv:lanes")?min(prop(tag_lanes_all_min),prop(temp_length)):prop(tag_lanes_all_min));
594 tag_lanes_all_max: eval(has_tag_key("psv:lanes")?max(prop(tag_lanes_all_max),prop(temp_length)):prop(tag_lanes_all_max));
595 tag_lanes_fwd_min: eval(has_tag_key("psv:lanes:forward")?min(prop(tag_lanes_fwd_min),prop(temp_length)):prop(tag_lanes_fwd_min));
596 tag_lanes_fwd_max: eval(has_tag_key("psv:lanes:forward")?max(prop(tag_lanes_fwd_max),prop(temp_length)):prop(tag_lanes_fwd_max));
597}
598
599/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
600/* PSV backward lanes */
601/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
602way|z17-[is_prop_set(ok)]["psv:lanes:backward"],
603way|z17-[is_prop_set(ok)]["psv:backward"],
604way|z17-[is_prop_set(ok)]["psv:lanes"][prop(oneway_type)=(-1)],
605way|z17-[is_prop_set(ok)]["psv"][prop(oneway_type)=(-1)]
606{
607 temp: eval(cond(has_tag_key("psv:lanes"),tag("psv:lanes"),
608 cond(has_tag_key("psv"),tag("psv"),
609 cond(has_tag_key("psv:lanes:backward"),tag("psv:lanes:backward"),
610 tag("psv:backward")
611 ))));
612 temp_list: eval(split("|",prop(temp)));
613 temp_length: eval(length(prop(temp_list)));
614 /* TODO: oneway=-1*/
615 tempa: eval(cond(has_tag_key("access:lanes:backward"),tag("access:lanes:backward"),tag("access:backward")));
616 tempa_list: eval(split("|",prop(tempa)));
617 tempa_length: eval(length(prop(tempa_list)));
618 designated_color_backward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="designated") || ((get(prop(temp_list),0)="yes") && (get(prop(tempa_list),0)="no"))))?prop(style_psv_color):prop(designated_color_backward_1));
619 designated_color_backward_2: eval(((prop(temp_length)>1) && ((get(prop(temp_list),1)="designated") || ((get(prop(temp_list),1)="yes") && (get(prop(tempa_list),1)="no"))))?prop(style_psv_color):prop(designated_color_backward_2));
620 designated_color_backward_3: eval(((prop(temp_length)>2) && ((get(prop(temp_list),2)="designated") || ((get(prop(temp_list),2)="yes") && (get(prop(tempa_list),2)="no"))))?prop(style_psv_color):prop(designated_color_backward_3));
621 designated_color_backward_4: eval(((prop(temp_length)>3) && ((get(prop(temp_list),3)="designated") || ((get(prop(temp_list),3)="yes") && (get(prop(tempa_list),3)="no"))))?prop(style_psv_color):prop(designated_color_backward_4));
622 designated_color_backward_5: eval(((prop(temp_length)>4) && ((get(prop(temp_list),4)="designated") || ((get(prop(temp_list),4)="yes") && (get(prop(tempa_list),4)="no"))))?prop(style_psv_color):prop(designated_color_backward_5));
623 designated_color_backward_6: eval(((prop(temp_length)>5) && ((get(prop(temp_list),5)="designated") || ((get(prop(temp_list),5)="yes") && (get(prop(tempa_list),5)="no"))))?prop(style_psv_color):prop(designated_color_backward_6));
624 designated_color_backward_7: eval(((prop(temp_length)>6) && ((get(prop(temp_list),6)="designated") || ((get(prop(temp_list),6)="yes") && (get(prop(tempa_list),6)="no"))))?prop(style_psv_color):prop(designated_color_backward_7));
625 designated_color_backward_8: eval(((prop(temp_length)>7) && ((get(prop(temp_list),7)="designated") || ((get(prop(temp_list),7)="yes") && (get(prop(tempa_list),7)="no"))))?prop(style_psv_color):prop(designated_color_backward_8));
626
627 /* Lane count based on :lanes values */
628 tag_lanes_bwd_min: eval(has_tag_key("psv:lanes:backward")?min(prop(tag_lanes_bwd_min),prop(temp_length)):prop(tag_lanes_bwd_min));
629 tag_lanes_bwd_max: eval(has_tag_key("psv:lanes:backward")?max(prop(tag_lanes_bwd_max),prop(temp_length)):prop(tag_lanes_bwd_max));
630}
631
632/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
633/* Bicycle forward lanes */
634/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
635way|z17-[is_prop_set(ok)]["bicycle:lanes:forward"],
636way|z17-[is_prop_set(ok)]["bicycle:forward"],
637way|z17-[is_prop_set(ok)]["bicycle:lanes"][prop(oneway_type)=1],
638way|z17-[is_prop_set(ok)]["bicycle"][prop(oneway_type)=1]
639{
640 temp: eval(cond(has_tag_key("bicycle:lanes"),tag("bicycle:lanes"),
641 cond(has_tag_key("bicycle"),tag("bicycle"),
642 cond(has_tag_key("bicycle:lanes:forward"),tag("bicycle:lanes:forward"),
643 tag("bicycle:forward")
644 ))));
645 temp_list: eval(split("|",prop(temp)));
646 temp_length: eval(length(prop(temp_list)));
647 tempa: eval(cond(has_tag_key("access:lanes"),tag("access:lanes"),
648 cond(has_tag_key("access"),tag("access"),
649 cond(has_tag_key("access:lanes:forward"),tag("access:lanes:forward"),
650 tag("access:forward")
651 ))));
652 tempa_list: eval(split("|",prop(tempa)));
653 tempa_length: eval(length(prop(tempa_list)));
654 color_forward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="designated") || ((get(prop(temp_list),0)="yes") && (get(prop(tempa_list),0)="no"))))?prop(style_bicycle_color):prop(color_forward_1));
655 color_forward_2: eval(((prop(temp_length)>1) && ((get(prop(temp_list),1)="designated") || ((get(prop(temp_list),1)="yes") && (get(prop(tempa_list),1)="no"))))?prop(style_bicycle_color):prop(color_forward_2));
656 color_forward_3: eval(((prop(temp_length)>2) && ((get(prop(temp_list),2)="designated") || ((get(prop(temp_list),2)="yes") && (get(prop(tempa_list),2)="no"))))?prop(style_bicycle_color):prop(color_forward_3));
657 color_forward_4: eval(((prop(temp_length)>3) && ((get(prop(temp_list),3)="designated") || ((get(prop(temp_list),3)="yes") && (get(prop(tempa_list),3)="no"))))?prop(style_bicycle_color):prop(color_forward_4));
658 color_forward_5: eval(((prop(temp_length)>4) && ((get(prop(temp_list),4)="designated") || ((get(prop(temp_list),4)="yes") && (get(prop(tempa_list),4)="no"))))?prop(style_bicycle_color):prop(color_forward_5));
659 color_forward_6: eval(((prop(temp_length)>5) && ((get(prop(temp_list),5)="designated") || ((get(prop(temp_list),5)="yes") && (get(prop(tempa_list),5)="no"))))?prop(style_bicycle_color):prop(color_forward_6));
660 color_forward_7: eval(((prop(temp_length)>6) && ((get(prop(temp_list),6)="designated") || ((get(prop(temp_list),6)="yes") && (get(prop(tempa_list),6)="no"))))?prop(style_bicycle_color):prop(color_forward_7));
661 color_forward_8: eval(((prop(temp_length)>7) && ((get(prop(temp_list),7)="designated") || ((get(prop(temp_list),7)="yes") && (get(prop(tempa_list),7)="no"))))?prop(style_bicycle_color):prop(color_forward_8));
662
663 /* Lane count based on :lanes values */
664 tag_lanes_all_min: eval(has_tag_key("bicycle:lanes")?min(prop(tag_lanes_all_min),prop(temp_length)):prop(tag_lanes_all_min));
665 tag_lanes_all_max: eval(has_tag_key("bicycle:lanes")?max(prop(tag_lanes_all_max),prop(temp_length)):prop(tag_lanes_all_max));
666 tag_lanes_fwd_min: eval(has_tag_key("bicycle:lanes:forward")?min(prop(tag_lanes_fwd_min),prop(temp_length)):prop(tag_lanes_fwd_min));
667 tag_lanes_fwd_max: eval(has_tag_key("bicycle:lanes:forward")?max(prop(tag_lanes_fwd_max),prop(temp_length)):prop(tag_lanes_fwd_max));
668}
669
670/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
671/* Bicycle backward lanes */
672/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
673way|z17-[is_prop_set(ok)]["bicycle:lanes:backward"],
674way|z17-[is_prop_set(ok)]["bicycle:backward"],
675way|z17-[is_prop_set(ok)]["bicycle:lanes"][prop(oneway_type)=(-1)],
676way|z17-[is_prop_set(ok)]["bicycle"][prop(oneway_type)=(-1)]
677{
678 temp: eval(cond(has_tag_key("bicycle:lanes"),tag("bicycle:lanes"),
679 cond(has_tag_key("bicycle"),tag("bicycle"),
680 cond(has_tag_key("bicycle:lanes:backward"),tag("bicycle:lanes:backward"),
681 tag("bicycle:backward")
682 ))));
683 temp_list: eval(split("|",prop(temp)));
684 temp_length: eval(length(prop(temp_list)));
685 /* TODO: oneway=-1*/
686 tempa: eval(cond(has_tag_key("access:lanes:backward"),tag("access:lanes:backward"),tag("access:backward")));
687 tempa_list: eval(split("|",prop(tempa)));
688 tempa_length: eval(length(prop(tempa_list)));
689 color_backward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="designated") || ((get(prop(temp_list),0)="yes") && (get(prop(tempa_list),0)="no"))))?prop(style_bicycle_color):prop(color_backward_1));
690 color_backward_2: eval(((prop(temp_length)>1) && ((get(prop(temp_list),1)="designated") || ((get(prop(temp_list),1)="yes") && (get(prop(tempa_list),1)="no"))))?prop(style_bicycle_color):prop(color_backward_2));
691 color_backward_3: eval(((prop(temp_length)>2) && ((get(prop(temp_list),2)="designated") || ((get(prop(temp_list),2)="yes") && (get(prop(tempa_list),2)="no"))))?prop(style_bicycle_color):prop(color_backward_3));
692 color_backward_4: eval(((prop(temp_length)>3) && ((get(prop(temp_list),3)="designated") || ((get(prop(temp_list),3)="yes") && (get(prop(tempa_list),3)="no"))))?prop(style_bicycle_color):prop(color_backward_4));
693 color_backward_5: eval(((prop(temp_length)>4) && ((get(prop(temp_list),4)="designated") || ((get(prop(temp_list),4)="yes") && (get(prop(tempa_list),4)="no"))))?prop(style_bicycle_color):prop(color_backward_5));
694 color_backward_6: eval(((prop(temp_length)>5) && ((get(prop(temp_list),5)="designated") || ((get(prop(temp_list),5)="yes") && (get(prop(tempa_list),5)="no"))))?prop(style_bicycle_color):prop(color_backward_6));
695 color_backward_7: eval(((prop(temp_length)>6) && ((get(prop(temp_list),6)="designated") || ((get(prop(temp_list),6)="yes") && (get(prop(tempa_list),6)="no"))))?prop(style_bicycle_color):prop(color_backward_7));
696 color_backward_8: eval(((prop(temp_length)>7) && ((get(prop(temp_list),7)="designated") || ((get(prop(temp_list),7)="yes") && (get(prop(tempa_list),7)="no"))))?prop(style_bicycle_color):prop(color_backward_8));
697
698 /* Lane count based on :lanes values */
699 tag_lanes_bwd_min: eval(has_tag_key("bicycle:lanes:backward")?min(prop(tag_lanes_bwd_min),prop(temp_length)):prop(tag_lanes_bwd_min));
700 tag_lanes_bwd_max: eval(has_tag_key("bicycle:lanes:backward")?max(prop(tag_lanes_bwd_max),prop(temp_length)):prop(tag_lanes_bwd_max));
701}
702
703/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
704/* Bicycle both_ways lanes */
705/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
706way|z17-[is_prop_set(ok)]["bicycle:lanes:both_ways"],
707way|z17-[is_prop_set(ok)]["bicycle:both_ways"]
708{
709 temp: eval(cond(has_tag_key("bicycle:lanes:both_ways"),tag("bicycle:lanes:both_ways"),tag("bicycle:both_ways")));
710 temp_list: eval(split("|",prop(temp)));
711 temp_length: eval(length(prop(temp_list)));
712 tempa: eval(cond(has_tag_key("access:lanes:both_ways"),tag("access:lanes:both_ways"),tag("access:both_ways")));
713 tempa_list: eval(split("|",prop(tempa)));
714 tempa_length: eval(length(prop(tempa_list)));
715 color_bothways_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="designated") || ((get(prop(temp_list),0)="yes") && (get(prop(tempa_list),0)="no"))))?prop(style_bicycle_color):prop(color_bothways_1));
716 color_bothways_2: eval(((prop(temp_length)>1) && ((get(prop(temp_list),1)="designated") || ((get(prop(temp_list),1)="yes") && (get(prop(tempa_list),1)="no"))))?prop(style_bicycle_color):prop(color_bothways_2));
717 color_bothways_3: eval(((prop(temp_length)>2) && ((get(prop(temp_list),2)="designated") || ((get(prop(temp_list),2)="yes") && (get(prop(tempa_list),2)="no"))))?prop(style_bicycle_color):prop(color_bothways_3));
718 color_bothways_4: eval(((prop(temp_length)>3) && ((get(prop(temp_list),3)="designated") || ((get(prop(temp_list),3)="yes") && (get(prop(tempa_list),3)="no"))))?prop(style_bicycle_color):prop(color_bothways_4));
719
720 /* Lane count based on :lanes values */
721 tag_lanes_both_min: eval(has_tag_key("bicycle:lanes:both_ways")?min(prop(tag_lanes_both_min),prop(temp_length)):prop(tag_lanes_both_min));
722 tag_lanes_both_max: eval(has_tag_key("bicycle:lanes:both_ways")?max(prop(tag_lanes_both_max),prop(temp_length)):prop(tag_lanes_both_max));
723}
724
725/***************************************************************************************************************************************************/
726/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
727/* Check of the number of lane-dependent width */
728/* The calculation itself depends on the lane count and therefore is done AFTER the determination of the lane count */
729/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
730/***************************************************************************************************************************************************/
731way|z17-["width:lanes:forward"],
732way|z17-["width:lanes"][prop(oneway_type)=1]
733{
734 temp: eval(cond(has_tag_key("width:lanes:forward"),tag("width:lanes:forward"),tag("width:lanes")));
735 temp_length: eval(length(split("|",prop(temp))));
736
737 /* Lane count based on :lanes values */
738 tag_lanes_fwd_min: eval(min(prop(tag_lanes_fwd_min),prop(temp_length)));
739 tag_lanes_fwd_max: eval(max(prop(tag_lanes_fwd_max),prop(temp_length)));
740}
741way|z17-["width:lanes:backward"],
742way|z17-["width:lanes"][prop(oneway_type)=(-1)]
743{
744 temp: eval(cond(has_tag_key("width:lanes:backward"),tag("width:lanes:backward"),tag("width:lanes")));
745 temp_length: eval(length(split("|",prop(temp))));
746
747 /* Lane count based on :lanes values */
748 tag_lanes_bwd_min: eval(min(prop(tag_lanes_bwd_min),prop(temp_length)));
749 tag_lanes_bwd_max: eval(max(prop(tag_lanes_bwd_max),prop(temp_length)));
750}
751way|z17-["width:lanes:both_ways"]
752{
753 temp: eval(tag("width:lanes:both_ways"));
754 temp_length: eval(length(split("|",prop(temp))));
755
756 /* Lane count based on :lanes values */
757 tag_lanes_both_min: eval(min(prop(tag_lanes_both_min),prop(temp_length)));
758 tag_lanes_both_max: eval(max(prop(tag_lanes_both_max),prop(temp_length)));
759}
760
761/***************************************************************************************************************************************************/
762/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
763/* Retrieve the lane count from the lanes key, its subkeys and the :lanes-tags */
764/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
765/***************************************************************************************************************************************************/
766way[is_prop_set(ok)][lanes] { lanes_all: tag(lanes);}
767way[is_prop_set(ok)]["lanes:forward"] { lanes_fwd: tag("lanes:forward");}
768way[is_prop_set(ok)]["lanes:backward"] { lanes_bwd: tag("lanes:backward");}
769way[is_prop_set(ok)]["lanes:both_ways"] { lanes_both: tag("lanes:both_ways");}
770
771/* Nothing specified */
772way[is_prop_set(ok)][prop(oneway_type)=0][!lanes][!"lanes:backward"][!"lanes:both_ways"][!"lanes:forward"]
773 { lanes_all: 2; lanes_fwd: 1; lanes_bwd: 1; lanes_both: 0; }
774way[is_prop_set(ok)][prop(oneway_type)=1][!lanes][!"lanes:backward"][!"lanes:both_ways"][!"lanes:forward"]
775 { lanes_all: 1; lanes_fwd: 1; lanes_bwd: 0; lanes_both: 0; }
776way[is_prop_set(ok)][prop(oneway_type)=(-1)][!lanes][!"lanes:backward"][!"lanes:both_ways"][!"lanes:forward"]
777 { lanes_all: 1; lanes_fwd: 0; lanes_bwd: 1; lanes_both: 0; }
778
779/* One-ways */
780way[is_prop_set(ok)][lanes][!"lanes:forward"][!"lanes:backward"][!"lanes:both_ways"][prop(oneway_type)=1]
781 { lanes_fwd: prop(lanes_all); lanes_bwd: 0; lanes_both: 0; }
782way[is_prop_set(ok)][lanes][!"lanes:forward"][!"lanes:backward"][!"lanes:both_ways"][prop(oneway_type)=(-1)]
783 { lanes_bwd: prop(lanes_all); lanes_fwd: 0; lanes_both: 0; }
784
785way[is_prop_set(ok)][!lanes]["lanes:forward"][!"lanes:backward"][!"lanes:both_ways"][prop(oneway_type)=1]
786 { lanes_all: prop(lanes_fwd); lanes_bwd: 0; lanes_both: 0; }
787way[is_prop_set(ok)][!lanes][!"lanes:forward"]["lanes:backward"][!"lanes:both_ways"][prop(oneway_type)=(-1)]
788 { lanes_all: prop(lanes_bwd); lanes_fwd: 0; lanes_both: 0; }
789
790/* One count besides both_ways is missing */
791way[is_prop_set(ok)][lanes][!"lanes:forward"]["lanes:backward"][!"lanes:both_ways"]
792 { lanes_fwd: eval((prop(lanes_all))-(prop(lanes_bwd))); lanes_both: 0; }
793way[is_prop_set(ok)][lanes]["lanes:forward"][!"lanes:backward"][!"lanes:both_ways"]
794 { lanes_bwd: eval((prop(lanes_all))-(prop(lanes_fwd))); lanes_both: 0;}
795way[is_prop_set(ok)][!lanes]["lanes:forward"]["lanes:backward"][!"lanes:both_ways"]
796 { lanes_all: eval((prop(lanes_fwd))+(prop(lanes_bwd))); lanes_both: 0; }
797
798/* One count is missing */
799way[is_prop_set(ok)][lanes]["lanes:forward"]["lanes:backward"][!"lanes:both_ways"]
800 { lanes_both: eval((prop(lanes_all))-((prop(lanes_fwd))+(prop(lanes_bwd)))); }
801way[is_prop_set(ok)][lanes]["lanes:forward"][!"lanes:backward"]["lanes:both_ways"]
802 { lanes_bwd: eval((prop(lanes_all))-((prop(lanes_fwd))+(prop(lanes_both)))); }
803way[is_prop_set(ok)][lanes][!"lanes:forward"]["lanes:backward"]["lanes:both_ways"]
804 { lanes_fwd: eval((prop(lanes_all))-((prop(lanes_bwd))+(prop(lanes_both)))); }
805way[is_prop_set(ok)][!lanes]["lanes:forward"]["lanes:backward"]["lanes:both_ways"]
806 { lanes_all: eval((prop(lanes_fwd))+((prop(lanes_bwd))+(prop(lanes_both)))); }
807
808/* Only the lanes tag is set */
809way[is_prop_set(ok)][prop(oneway_type)=0][lanes][!"lanes:backward"][!"lanes:both_ways"][!"lanes:forward"]
810{
811
812 lanes_fwd: eval(max(1,floor(tag(lanes)/2)));
813 lanes_bwd: eval(floor(tag(lanes)/2));
814 lanes_both: eval((prop(lanes_all))-(prop(lanes_fwd))-(prop(lanes_bwd)));
815}
816
817/* Safety check and adding lanes for "non-motorized or non-general traffic" */
818way[is_prop_set(ok)]
819{
820 /* Check for errors */
821 data_error: eval(((prop(tag_lanes_all_max)>0) && (prop(tag_lanes_all_min)<prop(tag_lanes_all_max)))?"Inconsistent <tag>:lanes":prop(data_error));
822 data_error: eval(((prop(tag_lanes_fwd_max)>0) && (prop(tag_lanes_fwd_min)<prop(tag_lanes_fwd_max)))?"Inconsistent <tag>:lanes:forward":prop(data_error));
823 data_error: eval(((prop(tag_lanes_bwd_max)>0) && (prop(tag_lanes_bwd_min)<prop(tag_lanes_bwd_max)))?"Inconsistent <tag>:lanes:backward":prop(data_error));
824 data_error: eval(((prop(tag_lanes_both_max)>0) && (prop(tag_lanes_both_min)<prop(tag_lanes_both_max)))?"Inconsistent <tag>:lanes:both_ways":prop(data_error));
825
826 /* Safety check */
827 lanes_fwd: eval(cond((prop(lanes_fwd)<0),0,prop(lanes_fwd)));
828 lanes_bwd: eval(cond((prop(lanes_bwd)<0),0,prop(lanes_bwd)));
829 lanes_both: eval(cond((prop(lanes_both)<0),0,prop(lanes_both)));
830
831 /* In case of one-ways treat the number of all lanes as number of forward/backward lanes */
832 tag_lanes_fwd_min: eval((prop(oneway_type)=1)?min(prop(tag_lanes_all_min),prop(tag_lanes_fwd_min)):prop(tag_lanes_fwd_min));
833 tag_lanes_fwd_max: eval((prop(oneway_type)=1)?max(prop(tag_lanes_all_max),prop(tag_lanes_fwd_max)):prop(tag_lanes_fwd_max));
834 tag_lanes_bwd_min: eval((prop(oneway_type)=(-1))?min(prop(tag_lanes_all_min),prop(tag_lanes_bwd_min)):prop(tag_lanes_bwd_min));
835 tag_lanes_bwd_max: eval((prop(oneway_type)=(-1))?max(prop(tag_lanes_all_max),prop(tag_lanes_bwd_max)):prop(tag_lanes_bwd_max));
836
837 /* Difference to the lane count specified by :lanes-tags */
838 temp_add_fwd: eval(max(0,prop(tag_lanes_fwd_max)-prop(lanes_fwd)));
839 temp_add_bwd: eval(max(0,prop(tag_lanes_bwd_max)-prop(lanes_bwd)));
840 temp_add_both: eval(max(0,prop(tag_lanes_both_max)-prop(lanes_both)));
841
842 /* Add the difference */
843 lanes_fwd: eval(prop(lanes_fwd)+prop(temp_add_fwd));
844 lanes_bwd: eval(prop(lanes_bwd)+prop(temp_add_bwd));
845 lanes_both: eval(prop(lanes_both)+prop(temp_add_both));
846
847 /* Number of all lanes */
848 lanes_all: eval(max(1,((prop(lanes_fwd)+prop(lanes_bwd))+prop(lanes_both))));
849
850 /* Check for some more errors */
851 data_error: eval(((prop(tag_lanes_all_max)>0) && (prop(tag_lanes_all_min)<prop(lanes_all)))?"Missing <tag>:lanes values values":prop(data_error));
852 data_error: eval(((prop(tag_lanes_fwd_max)>0) && (prop(tag_lanes_fwd_min)<prop(lanes_fwd)))?"Missing <tag>:lanes:forward values":prop(data_error));
853 data_error: eval(((prop(tag_lanes_bwd_max)>0) && (prop(tag_lanes_bwd_min)<prop(lanes_bwd)))?"Missing <tag>:lanes:backward values":prop(data_error));
854 data_error: eval(((prop(tag_lanes_both_max)>0) && (prop(tag_lanes_both_min)<prop(lanes_both)))?"Missing <tag>:lanes:both_ways values":prop(data_error));
855}
856
857
858/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
859/* Determine the width of the lanes, road markings and the inner lane width */
860/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
861way|z17[is_prop_set(ok)]
862{
863 lane_min_width: 4;
864 lane_default_width: eval(max(prop(lane_min_width),(has_tag_key(width)?((1.25*tag(width))/prop(lanes_all)):4)));
865 change_allowed: list(6,9);
866 road_marking_width: 1;
867 road_marking_space: 0;
868}
869
870way|z18[is_prop_set(ok)]
871{
872 lane_min_width: 8;
873 lane_default_width: eval(max(prop(lane_min_width),(has_tag_key(width)?((2.5*tag(width))/prop(lanes_all)):8)));
874 change_allowed: list(12,18);
875 road_marking_width: 2;
876 road_marking_space: 1;
877}
878
879way|z19[is_prop_set(ok)]
880{
881 lane_min_width: 8;
882 lane_default_width: eval(max(prop(lane_min_width),(has_tag_key(width)?((5*tag(width))/prop(lanes_all)):16)));
883 change_allowed: list(24,36);
884 road_marking_width: 2;
885 road_marking_space: 1;
886}
887
888way|z20[is_prop_set(ok)]
889{
890 lane_min_width: 8;
891 lane_default_width: eval(max(prop(lane_min_width),(has_tag_key(width)?((10*tag(width))/prop(lanes_all)):32)));
892 change_allowed: list(48,72);
893 road_marking_width: 2;
894 road_marking_space: 2;
895}
896
897way|z21-[is_prop_set(ok)]
898{
899 lane_min_width: 12;
900 lane_default_width: eval(max(prop(lane_min_width),(has_tag_key(width)?((20*tag(width))/prop(lanes_all)):64)));
901 change_allowed: list(96,144);
902 road_marking_width: 4;
903 road_marking_space: 3;
904}
905
906way|z22-[is_prop_set(ok)]
907{
908 lane_min_width: 20;
909 lane_default_width: eval(max(prop(lane_min_width),(has_tag_key(width)?((40*tag(width))/prop(lanes_all)):128)));
910 change_allowed: list(192,288);
911 road_marking_width: 6;
912 road_marking_space: 4;
913}
914
915/* Zoom indepedent variables and helpers */
916way|z17-[is_prop_set(ok)]
917{
918 lane_casing: eval((2*prop(road_marking_width))+prop(road_marking_space));
919 change_forbidden: 0;
920 change_border: eval((has_tag_key("placement") && (tag("placement")="transition"))?list(1,2):prop(change_forbidden));
921}
922
923/***************************************************************************************************************************************************/
924/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
925/* Cleanup of allowed lane changes */
926/* This must be done AFTER the determination of the lanes count */
927/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
928/***************************************************************************************************************************************************/
929way|z17-[is_prop_set(ok)]
930{
931 change_forward_1_right: eval(prop(change_forward_1_right)?prop(change_allowed):prop(change_forbidden));
932 change_forward_1_left: eval(prop(change_forward_1_left)?prop(change_allowed):prop(change_forbidden));
933 change_forward_2_right: eval(prop(change_forward_2_right)?prop(change_allowed):prop(change_forbidden));
934 change_forward_2_left: eval(prop(change_forward_2_left)?prop(change_allowed):prop(change_forbidden));
935 change_forward_3_right: eval(prop(change_forward_3_right)?prop(change_allowed):prop(change_forbidden));
936 change_forward_3_left: eval(prop(change_forward_3_left)?prop(change_allowed):prop(change_forbidden));
937 change_forward_4_right: eval(prop(change_forward_4_right)?prop(change_allowed):prop(change_forbidden));
938 change_forward_4_left: eval(prop(change_forward_4_left)?prop(change_allowed):prop(change_forbidden));
939 change_forward_5_right: eval(prop(change_forward_5_right)?prop(change_allowed):prop(change_forbidden));
940 change_forward_5_left: eval(prop(change_forward_5_left)?prop(change_allowed):prop(change_forbidden));
941 change_forward_6_right: eval(prop(change_forward_6_right)?prop(change_allowed):prop(change_forbidden));
942 change_forward_6_left: eval(prop(change_forward_6_left)?prop(change_allowed):prop(change_forbidden));
943 change_forward_7_right: eval(prop(change_forward_7_right)?prop(change_allowed):prop(change_forbidden));
944 change_forward_7_left: eval(prop(change_forward_7_left)?prop(change_allowed):prop(change_forbidden));
945 change_forward_8_right: eval(prop(change_forward_8_right)?prop(change_allowed):prop(change_forbidden));
946 change_forward_8_left: eval(prop(change_forward_8_left)?prop(change_allowed):prop(change_forbidden));
947
948 change_backward_1_right: eval(prop(change_backward_1_right)?prop(change_allowed):prop(change_forbidden));
949 change_backward_1_left: eval(prop(change_backward_1_left)?prop(change_allowed):prop(change_forbidden));
950 change_backward_2_right: eval(prop(change_backward_2_right)?prop(change_allowed):prop(change_forbidden));
951 change_backward_2_left: eval(prop(change_backward_2_left)?prop(change_allowed):prop(change_forbidden));
952 change_backward_3_right: eval(prop(change_backward_3_right)?prop(change_allowed):prop(change_forbidden));
953 change_backward_3_left: eval(prop(change_backward_3_left)?prop(change_allowed):prop(change_forbidden));
954 change_backward_4_right: eval(prop(change_backward_4_right)?prop(change_allowed):prop(change_forbidden));
955 change_backward_4_left: eval(prop(change_backward_4_left)?prop(change_allowed):prop(change_forbidden));
956 change_backward_5_right: eval(prop(change_backward_5_right)?prop(change_allowed):prop(change_forbidden));
957 change_backward_5_left: eval(prop(change_backward_5_left)?prop(change_allowed):prop(change_forbidden));
958 change_backward_6_right: eval(prop(change_backward_6_right)?prop(change_allowed):prop(change_forbidden));
959 change_backward_6_left: eval(prop(change_backward_6_left)?prop(change_allowed):prop(change_forbidden));
960 change_backward_7_right: eval(prop(change_backward_7_right)?prop(change_allowed):prop(change_forbidden));
961 change_backward_7_left: eval(prop(change_backward_7_left)?prop(change_allowed):prop(change_forbidden));
962 change_backward_8_right: eval(prop(change_backward_8_right)?prop(change_allowed):prop(change_forbidden));
963 change_backward_8_left: eval(prop(change_backward_8_left)?prop(change_allowed):prop(change_forbidden));
964
965 change_bothways_1_right: eval(prop(change_bothways_1_right)?prop(change_allowed):prop(change_forbidden));
966 change_bothways_1_left: eval(prop(change_bothways_1_left)?prop(change_allowed):prop(change_forbidden));
967 change_bothways_2_right: eval(prop(change_bothways_2_right)?prop(change_allowed):prop(change_forbidden));
968 change_bothways_2_left: eval(prop(change_bothways_2_left)?prop(change_allowed):prop(change_forbidden));
969 change_bothways_3_right: eval(prop(change_bothways_3_right)?prop(change_allowed):prop(change_forbidden));
970 change_bothways_3_left: eval(prop(change_bothways_3_left)?prop(change_allowed):prop(change_forbidden));
971 change_bothways_4_right: eval(prop(change_bothways_4_right)?prop(change_allowed):prop(change_forbidden));
972 change_bothways_4_left: eval(prop(change_bothways_4_left)?prop(change_allowed):prop(change_forbidden));
973
974 /* If two adjacent road markings would look the same, remove one */
975 change_forward_1_right: eval(cond((prop(lanes_fwd)>1) && (prop(change_forward_2_left)=prop(change_forward_1_right)),list(0.1,999999),prop(change_forward_1_right)));
976 change_forward_2_right: eval(cond((prop(lanes_fwd)>2) && (prop(change_forward_3_left)=prop(change_forward_2_right)),list(0.1,999999),prop(change_forward_2_right)));
977 change_forward_3_right: eval(cond((prop(lanes_fwd)>3) && (prop(change_forward_4_left)=prop(change_forward_3_right)),list(0.1,999999),prop(change_forward_3_right)));
978 change_forward_4_right: eval(cond((prop(lanes_fwd)>4) && (prop(change_forward_5_left)=prop(change_forward_4_right)),list(0.1,999999),prop(change_forward_4_right)));
979 change_forward_5_right: eval(cond((prop(lanes_fwd)>5) && (prop(change_forward_6_left)=prop(change_forward_5_right)),list(0.1,999999),prop(change_forward_5_right)));
980 change_forward_6_right: eval(cond((prop(lanes_fwd)>6) && (prop(change_forward_7_left)=prop(change_forward_6_right)),list(0.1,999999),prop(change_forward_6_right)));
981 change_forward_7_right: eval(cond((prop(lanes_fwd)>7) && (prop(change_forward_8_left)=prop(change_forward_7_right)),list(0.1,999999),prop(change_forward_7_right)));
982
983 change_backward_2_left: eval(cond((prop(lanes_bwd)>1) && (prop(change_backward_1_right)=prop(change_backward_2_left)),list(0.1,999999),prop(change_backward_2_left)));
984 change_backward_3_left: eval(cond((prop(lanes_bwd)>2) && (prop(change_backward_2_right)=prop(change_backward_3_left)),list(0.1,999999),prop(change_backward_3_left)));
985 change_backward_4_left: eval(cond((prop(lanes_bwd)>3) && (prop(change_backward_3_right)=prop(change_backward_4_left)),list(0.1,999999),prop(change_backward_4_left)));
986 change_backward_5_left: eval(cond((prop(lanes_bwd)>4) && (prop(change_backward_4_right)=prop(change_backward_5_left)),list(0.1,999999),prop(change_backward_5_left)));
987 change_backward_6_left: eval(cond((prop(lanes_bwd)>5) && (prop(change_backward_5_right)=prop(change_backward_6_left)),list(0.1,999999),prop(change_backward_6_left)));
988 change_backward_7_left: eval(cond((prop(lanes_bwd)>6) && (prop(change_backward_6_right)=prop(change_backward_7_left)),list(0.1,999999),prop(change_backward_7_left)));
989 change_backward_8_left: eval(cond((prop(lanes_bwd)>7) && (prop(change_backward_7_right)=prop(change_backward_8_left)),list(0.1,999999),prop(change_backward_8_left)));
990
991 change_bothways_1_right: eval(cond((prop(lanes_fwd)>1) && (prop(change_bothways_2_left)=prop(change_bothways_1_right)),list(0.1,999999),prop(change_bothways_1_right)));
992 change_bothways_2_right: eval(cond((prop(lanes_fwd)>2) && (prop(change_bothways_3_left)=prop(change_bothways_2_right)),list(0.1,999999),prop(change_bothways_2_right)));
993 change_bothways_3_right: eval(cond((prop(lanes_fwd)>3) && (prop(change_bothways_4_left)=prop(change_bothways_3_right)),list(0.1,999999),prop(change_bothways_3_right)));
994}
995
996/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
997/* Make the borders always solid */
998/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
999way|z17-[is_prop_set(ok)][prop(style_right_hand_traffic)]
1000{
1001 change_forward_1_left: eval(((prop(oneway_type)=1) || (prop(lanes_all)=1))?prop(change_border):prop(change_forward_1_left));
1002 change_backward_1_left: eval((prop(oneway_type)=(-1))?prop(change_border):prop(change_backward_1_left));
1003}
1004way|z17-[is_prop_set(ok)][!prop(style_right_hand_traffic)]
1005{
1006 change_forward_1_left: prop(change_border);
1007 change_backward_1_left: prop(change_border);
1008 change_forward_1_right: eval((prop(lanes_all)=1)?prop(change_border):prop(change_forward_1_right));
1009}
1010way|z17-[is_prop_set(ok)][prop(style_right_hand_traffic)],
1011way|z17-[is_prop_set(ok)][!prop(style_right_hand_traffic)][prop(oneway_type)=1]
1012{
1013 change_forward_1_right: eval((prop(lanes_fwd)=1)?prop(change_border):prop(change_forward_1_right));
1014 change_forward_2_right: eval((prop(lanes_fwd)=2)?prop(change_border):prop(change_forward_2_right));
1015 change_forward_3_right: eval((prop(lanes_fwd)=3)?prop(change_border):prop(change_forward_3_right));
1016 change_forward_4_right: eval((prop(lanes_fwd)=4)?prop(change_border):prop(change_forward_4_right));
1017 change_forward_5_right: eval((prop(lanes_fwd)=5)?prop(change_border):prop(change_forward_5_right));
1018 change_forward_6_right: eval((prop(lanes_fwd)=6)?prop(change_border):prop(change_forward_6_right));
1019 change_forward_7_right: eval((prop(lanes_fwd)=7)?prop(change_border):prop(change_forward_7_right));
1020 change_forward_8_right: eval((prop(lanes_fwd)=8)?prop(change_border):prop(change_forward_8_right));
1021}
1022way|z17-[is_prop_set(ok)][prop(style_right_hand_traffic)],
1023way|z17-[is_prop_set(ok)][!prop(style_right_hand_traffic)][prop(oneway_type)=(-1)]
1024{
1025 change_backward_1_right: eval((prop(lanes_bwd)=1)?prop(change_border):prop(change_backward_1_right));
1026 change_backward_2_right: eval((prop(lanes_bwd)=2)?prop(change_border):prop(change_backward_2_right));
1027 change_backward_3_right: eval((prop(lanes_bwd)=3)?prop(change_border):prop(change_backward_3_right));
1028 change_backward_4_right: eval((prop(lanes_bwd)=4)?prop(change_border):prop(change_backward_4_right));
1029 change_backward_5_right: eval((prop(lanes_bwd)=5)?prop(change_border):prop(change_backward_5_right));
1030 change_backward_6_right: eval((prop(lanes_bwd)=6)?prop(change_border):prop(change_backward_6_right));
1031 change_backward_7_right: eval((prop(lanes_bwd)=7)?prop(change_border):prop(change_backward_7_right));
1032 change_backward_8_right: eval((prop(lanes_bwd)=8)?prop(change_border):prop(change_backward_8_right));
1033}
1034
1035
1036/***************************************************************************************************************************************************/
1037/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1038/* Lane-dependent width */
1039/* This must be done AFTER the determination of the lanes count */
1040/* Note: the number of values is calcuated BEFORE the determination of the lanes count */
1041/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1042/***************************************************************************************************************************************************/
1043way|z17-[is_prop_set(ok)]
1044{
1045 lane_width_forward_1: eval(prop(lane_default_width)); lane_width_forward_2: eval(prop(lane_default_width));
1046 lane_width_forward_3: eval(prop(lane_default_width)); lane_width_forward_4: eval(prop(lane_default_width));
1047 lane_width_forward_5: eval(prop(lane_default_width)); lane_width_forward_6: eval(prop(lane_default_width));
1048 lane_width_forward_7: eval(prop(lane_default_width)); lane_width_forward_8: eval(prop(lane_default_width));
1049
1050 lane_width_backward_1: eval(prop(lane_default_width)); lane_width_backward_2: eval(prop(lane_default_width));
1051 lane_width_backward_3: eval(prop(lane_default_width)); lane_width_backward_4: eval(prop(lane_default_width));
1052 lane_width_backward_5: eval(prop(lane_default_width)); lane_width_backward_6: eval(prop(lane_default_width));
1053 lane_width_backward_7: eval(prop(lane_default_width)); lane_width_backward_8: eval(prop(lane_default_width));
1054
1055 lane_width_bothways_1: eval(prop(lane_default_width)); lane_width_bothways_2: eval(prop(lane_default_width));
1056 lane_width_bothways_3: eval(prop(lane_default_width)); lane_width_bothways_4: eval(prop(lane_default_width));
1057}
1058
1059/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1060/* Forward lanes */
1061/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1062way|z17-[is_prop_set(ok)]["width:lanes:forward"],
1063way|z17-[is_prop_set(ok)]["width:lanes"][prop(oneway_type)=1]
1064{
1065 temp: eval(cond(has_tag_key("width:lanes:forward"),tag("width:lanes:forward"),tag("width:lanes")));
1066 temp_list: eval(split("|",prop(temp)));
1067 temp_length: eval(length(prop(temp_list)));
1068
1069 lane_width_forward_1: eval(((prop(temp_length)>0) && (get(prop(temp_list),0)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),0)))):prop(lane_default_width));
1070 lane_width_forward_2: eval(((prop(temp_length)>1) && (get(prop(temp_list),1)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),1)))):prop(lane_default_width));
1071 lane_width_forward_3: eval(((prop(temp_length)>2) && (get(prop(temp_list),2)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),2)))):prop(lane_default_width));
1072 lane_width_forward_4: eval(((prop(temp_length)>3) && (get(prop(temp_list),3)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),3)))):prop(lane_default_width));
1073 lane_width_forward_5: eval(((prop(temp_length)>4) && (get(prop(temp_list),4)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),4)))):prop(lane_default_width));
1074 lane_width_forward_6: eval(((prop(temp_length)>5) && (get(prop(temp_list),5)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),5)))):prop(lane_default_width));
1075 lane_width_forward_7: eval(((prop(temp_length)>6) && (get(prop(temp_list),6)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),6)))):prop(lane_default_width));
1076 lane_width_forward_8: eval(((prop(temp_length)>7) && (get(prop(temp_list),7)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),7)))):prop(lane_default_width));
1077}
1078
1079/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1080/* Backward lanes */
1081/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1082way|z17-[is_prop_set(ok)]["width:lanes:backward"],
1083way|z17-[is_prop_set(ok)]["width:lanes"][prop(oneway_type)=(-1)]
1084{
1085 temp: eval(cond(has_tag_key("width:lanes:backward"),tag("width:lanes:backward"),tag("width:lanes")));
1086 temp_list: eval(split("|",prop(temp)));
1087 temp_length: eval(length(prop(temp_list)));
1088
1089 lane_width_backward_1: eval(((prop(temp_length)>0) && (get(prop(temp_list),0)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),0)))):prop(lane_default_width));
1090 lane_width_backward_2: eval(((prop(temp_length)>1) && (get(prop(temp_list),1)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),1)))):prop(lane_default_width));
1091 lane_width_backward_3: eval(((prop(temp_length)>2) && (get(prop(temp_list),2)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),2)))):prop(lane_default_width));
1092 lane_width_backward_4: eval(((prop(temp_length)>3) && (get(prop(temp_list),3)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),3)))):prop(lane_default_width));
1093 lane_width_backward_5: eval(((prop(temp_length)>4) && (get(prop(temp_list),4)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),4)))):prop(lane_default_width));
1094 lane_width_backward_6: eval(((prop(temp_length)>5) && (get(prop(temp_list),5)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),5)))):prop(lane_default_width));
1095 lane_width_backward_7: eval(((prop(temp_length)>6) && (get(prop(temp_list),6)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),6)))):prop(lane_default_width));
1096 lane_width_backward_8: eval(((prop(temp_length)>7) && (get(prop(temp_list),7)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),7)))):prop(lane_default_width));
1097}
1098
1099/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1100/* Bothways lanes */
1101/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1102way|z17-[is_prop_set(ok)]["width:lanes:both_ways"]
1103{
1104 temp: eval(tag("width:lanes:both_ways"));
1105 temp_list: eval(split("|",prop(temp)));
1106 temp_length: eval(length(prop(temp_list)));
1107
1108 lane_width_bothways_1: eval(((prop(temp_length)>0) && (get(prop(temp_list),0)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),0)))):prop(lane_default_width));
1109 lane_width_bothways_2: eval(((prop(temp_length)>1) && (get(prop(temp_list),1)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),1)))):prop(lane_default_width));
1110 lane_width_bothways_3: eval(((prop(temp_length)>2) && (get(prop(temp_list),2)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),2)))):prop(lane_default_width));
1111 lane_width_bothways_4: eval(((prop(temp_length)>3) && (get(prop(temp_list),3)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),3)))):prop(lane_default_width));
1112}
1113
1114way|z17-[is_prop_set(ok)]
1115{
1116 lane_width_all_forward: eval(
1117 ((prop(lanes_fwd)>0)?prop(lane_width_forward_1):0)+
1118 ((prop(lanes_fwd)>1)?prop(lane_width_forward_2):0)+
1119 ((prop(lanes_fwd)>2)?prop(lane_width_forward_3):0)+
1120 ((prop(lanes_fwd)>3)?prop(lane_width_forward_4):0)+
1121 ((prop(lanes_fwd)>4)?prop(lane_width_forward_5):0)+
1122 ((prop(lanes_fwd)>5)?prop(lane_width_forward_6):0)+
1123 ((prop(lanes_fwd)>6)?prop(lane_width_forward_7):0)+
1124 ((prop(lanes_fwd)>7)?prop(lane_width_forward_8):0)
1125 );
1126
1127 lane_width_all_backward: eval(
1128 ((prop(lanes_bwd)>0)?prop(lane_width_backward_1):0)+
1129 ((prop(lanes_bwd)>1)?prop(lane_width_backward_2):0)+
1130 ((prop(lanes_bwd)>2)?prop(lane_width_backward_3):0)+
1131 ((prop(lanes_bwd)>3)?prop(lane_width_backward_4):0)+
1132 ((prop(lanes_bwd)>4)?prop(lane_width_backward_5):0)+
1133 ((prop(lanes_bwd)>5)?prop(lane_width_backward_6):0)+
1134 ((prop(lanes_bwd)>6)?prop(lane_width_backward_7):0)+
1135 ((prop(lanes_bwd)>7)?prop(lane_width_backward_8):0)
1136 );
1137
1138 lane_width_all_bothways: eval(
1139 ((prop(lanes_both)>0)?prop(lane_width_bothways_1):0)+
1140 ((prop(lanes_both)>1)?prop(lane_width_bothways_2):0)+
1141 ((prop(lanes_both)>2)?prop(lane_width_bothways_3):0)+
1142 ((prop(lanes_both)>3)?prop(lane_width_bothways_4):0)
1143 );
1144
1145 lane_width_all: eval((prop(lane_width_all_forward)+prop(lane_width_all_backward))+prop(lane_width_all_bothways));
1146}
1147
1148/***************************************************************************************************************************************************/
1149/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1150/* Offset of the road given by the placement tag */
1151/* It is assumed that only one of the placement tags is set, otherwise the result will most certainly be incorrect */
1152/* TODO: placement:both_ways is currently not supported, verify support for left-hand-traffic */
1153/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1154/***************************************************************************************************************************************************/
1155/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1156/* Error checking */
1157/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1158way["placement"]
1159{
1160 data_error: eval(regexp_test("^(transition|middle_of:[0-9]+|right_of:[0-9]+|left_of:[0-9]+)$",tag("placement"))?prop(data_error):"invalid placement value");
1161}
1162way["placement:forward"]
1163{
1164 data_error: eval(regexp_test("^(transition|middle_of:[0-9]+|right_of:[0-9]+|left_of:[0-9]+)$",tag("placement:forward"))?prop(data_error):"invalid placement:forward value");
1165}
1166way["placement:backward"]
1167{
1168 data_error: eval(regexp_test("^(transition|middle_of:[0-9]+|right_of:[0-9]+|left_of:[0-9]+)$",tag("placement:backward"))?prop(data_error):"invalid placement:backward value");
1169}
1170way["placement"]["placement:forward"], way["placement"]["placement:backward"], way["placement:forward"]["placement:backward"]
1171{
1172 data_error: eval("multiple placement tags");
1173}
1174
1175/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1176/* 1. Calculate the borders without consideration of placement */
1177/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1178way[is_prop_set(ok)]
1179{
1180 /* Determine the borders of the parts of the carriageway assuming no placement was specified */
1181 placement_offset: 0;
1182 placement_transition: eval(has_tag_key("placement") && (tag("placement")="transition"));
1183 left_carriageway_border: eval(prop(lane_width_all)/2.0);
1184 left_forward_border: eval(cond(prop(style_right_hand_traffic),
1185 (prop(left_carriageway_border) - (prop(lane_width_all_backward)+prop(lane_width_all_bothways))),
1186 prop(left_carriageway_border)
1187 )
1188 );
1189 right_backward_border: eval(cond(prop(style_right_hand_traffic),
1190 (prop(left_carriageway_border) - prop(lane_width_all_backward)),
1191 (prop(left_carriageway_border) - prop(lane_width_all))
1192 )
1193 );
1194 left_bothways_border: eval(cond(prop(style_right_hand_traffic),
1195 (prop(left_carriageway_border) - prop(lane_width_all_backward)),
1196 (prop(left_carriageway_border) - prop(lane_width_all_forward))
1197 )
1198 );
1199}
1200
1201/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1202/* 2.a. Offset of the forward lanes */
1203/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1204way|z17-[is_prop_set(ok)]
1205{
1206 lane_offset_forward_1: eval(prop(left_forward_border)-
1207 (prop(lane_width_forward_1)/2));
1208 lane_offset_forward_2: eval(prop(lane_offset_forward_1)-
1209 ((prop(lane_width_forward_1)+
1210 prop(lane_width_forward_2))/2));
1211 lane_offset_forward_3: eval(prop(lane_offset_forward_2)-
1212 ((prop(lane_width_forward_2)+
1213 prop(lane_width_forward_3))/2));
1214 lane_offset_forward_4: eval(prop(lane_offset_forward_3)-
1215 ((prop(lane_width_forward_3)+
1216 prop(lane_width_forward_4))/2));
1217 lane_offset_forward_5: eval(prop(lane_offset_forward_4)-
1218 ((prop(lane_width_forward_4)+
1219 prop(lane_width_forward_5))/2));
1220 lane_offset_forward_6: eval(prop(lane_offset_forward_5)-
1221 ((prop(lane_width_forward_5)+
1222 prop(lane_width_forward_6))/2));
1223 lane_offset_forward_7: eval(prop(lane_offset_forward_6)-
1224 ((prop(lane_width_forward_6)+
1225 prop(lane_width_forward_7))/2));
1226 lane_offset_forward_8: eval(prop(lane_offset_forward_7)-
1227 ((prop(lane_width_forward_7)+
1228 prop(lane_width_forward_8))/2));
1229}
1230
1231/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1232/* 2.b. Offset of the backward lanes */
1233/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1234way|z17-[is_prop_set(ok)]
1235{
1236 lane_offset_backward_1: eval(prop(right_backward_border)+
1237 (prop(lane_width_backward_1)/2));
1238 lane_offset_backward_2: eval(prop(lane_offset_backward_1)+
1239 ((prop(lane_width_backward_1)+
1240 prop(lane_width_backward_2))/2));
1241 lane_offset_backward_3: eval(prop(lane_offset_backward_2)+
1242 ((prop(lane_width_backward_2)+
1243 prop(lane_width_backward_3))/2));
1244 lane_offset_backward_4: eval(prop(lane_offset_backward_3)+
1245 ((prop(lane_width_backward_3)+
1246 prop(lane_width_backward_4))/2));
1247 lane_offset_backward_5: eval(prop(lane_offset_backward_4)+
1248 ((prop(lane_width_backward_4)+
1249 prop(lane_width_backward_5))/2));
1250 lane_offset_backward_6: eval(prop(lane_offset_backward_5)+
1251 ((prop(lane_width_backward_5)+
1252 prop(lane_width_backward_6))/2));
1253 lane_offset_backward_7: eval(prop(lane_offset_backward_6)+
1254 ((prop(lane_width_backward_6)+
1255 prop(lane_width_backward_7))/2));
1256 lane_offset_backward_8: eval(prop(lane_offset_backward_7)+
1257 ((prop(lane_width_backward_7)+
1258 prop(lane_width_backward_8))/2));
1259}
1260
1261/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1262/* 2.c. Offset of the both_ways lanes */
1263/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1264way|z17-[is_prop_set(ok)]
1265{
1266 lane_offset_bothways_1: eval(prop(left_bothways_border)-
1267 (prop(lane_width_bothways_1)/2));
1268 lane_offset_bothways_2: eval(prop(lane_offset_bothways_1)-
1269 ((prop(lane_width_bothways_1)+
1270 prop(lane_width_bothways_2))/2));
1271 lane_offset_bothways_3: eval(prop(lane_offset_bothways_2)-
1272 ((prop(lane_width_bothways_2)+
1273 prop(lane_width_bothways_3))/2));
1274 lane_offset_bothways_4: eval(prop(lane_offset_bothways_3)-
1275 ((prop(lane_width_bothways_3)+
1276 prop(lane_width_bothways_4))/2));
1277}
1278
1279/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1280/* 3. Now determine the offset given by the placement tag */
1281/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1282way[is_prop_set(ok)]["placement:forward"]["placement:forward"!=transition],
1283way[is_prop_set(ok)][prop(oneway_type)=1][placement][placement!=transition]
1284{
1285 placement_value: eval(has_tag_key("placement")?tag("placement"):tag("placement:forward"));
1286 placement_offset: eval(
1287 cond(prop("placement_value")="right_of:1",eval((prop(lane_width_forward_1)/2)-prop(lane_offset_forward_1)),
1288 cond(prop("placement_value")="right_of:2",eval((prop(lane_width_forward_2)/2)-prop(lane_offset_forward_2)),
1289 cond(prop("placement_value")="right_of:3",eval((prop(lane_width_forward_3)/2)-prop(lane_offset_forward_3)),
1290 cond(prop("placement_value")="right_of:4",eval((prop(lane_width_forward_4)/2)-prop(lane_offset_forward_4)),
1291 cond(prop("placement_value")="right_of:5",eval((prop(lane_width_forward_5)/2)-prop(lane_offset_forward_5)),
1292 cond(prop("placement_value")="right_of:6",eval((prop(lane_width_forward_6)/2)-prop(lane_offset_forward_6)),
1293 cond(prop("placement_value")="right_of:7",eval((prop(lane_width_forward_7)/2)-prop(lane_offset_forward_7)),
1294 cond(prop("placement_value")="right_of:8",eval((prop(lane_width_forward_8)/2)-prop(lane_offset_forward_8)),
1295 cond(prop("placement_value")="left_of:1",eval(-(prop(lane_offset_forward_1)+(prop(lane_width_forward_1)/2))),
1296 cond(prop("placement_value")="left_of:2",eval(-(prop(lane_offset_forward_2)+(prop(lane_width_forward_2)/2))),
1297 cond(prop("placement_value")="left_of:3",eval(-(prop(lane_offset_forward_3)+(prop(lane_width_forward_3)/2))),
1298 cond(prop("placement_value")="left_of:4",eval(-(prop(lane_offset_forward_4)+(prop(lane_width_forward_4)/2))),
1299 cond(prop("placement_value")="left_of:5",eval(-(prop(lane_offset_forward_5)+(prop(lane_width_forward_5)/2))),
1300 cond(prop("placement_value")="left_of:6",eval(-(prop(lane_offset_forward_6)+(prop(lane_width_forward_6)/2))),
1301 cond(prop("placement_value")="left_of:7",eval(-(prop(lane_offset_forward_7)+(prop(lane_width_forward_7)/2))),
1302 cond(prop("placement_value")="left_of:8",eval(-(prop(lane_offset_forward_8)+(prop(lane_width_forward_8)/2))),
1303 cond(prop("placement_value")="middle_of:1",eval(-prop(lane_offset_forward_1)),
1304 cond(prop("placement_value")="middle_of:2",eval(-prop(lane_offset_forward_2)),
1305 cond(prop("placement_value")="middle_of:3",eval(-prop(lane_offset_forward_3)),
1306 cond(prop("placement_value")="middle_of:4",eval(-prop(lane_offset_forward_4)),
1307 cond(prop("placement_value")="middle_of:5",eval(-prop(lane_offset_forward_5)),
1308 cond(prop("placement_value")="middle_of:6",eval(-prop(lane_offset_forward_6)),
1309 cond(prop("placement_value")="middle_of:7",eval(-prop(lane_offset_forward_7)),
1310 cond(prop("placement_value")="middle_of:8",eval(-prop(lane_offset_forward_8)),
1311 0
1312 ))))))))))))))))))))))))
1313 );
1314}
1315way[is_prop_set(ok)]["placement:backward"]["placement:backward"!=transition],
1316way[is_prop_set(ok)][prop(oneway_type)=(-1)][placement][placement!=transition]
1317{
1318 placement_value: eval(has_tag_key("placement")?tag("placement"):tag("placement:backward"));
1319 placement_offset: eval(
1320 cond(prop("placement_value")="right_of:1",eval(-(prop(lane_offset_backward_1)+(prop(lane_width_backward_1)/2))),
1321 cond(prop("placement_value")="right_of:2",eval(-(prop(lane_offset_backward_2)+(prop(lane_width_backward_2)/2))),
1322 cond(prop("placement_value")="right_of:3",eval(-(prop(lane_offset_backward_3)+(prop(lane_width_backward_3)/2))),
1323 cond(prop("placement_value")="right_of:4",eval(-(prop(lane_offset_backward_4)+(prop(lane_width_backward_4)/2))),
1324 cond(prop("placement_value")="right_of:5",eval(-(prop(lane_offset_backward_5)+(prop(lane_width_backward_5)/2))),
1325 cond(prop("placement_value")="right_of:6",eval(-(prop(lane_offset_backward_6)+(prop(lane_width_backward_6)/2))),
1326 cond(prop("placement_value")="right_of:7",eval(-(prop(lane_offset_backward_7)+(prop(lane_width_backward_7)/2))),
1327 cond(prop("placement_value")="right_of:8",eval(-(prop(lane_offset_backward_8)+(prop(lane_width_backward_8)/2))),
1328 cond(prop("placement_value")="left_of:1",eval((prop(lane_width_backward_1)/2)-prop(lane_offset_backward_1)),
1329 cond(prop("placement_value")="left_of:2",eval((prop(lane_width_backward_2)/2)-prop(lane_offset_backward_2)),
1330 cond(prop("placement_value")="left_of:3",eval((prop(lane_width_backward_3)/2)-prop(lane_offset_backward_3)),
1331 cond(prop("placement_value")="left_of:4",eval((prop(lane_width_backward_4)/2)-prop(lane_offset_backward_4)),
1332 cond(prop("placement_value")="left_of:5",eval((prop(lane_width_backward_5)/2)-prop(lane_offset_backward_5)),
1333 cond(prop("placement_value")="left_of:6",eval((prop(lane_width_backward_6)/2)-prop(lane_offset_backward_6)),
1334 cond(prop("placement_value")="left_of:7",eval((prop(lane_width_backward_7)/2)-prop(lane_offset_backward_7)),
1335 cond(prop("placement_value")="left_of:8",eval((prop(lane_width_backward_8)/2)-prop(lane_offset_backward_8)),
1336 cond(prop("placement_value")="middle_of:1",eval(-prop(lane_offset_backward_1)),
1337 cond(prop("placement_value")="middle_of:2",eval(-prop(lane_offset_backward_2)),
1338 cond(prop("placement_value")="middle_of:3",eval(-prop(lane_offset_backward_3)),
1339 cond(prop("placement_value")="middle_of:4",eval(-prop(lane_offset_backward_4)),
1340 cond(prop("placement_value")="middle_of:5",eval(-prop(lane_offset_backward_5)),
1341 cond(prop("placement_value")="middle_of:6",eval(-prop(lane_offset_backward_6)),
1342 cond(prop("placement_value")="middle_of:7",eval(-prop(lane_offset_backward_7)),
1343 cond(prop("placement_value")="middle_of:8",eval(-prop(lane_offset_backward_8)),
1344 0
1345 ))))))))))))))))))))))))
1346 );
1347}
1348way[is_prop_set(ok)]["placement:both_ways"]["placement:both_ways"!=transition]
1349{
1350 placement_value: eval(tag("placement:both_ways"));
1351 placement_offset: eval(
1352 cond(prop("placement_value")="right_of:1",eval((prop(lane_width_bothways_1)/2)-prop(lane_offset_bothways_1)),
1353 cond(prop("placement_value")="right_of:2",eval((prop(lane_width_bothways_2)/2)-prop(lane_offset_bothways_2)),
1354 cond(prop("placement_value")="right_of:3",eval((prop(lane_width_bothways_3)/2)-prop(lane_offset_bothways_3)),
1355 cond(prop("placement_value")="right_of:4",eval((prop(lane_width_bothways_4)/2)-prop(lane_offset_bothways_4)),
1356 cond(prop("placement_value")="left_of:1",eval(-(prop(lane_offset_bothways_1)+(prop(lane_width_bothways_1)/2))),
1357 cond(prop("placement_value")="left_of:2",eval(-(prop(lane_offset_bothways_2)+(prop(lane_width_bothways_2)/2))),
1358 cond(prop("placement_value")="left_of:3",eval(-(prop(lane_offset_bothways_3)+(prop(lane_width_bothways_3)/2))),
1359 cond(prop("placement_value")="left_of:4",eval(-(prop(lane_offset_bothways_4)+(prop(lane_width_bothways_4)/2))),
1360 cond(prop("placement_value")="middle_of:1",eval(-prop(lane_offset_bothways_1)),
1361 cond(prop("placement_value")="middle_of:2",eval(-prop(lane_offset_bothways_2)),
1362 cond(prop("placement_value")="middle_of:3",eval(-prop(lane_offset_bothways_3)),
1363 cond(prop("placement_value")="middle_of:4",eval(-prop(lane_offset_bothways_4)),
1364 0
1365 ))))))))))))
1366 );
1367}
1368
1369/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1370/* 4. Move the carriageway and the lanes */
1371/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1372way[is_prop_set(ok)]
1373{
1374 /* Move the carriageway borders */
1375 left_carriageway_border: eval((prop(left_carriageway_border) + prop(placement_offset)));
1376 left_forward_border: eval((prop(left_forward_border) + prop(placement_offset)));
1377 right_backward_border: eval((prop(right_backward_border) + prop(placement_offset)));
1378 left_bothways_border: eval((prop(left_bothways_border) + prop(placement_offset)));
1379
1380 /* Move the lanes */
1381 lane_offset_forward_1: eval((prop(lane_offset_forward_1) + prop(placement_offset)));
1382 lane_offset_forward_2: eval((prop(lane_offset_forward_2) + prop(placement_offset)));
1383 lane_offset_forward_3: eval((prop(lane_offset_forward_3) + prop(placement_offset)));
1384 lane_offset_forward_4: eval((prop(lane_offset_forward_4) + prop(placement_offset)));
1385 lane_offset_forward_5: eval((prop(lane_offset_forward_5) + prop(placement_offset)));
1386 lane_offset_forward_6: eval((prop(lane_offset_forward_6) + prop(placement_offset)));
1387 lane_offset_forward_7: eval((prop(lane_offset_forward_7) + prop(placement_offset)));
1388 lane_offset_forward_8: eval((prop(lane_offset_forward_8) + prop(placement_offset)));
1389 lane_offset_backward_1: eval((prop(lane_offset_backward_1) + prop(placement_offset)));
1390 lane_offset_backward_2: eval((prop(lane_offset_backward_2) + prop(placement_offset)));
1391 lane_offset_backward_3: eval((prop(lane_offset_backward_3) + prop(placement_offset)));
1392 lane_offset_backward_4: eval((prop(lane_offset_backward_4) + prop(placement_offset)));
1393 lane_offset_backward_5: eval((prop(lane_offset_backward_5) + prop(placement_offset)));
1394 lane_offset_backward_6: eval((prop(lane_offset_backward_6) + prop(placement_offset)));
1395 lane_offset_backward_7: eval((prop(lane_offset_backward_7) + prop(placement_offset)));
1396 lane_offset_backward_8: eval((prop(lane_offset_backward_8) + prop(placement_offset)));
1397 lane_offset_bothways_1: eval((prop(lane_offset_bothways_1) + prop(placement_offset)));
1398 lane_offset_bothways_2: eval((prop(lane_offset_bothways_2) + prop(placement_offset)));
1399 lane_offset_bothways_3: eval((prop(lane_offset_bothways_3) + prop(placement_offset)));
1400 lane_offset_bothways_4: eval((prop(lane_offset_bothways_4) + prop(placement_offset)));
1401}
1402
1403/***************************************************************************************************************************************************/
1404/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1405/* Render the carriageway */
1406/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1407/***************************************************************************************************************************************************/
1408way[is_prop_set(ok)][is_prop_set(lanes_all)]::Ground
1409{
1410 linecap: none;
1411 /* The "ground" will be drawn by each lane, so that we can use different colors per lane */
1412 opacity: 0.0;
1413 width: eval(prop(lane_width_all,"default"));
1414 offset: prop(placement_offset,"default");
1415 major-z-index: -1.0;
1416}
1417
1418/* Sidewalk and cycletrack */
1419way|z17- {} /* ATTENTION: For whatever reason this is needed, otherwise the following won't be interpreted correctly */
1420way|z17-[is_prop_set(ok)][is_prop_set(lanes_all)]::Ground
1421{
1422 /* Cycletrack in an one-way on the left side? */
1423 temp_allow_cycleway_left: eval(!(
1424 ((prop(oneway_type,"default")=1) && prop(style_right_hand_traffic,"default")) ||
1425 ((prop(oneway_type,"default")=(-1)) && (!prop(style_right_hand_traffic,"default")))
1426 ));
1427
1428 temp_allow_cycleway_left: eval(prop(temp_allow_cycleway_left) || (has_tag_key("oneway:bicycle") && (tag("oneway:bicycle")="no")));
1429 /* Explicitely no cycletrack on the left side? */
1430 temp_allow_cycleway_left: eval((has_tag_key("cycleway:left") && (tag("cycleway:left")="no"))?false:prop(temp_allow_cycleway_left));
1431 /* Cycletrack on the left side */
1432 temp_cycleway_left: eval(((has_tag_key(cycleway) && ((tag(cycleway)="track") && prop(temp_allow_cycleway_left))) ||
1433 (has_tag_key("cycleway:left") && (tag("cycleway:left")="track"))) ||
1434 (has_tag_key("cycleway:both") && (tag("cycleway:both")="track"))
1435 );
1436
1437 /* Sidewalk on the left side? */
1438 templ: eval((has_tag_key(sidewalk) && ((tag(sidewalk)="both") || (tag(sidewalk)="left")))?1:0);
1439
1440 /* Combine sidewalk and cycletrack: 0=none; 1=sidewalk; 2=cycletrack; 3=sidewalk and cycletrack */
1441 templ: eval(prop(templ)+(prop(temp_cycleway_left)?2:0));
1442
1443
1444 /* Cycletrack in an one-way on the right side? */
1445 temp_allow_cycleway_right: eval(!(
1446 ((prop(oneway_type,"default")=(-1)) && prop(style_right_hand_traffic,"default")) ||
1447 ((prop(oneway_type,"default")=1) && (!prop(style_right_hand_traffic,"default")))
1448 ));
1449
1450 temp_allow_cycleway_right: eval(prop(temp_allow_cycleway_right) || (has_tag_key("oneway:bicycle") && (tag("oneway:bicycle")="no")));
1451 /* Explicitely no cycletrack on the right side? */
1452 temp_allow_cycleway_right: eval((has_tag_key("cycleway:right") && (tag("cycleway:right")="no"))?false:prop(temp_allow_cycleway_right));
1453 /* Cycletrack on the right side */
1454 temp_cycleway_right: eval(((has_tag_key(cycleway) && ((tag(cycleway)="track") && prop(temp_allow_cycleway_right))) ||
1455 (has_tag_key("cycleway:right") && (tag("cycleway:right")="track"))) ||
1456 (has_tag_key("cycleway:both") && (tag("cycleway:both")="track"))
1457 );
1458
1459 /* Sidewalk on the right side? */
1460 tempr: eval((has_tag_key(sidewalk) && ((tag(sidewalk)="both") || (tag(sidewalk)="right")))?1:0);
1461
1462 /* Combine sidewalk and cycletrack: 0=none; 1=sidewalk; 2=cycletrack; 3=sidewalk and cycletrack */
1463 tempr: eval(prop(tempr)+(prop(temp_cycleway_right)?2:0));
1464
1465
1466 left-casing-linecap: none;
1467 left-casing-width: eval((prop(templ)>0)?(prop(lane_default_width,"default")/2):0);
1468 left-casing-color: eval(get(prop(style_sidewalk_color,"default"),prop(templ)));
1469 left-casing-opacity: prop(style_ground_opacity,"default");
1470
1471 right-casing-linecap: none;
1472 right-casing-width: eval((prop(tempr)>0)?(prop(lane_default_width,"default")/2):0);
1473 right-casing-color: eval(get(prop(style_sidewalk_color,"default"),prop(tempr)));
1474 right-casing-opacity: prop(style_ground_opacity,"default");
1475}
1476
1477/***************************************************************************************************************************************************/
1478/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1479/* Render the lanes */
1480/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1481/***************************************************************************************************************************************************/
1482/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1483/* Forward lanes */
1484/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1485way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 0]::Lane_Forward_1
1486{
1487 offset: eval(prop(lane_offset_forward_1,"default"));
1488 width: eval((prop(lane_width_forward_1,"default")-prop(lane_casing,"default")));
1489 right-casing-dashes: eval(prop(change_forward_1_right,"default"));
1490 left-casing-dashes: eval(prop(change_forward_1_left,"default"));
1491 turn_matrix_scaling: eval(is_prop_set(turn_forward_1,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
1492
1493 opacity: 0.0; linecap: none;
1494 right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
1495 left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
1496 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
1497}
1498way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 0]::Lane_Forward_1_Color
1499{
1500 offset: eval(prop(lane_offset_forward_1,"default"));
1501 width: eval(prop(lane_width_forward_1,"default"));
1502 color: prop(color_forward_1,"default");
1503 dashes: eval(is_prop_set(designated_color_forward_1,"default")?list(20,20):prop(unset_property));
1504 dashes-background-color: eval(is_prop_set(designated_color_forward_1,"default")?
1505 prop(designated_color_forward_1,"default"):prop(unset_property));
1506 opacity: prop(style_lane_opacity,"default"); linecap: none;
1507 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
1508}
1509
1510way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 1]::Lane_Forward_2
1511{
1512 offset: eval(prop(lane_offset_forward_2,"default"));
1513 width: eval((prop(lane_width_forward_2,"default")-prop(lane_casing,"default")));
1514 right-casing-dashes: eval(prop(change_forward_2_right,"default"));
1515 left-casing-dashes: eval(prop(change_forward_2_left,"default"));
1516 turn_matrix_scaling: eval(is_prop_set(turn_forward_2,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
1517
1518 opacity: 0.0; linecap: none;
1519 right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
1520 left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
1521 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
1522}
1523way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 1]::Lane_Forward_2_Color
1524{
1525 offset: eval(prop(lane_offset_forward_2,"default"));
1526 width: eval(prop(lane_width_forward_2,"default"));
1527 color: prop(color_forward_2,"default");
1528 dashes: eval(is_prop_set(designated_color_forward_2,"default")?list(20,20):prop(unset_property));
1529 dashes-background-color: eval(is_prop_set(designated_color_forward_2,"default")?
1530 prop(designated_color_forward_2,"default"):prop(unset_property));
1531 opacity: prop(style_lane_opacity,"default"); linecap: none;
1532 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
1533}
1534
1535way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 2]::Lane_Forward_3
1536{
1537 offset: eval(prop(lane_offset_forward_3,"default"));
1538 width: eval((prop(lane_width_forward_3,"default")-prop(lane_casing,"default")));
1539 right-casing-dashes: eval(prop(change_forward_3_right,"default"));
1540 left-casing-dashes: eval(prop(change_forward_3_left,"default"));
1541 turn_matrix_scaling: eval(is_prop_set(turn_forward_3,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
1542
1543 opacity: 0.0; linecap: none;
1544 right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
1545 left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
1546 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
1547}
1548way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 2]::Lane_Forward_3_Color
1549{
1550 offset: eval(prop(lane_offset_forward_3,"default"));
1551 width: eval(prop(lane_width_forward_3,"default"));
1552 color: prop(color_forward_3,"default");
1553 dashes: eval(is_prop_set(designated_color_forward_3,"default")?list(20,20):prop(unset_property));
1554 dashes-background-color: eval(is_prop_set(designated_color_forward_3,"default")?
1555 prop(designated_color_forward_3,"default"):prop(unset_property));
1556 opacity: prop(style_lane_opacity,"default"); linecap: none;
1557 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
1558}
1559
1560way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 3]::Lane_Forward_4
1561{
1562 offset: eval(prop(lane_offset_forward_4,"default"));
1563 width: eval((prop(lane_width_forward_4,"default")-prop(lane_casing,"default")));
1564 right-casing-dashes: eval(prop(change_forward_4_right,"default"));
1565 left-casing-dashes: eval(prop(change_forward_4_left,"default"));
1566 turn_matrix_scaling: eval(is_prop_set(turn_forward_4,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
1567 opacity: 0.0; linecap: none;
1568 right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
1569 left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
1570 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
1571}
1572way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 3]::Lane_Forward_4_Color
1573{
1574 offset: eval(prop(lane_offset_forward_4,"default"));
1575 width: eval(prop(lane_width_forward_4,"default"));
1576 color: prop(color_forward_4,"default");
1577 dashes: eval(is_prop_set(designated_color_forward_4,"default")?list(20,20):prop(unset_property));
1578 dashes-background-color: eval(is_prop_set(designated_color_forward_4,"default")?
1579 prop(designated_color_forward_4,"default"):prop(unset_property));
1580 opacity: prop(style_lane_opacity,"default"); linecap: none;
1581 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
1582}
1583
1584way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 4]::Lane_Forward_5
1585{
1586 offset: eval(prop(lane_offset_forward_5,"default"));
1587 width: eval((prop(lane_width_forward_5,"default")-prop(lane_casing,"default")));
1588 right-casing-dashes: eval(prop(change_forward_5_right,"default"));
1589 left-casing-dashes: eval(prop(change_forward_5_left,"default"));
1590 turn_matrix_scaling: eval(is_prop_set(turn_forward_5,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
1591
1592 opacity: 0.0; linecap: none;
1593 right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
1594 left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
1595 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
1596}
1597way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 4]::Lane_Forward_5_Color
1598{
1599 offset: eval(prop(lane_offset_forward_5,"default"));
1600 width: eval(prop(lane_width_forward_5,"default"));
1601 color: prop(color_forward_5,"default");
1602 dashes: eval(is_prop_set(designated_color_forward_5,"default")?list(20,20):prop(unset_property));
1603 dashes-background-color: eval(is_prop_set(designated_color_forward_5,"default")?
1604 prop(designated_color_forward_5,"default"):prop(unset_property));
1605 opacity: prop(style_lane_opacity,"default"); linecap: none;
1606 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
1607}
1608
1609way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 5]::Lane_Forward_6
1610{
1611 offset: eval(prop(lane_offset_forward_6,"default"));
1612 width: eval((prop(lane_width_forward_6,"default")-prop(lane_casing,"default")));
1613 right-casing-dashes: eval(prop(change_forward_6_right,"default"));
1614 left-casing-dashes: eval(prop(change_forward_6_left,"default"));
1615 turn_matrix_scaling: eval(is_prop_set(turn_forward_6,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
1616
1617 opacity: 0.0; linecap: none;
1618 right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
1619 left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
1620 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
1621}
1622way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 5]::Lane_Forward_6_Color
1623{
1624 offset: eval(prop(lane_offset_forward_6,"default"));
1625 width: eval(prop(lane_width_forward_6,"default"));
1626 color: prop(color_forward_6,"default");
1627 dashes: eval(is_prop_set(designated_color_forward_6,"default")?list(20,20):prop(unset_property));
1628 dashes-background-color: eval(is_prop_set(designated_color_forward_6,"default")?
1629 prop(designated_color_forward_6,"default"):prop(unset_property));
1630 opacity: prop(style_lane_opacity,"default"); linecap: none;
1631 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
1632}
1633
1634way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 6]::Lane_Forward_7
1635{
1636 offset: eval(prop(lane_offset_forward_7,"default"));
1637 width: eval((prop(lane_width_forward_7,"default")-prop(lane_casing,"default")));
1638 right-casing-dashes: eval(prop(change_forward_7_right,"default"));
1639 left-casing-dashes: eval(prop(change_forward_7_left,"default"));
1640 turn_matrix_scaling: eval(is_prop_set(turn_forward_7,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
1641
1642 opacity: 0.0; linecap: none;
1643 right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
1644 left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
1645 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
1646}
1647way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 6]::Lane_Forward_7_Color
1648{
1649 offset: eval(prop(lane_offset_forward_7,"default"));
1650 width: eval(prop(lane_width_forward_7,"default"));
1651 color: prop(color_forward_7,"default");
1652 dashes: eval(is_prop_set(designated_color_forward_7,"default")?list(20,20):prop(unset_property));
1653 dashes-background-color: eval(is_prop_set(designated_color_forward_7,"default")?
1654 prop(designated_color_forward_7,"default"):prop(unset_property));
1655 opacity: prop(style_lane_opacity,"default"); linecap: none;
1656 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
1657}
1658
1659way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 7]::Lane_Forward_8
1660{
1661 offset: eval(prop(lane_offset_forward_8,"default"));
1662 width: eval((prop(lane_width_forward_8,"default")-prop(lane_casing,"default")));
1663 right-casing-dashes: eval(prop(change_forward_8_right,"default"));
1664 left-casing-dashes: eval(prop(change_forward_8_left,"default"));
1665 turn_matrix_scaling: eval(is_prop_set(turn_forward_8,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
1666
1667 opacity: 0.0; linecap: none;
1668 right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
1669 left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
1670 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
1671}
1672way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 7]::Lane_Forward_8_Color
1673{
1674 offset: eval(prop(lane_offset_forward_8,"default"));
1675 width: eval(prop(lane_width_forward_8,"default"));
1676 color: prop(color_forward_8,"default");
1677 dashes: eval(is_prop_set(designated_color_forward_8,"default")?list(20,20):prop(unset_property));
1678 dashes-background-color: eval(is_prop_set(designated_color_forward_8,"default")?
1679 prop(designated_color_forward_8,"default"):prop(unset_property));
1680 opacity: prop(style_lane_opacity,"default"); linecap: none;
1681 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
1682}
1683
1684/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1685/* Backward lanes */
1686/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1687way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 0]::Lane_Backward_1
1688{
1689 offset: eval(prop(lane_offset_backward_1,"default"));
1690 width: eval((prop(lane_width_backward_1,"default")-prop(lane_casing,"default")));
1691 left-casing-dashes: eval(prop(change_backward_1_right,"default"));
1692 right-casing-dashes: eval(prop(change_backward_1_left,"default"));
1693 turn_matrix_scaling: eval(is_prop_set(turn_backward_1,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
1694
1695 opacity: 0.0; linecap: none;
1696 right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
1697 left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
1698 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
1699}
1700way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 0]::Lane_Backward_1_Color
1701{
1702 offset: eval(prop(lane_offset_backward_1,"default"));
1703 width: eval(prop(lane_width_backward_1,"default"));
1704 color: prop(color_backward_1,"default");
1705 dashes: eval(is_prop_set(designated_color_backward_1,"default")?list(20,20):prop(unset_property));
1706 dashes-background-color: eval(is_prop_set(designated_color_backward_1,"default")?
1707 prop(designated_color_backward_1,"default"):prop(unset_property));
1708 opacity: prop(style_lane_opacity,"default"); linecap: none;
1709 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
1710}
1711
1712way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 1]::Lane_Backward_2
1713{
1714 offset: eval(prop(lane_offset_backward_2,"default"));
1715 width: eval((prop(lane_width_backward_2,"default")-prop(lane_casing,"default")));
1716 left-casing-dashes: eval(prop(change_backward_2_right,"default"));
1717 right-casing-dashes: eval(prop(change_backward_2_left,"default"));
1718 turn_matrix_scaling: eval(is_prop_set(turn_backward_2,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
1719
1720 opacity: 0.0; linecap: none;
1721 right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
1722 left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
1723 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
1724}
1725way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 1]::Lane_Backward_2_Color
1726{
1727 offset: eval(prop(lane_offset_backward_2,"default"));
1728 width: eval(prop(lane_width_backward_2,"default"));
1729 color: prop(color_backward_2,"default");
1730 dashes: eval(is_prop_set(designated_color_backward_2,"default")?list(20,20):prop(unset_property));
1731 dashes-background-color: eval(is_prop_set(designated_color_backward_2,"default")?
1732 prop(designated_color_backward_2,"default"):prop(unset_property));
1733 opacity: prop(style_lane_opacity,"default"); linecap: none;
1734 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
1735}
1736
1737way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 2]::Lane_Backward_3
1738{
1739 offset: eval(prop(lane_offset_backward_3,"default"));
1740 width: eval((prop(lane_width_backward_3,"default")-prop(lane_casing,"default")));
1741 left-casing-dashes: eval(prop(change_backward_3_right,"default"));
1742 right-casing-dashes: eval(prop(change_backward_3_left,"default"));
1743 turn_matrix_scaling: eval(is_prop_set(turn_backward_3,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
1744
1745 opacity: 0.0; linecap: none;
1746 right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
1747 left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
1748 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
1749}
1750way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 2]::Lane_Backward_3_Color
1751{
1752 offset: eval(prop(lane_offset_backward_3,"default"));
1753 width: eval(prop(lane_width_backward_3,"default"));
1754 color: prop(color_backward_3,"default");
1755 dashes: eval(is_prop_set(designated_color_backward_3,"default")?list(20,20):prop(unset_property));
1756 dashes-background-color: eval(is_prop_set(designated_color_backward_3,"default")?
1757 prop(designated_color_backward_3,"default"):prop(unset_property));
1758 opacity: prop(style_lane_opacity,"default"); linecap: none;
1759 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
1760}
1761
1762way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 3]::Lane_Backward_4
1763{
1764 offset: eval(prop(lane_offset_backward_4,"default"));
1765 width: eval((prop(lane_width_backward_4,"default")-prop(lane_casing,"default")));
1766 left-casing-dashes: eval(prop(change_backward_4_right,"default"));
1767 right-casing-dashes: eval(prop(change_backward_4_left,"default"));
1768 turn_matrix_scaling: eval(is_prop_set(turn_backward_4,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
1769
1770 opacity: 0.0; linecap: none;
1771 right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
1772 left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
1773 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
1774}
1775way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 3]::Lane_Backward_4_Color
1776{
1777 offset: eval(prop(lane_offset_backward_4,"default"));
1778 width: eval(prop(lane_width_backward_4,"default"));
1779 color: prop(color_backward_4,"default");
1780 dashes: eval(is_prop_set(designated_color_backward_4,"default")?list(20,20):prop(unset_property));
1781 dashes-background-color: eval(is_prop_set(designated_color_backward_4,"default")?
1782 prop(designated_color_backward_4,"default"):prop(unset_property));
1783 opacity: prop(style_lane_opacity,"default"); linecap: none;
1784 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
1785}
1786
1787way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 4]::Lane_Backward_5
1788{
1789 offset: eval(prop(lane_offset_backward_5,"default"));
1790 width: eval((prop(lane_width_backward_5,"default")-prop(lane_casing,"default")));
1791 left-casing-dashes: eval(prop(change_backward_5_right,"default"));
1792 right-casing-dashes: eval(prop(change_backward_5_left,"default"));
1793 turn_matrix_scaling: eval(is_prop_set(turn_backward_5,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
1794
1795 opacity: 0.0; linecap: none;
1796 right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
1797 left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
1798 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
1799}
1800way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 4]::Lane_Backward_5_Color
1801{
1802 offset: eval(prop(lane_offset_backward_5,"default"));
1803 width: eval(prop(lane_width_backward_5,"default"));
1804 color: prop(color_backward_5,"default");
1805 dashes: eval(is_prop_set(designated_color_backward_5,"default")?list(20,20):prop(unset_property));
1806 dashes-background-color: eval(is_prop_set(designated_color_backward_5,"default")?
1807 prop(designated_color_backward_5,"default"):prop(unset_property));
1808 opacity: prop(style_lane_opacity,"default"); linecap: none;
1809 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
1810}
1811
1812way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 5]::Lane_Backward_6
1813{
1814 offset: eval(prop(lane_offset_backward_6,"default"));
1815 width: eval((prop(lane_width_backward_6,"default")-prop(lane_casing,"default")));
1816 left-casing-dashes: eval(prop(change_backward_6_right,"default"));
1817 right-casing-dashes: eval(prop(change_backward_6_left,"default"));
1818 turn_matrix_scaling: eval(is_prop_set(turn_backward_6,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
1819
1820 opacity: 0.0; linecap: none;
1821 right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
1822 left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
1823 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
1824}
1825way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 5]::Lane_Backward_6_Color
1826{
1827 offset: eval(prop(lane_offset_backward_6,"default"));
1828 width: eval(prop(lane_width_backward_6,"default"));
1829 color: prop(color_backward_6,"default");
1830 dashes: eval(is_prop_set(designated_color_backward_6,"default")?list(20,20):prop(unset_property));
1831 dashes-background-color: eval(is_prop_set(designated_color_backward_6,"default")?
1832 prop(designated_color_backward_6,"default"):prop(unset_property));
1833 opacity: prop(style_lane_opacity,"default"); linecap: none;
1834 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
1835}
1836
1837way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 6]::Lane_Backward_7
1838{
1839 offset: eval(prop(lane_offset_backward_7,"default"));
1840 width: eval((prop(lane_width_backward_7,"default")-prop(lane_casing,"default")));
1841 left-casing-dashes: eval(prop(change_backward_7_right,"default"));
1842 right-casing-dashes: eval(prop(change_backward_7_left,"default"));
1843 turn_matrix_scaling: eval(is_prop_set(turn_backward_7,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
1844
1845 opacity: 0.0; linecap: none;
1846 right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
1847 left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
1848 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
1849}
1850way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 6]::Lane_Backward_7_Color
1851{
1852 offset: eval(prop(lane_offset_backward_7,"default"));
1853 width: eval(prop(lane_width_backward_7,"default"));
1854 color: prop(color_backward_7,"default");
1855 dashes: eval(is_prop_set(designated_color_backward_7,"default")?list(20,20):prop(unset_property));
1856 dashes-background-color: eval(is_prop_set(designated_color_backward_7,"default")?
1857 prop(designated_color_backward_7,"default"):prop(unset_property));
1858 opacity: prop(style_lane_opacity,"default"); linecap: none;
1859 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
1860}
1861
1862way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 7]::Lane_Backward_8
1863{
1864 offset: eval(prop(lane_offset_backward_8,"default"));
1865 width: eval((prop(lane_width_backward_8,"default")-prop(lane_casing,"default")));
1866 left-casing-dashes: eval(prop(change_backward_8_right,"default"));
1867 right-casing-dashes: eval(prop(change_backward_8_left,"default"));
1868 turn_matrix_scaling: eval(is_prop_set(turn_backward_8,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
1869
1870 opacity: 0.0; linecap: none;
1871 right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
1872 left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
1873 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
1874}
1875way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 7]::Lane_Backward_8_Color
1876{
1877 offset: eval(prop(lane_offset_backward_8,"default"));
1878 width: eval(prop(lane_width_backward_8,"default"));
1879 color: prop(color_backward_8,"default");
1880 dashes: eval(is_prop_set(designated_color_backward_8,"default")?list(20,20):prop(unset_property));
1881 dashes-background-color: eval(is_prop_set(designated_color_backward_8,"default")?
1882 prop(designated_color_backward_8,"default"):prop(unset_property));
1883 opacity: prop(style_lane_opacity,"default"); linecap: none;
1884 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
1885}
1886
1887/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1888/* Bothways lanes */
1889/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1890way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 0]::Lane_Bothways_1
1891{
1892 offset: eval(prop(lane_offset_bothways_1,"default"));
1893 width: eval((prop(lane_width_bothways_1,"default")-prop(lane_casing,"default")));
1894 right-casing-dashes: eval(prop(change_bothways_1_right,"default"));
1895 left-casing-dashes: eval(prop(change_bothways_1_left,"default"));
1896 turn_matrix_scaling: eval(is_prop_set(turn_bothways_1,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
1897
1898 opacity: 0.0; linecap: none;
1899 right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
1900 left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
1901 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
1902}
1903way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 0]::Lane_Bothways_1_Color
1904{
1905 offset: eval(prop(lane_offset_bothways_1,"default"));
1906 width: eval(prop(lane_width_bothways_1,"default"));
1907 color: prop(color_bothways_1,"default");
1908 dashes: eval(is_prop_set(designated_color_bothways_1,"default")?list(20,20):prop(unset_property));
1909 dashes-background-color: eval(is_prop_set(designated_color_bothways_1,"default")?
1910 prop(designated_color_bothways_1,"default"):prop(unset_property));
1911 opacity: prop(style_lane_opacity,"default"); linecap: none;
1912 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
1913}
1914
1915way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 1]::Lane_Bothways_2
1916{
1917 offset: eval(prop(lane_offset_bothways_2,"default"));
1918 width: eval((prop(lane_width_bothways_2,"default")-prop(lane_casing,"default")));
1919 right-casing-dashes: eval(prop(change_bothways_2_right,"default"));
1920 left-casing-dashes: eval(prop(change_bothways_2_left,"default"));
1921 turn_matrix_scaling: eval(is_prop_set(turn_bothways_2,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
1922
1923 opacity: 0.0; linecap: none;
1924 right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
1925 left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
1926 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
1927}
1928way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 1]::Lane_Bothways_2_Color
1929{
1930 offset: eval(prop(lane_offset_bothways_2,"default"));
1931 width: eval(prop(lane_width_bothways_2,"default"));
1932 color: prop(color_bothways_2,"default");
1933 dashes: eval(is_prop_set(designated_color_bothways_2,"default")?list(20,20):prop(unset_property));
1934 dashes-background-color: eval(is_prop_set(designated_color_bothways_2,"default")?
1935 prop(designated_color_bothways_2,"default"):prop(unset_property));
1936 opacity: prop(style_lane_opacity,"default"); linecap: none;
1937 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
1938}
1939
1940way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 2]::Lane_Bothways_3
1941{
1942 offset: eval(prop(lane_offset_bothways_3,"default"));
1943 width: eval((prop(lane_width_bothways_3,"default")-prop(lane_casing,"default")));
1944 right-casing-dashes: eval(prop(change_bothways_3_right,"default"));
1945 left-casing-dashes: eval(prop(change_bothways_3_left,"default"));
1946 turn_matrix_scaling: eval(is_prop_set(turn_bothways_3,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
1947
1948 opacity: 0.0; linecap: none;
1949 right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
1950 left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
1951 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
1952}
1953way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 2]::Lane_Bothways_3_Color
1954{
1955 offset: eval(prop(lane_offset_bothways_3,"default"));
1956 width: eval(prop(lane_width_bothways_3,"default"));
1957 color: prop(color_bothways_3,"default");
1958 dashes: eval(is_prop_set(designated_color_bothways_3,"default")?list(20,20):prop(unset_property));
1959 dashes-background-color: eval(is_prop_set(designated_color_bothways_3,"default")?
1960 prop(designated_color_bothways_3,"default"):prop(unset_property));
1961 opacity: prop(style_lane_opacity,"default"); linecap: none;
1962 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
1963}
1964
1965way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 3]::Lane_Bothways_4
1966{
1967 offset: eval(prop(lane_offset_bothways_4,"default"));
1968 width: eval((prop(lane_width_bothways_4,"default")-prop(lane_casing,"default")));
1969 right-casing-dashes: eval(prop(change_bothways_4_right,"default"));
1970 left-casing-dashes: eval(prop(change_bothways_4_left,"default"));
1971 turn_matrix_scaling: eval(is_prop_set(turn_bothways_4,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
1972
1973 opacity: 0.0; linecap: none;
1974 right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
1975 left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
1976 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
1977}
1978way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 3]::Lane_Bothways_4_Color
1979{
1980 offset: eval(prop(lane_offset_bothways_4,"default"));
1981 width: eval(prop(lane_width_bothways_4,"default"));
1982 color: prop(color_bothways_4,"default");
1983 dashes: eval(is_prop_set(designated_color_bothways_4,"default")?list(20,20):prop(unset_property));
1984 dashes-background-color: eval(is_prop_set(designated_color_bothways_4,"default")?
1985 prop(designated_color_bothways_4,"default"):prop(unset_property));
1986 opacity: prop(style_lane_opacity,"default"); linecap: none;
1987 major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
1988}
1989
1990/***************************************************************************************************************************************************/
1991/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1992/* Ugly hack for turn lanes */
1993/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1994/***************************************************************************************************************************************************/
1995/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1996/* Forward lanes */
1997/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
1998way[prop(turn_matrix_scaling,"Lane_Forward_1")>0]::Lane_Turn_M1_Forward_1
1999{
2000 t_m_s: prop(turn_matrix_scaling,"Lane_Forward_1");
2001 offset: eval(prop(offset,"Lane_Forward_1")+(3*prop(t_m_s)));
2002 temp: eval(get(prop(turn_forward_1,"default"),0)); left-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2003 temp: eval(get(prop(turn_forward_1,"default"),1)); dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2004 temp: eval(get(prop(turn_forward_1,"default"),2)); right-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2005 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2006}
2007way[prop(turn_matrix_scaling,"Lane_Forward_1")>0]::Lane_Turn_M2_Forward_1
2008{
2009 t_m_s: prop(turn_matrix_scaling,"Lane_Forward_1");
2010 offset: eval(prop(offset,"Lane_Forward_1")+(0*prop(t_m_s)));
2011 temp: eval(get(prop(turn_forward_1,"default"),3)); left-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2012 temp: eval(get(prop(turn_forward_1,"default"),4)); dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2013 temp: eval(get(prop(turn_forward_1,"default"),5)); right-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2014 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2015}
2016way[prop(turn_matrix_scaling,"Lane_Forward_1")>0]::Lane_Turn_M3_Forward_1
2017{
2018 t_m_s: prop(turn_matrix_scaling,"Lane_Forward_1");
2019 offset: eval(prop(offset,"Lane_Forward_1")-(3*prop(t_m_s)));
2020 temp: eval(get(prop(turn_forward_1,"default"),6)); left-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2021 temp: eval(get(prop(turn_forward_1,"default"),7)); dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2022 temp: eval(get(prop(turn_forward_1,"default"),8)); right-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2023 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2024}
2025
2026way[prop(turn_matrix_scaling,"Lane_Forward_2")>0]::Lane_Turn_M1_Forward_2
2027{
2028 t_m_s: prop(turn_matrix_scaling,"Lane_Forward_2");
2029 offset: eval(prop(offset,"Lane_Forward_2")+(3*prop(t_m_s)));
2030 temp: eval(get(prop(turn_forward_2,"default"),0)); left-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2031 temp: eval(get(prop(turn_forward_2,"default"),1)); dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2032 temp: eval(get(prop(turn_forward_2,"default"),2)); right-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2033 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2034}
2035way[prop(turn_matrix_scaling,"Lane_Forward_2")>0]::Lane_Turn_M2_Forward_2
2036{
2037 t_m_s: prop(turn_matrix_scaling,"Lane_Forward_2");
2038 offset: eval(prop(offset,"Lane_Forward_2")+(0*prop(t_m_s)));
2039 temp: eval(get(prop(turn_forward_2,"default"),3)); left-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2040 temp: eval(get(prop(turn_forward_2,"default"),4)); dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2041 temp: eval(get(prop(turn_forward_2,"default"),5)); right-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2042 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2043}
2044way[prop(turn_matrix_scaling,"Lane_Forward_2")>0]::Lane_Turn_M3_Forward_2
2045{
2046 t_m_s: prop(turn_matrix_scaling,"Lane_Forward_2");
2047 offset: eval(prop(offset,"Lane_Forward_2")-(3*prop(t_m_s)));
2048 temp: eval(get(prop(turn_forward_2,"default"),6)); left-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2049 temp: eval(get(prop(turn_forward_2,"default"),7)); dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2050 temp: eval(get(prop(turn_forward_2,"default"),8)); right-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2051 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2052}
2053
2054way[prop(turn_matrix_scaling,"Lane_Forward_3")>0]::Lane_Turn_M1_Forward_3
2055{
2056 t_m_s: prop(turn_matrix_scaling,"Lane_Forward_3");
2057 offset: eval(prop(offset,"Lane_Forward_3")+(3*prop(t_m_s)));
2058 temp: eval(get(prop(turn_forward_3,"default"),0)); left-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2059 temp: eval(get(prop(turn_forward_3,"default"),1)); dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2060 temp: eval(get(prop(turn_forward_3,"default"),2)); right-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2061 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2062}
2063way[prop(turn_matrix_scaling,"Lane_Forward_3")>0]::Lane_Turn_M2_Forward_3
2064{
2065 t_m_s: prop(turn_matrix_scaling,"Lane_Forward_3");
2066 offset: eval(prop(offset,"Lane_Forward_3")+(0*prop(t_m_s)));
2067 temp: eval(get(prop(turn_forward_3,"default"),3)); left-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2068 temp: eval(get(prop(turn_forward_3,"default"),4)); dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2069 temp: eval(get(prop(turn_forward_3,"default"),5)); right-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2070 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2071}
2072way[prop(turn_matrix_scaling,"Lane_Forward_3")>0]::Lane_Turn_M3_Forward_3
2073{
2074 t_m_s: prop(turn_matrix_scaling,"Lane_Forward_3");
2075 offset: eval(prop(offset,"Lane_Forward_3")-(3*prop(t_m_s)));
2076 temp: eval(get(prop(turn_forward_3,"default"),6)); left-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2077 temp: eval(get(prop(turn_forward_3,"default"),7)); dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2078 temp: eval(get(prop(turn_forward_3,"default"),8)); right-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2079 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2080}
2081
2082way[prop(turn_matrix_scaling,"Lane_Forward_4")>0]::Lane_Turn_M1_Forward_4
2083{
2084 t_m_s: prop(turn_matrix_scaling,"Lane_Forward_4");
2085 offset: eval(prop(offset,"Lane_Forward_4")+(3*prop(t_m_s)));
2086 temp: eval(get(prop(turn_forward_4,"default"),0)); left-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2087 temp: eval(get(prop(turn_forward_4,"default"),1)); dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2088 temp: eval(get(prop(turn_forward_4,"default"),2)); right-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2089 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2090}
2091way[prop(turn_matrix_scaling,"Lane_Forward_4")>0]::Lane_Turn_M2_Forward_4
2092{
2093 t_m_s: prop(turn_matrix_scaling,"Lane_Forward_4");
2094 offset: eval(prop(offset,"Lane_Forward_4")+(0*prop(t_m_s)));
2095 temp: eval(get(prop(turn_forward_4,"default"),3)); left-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2096 temp: eval(get(prop(turn_forward_4,"default"),4)); dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2097 temp: eval(get(prop(turn_forward_4,"default"),5)); right-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2098 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2099}
2100way[prop(turn_matrix_scaling,"Lane_Forward_4")>0]::Lane_Turn_M3_Forward_4
2101{
2102 t_m_s: prop(turn_matrix_scaling,"Lane_Forward_4");
2103 offset: eval(prop(offset,"Lane_Forward_4")-(3*prop(t_m_s)));
2104 temp: eval(get(prop(turn_forward_4,"default"),6)); left-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2105 temp: eval(get(prop(turn_forward_4,"default"),7)); dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2106 temp: eval(get(prop(turn_forward_4,"default"),8)); right-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2107 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2108}
2109
2110way[prop(turn_matrix_scaling,"Lane_Forward_5")>0]::Lane_Turn_M1_Forward_5
2111{
2112 t_m_s: prop(turn_matrix_scaling,"Lane_Forward_5");
2113 offset: eval(prop(offset,"Lane_Forward_5")+(3*prop(t_m_s)));
2114 temp: eval(get(prop(turn_forward_5,"default"),0)); left-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2115 temp: eval(get(prop(turn_forward_5,"default"),1)); dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2116 temp: eval(get(prop(turn_forward_5,"default"),2)); right-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2117 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2118}
2119way[prop(turn_matrix_scaling,"Lane_Forward_5")>0]::Lane_Turn_M2_Forward_5
2120{
2121 t_m_s: prop(turn_matrix_scaling,"Lane_Forward_5");
2122 offset: eval(prop(offset,"Lane_Forward_5")+(0*prop(t_m_s)));
2123 temp: eval(get(prop(turn_forward_5,"default"),3)); left-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2124 temp: eval(get(prop(turn_forward_5,"default"),4)); dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2125 temp: eval(get(prop(turn_forward_5,"default"),5)); right-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2126 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2127}
2128way[prop(turn_matrix_scaling,"Lane_Forward_5")>0]::Lane_Turn_M3_Forward_5
2129{
2130 t_m_s: prop(turn_matrix_scaling,"Lane_Forward_5");
2131 offset: eval(prop(offset,"Lane_Forward_5")-(3*prop(t_m_s)));
2132 temp: eval(get(prop(turn_forward_5,"default"),6)); left-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2133 temp: eval(get(prop(turn_forward_5,"default"),7)); dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2134 temp: eval(get(prop(turn_forward_5,"default"),8)); right-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2135 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2136}
2137
2138way[prop(turn_matrix_scaling,"Lane_Forward_6")>0]::Lane_Turn_M1_Forward_6
2139{
2140 t_m_s: prop(turn_matrix_scaling,"Lane_Forward_6");
2141 offset: eval(prop(offset,"Lane_Forward_6")+(3*prop(t_m_s)));
2142 temp: eval(get(prop(turn_forward_6,"default"),0)); left-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2143 temp: eval(get(prop(turn_forward_6,"default"),1)); dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2144 temp: eval(get(prop(turn_forward_6,"default"),2)); right-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2145 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2146}
2147way[prop(turn_matrix_scaling,"Lane_Forward_6")>0]::Lane_Turn_M2_Forward_6
2148{
2149 t_m_s: prop(turn_matrix_scaling,"Lane_Forward_6");
2150 offset: eval(prop(offset,"Lane_Forward_6")+(0*prop(t_m_s)));
2151 temp: eval(get(prop(turn_forward_6,"default"),3)); left-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2152 temp: eval(get(prop(turn_forward_6,"default"),4)); dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2153 temp: eval(get(prop(turn_forward_6,"default"),5)); right-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2154 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2155}
2156way[prop(turn_matrix_scaling,"Lane_Forward_6")>0]::Lane_Turn_M3_Forward_6
2157{
2158 t_m_s: prop(turn_matrix_scaling,"Lane_Forward_6");
2159 offset: eval(prop(offset,"Lane_Forward_6")-(3*prop(t_m_s)));
2160 temp: eval(get(prop(turn_forward_6,"default"),6)); left-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2161 temp: eval(get(prop(turn_forward_6,"default"),7)); dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2162 temp: eval(get(prop(turn_forward_6,"default"),8)); right-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2163 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2164}
2165
2166way[prop(turn_matrix_scaling,"Lane_Forward_7")>0]::Lane_Turn_M1_Forward_7
2167{
2168 t_m_s: prop(turn_matrix_scaling,"Lane_Forward_7");
2169 offset: eval(prop(offset,"Lane_Forward_7")+(3*prop(t_m_s)));
2170 temp: eval(get(prop(turn_forward_7,"default"),0)); left-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2171 temp: eval(get(prop(turn_forward_7,"default"),1)); dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2172 temp: eval(get(prop(turn_forward_7,"default"),2)); right-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2173 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2174}
2175way[prop(turn_matrix_scaling,"Lane_Forward_7")>0]::Lane_Turn_M2_Forward_7
2176{
2177 t_m_s: prop(turn_matrix_scaling,"Lane_Forward_7");
2178 offset: eval(prop(offset,"Lane_Forward_7")+(0*prop(t_m_s)));
2179 temp: eval(get(prop(turn_forward_7,"default"),3)); left-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2180 temp: eval(get(prop(turn_forward_7,"default"),4)); dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2181 temp: eval(get(prop(turn_forward_7,"default"),5)); right-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2182 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2183}
2184way[prop(turn_matrix_scaling,"Lane_Forward_7")>0]::Lane_Turn_M3_Forward_7
2185{
2186 t_m_s: prop(turn_matrix_scaling,"Lane_Forward_7");
2187 offset: eval(prop(offset,"Lane_Forward_7")-(3*prop(t_m_s)));
2188 temp: eval(get(prop(turn_forward_7,"default"),6)); left-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2189 temp: eval(get(prop(turn_forward_7,"default"),7)); dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2190 temp: eval(get(prop(turn_forward_7,"default"),8)); right-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2191 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2192}
2193
2194way[prop(turn_matrix_scaling,"Lane_Forward_8")>0]::Lane_Turn_M1_Forward_8
2195{
2196 t_m_s: prop(turn_matrix_scaling,"Lane_Forward_8");
2197 offset: eval(prop(offset,"Lane_Forward_8")+(3*prop(t_m_s)));
2198 temp: eval(get(prop(turn_forward_8,"default"),0)); left-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2199 temp: eval(get(prop(turn_forward_8,"default"),1)); dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2200 temp: eval(get(prop(turn_forward_8,"default"),2)); right-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2201 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2202}
2203way[prop(turn_matrix_scaling,"Lane_Forward_8")>0]::Lane_Turn_M2_Forward_8
2204{
2205 t_m_s: prop(turn_matrix_scaling,"Lane_Forward_8");
2206 offset: eval(prop(offset,"Lane_Forward_8")+(0*prop(t_m_s)));
2207 temp: eval(get(prop(turn_forward_8,"default"),3)); left-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2208 temp: eval(get(prop(turn_forward_8,"default"),4)); dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2209 temp: eval(get(prop(turn_forward_8,"default"),5)); right-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2210 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2211}
2212way[prop(turn_matrix_scaling,"Lane_Forward_8")>0]::Lane_Turn_M3_Forward_8
2213{
2214 t_m_s: prop(turn_matrix_scaling,"Lane_Forward_8");
2215 offset: eval(prop(offset,"Lane_Forward_8")-(3*prop(t_m_s)));
2216 temp: eval(get(prop(turn_forward_8,"default"),6)); left-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2217 temp: eval(get(prop(turn_forward_8,"default"),7)); dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2218 temp: eval(get(prop(turn_forward_8,"default"),8)); right-casing-dashes: eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
2219 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2220}
2221
2222/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
2223/* Backward lanes */
2224/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
2225way[prop(turn_matrix_scaling,"Lane_Backward_1")>0]::Lane_Turn_M1_Backward_1
2226{
2227 t_m_s: prop(turn_matrix_scaling,"Lane_Backward_1");
2228 offset: eval(prop(offset,"Lane_Backward_1")+(3*prop(t_m_s)));
2229 temp: eval(get(prop(turn_backward_1,"default"),8)); left-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2230 temp: eval(get(prop(turn_backward_1,"default"),7)); dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2231 temp: eval(get(prop(turn_backward_1,"default"),6)); right-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2232 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2233}
2234way[prop(turn_matrix_scaling,"Lane_Backward_1")>0]::Lane_Turn_M2_Backward_1
2235{
2236 t_m_s: prop(turn_matrix_scaling,"Lane_Backward_1");
2237 offset: eval(prop(offset,"Lane_Backward_1")+(0*prop(t_m_s)));
2238 temp: eval(get(prop(turn_backward_1,"default"),5)); left-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2239 temp: eval(get(prop(turn_backward_1,"default"),4)); dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2240 temp: eval(get(prop(turn_backward_1,"default"),3)); right-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2241 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2242}
2243way[prop(turn_matrix_scaling,"Lane_Backward_1")>0]::Lane_Turn_M3_Backward_1
2244{
2245 t_m_s: prop(turn_matrix_scaling,"Lane_Backward_1");
2246 offset: eval(prop(offset,"Lane_Backward_1")-(3*prop(t_m_s)));
2247 temp: eval(get(prop(turn_backward_1,"default"),2)); left-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2248 temp: eval(get(prop(turn_backward_1,"default"),1)); dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2249 temp: eval(get(prop(turn_backward_1,"default"),0)); right-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2250 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2251}
2252
2253way[prop(turn_matrix_scaling,"Lane_Backward_2")>0]::Lane_Turn_M1_Backward_2
2254{
2255 t_m_s: prop(turn_matrix_scaling,"Lane_Backward_2");
2256 offset: eval(prop(offset,"Lane_Backward_2")+(3*prop(t_m_s)));
2257 temp: eval(get(prop(turn_backward_2,"default"),8)); left-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2258 temp: eval(get(prop(turn_backward_2,"default"),7)); dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2259 temp: eval(get(prop(turn_backward_2,"default"),6)); right-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2260 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2261}
2262way[prop(turn_matrix_scaling,"Lane_Backward_2")>0]::Lane_Turn_M2_Backward_2
2263{
2264 t_m_s: prop(turn_matrix_scaling,"Lane_Backward_2");
2265 offset: eval(prop(offset,"Lane_Backward_2")+(0*prop(t_m_s)));
2266 temp: eval(get(prop(turn_backward_2,"default"),5)); left-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2267 temp: eval(get(prop(turn_backward_2,"default"),4)); dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2268 temp: eval(get(prop(turn_backward_2,"default"),3)); right-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2269 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2270}
2271way[prop(turn_matrix_scaling,"Lane_Backward_2")>0]::Lane_Turn_M3_Backward_2
2272{
2273 t_m_s: prop(turn_matrix_scaling,"Lane_Backward_2");
2274 offset: eval(prop(offset,"Lane_Backward_2")-(3*prop(t_m_s)));
2275 temp: eval(get(prop(turn_backward_2,"default"),2)); left-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2276 temp: eval(get(prop(turn_backward_2,"default"),1)); dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2277 temp: eval(get(prop(turn_backward_2,"default"),0)); right-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2278 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2279}
2280
2281way[prop(turn_matrix_scaling,"Lane_Backward_3")>0]::Lane_Turn_M1_Backward_3
2282{
2283 t_m_s: prop(turn_matrix_scaling,"Lane_Backward_3");
2284 offset: eval(prop(offset,"Lane_Backward_3")+(3*prop(t_m_s)));
2285 temp: eval(get(prop(turn_backward_3,"default"),8)); left-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2286 temp: eval(get(prop(turn_backward_3,"default"),7)); dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2287 temp: eval(get(prop(turn_backward_3,"default"),6)); right-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2288 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2289}
2290way[prop(turn_matrix_scaling,"Lane_Backward_3")>0]::Lane_Turn_M2_Backward_3
2291{
2292 t_m_s: prop(turn_matrix_scaling,"Lane_Backward_3");
2293 offset: eval(prop(offset,"Lane_Backward_3")+(0*prop(t_m_s)));
2294 temp: eval(get(prop(turn_backward_3,"default"),5)); left-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2295 temp: eval(get(prop(turn_backward_3,"default"),4)); dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2296 temp: eval(get(prop(turn_backward_3,"default"),3)); right-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2297 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2298}
2299way[prop(turn_matrix_scaling,"Lane_Backward_3")>0]::Lane_Turn_M3_Backward_3
2300{
2301 t_m_s: prop(turn_matrix_scaling,"Lane_Backward_3");
2302 offset: eval(prop(offset,"Lane_Backward_3")-(3*prop(t_m_s)));
2303 temp: eval(get(prop(turn_backward_3,"default"),2)); left-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2304 temp: eval(get(prop(turn_backward_3,"default"),1)); dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2305 temp: eval(get(prop(turn_backward_3,"default"),0)); right-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2306 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2307}
2308
2309way[prop(turn_matrix_scaling,"Lane_Backward_4")>0]::Lane_Turn_M1_Backward_4
2310{
2311 t_m_s: prop(turn_matrix_scaling,"Lane_Backward_4");
2312 offset: eval(prop(offset,"Lane_Backward_4")+(3*prop(t_m_s)));
2313 temp: eval(get(prop(turn_backward_4,"default"),8)); left-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2314 temp: eval(get(prop(turn_backward_4,"default"),7)); dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2315 temp: eval(get(prop(turn_backward_4,"default"),6)); right-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2316 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2317}
2318way[prop(turn_matrix_scaling,"Lane_Backward_4")>0]::Lane_Turn_M2_Backward_4
2319{
2320 t_m_s: prop(turn_matrix_scaling,"Lane_Backward_4");
2321 offset: eval(prop(offset,"Lane_Backward_4")+(0*prop(t_m_s)));
2322 temp: eval(get(prop(turn_backward_4,"default"),5)); left-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2323 temp: eval(get(prop(turn_backward_4,"default"),4)); dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2324 temp: eval(get(prop(turn_backward_4,"default"),3)); right-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2325 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2326}
2327way[prop(turn_matrix_scaling,"Lane_Backward_4")>0]::Lane_Turn_M3_Backward_4
2328{
2329 t_m_s: prop(turn_matrix_scaling,"Lane_Backward_4");
2330 offset: eval(prop(offset,"Lane_Backward_4")-(3*prop(t_m_s)));
2331 temp: eval(get(prop(turn_backward_4,"default"),2)); left-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2332 temp: eval(get(prop(turn_backward_4,"default"),1)); dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2333 temp: eval(get(prop(turn_backward_4,"default"),0)); right-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2334 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2335}
2336
2337way[prop(turn_matrix_scaling,"Lane_Backward_5")>0]::Lane_Turn_M1_Backward_5
2338{
2339 t_m_s: prop(turn_matrix_scaling,"Lane_Backward_5");
2340 offset: eval(prop(offset,"Lane_Backward_5")+(3*prop(t_m_s)));
2341 temp: eval(get(prop(turn_backward_5,"default"),8)); left-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2342 temp: eval(get(prop(turn_backward_5,"default"),7)); dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2343 temp: eval(get(prop(turn_backward_5,"default"),6)); right-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2344 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2345}
2346way[prop(turn_matrix_scaling,"Lane_Backward_5")>0]::Lane_Turn_M2_Backward_5
2347{
2348 t_m_s: prop(turn_matrix_scaling,"Lane_Backward_5");
2349 offset: eval(prop(offset,"Lane_Backward_5")+(0*prop(t_m_s)));
2350 temp: eval(get(prop(turn_backward_5,"default"),5)); left-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2351 temp: eval(get(prop(turn_backward_5,"default"),4)); dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2352 temp: eval(get(prop(turn_backward_5,"default"),3)); right-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2353 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2354}
2355way[prop(turn_matrix_scaling,"Lane_Backward_5")>0]::Lane_Turn_M3_Backward_5
2356{
2357 t_m_s: prop(turn_matrix_scaling,"Lane_Backward_5");
2358 offset: eval(prop(offset,"Lane_Backward_5")-(3*prop(t_m_s)));
2359 temp: eval(get(prop(turn_backward_5,"default"),2)); left-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2360 temp: eval(get(prop(turn_backward_5,"default"),1)); dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2361 temp: eval(get(prop(turn_backward_5,"default"),0)); right-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2362 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2363}
2364
2365way[prop(turn_matrix_scaling,"Lane_Backward_6")>0]::Lane_Turn_M1_Backward_6
2366{
2367 t_m_s: prop(turn_matrix_scaling,"Lane_Backward_6");
2368 offset: eval(prop(offset,"Lane_Backward_6")+(3*prop(t_m_s)));
2369 temp: eval(get(prop(turn_backward_6,"default"),8)); left-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2370 temp: eval(get(prop(turn_backward_6,"default"),7)); dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2371 temp: eval(get(prop(turn_backward_6,"default"),6)); right-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2372 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2373}
2374way[prop(turn_matrix_scaling,"Lane_Backward_6")>0]::Lane_Turn_M2_Backward_6
2375{
2376 t_m_s: prop(turn_matrix_scaling,"Lane_Backward_6");
2377 offset: eval(prop(offset,"Lane_Backward_6")+(0*prop(t_m_s)));
2378 temp: eval(get(prop(turn_backward_6,"default"),5)); left-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2379 temp: eval(get(prop(turn_backward_6,"default"),4)); dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2380 temp: eval(get(prop(turn_backward_6,"default"),3)); right-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2381 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2382}
2383way[prop(turn_matrix_scaling,"Lane_Backward_6")>0]::Lane_Turn_M3_Backward_6
2384{
2385 t_m_s: prop(turn_matrix_scaling,"Lane_Backward_6");
2386 offset: eval(prop(offset,"Lane_Backward_6")-(3*prop(t_m_s)));
2387 temp: eval(get(prop(turn_backward_6,"default"),2)); left-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2388 temp: eval(get(prop(turn_backward_6,"default"),1)); dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2389 temp: eval(get(prop(turn_backward_6,"default"),0)); right-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2390 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2391}
2392
2393way[prop(turn_matrix_scaling,"Lane_Backward_7")>0]::Lane_Turn_M1_Backward_7
2394{
2395 t_m_s: prop(turn_matrix_scaling,"Lane_Backward_7");
2396 offset: eval(prop(offset,"Lane_Backward_7")+(3*prop(t_m_s)));
2397 temp: eval(get(prop(turn_backward_7,"default"),8)); left-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2398 temp: eval(get(prop(turn_backward_7,"default"),7)); dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2399 temp: eval(get(prop(turn_backward_7,"default"),6)); right-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2400 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2401}
2402way[prop(turn_matrix_scaling,"Lane_Backward_7")>0]::Lane_Turn_M2_Backward_7
2403{
2404 t_m_s: prop(turn_matrix_scaling,"Lane_Backward_7");
2405 offset: eval(prop(offset,"Lane_Backward_7")+(0*prop(t_m_s)));
2406 temp: eval(get(prop(turn_backward_7,"default"),5)); left-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2407 temp: eval(get(prop(turn_backward_7,"default"),4)); dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2408 temp: eval(get(prop(turn_backward_7,"default"),3)); right-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2409 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2410}
2411way[prop(turn_matrix_scaling,"Lane_Backward_7")>0]::Lane_Turn_M3_Backward_7
2412{
2413 t_m_s: prop(turn_matrix_scaling,"Lane_Backward_7");
2414 offset: eval(prop(offset,"Lane_Backward_7")-(3*prop(t_m_s)));
2415 temp: eval(get(prop(turn_backward_7,"default"),2)); left-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2416 temp: eval(get(prop(turn_backward_7,"default"),1)); dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2417 temp: eval(get(prop(turn_backward_7,"default"),0)); right-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2418 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2419}
2420
2421way[prop(turn_matrix_scaling,"Lane_Backward_8")>0]::Lane_Turn_M1_Backward_8
2422{
2423 t_m_s: prop(turn_matrix_scaling,"Lane_Backward_8");
2424 offset: eval(prop(offset,"Lane_Backward_8")+(3*prop(t_m_s)));
2425 temp: eval(get(prop(turn_backward_8,"default"),8)); left-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2426 temp: eval(get(prop(turn_backward_8,"default"),7)); dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2427 temp: eval(get(prop(turn_backward_8,"default"),6)); right-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2428 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2429}
2430way[prop(turn_matrix_scaling,"Lane_Backward_8")>0]::Lane_Turn_M2_Backward_8
2431{
2432 t_m_s: prop(turn_matrix_scaling,"Lane_Backward_8");
2433 offset: eval(prop(offset,"Lane_Backward_8")+(0*prop(t_m_s)));
2434 temp: eval(get(prop(turn_backward_8,"default"),5)); left-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2435 temp: eval(get(prop(turn_backward_8,"default"),4)); dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2436 temp: eval(get(prop(turn_backward_8,"default"),3)); right-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2437 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2438}
2439way[prop(turn_matrix_scaling,"Lane_Backward_8")>0]::Lane_Turn_M3_Backward_8
2440{
2441 t_m_s: prop(turn_matrix_scaling,"Lane_Backward_8");
2442 offset: eval(prop(offset,"Lane_Backward_8")-(3*prop(t_m_s)));
2443 temp: eval(get(prop(turn_backward_8,"default"),2)); left-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2444 temp: eval(get(prop(turn_backward_8,"default"),1)); dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2445 temp: eval(get(prop(turn_backward_8,"default"),0)); right-casing-dashes: eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
2446 color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
2447}
2448
2449/***************************************************************************************************************************************************/
2450/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
2451/* Additional attributes/features */
2452/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
2453/***************************************************************************************************************************************************/
2454/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
2455/* Proposed man_made=bridge */
2456/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
2457area[man_made=bridge]
2458{
2459 fill-color: #808080;
2460 fill-opacity: 0.5;
2461 color: #404DA0;
2462 width: 5;
2463}
2464
2465/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
2466/* Proposed highway=junction */
2467/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
2468area[highway=junction]
2469{
2470 fill-color: #808080;
2471 fill-opacity: 0.5;
2472 width: 2;
2473 color: #505050;
2474 opacity: 0.5;
2475}
2476
2477/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
2478/* Street lamp */
2479/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
2480node|z17-[highway="street_lamp"]::Lighting_1
2481{
2482 symbol-shape: circle;
2483 symbol-size: eval(12 * prop(pixel_per_metre,"default"));
2484 symbol-fill-color: white;
2485 symbol-fill-opacity: 0.07;
2486}
2487node|z17-[highway="street_lamp"]::Lighting_2
2488{
2489 symbol-shape: circle;
2490 symbol-size: eval(18 * prop(pixel_per_metre,"default"));
2491 symbol-fill-color: white;
2492 symbol-fill-opacity: 0.05;
2493}
2494node|z17-[highway="street_lamp"]::Lighting_3
2495{
2496 symbol-shape: circle;
2497 symbol-size: eval(25 * prop(pixel_per_metre,"default"));
2498 symbol-fill-color: white;
2499 symbol-fill-opacity: 0.05;
2500}
2501
2502
2503/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
2504/* Lighting */
2505/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
2506way|z17-[lit?][is_prop_set(width,"Ground")]::Lighting_1
2507{
2508 width: eval(prop(width,"Ground"));
2509 width: eval(prop(width)+(is_prop_set(left-casing-width,"Ground")?prop(left-casing-width,"Ground"):0));
2510 width: eval(prop(width)+(is_prop_set(right-casing-width,"Ground")?prop(right-casing-width,"Ground"):0));
2511 opacity: 0.1; color: white; linecap: none;
2512 major-z-index: eval(prop(major-z-index,"Ground")-0.1);
2513 offset: eval(prop(offset,"Ground"));
2514}
2515way|z17-[lit?][is_prop_set(width,"Ground")]::Lighting_2
2516{
2517 width: eval(prop(width,"Lighting_1")+(3 * prop(pixel_per_metre,"default")));
2518 opacity: 0.1; color: white; linecap: none;
2519 major-z-index: eval(prop(major-z-index,"Lighting_1")); offset: eval(prop(offset,"Lighting_1"));
2520}
2521way|z17-[lit?][is_prop_set(width,"Ground")]::Lighting_3
2522{
2523 width: eval(prop(width,"Lighting_2")+(3 * prop(pixel_per_metre,"default")));
2524 opacity: 0.1; color: white; linecap: none;
2525 major-z-index: eval(prop(major-z-index,"Lighting_1")); offset: eval(prop(offset,"Lighting_1"));
2526}
2527
2528/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
2529/* Destination */
2530/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
2531way[destination]::Destination
2532{
2533 text-offset: eval(prop("placement_offset","default"));
2534 text: eval(get(split(";",tag(destination)),0));
2535 text: eval(has_tag_key("destination:ref")?concat(prop(text)," (",get(split(";",tag("destination:ref")),0),")"):prop(text));
2536 text: eval(has_tag_key("destination:country")?concat(prop(text)," [",get(split(";",tag("destination:country")),0),"]"):prop(text));
2537 font-size: eval(prop(lane_default_width,"default")); text-color: white; text-opacity: 0.3;
2538 text-halo-radius: 2; text-halo-color: blue; text-halo-opacity: 0.3;
2539}
2540way["destination:forward"]::Destination_Forward
2541{
2542 text-offset: eval(prop("placement_offset","default")+(eval(prop(lane_width_all,"default"))/4));
2543 text: eval(get(split(";",tag("destination:forward")),0));
2544 text: eval(has_tag_key("destination:forward:ref")?concat(prop(text)," (",get(split(";",tag("destination:forward:ref")),0),")"):prop(text));
2545 text: eval(has_tag_key("destination:forward:country")?concat(prop(text)," [",get(split(";",tag("destination:forward:country")),0),"]"):prop(text));
2546 font-size: eval(prop(lane_default_width,"default")); text-color: white; text-opacity: 0.3;
2547 text-halo-radius: 2; text-halo-color: blue; text-halo-opacity: 0.3;
2548}
2549way["destination:backward"]::Destination_Backward
2550{
2551 text-offset: eval(prop("placement_offset","default")-(eval(prop(lane_width_all,"default"))/4));
2552 text: eval(get(split(";",tag("destination:backward")),0));
2553 text: eval(has_tag_key("destination:backward:ref")?concat(prop(text)," (",get(split(";",tag("destination:backward:ref")),0),")"):prop(text));
2554 text: eval(has_tag_key("destination:forward:country")?concat(prop(text)," [",get(split(";",tag("destination:forward:country")),0),"]"):prop(text));
2555 font-size: eval(prop(lane_default_width,"default")); text-color: white; text-opacity: 0.3;
2556 text-halo-radius: 2; text-halo-color: blue; text-halo-opacity: 0.3;
2557}
2558
2559/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
2560/* Member nodes of enforcement relations */
2561/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
2562relation[type="enforcement"] >[role="from"] node
2563{
2564 symbol-stroke-color: #00FF00; symbol-shape: square; symbol-size: 5; symbol-stroke-width: 2;
2565}
2566relation[type="enforcement"] >[role="to"] node
2567{
2568 symbol-stroke-color: #FF0000; symbol-shape: square; symbol-size: 5; symbol-stroke-width: 2;
2569}
2570
2571/***************************************************************************************************************************************************/
2572/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
2573/* Check for some common errors */
2574/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
2575/***************************************************************************************************************************************************/
2576way{} /* Why-oh-why do I need this.... */
2577
2578/* Discouraged alternative values for oneway*/
2579way[oneway=true], way[oneway=1] { data_error: "use oneway=yes"; }
2580
2581/* Rejected turn lanes proposal */
2582way["lanes:turnright"], way["lanes:turnleft"],
2583way["lanes:through"], way["lanes:merge"],
2584way["lanes:turnright:forward"], way["lanes:turnleft:forward"],
2585way["lanes:through:forward"], way["lanes:merge:forward"],
2586way["lanes:turnright:backward"], way["lanes:turnleft:backward"],
2587way["lanes:through:backward"], way["lanes:merge:backward"]
2588 { data_error: "lanes:<turn> rejected"; }
2589
2590/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
2591/* Disputed checks: disabled by default */
2592/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
2593/* maxspeed should be numerical (yes, this is disputed, I know, that's why this is disabled by default) */
2594way[prop(style_show_disputed)][maxspeed] { data_error: eval(regexp_test("^[0-9]+$",tag(maxspeed))?prop(data_error):"maxspeed not numerical"); }
2595way[prop(style_show_disputed)]["maxspeed:forward"] { data_error: eval(regexp_test("^[0-9]+$",tag("maxspeed:forward"))?prop(data_error):"maxspeed:forward not numerical"); }
2596way[prop(style_show_disputed)]["maxspeed:backward"] { data_error: eval(regexp_test("^[0-9]+$",tag("maxspeed:backward"))?prop(data_error):"maxspeed:backward not numerical"); }
2597/* A source should be given for maxspeed */
2598way[prop(style_show_disputed)][maxspeed][!"source:maxspeed"] { data_warning: "source:maxspeed missing"; }
2599/* Value of source:maxspeed should be <country code>:<context> */
2600way[prop(style_show_disputed)]["source:maxspeed"] { data_warning: eval(regexp_test("^([A-Z][A-Z]:.+|zone|sign)$",tag("source:maxspeed"))?prop(data_warning):"verify source:maxspeed"); }
2601
2602/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
2603/* Display warnings/errors */
2604/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
2605way[is_prop_set(data_warning)][prop(style_show_warnings)=yes]
2606{
2607 casing-width: 4;
2608 casing-color: yellow;
2609 text: eval(prop(data_warning));
2610 font-size: 12;
2611 text-halo-radius: 1;
2612}
2613way[is_prop_set(data_error)][prop(style_show_errors)=yes]
2614{
2615 casing-width: 5;
2616 casing-color: red;
2617 text: eval(prop(data_error));
2618 font-size: 14;
2619 text-halo-radius: 1;
2620}