From ea819c0d09e6fbc7758b5be0e71e1526c48329c7 Mon Sep 17 00:00:00 2001 From: peterneubauer Date: Thu, 21 May 2015 14:26:40 +0200 Subject: [PATCH 01/38] adding a first traffic sign layer, rendering not working properly yet. --- css/map.css | 38 ++++++++++++++++++++++++++++++++++++ data/core.yaml | 4 ++++ dist/locales/en.json | 5 +++++ index.html | 3 +++ js/id/renderer/background.js | 17 ++++++++++++++++ js/id/ui/map_data.js | 31 +++++++++++++++++++++++++++-- 6 files changed, 96 insertions(+), 2 deletions(-) diff --git a/css/map.css b/css/map.css index 624aa97a2..b2d232a0d 100644 --- a/css/map.css +++ b/css/map.css @@ -1549,6 +1549,44 @@ text.gpx { .layer-mapillary g path.viewfield { stroke-width: 0; fill-opacity: 0.6; + +/* Mapillary sign Layer */ + +.node { + border: 1px solid green; + //background-color: white; +} + +.node body { + min-width: 20px; +} + +.layer-mapillary-signs { + pointer-events: none; +} + +.layer-mapillary-signs g { + pointer-events: visible; + cursor: pointer; /* Opera */ + cursor: url(img/cursor-select-mapillary.png) 6 1, pointer; /* FF */ +} + +.layer-mapillary-signs g * { + stroke-width: 2; + stroke: red; + fill: red; +} + +.layer-mapillary-signs g:hover * { + stroke-width: 2; + stroke: red; + fill: red; +} + +.layer-mapillary-signs g.selected * { + stroke-width: 4; + stroke: red; + fill: red; } /* Modes */ diff --git a/data/core.yaml b/data/core.yaml index c236dae97..7440c3e5b 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -418,6 +418,10 @@ en: tooltip: "Street-level photos from Mapillary" title: "Photo Overlay (Mapillary)" view_on_mapillary: "View this image on Mapillary" + mapillary_signs: + tooltip: "Traffic signs from Mapillary" + title: "Traffic sign Overlay (Mapillary)" + view_on_mapillary: "View this image on Mapillary" help: title: "Help" help: | diff --git a/dist/locales/en.json b/dist/locales/en.json index 85f710944..b8e9edc46 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -505,6 +505,11 @@ "title": "Photo Overlay (Mapillary)", "view_on_mapillary": "View this image on Mapillary" }, + "mapillary_signs": { + "tooltip": "Traffic signs from Mapillary", + "title": "Traffic sign Overlay (Mapillary)", + "view_on_mapillary": "View this image on Mapillary" + }, "help": { "title": "Help", "help": "# Help\n\nThis is an editor for [OpenStreetMap](http://www.openstreetmap.org/), the\nfree and editable map of the world. You can use it to add and update\ndata in your area, making an open-source and open-data map of the world\nbetter for everyone.\n\nEdits that you make on this map will be visible to everyone who uses\nOpenStreetMap. In order to make an edit, you'll need to\n[log in](https://www.openstreetmap.org/login).\n\nThe [iD editor](http://ideditor.com/) is a collaborative project with [source\ncode available on GitHub](https://github.com/openstreetmap/iD).\n", diff --git a/index.html b/index.html index 9bb30b26b..c851a6ec5 100644 --- a/index.html +++ b/index.html @@ -6,6 +6,7 @@ + @@ -57,8 +58,10 @@ + + diff --git a/js/id/renderer/background.js b/js/id/renderer/background.js index ce478e220..bbd2e69ed 100644 --- a/js/id/renderer/background.js +++ b/js/id/renderer/background.js @@ -5,6 +5,7 @@ iD.Background = function(context) { gpxLayer = iD.GpxLayer(context, dispatch) .projection(context.projection), mapillaryLayer = iD.MapillaryLayer(context), + mapillarySignsLayer = iD.MapillarySignsLayer(context), overlayLayers = []; var backgroundSources; @@ -92,6 +93,13 @@ iD.Background = function(context) { .attr('class', 'layer-layer layer-mapillary'); mapillary.call(mapillaryLayer); + var mapillary_signs = selection.selectAll('.layer-mapillary-signs') + .data([0]); + + mapillary_signs.enter().insert('div') + .attr('class', 'layer-layer layer-mapillary-signs'); + + mapillary_signs.call(mapillarySignsLayer); } background.sources = function(extent) { @@ -104,6 +112,7 @@ iD.Background = function(context) { baseLayer.dimensions(_); gpxLayer.dimensions(_); mapillaryLayer.dimensions(_); + mapillarySignsLayer.dimensions(_); overlayLayers.forEach(function(layer) { layer.dimensions(_); @@ -176,11 +185,19 @@ iD.Background = function(context) { return mapillaryLayer.enable(); }; + background.showsMapillarySignsLayer = function() { + return mapillarySignsLayer.enable(); + }; + background.toggleMapillaryLayer = function() { mapillaryLayer.enable(!mapillaryLayer.enable()); dispatch.change(); }; + background.toggleMapillarySignsLayer = function() { + mapillarySignsLayer.enable(!mapillarySignsLayer.enable()); + dispatch.change(); + }; background.showsLayer = function(d) { return d === baseLayer.source() || (d.id === 'custom' && baseLayer.source().id === 'custom') || diff --git a/js/id/ui/map_data.js b/js/id/ui/map_data.js index 903860137..d35283eb0 100644 --- a/js/id/ui/map_data.js +++ b/js/id/ui/map_data.js @@ -46,6 +46,10 @@ iD.ui.MapData = function(context) { context.background().toggleMapillaryLayer(); update(); } + function clickMapillarySigns() { + context.background().toggleMapillarySignsLayer(); + update(); + } function drawList(selection, data, type, name, change, active) { var items = selection.selectAll('li') @@ -99,7 +103,8 @@ iD.ui.MapData = function(context) { var hasGpx = context.background().hasGpxLayer(), showsGpx = context.background().showsGpxLayer(), - showsMapillary = context.background().showsMapillaryLayer(); + showsMapillary = context.background().showsMapillaryLayer(), + showsMapillarySigns = context.background().showsMapillarySignsLayer(); gpxLayerItem .classed('active', showsGpx) @@ -111,6 +116,11 @@ iD.ui.MapData = function(context) { .classed('active', showsMapillary) .selectAll('input') .property('checked', showsMapillary); + + mapillarySignsLayerItem + .classed('active', showsMapillarySigns) + .selectAll('input') + .property('checked', showsMapillarySigns); } function hidePanel() { setVisible(false); } @@ -210,7 +220,24 @@ iD.ui.MapData = function(context) { label.append('span') .text(t('mapillary.title')); - // gpx + // mapillary signs + var mapillarySignsLayerItem = layerContainer.append('ul') + .attr('class', 'layer-list') + .append('li'); + + var label_signs = mapillarySignsLayerItem.append('label') + .call(bootstrap.tooltip() + .title(t('mapillary_signs.tooltip')) + .placement('top')); + + label_signs.append('input') + .attr('type', 'checkbox') + .on('change', clickMapillarySigns); + + label_signs.append('span') + .text(t('mapillary_signs.title')); + + //gpx var gpxLayerItem = layerContainer.append('ul') .style('display', iD.detect().filedrop ? 'block' : 'none') .attr('class', 'layer-list') From 717d956a30a9a43a7a0c5e1c2dc553547a19afc4 Mon Sep 17 00:00:00 2001 From: peterneubauer Date: Thu, 21 May 2015 14:27:37 +0200 Subject: [PATCH 02/38] adding traffico and the sign layer --- css/traffico/LICENSE | 22 + css/traffico/README.md | 6 + css/traffico/at.json | 1 + css/traffico/be.json | 1 + css/traffico/bower.json | 17 + css/traffico/cz.json | 1 + css/traffico/de.json | 1 + css/traffico/dk.json | 1 + css/traffico/ee.json | 1 + css/traffico/es.json | 1 + css/traffico/europe.json | 1 + css/traffico/fi.json | 1 + css/traffico/fonts/traffico-preview.html | 1913 +++++++++++++++++ css/traffico/fonts/traffico.eot | Bin 0 -> 26174 bytes css/traffico/fonts/traffico.svg | 826 +++++++ css/traffico/fonts/traffico.ttf | Bin 0 -> 25996 bytes css/traffico/fonts/traffico.woff | Bin 0 -> 16532 bytes css/traffico/fr.json | 1 + css/traffico/gr.json | 1 + css/traffico/hu.json | 1 + css/traffico/it.json | 1 + css/traffico/lt.json | 1 + css/traffico/lu.json | 1 + css/traffico/lv.json | 1 + css/traffico/nl.json | 1 + css/traffico/pl.json | 1 + css/traffico/se.json | 1 + css/traffico/si.json | 1 + css/traffico/sk.json | 1 + css/traffico/stylesheets/traffico.css | 365 ++++ css/traffico/transformations.json | 1 + css/traffico/uk.json | 1 + css/traffico/us.json | 1 + js/id/renderer/mapillary_trafficsign_layer.js | 161 ++ 34 files changed, 3334 insertions(+) create mode 100755 css/traffico/LICENSE create mode 100755 css/traffico/README.md create mode 100755 css/traffico/at.json create mode 100755 css/traffico/be.json create mode 100755 css/traffico/bower.json create mode 100755 css/traffico/cz.json create mode 100755 css/traffico/de.json create mode 100755 css/traffico/dk.json create mode 100755 css/traffico/ee.json create mode 100755 css/traffico/es.json create mode 100755 css/traffico/europe.json create mode 100755 css/traffico/fi.json create mode 100755 css/traffico/fonts/traffico-preview.html create mode 100755 css/traffico/fonts/traffico.eot create mode 100755 css/traffico/fonts/traffico.svg create mode 100755 css/traffico/fonts/traffico.ttf create mode 100755 css/traffico/fonts/traffico.woff create mode 100755 css/traffico/fr.json create mode 100755 css/traffico/gr.json create mode 100755 css/traffico/hu.json create mode 100755 css/traffico/it.json create mode 100755 css/traffico/lt.json create mode 100755 css/traffico/lu.json create mode 100755 css/traffico/lv.json create mode 100755 css/traffico/nl.json create mode 100755 css/traffico/pl.json create mode 100755 css/traffico/se.json create mode 100755 css/traffico/si.json create mode 100755 css/traffico/sk.json create mode 100755 css/traffico/stylesheets/traffico.css create mode 100755 css/traffico/transformations.json create mode 100755 css/traffico/uk.json create mode 100755 css/traffico/us.json create mode 100644 js/id/renderer/mapillary_trafficsign_layer.js diff --git a/css/traffico/LICENSE b/css/traffico/LICENSE new file mode 100755 index 000000000..e32f5dc60 --- /dev/null +++ b/css/traffico/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 mapillary + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/css/traffico/README.md b/css/traffico/README.md new file mode 100755 index 000000000..9aa1239f0 --- /dev/null +++ b/css/traffico/README.md @@ -0,0 +1,6 @@ +# traffico-release +Release repository for Traffico, an Open Source Traffic Sign Font. + +Source code: [mapillary/traffico](https://github.com/mapillary/traffico) + +License: MIT diff --git a/css/traffico/at.json b/css/traffico/at.json new file mode 100755 index 000000000..c98868d2a --- /dev/null +++ b/css/traffico/at.json @@ -0,0 +1 @@ +{"information_border_at":{"category":"information","name":"European border crossing into Austria","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"ÖSTERREICH","transform":"scale(.75)"}]}} \ No newline at end of file diff --git a/css/traffico/be.json b/css/traffico/be.json new file mode 100755 index 000000000..c1dc1db9a --- /dev/null +++ b/css/traffico/be.json @@ -0,0 +1 @@ +{"information_border_be_nl":{"category":"information","name":"European border crossing into Belgium from the Netherlands","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"België"}]},"information_border_be_fr":{"category":"information","name":"European border crossing into Belgium from France","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Belgique"}]}} \ No newline at end of file diff --git a/css/traffico/bower.json b/css/traffico/bower.json new file mode 100755 index 000000000..3a3cd9f42 --- /dev/null +++ b/css/traffico/bower.json @@ -0,0 +1,17 @@ +{ + "name": "Traffico", + "version": "0.1.3", + "homepage": "https://github.com/mapillary/traffico", + "authors": [ + "Kamil Nikel " + ], + "description": "An Open Source Traffic Sign Font", + "main": "stylesheets/traffico.css", + "keywords": [ + "traffic", + "signs", + "road", + "font" + ], + "license": "MIT" +} diff --git a/css/traffico/cz.json b/css/traffico/cz.json new file mode 100755 index 000000000..2b5875bd0 --- /dev/null +++ b/css/traffico/cz.json @@ -0,0 +1 @@ +{"information_border_cz":{"category":"information","name":"European border crossing into Czech Republic","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"České","transform":"translate(0,-50%)"},{"type":"content-5","color":"white","content":"republika","transform":"translate(0,50%)"}]}} \ No newline at end of file diff --git a/css/traffico/de.json b/css/traffico/de.json new file mode 100755 index 000000000..0869b3dad --- /dev/null +++ b/css/traffico/de.json @@ -0,0 +1 @@ +{"danger_level_crossing":{"category":"danger","name":"level crossing","elements":[{"type":"square-angular","color":"black","transform":"rotate(30deg) scale(.15,1)"},{"type":"square-angular","color":"black","transform":"rotate(-30deg) scale(.15,1)"},{"type":"square-angular","color":"red","transform":"rotate(30deg) scale(.14,.99)"},{"type":"square-angular","color":"red","transform":"rotate(-30deg) scale(.14,.99)"},{"type":"square-angular","color":"white","transform":"rotate(30deg) scale(.14,.6)"},{"type":"square-angular","color":"white","transform":"rotate(-30deg) scale(.14,.6)"}]},"danger_railway_crossing_unsecured":{"category":"danger","name":"unsecured railway crossing","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"train-electric","color":"black","transform":"scale(.4) translate(10%,40%)"}]},"information_bus_stop":{"category":"information","name":"bus stop (also used for tram)","elements":[{"type":"circle-bg","color":"yellow"},{"type":"circle-o","color":"green"},{"type":"h","color":"green","transform":"{fit_border_circle}"}]},"information_border_de":{"category":"information","name":"European border crossing into Germany","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Bundes-","transform":"scale(.9) translate(0,-130%)"},{"type":"content-5","color":"white","content":"republik","transform":"scale(.9) translate(0,-30%)"},{"type":"content-5","color":"white","content":"Deutschland","transform":"scale(.9) translate(0,70%)"}]},"priority_priority_road_end":{"category":"priority","name":"end of priority road","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"white","transform":"{square_to_diamond} scale(.98)"},{"type":"square-rounded","color":"yellow","transform":"scale(.6) {square_to_diamond}"},{"type":"square-angular","color":"black","transform":"{square_to_diamond} scale(.05,1)"},{"type":"square-angular","color":"black","transform":"{square_to_diamond} scale(.05,1) translate(150%,0)"},{"type":"square-angular","color":"black","transform":"{square_to_diamond} scale(.05,1) translate(-150%,0)"}]},"prohibitory_end_of_limits":{"category":"prohibitory","name":"end of all speed and passing limits","elements":[{"type":"circle-bg","color":"black"},{"type":"circle-bg","color":"white","transform":"scale(.95)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.025,.99)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.025,.98) translate(150%,0)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.025,.97) translate(300%,0)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.025,.98) translate(-150%,0)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.025,.97) translate(-300%,0)"}]},"prohibitory_low_emission_zone":{"category":"prohibitory","name":"low-emission zone","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95)"},{"type":"circle-bg","color":"red","transform":"translate(0,-8%) scale(.7)"},{"type":"circle-bg","color":"white","transform":"translate(0,-8%) scale(.7) {fit_border_circle}"},{"type":"content-4","content":"Umwelt","color":"black","transform":"translate(0,-50%) scale(.8) {fit_border_circle}"},{"type":"content-4","content":"ZONE","color":"black","transform":"translate(0,150%) scale(.8)"}]},"prohibitory_low_emission_zone_end":{"category":"prohibitory","name":"end of low-emission zone","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95)"},{"type":"circle-bg","color":"grey","transform":"translate(0,-8%) scale(.7)"},{"type":"circle-bg","color":"white","transform":"translate(0,-8%) scale(.7) {fit_border_circle}"},{"type":"content-4","content":"Umwelt","color":"grey","transform":"translate(0,-50%) scale(.8) {fit_border_circle}"},{"type":"content-4","content":"ZONE","color":"grey","transform":"translate(0,150%) scale(.8)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.02,1.35)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.02,1.3) translate(-150%, 0)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.02,1.3) translate(150%, 0)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.02,1.25) translate(-300%, 0)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.02,1.25) translate(300%, 0)"}]},"supplementary_destination":{"category":"supplementary","name":"destination traffic excluded","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"content-4","color":"black","content":"Anlieger","transform":"translate(0,-45%) scale(.8)"},{"type":"content-4","color":"black","content":"frei","transform":"translate(0,45%) scale(.8)"}]},"supplementary_disabled":{"category":"supplementary","name":"for disabled people","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"disabled-p","color":"black","transform":"scale(.6)"}]},"supplementary_glaze":{"category":"supplementary","name":"for disabled people","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"snowflake","color":"black","transform":"scale(.8)"}]},"supplementary_left_pointing":{"category":"supplementary","name":"left pointing","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"DE-arrow-up","color":"black","transform":"scale(.6) rotate(-90deg)"}]},"supplementary_both_directions":{"category":"supplementary","name":"both directions","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"DE-arrow-up","color":"black","transform":"translate(-15%,0) scale(.5) rotate(180deg)"},{"type":"DE-arrow-up","color":"black","transform":"translate(15%,0) scale(.5)"}]},"supplementary_pedestrians_use_opposite_sidewalk":{"category":"supplementary","name":"pedestrians should use opposite sidewalk","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"DE-arrow-up","color":"black","transform":"translate(-20%,0) scale(.5) rotate(-90deg)"},{"type":"pedestrians","color":"black","transform":"translate(25%,0) scale(.6)"}]},"supplementary_pedestrians_use_opposite_sidewalk2":{"category":"supplementary","name":"pedestrians should use opposite sidewalk","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"DE-arrow-up","color":"black","transform":"translate(20%,0) scale(.5) rotate(90deg)"},{"type":"pedestrians","color":"black","transform":"translate(-25%,0) scale(.6)"}]},"supplementary_railway_only":{"category":"supplementary","name":"railway only","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"train-electric","color":"black","transform":"scale(.45)"}]},"supplementary_right_pointing":{"category":"supplementary","name":"right pointing","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"DE-arrow-up","color":"black","transform":"scale(.6) rotate(90deg)"}]}} \ No newline at end of file diff --git a/css/traffico/dk.json b/css/traffico/dk.json new file mode 100755 index 000000000..9350d5bb0 --- /dev/null +++ b/css/traffico/dk.json @@ -0,0 +1 @@ +{"danger_level_crossing":{"category":"danger","name":"level crossing","elements":[{"type":"square-angular","color":"red","transform":"rotate(60deg) scale(.2,1)"},{"type":"square-angular","color":"red","transform":"rotate(-60deg) scale(.2,1)"},{"type":"square-angular","color":"white","transform":"rotate(60deg) scale(.1,.5) translate(50%,50%)"},{"type":"square-angular","color":"white","transform":"rotate(-60deg) scale(.1,.5) translate(-50%,50%)"},{"type":"square-angular","color":"white","transform":"rotate(60deg) scale(.1,.5) translate(-50%,-50%)"},{"type":"square-angular","color":"white","transform":"rotate(-60deg) scale(.1,.5) translate(50%,-50%)"}]},"information_border_dk":{"category":"information","name":"European border crossing into Denmark","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Danmark"}]}} \ No newline at end of file diff --git a/css/traffico/ee.json b/css/traffico/ee.json new file mode 100755 index 000000000..cd83633da --- /dev/null +++ b/css/traffico/ee.json @@ -0,0 +1 @@ +{"information_border_ee":{"category":"information","name":"European border crossing into Estonia","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"EESTI"}]}} \ No newline at end of file diff --git a/css/traffico/es.json b/css/traffico/es.json new file mode 100755 index 000000000..3edf42fd6 --- /dev/null +++ b/css/traffico/es.json @@ -0,0 +1 @@ +{"information_border_es":{"category":"information","name":"European border crossing into Spain","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"ESPAÑA"}]}} \ No newline at end of file diff --git a/css/traffico/europe.json b/css/traffico/europe.json new file mode 100755 index 000000000..85e689ce9 --- /dev/null +++ b/css/traffico/europe.json @@ -0,0 +1 @@ +{"danger_ascent":{"category":"danger","name":"steep ascent","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"descent","color":"black","transform":"{inner_triangle} scale(-1,1)"},{"type":"incline_value","content":"10%","color":"black","transform":"translate(0,-25%) {center2tri} scale(.4) rotate(-30deg)"}]},"danger_bend_first_left":{"category":"danger","name":"bend first left","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"d-curve-l","color":"black","transform":"{center2tri} scale(.6)"}]},"danger_bend_first_right":{"category":"danger","name":"bend first right","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"d-curve-l","color":"black","transform":"{center2tri} scale(-.6,.6)"}]},"danger_bend_left":{"category":"danger","name":"bend left","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"turn-l","color":"black","transform":"{center2tri} scale(.6)"}]},"danger_bend_right":{"category":"danger","name":"bend right","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"turn-l","color":"black","transform":"{center2tri} scale(-.6,.6)"}]},"danger_construction":{"category":"danger","name":"construction/road works","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"roadworks","color":"black","transform":"scale(.7) translate(0,20%)"}]},"danger_contraflow":{"category":"danger","name":"contraflow","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"DE-arrow-up","color":"black","transform":"{center2tri} scale(.35) translate(-25%,5%) rotate(180deg)"},{"type":"DE-arrow-up","color":"black","transform":"{center2tri} scale(.35) translate(25%,-5%)"}]},"danger_crossroad":{"category":"danger","name":"crossroad with priority to the right ahead","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"square-angular","color":"black","transform":"{center2tri} rotate(45deg) scale(.06,.32)"},{"type":"square-angular","color":"black","transform":"{center2tri} rotate(-45deg) scale(.06,.32)"}]},"danger_cycle_crossing":{"category":"danger","name":"cycle crossing","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"bicycle","color":"black","transform":"scale(.65) translate(0,25%)"}]},"danger_danger":{"category":"danger","name":"danger","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"exclamation","color":"black","transform":"scale(.65) {center2tri}"}]},"danger_danger_tmp":{"category":"danger","name":"danger (temporary)","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"yellow","transform":"{inner_triangle}"},{"type":"exclamation","color":"black","transform":"scale(.65) {center2tri}"}]},"danger_descent":{"category":"danger","name":"steep descent","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"descent","color":"black","transform":"{inner_triangle}"},{"type":"incline_value","content":"10%","color":"black","transform":"translate(0,-25%) {center2tri} scale(.4) rotate(30deg)"}]},"danger_domestic_animals":{"category":"danger","name":"domestic animals","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"domestic-animal","color":"black","transform":"{center2tri} translate(-6%,4%) scale(.25)"}]},"danger_level_crossing":{"category":"danger","name":"level crossing","elements":[{"type":"level-crossing","color":"red"},{"type":"level-crossing","color":"red","transform":"scale(-1,1)"},{"type":"square-angular","color":"white","transform":"rotate(60deg) scale(.05,1)"},{"type":"square-angular","color":"white","transform":"rotate(-60deg) scale(.05,1)"}]},"danger_pedestrians":{"category":"danger","name":"pedestrians","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"pedestrian","color":"black","transform":"scale(.7) {center2tri}"}]},"danger_pedestrian_crossing":{"category":"danger","name":"pedestrian crossing","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"pedestrian-crossing","color":"black","transform":"translate(0,2%)"}]},"danger_quayside_or_ferry_berth":{"category":"danger","name":"quayside or ferry berth","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"cliff","color":"black","transform":"{inner_triangle}"}]},"danger_railway_crossing_secured":{"category":"danger","name":"secured railway crossing","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"railway-xing-secured","color":"black","transform":"{center2tri} translate(0,4%) scale(.35)"}]},"danger_railway_crossing_unsecured":{"category":"danger","name":"unsecured railway crossing","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"railway-xing-unsecured","color":"black","transform":"translate(0,13%) scale(.4)"}]},"danger_road_narrows":{"category":"danger","name":"road narrows","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"narrow-road-both","color":"black","transform":"{center2tri} scale(.6)"}]},"danger_road_narrows_left":{"category":"danger","name":"road narrows left","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"narrow-road-l","color":"black","transform":"{center2tri} scale(.6)"}]},"danger_road_narrows_right":{"category":"danger","name":"road narrows right","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"narrow-road-l","color":"black","transform":"{center2tri} scale(-.6,.6)"}]},"danger_roundabout":{"category":"danger","name":"roundabout","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"roundabout","color":"black","transform":"{center2tri} scale(.55)"}]},"danger_school_crossing":{"category":"danger","name":"school crossing","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"children","color":"black","transform":"{center2tri} scale(.75)"}]},"danger_slippery_road":{"category":"danger","name":"slippery road","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"slippery-road","color":"black","transform":"{center2tri} scale(.75)"}]},"danger_snow":{"category":"danger","name":"danger snow","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"snowflake","color":"black","transform":"{center2tri} scale(.7)"}]},"danger_traffic_signal":{"category":"danger","name":"traffic signal","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"circle-bg","color":"red","transform":"{center2tri} translate(0,-20%) scale(.13)"},{"type":"circle-bg","color":"yellow","transform":"{center2tri} translate(0,-5%) scale(.13)"},{"type":"circle-bg","color":"green","transform":"{center2tri} translate(0,10%) scale(.13)"}]},"danger_uneven_road":{"category":"danger","name":"uneven road","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"bumps","color":"black","transform":"{center2tri} scale(.45)"}]},"danger_hump":{"category":"danger","name":"(speed) hump","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"bump","color":"black","transform":"{center2tri} scale(.45)"}]},"danger_wild_animals":{"category":"danger","name":"wild animals crossing","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"wild-animal","color":"black","transform":"{center2tri} scale(.7)"}]},"danger_low_flying_aircraft":{"category":"danger","name":"low flying aircraft","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"airplane","color":"black","transform":"{center2tri} scale(.4)"}]},"danger_strong_sidewind":{"category":"danger","name":"strong sidewind","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"windbag","color":"black","transform":"{center2tri} scale(.3)"}]},"information_bus_stop":{"category":"information","name":"bus stop","elements":[{"type":"square-rounded","color":"blue"},{"type":"square-rounded","color":"white","transform":"scale(.7)"},{"type":"bus","color":"black","transform":"scale(.7)"}]},"information_deadend":{"category":"information","name":"deadend","elements":[{"type":"square-rounded","color":"blue"},{"type":"square-angular","color":"white","transform":"translate(0,20%) scale(.15,.6)"},{"type":"square-angular","color":"red","transform":"translate(0,-15%) scale(.5,.15)"}]},"information_disabled_parking":{"category":"information","name":"disabled parking","elements":[{"type":"square-rounded","color":"blue"},{"type":"disabled-p","color":"white"}]},"information_first_aid":{"category":"information","name":"first aid","elements":[{"type":"square-rounded","color":"blue"},{"type":"square-rounded","color":"white","transform":"scale(.7)"},{"type":"square-angular","color":"red","transform":"scale(.15,.5)"},{"type":"square-angular","color":"red","transform":"scale(.5,.15)"}]},"information_limited_access_road":{"category":"information","name":"limited-access road","elements":[{"type":"square-rounded","color":"blue"},{"type":"car","color":"white","transform":"scale(1.5)"}]},"information_parking":{"category":"information","name":"parking","elements":[{"type":"square-rounded","color":"blue"},{"type":"parking","color":"white"}]},"information_parking_left":{"category":"information","name":"parking (left of this sign)","elements":[{"type":"square-rounded","color":"blue"},{"type":"parking","color":"white"},{"type":"DE-arrow-up","color":"white","transform":"translate(25%,30%) rotate(-90deg) scale(.33)"}]},"information_parking_right":{"category":"information","name":"parking (right of this sign)","elements":[{"type":"square-rounded","color":"blue"},{"type":"parking","color":"white"},{"type":"DE-arrow-up","color":"white","transform":"translate(25%,30%) rotate(90deg) scale(.33)"}]},"information_pedestrian_crossing":{"category":"information","name":"pedestrian crossing","elements":[{"type":"square-rounded","color":"blue"},{"type":"tri-angular","color":"white","transform":"scale(.8)"},{"type":"pedestrian-crossing","color":"black"}]},"mandatory_bicycle_pedestrian_dual_track":{"category":"mandatory","name":"bicycle/pedestrian dual track","elements":[{"type":"circle-bg","color":"blue"},{"type":"bicycle","color":"white","transform":"{right_half}"},{"type":"footpath","color":"white","transform":"{left_half}"},{"type":"circle-separator","color":"white"}]},"mandatory_cycle_track":{"category":"mandatory","name":"cycle track","elements":[{"type":"circle-bg","color":"blue"},{"type":"bicycle","color":"white"}]},"mandatory_equestrian_track":{"category":"mandatory","name":"equestrian track","elements":[{"type":"circle-bg","color":"blue"},{"type":"equestrian","color":"white","transform":"scale(.7)"}]},"mandatory_footpath":{"category":"mandatory","name":"footpath","elements":[{"type":"circle-bg","color":"blue"},{"type":"footpath","color":"white"}]},"mandatory_go_left":{"category":"mandatory","name":"go left","elements":[{"type":"circle-bg","color":"blue"},{"type":"DE-arrow-up","color":"white","transform":"rotate(-90deg)"}]},"mandatory_go_left_or_right":{"category":"mandatory","name":"go left or right","elements":[{"type":"circle-bg","color":"blue"},{"type":"DE-arrow-up","color":"white","transform":"translate(0,-15%) rotate(135deg) scale(.6) translate(0,-32%)"},{"type":"DE-arrow-up","color":"white","transform":"translate(0,-15%) rotate(-135deg) scale(.6) translate(0,-32%)"}]},"mandatory_go_right":{"category":"mandatory","name":"go right","elements":[{"type":"circle-bg","color":"blue"},{"type":"DE-arrow-up","color":"white","transform":"rotate(90deg)"}]},"mandatory_go_straight":{"category":"mandatory","name":"go straight","elements":[{"type":"circle-bg","color":"blue"},{"type":"DE-arrow-up","color":"white"}]},"mandatory_keep_left":{"category":"mandatory","name":"keep left","elements":[{"type":"circle-bg","color":"blue"},{"type":"DE-arrow-up","color":"white","transform":"rotate(-135deg)"}]},"mandatory_keep_right":{"category":"mandatory","name":"keep right","elements":[{"type":"circle-bg","color":"blue"},{"type":"DE-arrow-up","color":"white","transform":"rotate(135deg)"}]},"mandatory_minimum_speed":{"category":"mandatory","name":"minimum speed","elements":[{"type":"circle-bg","color":"blue"},{"type":"speed_value","color":"white"}]},"mandatory_minimum_speed_end":{"category":"mandatory","name":"end of minimum speed limit","elements":[{"type":"circle-bg","color":"blue"},{"type":"speed_value","color":"white"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(45deg)"}]},"mandatory_pedestrian_bicycle_dual_track":{"category":"mandatory","name":"pedestrian/bicycle dual track","elements":[{"type":"circle-bg","color":"blue"},{"type":"bicycle","color":"white","transform":"{left_half}"},{"type":"footpath","color":"white","transform":"{right_half}"},{"type":"circle-separator","color":"white"}]},"mandatory_pedestrian_cycle_track":{"category":"mandatory","name":"pedestrian cycle track","elements":[{"type":"circle-bg","color":"blue"},{"type":"footpath","color":"white","transform":"{top_half}"},{"type":"bicycle","color":"white","transform":"{bottom_half}"},{"type":"circle-separator","color":"white","transform":"rotate(90deg)"}]},"mandatory_roundabout":{"category":"mandatory","name":"roundabout","elements":[{"type":"circle-bg","color":"blue"},{"type":"roundabout","color":"white","transform":"scale(1.25)"}]},"mandatory_turn_left":{"category":"mandatory","name":"turn left","elements":[{"type":"circle-bg","color":"blue"},{"type":"arrow-l","color":"white"}]},"mandatory_turn_left_or_straight":{"category":"mandatory","name":"turn left or straight","elements":[{"type":"circle-bg","color":"blue"},{"type":"arrow-s-l","color":"white"}]},"mandatory_turn_right":{"category":"mandatory","name":"turn right","elements":[{"type":"circle-bg","color":"blue"},{"type":"arrow-l","color":"white","transform":"scale(-1,1)"}]},"mandatory_turn_right_or_straight":{"category":"mandatory","name":"turn right or straight","elements":[{"type":"circle-bg","color":"blue"},{"type":"arrow-s-l","color":"white","transform":"scale(-1,1)"}]},"other_no_entry":{"category":"other","name":"no entry, one way street","elements":[{"type":"circle-bg","color":"red"},{"type":"square-angular","color":"white","transform":"scale(.92,.16)"}]},"other_entry":{"category":"other","name":"entry, one way street","elements":[{"type":"square-rounded","color":"blue"},{"type":"arrow-oneway","color":"white","transform":"scale(.75)"}]},"priority_give_way":{"category":"priority","name":"give way","elements":[{"type":"tri-rounded","color":"red","transform":"rotate(180deg)"},{"type":"tri-angular","color":"white","transform":"{tri2center} scale(.7) {center2tri} rotate(180deg)"}]},"priority_narrow":{"category":"priority","name":"priority at narrow location","elements":[{"type":"square-rounded","color":"blue"},{"type":"DE-arrow-up","color":"red","transform":"scale(.8) translate(-25%,5%) rotate(180deg)"},{"type":"DE-arrow-up","color":"white","transform":"scale(.8) translate(25%,-5%)"}]},"priority_narrow2":{"category":"priority","name":"no priority at narrow location","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"DE-arrow-up","color":"black","transform":"{fit_border_circle} scale(.7) translate(-25%,5%) rotate(180deg)"},{"type":"DE-arrow-up","color":"red","transform":"{fit_border_circle} scale(.7) translate(25%,-5%)"}]},"priority_next_intersection":{"category":"priority","name":"priority at next intersection","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"right-of-way","color":"black","transform":"scale(.7) {center2tri}"}]},"priority_next_intersection_left":{"category":"priority","name":"priority at next intersection on the left","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"right-of-way-l fit","color":"black","transform":"scale(.7) {center2tri}"}]},"priority_next_intersection_right":{"category":"priority","name":"priority at next intersection on the right","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"right-of-way-l fit","color":"black","transform":"scale(.7) {center2tri} scale(-1,1)"}]},"priority_priority_road":{"category":"priority","name":"priority_road","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"white","transform":"scale(.98) {square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.6) {square_to_diamond}"}]},"priority_priority_road_end":{"category":"priority","name":"end of priority road","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"white","transform":"scale(.98) {square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.6) {square_to_diamond}"},{"type":"square-angular","color":"black","transform":"{square_to_diamond} scale(.2,1)"}]},"priority_stop":{"category":"priority","name":"stop","elements":[{"type":"octagon","color":"red"},{"type":"stop","color":"white"}]},"prohibitory_pedestrians":{"category":"prohibitory","name":"pedestrians prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"pedestrian","color":"black","transform":"{fit_border_circle}"}]},"prohibitory_pedestrians_and_bicycles":{"category":"prohibitory","name":"pedestrians and bicycles prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"footpath","color":"black","transform":"{fit_border_circle} {top_half}"},{"type":"bicycle","color":"black","transform":"{fit_border_circle} {bottom_half}"}]},"prohibitory_bicycles":{"category":"prohibitory","name":"cycling prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"bicycle","color":"black","transform":"{fit_border_circle}"}]},"prohibitory_mopeds_and_bicycles":{"category":"prohibitory","name":"mopeds and bicycles prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"moped","color":"black","transform":"{fit_border_circle} {top_half} scale(.7)"},{"type":"bicycle","color":"black","transform":"{fit_border_circle} {bottom_half}"}]},"prohibitory_moped":{"category":"prohibitory","name":"mopeds prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"moped","color":"black","transform":"{fit_border_circle} scale(.7)"}]},"prohibitory_motorcycles":{"category":"prohibitory","name":"motorcycles prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"motorbike","color":"black","transform":"{fit_border_circle}"}]},"prohibitory_motor_vehicles":{"category":"prohibitory","name":"motor vehicles prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"motorbike","color":"black","transform":"{fit_border_circle} {top_half}"},{"type":"car","color":"black","transform":"{fit_border_circle} {bottom_half}"},{"type":"circle-separator","color":"black","transform":"rotate(90deg) {fit_border_circle}"}]},"prohibitory_slow_vehicles":{"category":"prohibitory","name":"slow motorized vehicles prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"tractor","color":"black","transform":"{fit_border_circle} scale(.7)"}]},"prohibitory_trailers":{"category":"prohibitory","name":"no trailers allowed","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"trailer","color":"black","transform":"{fit_border_circle} scale(.8)"}]},"prohibitory_buses":{"category":"prohibitory","name":"no buses","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"bus","color":"black","transform":"{fit_border_circle}"}]},"prohibitory_trucks":{"category":"prohibitory","name":"no trucks","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"truck","color":"black"}]},"prohibitory_trucks_bar":{"category":"prohibitory","name":"no trucks","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"truck","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(45deg)"}]},"prohibitory_trucks_and_buses":{"category":"prohibitory","name":"buses and trucks prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"truck","color":"black","transform":"{fit_border_circle} {top_half}"},{"type":"bus","color":"black","transform":"{fit_border_circle} {bottom_half}"},{"type":"circle-separator","color":"black","transform":"rotate(90deg) {fit_border_circle}"}]},"prohibitory_no_parking":{"category":"prohibitory","name":"no_parking","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"prohibitory_no_parking_or_stopping":{"category":"prohibitory","name":"no parking or stopping","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(45deg)"}]},"prohibitory_no_parking_or_stopping_left":{"category":"prohibitory","name":"no parking or stopping","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(45deg)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(-90deg) scale(.3) translate(95%)"}]},"prohibitory_no_parking_or_stopping_left_and_right":{"category":"prohibitory","name":"no parking or stopping","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(45deg)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(-90deg) scale(.3) translate(95%)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(90deg) scale(.3) translate(95%)"}]},"prohibitory_no_parking_or_stopping_right":{"category":"prohibitory","name":"no parking or stopping","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(45deg)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(90deg) scale(.3) translate(95%)"}]},"prohibitory_no_parking_left":{"category":"prohibitory","name":"no_parking","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(90deg) scale(.3) translate(95%)"}]},"prohibitory_no_parking_left_and_right":{"category":"prohibitory","name":"no_parking","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(90deg) scale(.3) translate(95%)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(-90deg) scale(.3) translate(95%)"}]},"prohibitory_no_parking_right":{"category":"prohibitory","name":"no_parking","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(-90deg) scale(.3) translate(95%)"}]},"prohibitory_no_traffic_both_ways":{"category":"prohibitory","name":"no traffic both ways","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"}]},"prohibitory_no_turn_left":{"category":"prohibitory","name":"no turn left","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"turn-l","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(45deg)"}]},"prohibitory_no_turn_right":{"category":"prohibitory","name":"no turn right","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"turn-l","color":"black","transform":"scale(-1,1)"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"prohibitory_no_u_turn":{"category":"prohibitory","name":"no u-turn","elements":[{"type":"circle-bg","color":"red"},{"type":"circle-bg","color":"white","transform":"{fit_border_circle}"},{"type":"turnaround","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-55deg)"},{"type":"turnaround2","color":"black"}]},"prohibitory_overtaking":{"category":"prohibitory","name":"no overtaking","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"car-left","color":"red"},{"type":"car-right","color":"black"}]},"prohibitory_overtaking_trucks":{"category":"prohibitory","name":"no overtaking trucks","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"lorry-left","color":"red"},{"type":"car-right","color":"black"}]},"prohibitory_speed_limit":{"category":"prohibitory","name":"speed limit","elements":[{"type":"circle-bg","color":"red"},{"type":"circle-bg","color":"white","transform":"{fit_border_circle}"},{"type":"speed_value","color":"black"}]},"prohibitory_speed_limit_zone":{"category":"prohibitory","name":"speed limit","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95)"},{"type":"circle-bg","color":"red","transform":"translate(0,-10%) scale(.65)"},{"type":"circle-bg","color":"white","transform":"translate(0,-10%) scale(.65) {fit_border_circle}"},{"type":"speed_zone_value","color":"black","transform":"translate(0,-30%) scale(.7)"},{"type":"content-4","content":"ZONE","color":"black","transform":"translate(0,150%) scale(.8)"}]},"prohibitory_vehicle_height_limit":{"category":"prohibitory","name":"vehicle_height_limit","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"height","color":"black"},{"type":"height_value","color":"black"}]},"prohibitory_vehicle_weight_limit":{"category":"prohibitory","name":"vehicle weight limit","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"weight_value","color":"black"}]},"prohibitory_vehicle_width_limit":{"category":"prohibitory","name":"vehicle_width_limit","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"height","color":"black","transform":"rotate(90deg)"},{"type":"width_value","color":"black"}]},"prohibitory_vehicles_with_dangerous_goods":{"category":"prohibitory","name":"no vehicles with dangerous goods","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"square-rounded","color":"orange","transform":"scale(.25) translate(0,-25%)"},{"type":"lorry","color":"black"}]},"supplementary_priority_road_bends_left_3way_1":{"category":"supplementary","name":"priority road bends to the left at a 3-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,-30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(-.85,.85)"}]},"supplementary_priority_road_bends_left_3way_2":{"category":"supplementary","name":"priority road bends to the left at a 3-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"rotate(-90deg) translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(-.85,.85)"}]},"supplementary_priority_road_bends_left_4way":{"category":"supplementary","name":"priority road bends to the left at a 4-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,-30%) scale(.1,.25)"},{"type":"square-angular","color":"black","transform":"rotate(-90deg) translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(-.85,.85)"}]},"supplementary_priority_road_bends_right_3way_1":{"category":"supplementary","name":"priority road bends to the right at a 3-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,-30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(.85)"}]},"supplementary_priority_road_bends_right_3way_2":{"category":"supplementary","name":"priority road bends to the right at a 3-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"rotate(90deg) translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(.85)"}]},"supplementary_priority_road_bends_right_4way":{"category":"supplementary","name":"priority road bends to the right at a 4-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,-30%) scale(.1,.25)"},{"type":"square-angular","color":"black","transform":"rotate(90deg) translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(.85)"}]},"supplementary_priority_road_from_left_3way":{"category":"supplementary","name":"priority road comes from the left and continues straight at a 3-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(-.85,-.85)"}]},"supplementary_priority_road_from_left_4way":{"category":"supplementary","name":"priority road comes from the left and continues straight at a 4-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,30%) scale(.1,.25)"},{"type":"square-angular","color":"black","transform":"rotate(-90deg) translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(-.85,-.85)"}]},"supplementary_priority_road_from_right_3way":{"category":"supplementary","name":"priority road comes from the right and continues straight at a 3-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(.85,-.85)"}]},"supplementary_priority_road_from_right_4way":{"category":"supplementary","name":"priority road comes from the right and continues straight at a 4-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,30%) scale(.1,.25)"},{"type":"square-angular","color":"black","transform":"rotate(90deg) translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(.85,-.85)"}]}} \ No newline at end of file diff --git a/css/traffico/fi.json b/css/traffico/fi.json new file mode 100755 index 000000000..1b969d3bb --- /dev/null +++ b/css/traffico/fi.json @@ -0,0 +1 @@ +{"information_border_fi":{"category":"information","name":"European border crossing into Finland","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"SUOMI","transform":"translate(0,-100%)"},{"type":"content-5","color":"white","content":"FINLAND","transform":"translate(0,0)"},{"type":"content-5","color":"white","content":"SUOPMA","transform":"translate(0,100%)"}]}} \ No newline at end of file diff --git a/css/traffico/fonts/traffico-preview.html b/css/traffico/fonts/traffico-preview.html new file mode 100755 index 000000000..9422b5680 --- /dev/null +++ b/css/traffico/fonts/traffico-preview.html @@ -0,0 +1,1913 @@ + + + + traffico glyphs preview + + + + + + + + + +
+
+

traffico contains 114 glyphs:

+ Toggle Preview Characters +
+ + +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ + + +
+ + diff --git a/css/traffico/fonts/traffico.eot b/css/traffico/fonts/traffico.eot new file mode 100755 index 0000000000000000000000000000000000000000..19fd16692bfc0505cfdbf6d0c3b5b489785ab1d1 GIT binary patch literal 26174 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 t*S|5Ye`8$##<>3Bxc*@$6-WveO{A2Pz2Eqi@K + + + + +Created by FontForge 20141231 at Wed Apr 1 08:31:03 2015 + By Kamil Nikel +Copyright (c) 2015, Kamil Nikel + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/css/traffico/fonts/traffico.ttf b/css/traffico/fonts/traffico.ttf new file mode 100755 index 0000000000000000000000000000000000000000..dd5738e95480c673de467c5f60e7db448ab1bf55 GIT binary patch literal 25996 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 literal 0 HcmV?d00001 diff --git a/css/traffico/fonts/traffico.woff b/css/traffico/fonts/traffico.woff new file mode 100755 index 0000000000000000000000000000000000000000..ab461588bcfe580b0b412b61fe62a43b31270388 GIT binary patch literal 16532 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 literal 0 HcmV?d00001 diff --git a/css/traffico/fr.json b/css/traffico/fr.json new file mode 100755 index 000000000..695b9c919 --- /dev/null +++ b/css/traffico/fr.json @@ -0,0 +1 @@ +{"information_border_fr":{"category":"information","name":"European border crossing into France","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"FRANCE"}]}} \ No newline at end of file diff --git a/css/traffico/gr.json b/css/traffico/gr.json new file mode 100755 index 000000000..3e64f8bf1 --- /dev/null +++ b/css/traffico/gr.json @@ -0,0 +1 @@ +{"information_border_gr":{"category":"information","name":"European border crossing into Greece","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"yellow","content":"EΛΛAΣ","transform":"translate(0,-50%)"},{"type":"content-5","color":"white","content":"GREECE","transform":"translate(0,50%)"}]}} \ No newline at end of file diff --git a/css/traffico/hu.json b/css/traffico/hu.json new file mode 100755 index 000000000..a36aac38d --- /dev/null +++ b/css/traffico/hu.json @@ -0,0 +1 @@ +{"information_border_hu":{"category":"information","name":"European border crossing into Hungary","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Magyarország","transform":"scale(.75)"}]}} \ No newline at end of file diff --git a/css/traffico/it.json b/css/traffico/it.json new file mode 100755 index 000000000..c0b1e7bae --- /dev/null +++ b/css/traffico/it.json @@ -0,0 +1 @@ +{"information_border_it":{"category":"information","name":"European border crossing into Italy","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"ITALIA"}]}} \ No newline at end of file diff --git a/css/traffico/lt.json b/css/traffico/lt.json new file mode 100755 index 000000000..72a351c61 --- /dev/null +++ b/css/traffico/lt.json @@ -0,0 +1 @@ +{"information_border_lt":{"category":"information","name":"European border crossing into Lithuania","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Lietuvos","transform":"translate(0,-80%)"},{"type":"content-5","color":"white","content":"Respublika","transform":"translate(0,20%)"}]}} \ No newline at end of file diff --git a/css/traffico/lu.json b/css/traffico/lu.json new file mode 100755 index 000000000..0be6c4286 --- /dev/null +++ b/css/traffico/lu.json @@ -0,0 +1 @@ +{"information_border_lu_fr":{"category":"information","name":"European border crossing into Luxembourg from France","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Luxembourg","transform":"scale(.85)"}]},"information_border_lu_de":{"category":"information","name":"European border crossing into Luxembourg from Germany","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Luxemburg","transform":"scale(.85)"}]}} \ No newline at end of file diff --git a/css/traffico/lv.json b/css/traffico/lv.json new file mode 100755 index 000000000..baef29b8c --- /dev/null +++ b/css/traffico/lv.json @@ -0,0 +1 @@ +{"information_border_lv":{"category":"information","name":"European border crossing into Latvia","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"LATVIJA"}]}} \ No newline at end of file diff --git a/css/traffico/nl.json b/css/traffico/nl.json new file mode 100755 index 000000000..067045fb3 --- /dev/null +++ b/css/traffico/nl.json @@ -0,0 +1 @@ +{"information_border_nl":{"category":"information","name":"European border crossing into the Netherlands","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Nederland"}]},"information_cycleway":{"category":"information","name":"non-compulsory cycleway","elements":[{"type":"square-rounded","color":"white","transform":"scale(1,.3)"},{"type":"square-rounded","color":"blue","transform":"scale(.95,.25)"},{"type":"content-4","color":"white","content":"fietspad"}]}} \ No newline at end of file diff --git a/css/traffico/pl.json b/css/traffico/pl.json new file mode 100755 index 000000000..164bf23cf --- /dev/null +++ b/css/traffico/pl.json @@ -0,0 +1 @@ +{"information_border_pl":{"category":"information","name":"European border crossing into Poland","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Rzeczpospolita","transform":"translate(0,-70%) scale(.7)"},{"type":"content-5","color":"white","content":"Polska","transform":"translate(0,40%)"}]}} \ No newline at end of file diff --git a/css/traffico/se.json b/css/traffico/se.json new file mode 100755 index 000000000..dec6d2d9f --- /dev/null +++ b/css/traffico/se.json @@ -0,0 +1 @@ +{"information_border_se":{"category":"information","name":"European border crossing into Sweden","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"SVERIGE"}]}} \ No newline at end of file diff --git a/css/traffico/si.json b/css/traffico/si.json new file mode 100755 index 000000000..63268a788 --- /dev/null +++ b/css/traffico/si.json @@ -0,0 +1 @@ +{"information_border_si":{"category":"information","name":"European border crossing into Slovenia","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"SLOVENIA","transform":"scale(.85)"}]}} \ No newline at end of file diff --git a/css/traffico/sk.json b/css/traffico/sk.json new file mode 100755 index 000000000..0140670e9 --- /dev/null +++ b/css/traffico/sk.json @@ -0,0 +1 @@ +{"information_border_sk":{"category":"information","name":"European border crossing into Slovakia","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"SLOVENSKO","transform":"scale(.8)"}]}} \ No newline at end of file diff --git a/css/traffico/stylesheets/traffico.css b/css/traffico/stylesheets/traffico.css new file mode 100755 index 000000000..ed878d9f6 --- /dev/null +++ b/css/traffico/stylesheets/traffico.css @@ -0,0 +1,365 @@ +/* + Icon Font: traffico +*/ + +@font-face { + font-family: "traffico"; + src: url("../fonts/traffico.eot"); + src: url("../fonts/traffico.eot?#iefix") format("embedded-opentype"), + url("../fonts/traffico.woff") format("woff"), + url("../fonts/traffico.ttf") format("truetype"), + url("../fonts/traffico.svg#traffico") format("svg"); + font-weight: normal; + font-style: normal; +} + +@media screen and (-webkit-min-device-pixel-ratio:0) { + @font-face { + font-family: "traffico"; + src: url("../fonts/traffico.svg#traffico") format("svg"); + } +} + +[data-icon]:before { content: attr(data-icon); } + +[data-icon]:before, +.t-DE-arrow-up:before, +.t-US-arrow-oneway:before, +.t-US-arrow-up:before, +.t-added-lane:before, +.t-added-lane-entering-roadway:before, +.t-airplane:before, +.t-arrow-l:before, +.t-arrow-oneway:before, +.t-arrow-s-l:before, +.t-bending-priority:before, +.t-bicycle:before, +.t-bicycle-slippery:before, +.t-bump:before, +.t-bumps:before, +.t-bus:before, +.t-car:before, +.t-car-left:before, +.t-car-right:before, +.t-children:before, +.t-circle-bar-rounded:before, +.t-circle-bg:before, +.t-circle-o:before, +.t-circle-separator:before, +.t-cliff:before, +.t-cross-roads:before, +.t-curve-r-l:before, +.t-d-curve-l:before, +.t-dead-end:before, +.t-descent:before, +.t-disabled-p:before, +.t-domestic-animal:before, +.t-end:before, +.t-equestrian:before, +.t-europe_stars:before, +.t-exclamation:before, +.t-falling-rocks:before, +.t-fire-station:before, +.t-flaggers:before, +.t-footpath:before, +.t-h:before, +.t-h-align-l:before, +.t-hairpin-curve:before, +.t-hazardous-material:before, +.t-height:before, +.t-highway-divided:before, +.t-hitch-hiking:before, +.t-level-crossing:before, +.t-light-rail:before, +.t-lightground-railroad-crossing:before, +.t-loop-270:before, +.t-lorry:before, +.t-lorry-left:before, +.t-low-clearance:before, +.t-merge:before, +.t-metric-clearance:before, +.t-moped:before, +.t-motorbike:before, +.t-narrow-road-both:before, +.t-narrow-road-l:before, +.t-no-l-or-u-turn:before, +.t-octagon:before, +.t-offset-roads:before, +.t-parking:before, +.t-pass-l-r:before, +.t-pedestrian:before, +.t-pedestrian-crossing:before, +.t-pedestrians:before, +.t-play-ground:before, +.t-pretzel-loop:before, +.t-railroad:before, +.t-railway-xing-secured:before, +.t-railway-xing-unsecured:before, +.t-right-of-way:before, +.t-right-of-way-l:before, +.t-roadworks:before, +.t-rollerblading:before, +.t-roundabout:before, +.t-school:before, +.t-share-roads:before, +.t-side-road-a-a-l:before, +.t-side-road-a-a-r:before, +.t-side-road-p-l:before, +.t-side-road-p-r:before, +.t-single-2-reverse-curve:before, +.t-skewed-railroads:before, +.t-slippery:before, +.t-slippery-road:before, +.t-snowflake:before, +.t-square-angular:before, +.t-square-rounded:before, +.t-steep-hill:before, +.t-stop:before, +.t-t-roads:before, +.t-tractor:before, +.t-trailer:before, +.t-train-electric:before, +.t-tram:before, +.t-tri-angular:before, +.t-tri-rounded:before, +.t-truck:before, +.t-truck-rollover-speed:before, +.t-trucks-rollover:before, +.t-turn-90-l:before, +.t-turn-curve-speed:before, +.t-turn-l:before, +.t-turn-l-curve:before, +.t-turn-reverse-left:before, +.t-turnaround:before, +.t-turnaround2:before, +.t-u-turn:before, +.t-wild-animal:before, +.t-windbag:before, +.t-winding-road-left:before, +.t-y-roads:before { + display: inline-block; + font-family: "traffico"; + font-style: normal; + font-weight: normal; + font-variant: normal; + line-height: 1; + text-decoration: inherit; + text-rendering: optimizeLegibility; + text-transform: none; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + font-smoothing: antialiased; +} + +.t-DE-arrow-up:before { content: "\f100"; } +.t-US-arrow-oneway:before { content: "\f101"; } +.t-US-arrow-up:before { content: "\f102"; } +.t-added-lane:before { content: "\f103"; } +.t-added-lane-entering-roadway:before { content: "\f104"; } +.t-airplane:before { content: "\f105"; } +.t-arrow-l:before { content: "\f106"; } +.t-arrow-oneway:before { content: "\f107"; } +.t-arrow-s-l:before { content: "\f108"; } +.t-bending-priority:before { content: "\f109"; } +.t-bicycle:before { content: "\f10a"; } +.t-bicycle-slippery:before { content: "\f10b"; } +.t-bump:before { content: "\f10c"; } +.t-bumps:before { content: "\f10d"; } +.t-bus:before { content: "\f10e"; } +.t-car:before { content: "\f10f"; } +.t-car-left:before { content: "\f110"; } +.t-car-right:before { content: "\f111"; } +.t-children:before { content: "\f112"; } +.t-circle-bar-rounded:before { content: "\f113"; } +.t-circle-bg:before { content: "\f114"; } +.t-circle-o:before { content: "\f115"; } +.t-circle-separator:before { content: "\f116"; } +.t-cliff:before { content: "\f117"; } +.t-cross-roads:before { content: "\f118"; } +.t-curve-r-l:before { content: "\f119"; } +.t-d-curve-l:before { content: "\f11a"; } +.t-dead-end:before { content: "\f11b"; } +.t-descent:before { content: "\f11c"; } +.t-disabled-p:before { content: "\f11d"; } +.t-domestic-animal:before { content: "\f11e"; } +.t-end:before { content: "\f11f"; } +.t-equestrian:before { content: "\f120"; } +.t-europe_stars:before { content: "\f121"; } +.t-exclamation:before { content: "\f122"; } +.t-falling-rocks:before { content: "\f123"; } +.t-fire-station:before { content: "\f124"; } +.t-flaggers:before { content: "\f125"; } +.t-footpath:before { content: "\f126"; } +.t-h:before { content: "\f127"; } +.t-h-align-l:before { content: "\f128"; } +.t-hairpin-curve:before { content: "\f129"; } +.t-hazardous-material:before { content: "\f12a"; } +.t-height:before { content: "\f12b"; } +.t-highway-divided:before { content: "\f12c"; } +.t-hitch-hiking:before { content: "\f12d"; } +.t-level-crossing:before { content: "\f12e"; } +.t-light-rail:before { content: "\f12f"; } +.t-lightground-railroad-crossing:before { content: "\f130"; } +.t-loop-270:before { content: "\f131"; } +.t-lorry:before { content: "\f132"; } +.t-lorry-left:before { content: "\f133"; } +.t-low-clearance:before { content: "\f134"; } +.t-merge:before { content: "\f135"; } +.t-metric-clearance:before { content: "\f136"; } +.t-moped:before { content: "\f137"; } +.t-motorbike:before { content: "\f138"; } +.t-narrow-road-both:before { content: "\f139"; } +.t-narrow-road-l:before { content: "\f13a"; } +.t-no-l-or-u-turn:before { content: "\f13b"; } +.t-octagon:before { content: "\f13c"; } +.t-offset-roads:before { content: "\f13d"; } +.t-parking:before { content: "\f13e"; } +.t-pass-l-r:before { content: "\f13f"; } +.t-pedestrian:before { content: "\f140"; } +.t-pedestrian-crossing:before { content: "\f141"; } +.t-pedestrians:before { content: "\f142"; } +.t-play-ground:before { content: "\f143"; } +.t-pretzel-loop:before { content: "\f144"; } +.t-railroad:before { content: "\f145"; } +.t-railway-xing-secured:before { content: "\f146"; } +.t-railway-xing-unsecured:before { content: "\f147"; } +.t-right-of-way:before { content: "\f148"; } +.t-right-of-way-l:before { content: "\f149"; } +.t-roadworks:before { content: "\f14a"; } +.t-rollerblading:before { content: "\f14b"; } +.t-roundabout:before { content: "\f14c"; } +.t-school:before { content: "\f14d"; } +.t-share-roads:before { content: "\f14e"; } +.t-side-road-a-a-l:before { content: "\f14f"; } +.t-side-road-a-a-r:before { content: "\f150"; } +.t-side-road-p-l:before { content: "\f151"; } +.t-side-road-p-r:before { content: "\f152"; } +.t-single-2-reverse-curve:before { content: "\f153"; } +.t-skewed-railroads:before { content: "\f154"; } +.t-slippery:before { content: "\f155"; } +.t-slippery-road:before { content: "\f156"; } +.t-snowflake:before { content: "\f157"; } +.t-square-angular:before { content: "\f158"; } +.t-square-rounded:before { content: "\f159"; } +.t-steep-hill:before { content: "\f15a"; } +.t-stop:before { content: "\f15b"; } +.t-t-roads:before { content: "\f15c"; } +.t-tractor:before { content: "\f15d"; } +.t-trailer:before { content: "\f15e"; } +.t-train-electric:before { content: "\f15f"; } +.t-tram:before { content: "\f160"; } +.t-tri-angular:before { content: "\f161"; } +.t-tri-rounded:before { content: "\f162"; } +.t-truck:before { content: "\f163"; } +.t-truck-rollover-speed:before { content: "\f164"; } +.t-trucks-rollover:before { content: "\f165"; } +.t-turn-90-l:before { content: "\f166"; } +.t-turn-curve-speed:before { content: "\f167"; } +.t-turn-l:before { content: "\f168"; } +.t-turn-l-curve:before { content: "\f169"; } +.t-turn-reverse-left:before { content: "\f16a"; } +.t-turnaround:before { content: "\f16b"; } +.t-turnaround2:before { content: "\f16c"; } +.t-u-turn:before { content: "\f16d"; } +.t-wild-animal:before { content: "\f16e"; } +.t-windbag:before { content: "\f16f"; } +.t-winding-road-left:before { content: "\f170"; } +.t-y-roads:before { content: "\f171"; } + +/** Base */ +.t { + display: inline-block; + font: normal normal normal 14px/1 traffico; + position: relative; + width: 1em; + height: 1em; + line-height: 1em; + vertical-align: middle; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.t i { + position: absolute; + left: 0; + width: 100%; + height:1em; + line-height:0; + text-align: center; +} + +/** Content */ + +.t-content, +.t-content-3, +.t-content-4{ + font-family: Helvetica, Arial, sans-serif; + font-weight: bold; + font-style: normal; + letter-spacing:0; + top:48.5%; +} +.t-content { + font-size: 50%; +} + +.t-content-3 { + font-size: 40%; +} + +.t-content-4 { + font-size: 22.5%; +} + +.t-content-5 { + font-family: Helvetica, Arial, sans-serif; + font-weight: normal; + font-style: normal; + font-size: 15%; + letter-spacing:0; + top:50%; +} + +/** Colours */ + +.t-c-white { + color: white; +} + +.t-c-red { + color: #c1121c; +} + +.t-c-orange { + color: #f60; +} + +.t-c-blue { + color: #154889; +} + +.t-c-black { + color: black; +} + +.t-c-yellow-dark { + color: #f0ca00; +} + +.t-c-yellow { + color: #fecf33; +} + +.t-c-grey { + color: grey; +} + +.t-c-green { + color: #008754; +} + +.t-c-fluogreen { + color: #A2FF31; +} diff --git a/css/traffico/transformations.json b/css/traffico/transformations.json new file mode 100755 index 000000000..08d9a95f7 --- /dev/null +++ b/css/traffico/transformations.json @@ -0,0 +1 @@ +{"fit_triangle":"scale(.8) translate(0,5%)","fit_border_circle":"scale(.8)","fit_diamond":"scale(.9)","top_half":"scale(.6) translate(0,-35%)","bottom_half":"scale(.6) translate(0,35%)","left_half":"scale(.6) translate(-40%,0)","right_half":"scale(.6) translate(40%,0)","square_to_diamond":"scale(0.707107) rotate(45deg)","center2tri":"translate(0,14.43%)","tri2center":"translate(0,-14.43%)","inner_triangle":"{center2tri} scale(.7) {tri2center}"} \ No newline at end of file diff --git a/css/traffico/uk.json b/css/traffico/uk.json new file mode 100755 index 000000000..8b3b5e740 --- /dev/null +++ b/css/traffico/uk.json @@ -0,0 +1 @@ +{"danger_contraflow":{"category":"danger","name":"contraflow","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"DE-arrow-up","color":"black","transform":"{center2tri} scale(.35) translate(-25%,-5%)"},{"type":"DE-arrow-up","color":"black","transform":"{center2tri} scale(.35) translate(25%,5%) rotate(180deg)"}]},"mandatory_roundabout":{"category":"mandatory","name":"roundabout","elements":[{"type":"circle-bg","color":"blue"},{"type":"roundabout","color":"white","transform":"scale(-1.25,1.25)"}]},"prohibitory_overtaking":{"category":"prohibitory","name":"no overtaking","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"car-left","color":"black"},{"type":"car-right","color":"red"}]}} \ No newline at end of file diff --git a/css/traffico/us.json b/css/traffico/us.json new file mode 100755 index 000000000..8924a94bb --- /dev/null +++ b/css/traffico/us.json @@ -0,0 +1 @@ +{"regulatory_no_entry":{"category":"regulatory","name":"no entry","elements":[{"type":"circle-bg","color":"red"},{"type":"square-angular","color":"white","transform":"scale(.92,.16)"}]},"regulatory_stop":{"category":"regulatory","name":"stop","elements":[{"type":"octagon","color":"red"},{"type":"stop","color":"white"}]},"regulatory_yield":{"category":"regulatory","name":"give way","elements":[{"type":"tri-rounded","color":"red","transform":"rotate(180deg)"},{"type":"tri-rounded","color":"white","transform":"{tri2center} scale(.55) {center2tri} rotate(180deg)"},{"type":"content-4","content":"YIELD","color":"red","transform":"translate(0,-115%) scale(.6)"}]},"warning_merge":{"category":"warning","name":"merge","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"merge","color":"black"}]},"warning_merging_traffic":{"category":"warning","name":"merging traffic","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"merge","color":"black","transform":"rotate(45deg)"}]},"warning_pedestrian_crossing":{"category":"warning","name":"pedestrian crossing","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"pedestrian","color":"black"}]},"warning_traffic_light":{"category":"warning","name":"traffic light","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"square-angular","color":"black","transform":"scale(.2,.55)"},{"type":"circle-bg","color":"green","transform":"translate(0,16.5%) scale(.14)"},{"type":"circle-bg","color":"yellow","transform":"scale(.14)"},{"type":"circle-bg","color":"red","transform":"translate(0,-16.5%) scale(.14)"}]},"warning_traffic_light_horizontal":{"category":"warning","name":"traffic light","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"square-angular","color":"black","transform":"scale(.55,.2)"},{"type":"circle-bg","color":"green","transform":"translate(16.5%,0) scale(.14)"},{"type":"circle-bg","color":"yellow","transform":"scale(.14)"},{"type":"circle-bg","color":"red","transform":"translate(-16.5%,0) scale(.14)"}]},"regulatory_no_parking":{"category":"regulatory","name":"no parking","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"parking","color":"black","transform":"{fit_border_circle}"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_road_narrows_right":{"category":"warning","name":"road narrows right","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"narrow-road-l","color":"black","transform":"{fit_diamond} scale(-1,1)"}]},"warning_road_narrows_left":{"category":"warning","name":"road narrows left","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"narrow-road-l","color":"black","transform":"{fit_diamond}"}]},"warning_road_narrows_both_sides":{"category":"warning","name":"road narrows both","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"narrow-road-both","color":"black","transform":"{fit_diamond}"}]},"regulatory_no_bicycles":{"category":"regulatory","name":"no bicycles","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"bicycle","color":"black","transform":"{fit_border_circle}"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"regulatory_no_left_turn":{"category":"regulatory","name":"no left turn","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"turn-90-l","color":"black","transform":"{fit_border_circle}"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"regulatory_no_turn_right":{"category":"regulatory","name":"no right turn","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"turn-90-l","color":"black","transform":"{fit_border_circle} scale(-1,1)"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"regulatory_no_u_turn":{"category":"regulatory","name":"no u turn","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"u-turn","color":"black","transform":"{fit_border_circle}"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_added_lane":{"category":"warning","name":"added lane","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"added-lane","color":"black"}]},"warning_cross_roads":{"category":"warning","name":"cross roads","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"cross-roads","color":"black"}]},"warning_side_road_perpendicular_right":{"category":"warning","name":"side road perpendicular right","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"side-road-p-r","color":"black"}]},"warning_side_road_perpendicular_left":{"category":"warning","name":"side road perpendicular left","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"side-road-p-l","color":"black"}]},"regulatory_no_trucks":{"category":"regulatory","name":"no trucks","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"truck","color":"black","transform":"{fit_border_circle}"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_turn_right":{"category":"warning","name":"turn right","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-90-l","color":"black","transform":"scale(-1,1)"}]},"warning_turn_left":{"category":"warning","name":"turn left","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-90-l","color":"black"}]},"warning_fire_station":{"category":"warning","name":"fire station","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"fire-station","color":"black"}]},"warning_bicycles":{"category":"warning","name":"bicycles","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"bicycle","color":"black","transform":"{fit_diamond}"}]},"warning_dead_end":{"category":"warning","name":"dead end","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"dead-end","color":"black"}]},"warning_light_rail_crossing":{"category":"warning","name":"light rail crossing","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"light-rail","color":"black"}]},"warning_horizontal_alignment_left":{"category":"warning","name":"horizontal alignment left","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"h-align-l","color":"black"}]},"warning_horizontal_alignment_right":{"category":"warning","name":"horizontal alignment right","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"h-align-l","color":"black","transform":"scale(-1,1)"}]},"warning_highway_divided":{"category":"warning","name":"highway divided","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"highway-divided","color":"black"}]},"warning_steep_hill":{"category":"warning","name":"steep hill","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"steep-hill","color":"black"}]},"warning_low_clearance":{"category":"warning","name":"low clearance","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"low-clearance","color":"black"}]},"warning_offset_roads":{"category":"warning","name":"offset roads","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"offset-roads","color":"black"}]},"warning_slippery":{"category":"warning","name":"slippery","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"slippery","color":"black"}]},"regulatory_no_left_or_u_turn":{"category":"regulatory","name":"no left or u turn","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"no-l-or-u-turn","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_winding_road_left":{"category":"warning","name":"winding road","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"winding-road-left","color":"black"}]},"warning_winding_road_right":{"category":"warning","name":"winding road","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"winding-road-left","color":"black","transform":"scale(-1,1)"}]},"warning_metric_clearance":{"category":"warning","name":"metric clearance","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"metric-clearance","color":"black"}]},"warning_intersection_circular":{"category":"warning","name":"intersection circular","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"roundabout","color":"black"}]},"warning_turn_reverse_right":{"category":"warning","name":"turn reverse right","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-reverse-left","color":"black","transform":"scale(-1,1)"}]},"warning_turn_reverse_left":{"category":"warning","name":"turn reverse left","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-reverse-left","color":"black"}]},"warning_side_road_acute_angle_right":{"category":"warning","name":"side road acute angle right","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"side-road-a-a-r","color":"black"}]},"warning_side_road_acute_angle_left":{"category":"warning","name":"side road acute angle left","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"side-road-a-a-l","color":"black"}]},"warning_t_roads":{"category":"warning","name":"t roads","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"t-roads","color":"black"}]},"regulatory_no_hitch_hiking":{"category":"regulatory","name":"no hitch hiking","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"hitch-hiking","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_pass_left_or_right":{"category":"warning","name":"pass left or right","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"pass-l-r","color":"black"}]},"warning_share_roads":{"category":"warning","name":"share roads","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"share-roads","color":"black"}]},"warning_bickcle_slippery":{"category":"warning","name":"bicycle slippery","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"bicycle-slippery","color":"black"}]},"regulatory_no_pedestrian_crossing":{"category":"regulatory","name":"no pedestrian crossing","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"pedestrian","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_workers_in_road_ahead":{"category":"warning","name":"workers in road ahead","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"roadworks","color":"black","transform":"{fit_diamond}"}]},"warning_play_ground":{"category":"warning","name":"play ground","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"play-ground","color":"black"}]},"warning_falling_rocks":{"category":"warning","name":"falling rocks","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"falling-rocks","color":"black"}]},"warning_hairpin_curve":{"category":"warning","name":"hairpin curve","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"hairpin-curve","color":"black"}]},"warning_end":{"category":"warning","name":"end","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"end","color":"black"}]},"warning_loop_270_degree":{"category":"warning","name":"loop 270 degree","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"loop-270","color":"black"}]},"warning_y_roads":{"category":"warning","name":"y roads","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"y-roads","color":"black"}]},"regulatory_no_straight_through":{"category":"regulatory","name":"no straight through","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"US-arrow-up","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_added_lane_from_entering_roadway":{"category":"warning","name":"added lane (from entering roadway)","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"added-lane","color":"black","transform":"rotate(45deg) scale(.95)"}]},"warning_flaggers_in_road_ahead":{"category":"warning","name":"flaggers in road ahead","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"flaggers","color":"black"}]},"warning_skewed_railroad_crossing":{"category":"warning","name":"skewed railroad crossing","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"skewed-railroads","color":"black"}]},"warning_trucks_rollover":{"category":"warning","name":"trucks rollover","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"trucks-rollover","color":"black"}]},"warning_lightground_railroad_crossing":{"category":"warning","name":"lightground railroad crossing","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"lightground-railroad-crossing","color":"black"}]},"regulatory_national_network_lane":{"category":"regulatory","name":"national_network_lane","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"green"},{"type":"lorry","color":"black"}]},"regulatory_national_network_prohibited":{"category":"regulatory","name":"national_network_lane","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"lorry","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_motorcycle_crossing":{"category":"warning","name":"motorcycle crossing","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"motorbike","color":"black"}]},"warning_railroad":{"category":"warning","name":"railroad","elements":[{"type":"circle-bg","color":"yellow"},{"type":"circle-bar-rounded","color":"black","transform":"rotate(-45deg)"},{"type":"circle-bar-rounded","color":"black","transform":"rotate(45deg)"},{"type":"railroad","color":"black"}]},"regulatory_hazardous_material_prohibited":{"category":"regulatory","name":"hazardous material prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"hazardous-material","color":"black","transform":"{fit_border_circle}"},{"type":"circle-o","color":"red"}]},"warning_truck_rollover_with_speed":{"category":"warning","name":"truck rollover with speed","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"truck-rollover-speed","color":"black"}]},"regulatory_no_rollerblading":{"category":"regulatory","name":"no rollerblading","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"rollerblading","color":"black","transform":"{fit_border_circle}"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"regulatory_one_way_small_left":{"category":"regulatory","name":"one way small left","elements":[{"type":"square-rounded","color":"white","transform":"scale(1.1,.33)"},{"type":"square-rounded","color":"black","transform":"scale(1.1,.33) scale(.95)"},{"type":"US-arrow-oneway","color":"white","transform":"scale(.6) scale(1.35,1) rotate(-90deg)"},{"type":"content-4","color":"black","content":"ONE","transform":"scale(.5,.6) translate(-15%,-25%)"},{"type":"content-4","color":"black","content":"WAY","transform":"scale(.5,.6) translate(45%,-25%)"}]},"regulatory_one_way_small_right":{"category":"regulatory","name":"one way small right","elements":[{"type":"square-rounded","color":"white","transform":"scale(1.1,.33)"},{"type":"square-rounded","color":"black","transform":"scale(1.1,.33) scale(.95)"},{"type":"US-arrow-oneway","color":"white","transform":"scale(.6) scale(1.35,1) rotate(90deg)"},{"type":"content-4","color":"black","content":"ONE","transform":"scale(.5,.6) translate(-45%,-25%)"},{"type":"content-4","color":"black","content":"WAY","transform":"scale(.5,.6) translate(15%,-25%)"}]},"warning_single_2_reverse_curve":{"category":"warning","name":"single 2 reverse curve","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"orange","transform":"scale(.95) {square_to_diamond}"},{"type":"single-2-reverse-curve","color":"black"}]},"warning_double_2_reverse_curve":{"category":"warning","name":"double 2 reverse curve","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"orange","transform":"scale(.95) {square_to_diamond}"},{"type":"single-2-reverse-curve","color":"black","transform":"{fit_diamond} translate(-9%)"},{"type":"single-2-reverse-curve","color":"black","transform":"{fit_diamond} translate(9%)"}]},"warning_triple_2_reverse_curve":{"category":"warning","name":"triple 2 reverse curve","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"orange","transform":"scale(.95) {square_to_diamond}"},{"type":"single-2-reverse-curve","color":"black","transform":"{fit_diamond} translate(-18%)"},{"type":"single-2-reverse-curve","color":"black","transform":"{fit_diamond}"},{"type":"single-2-reverse-curve","color":"black","transform":"{fit_diamond} translate(18%)"}]},"school_school":{"category":"school","name":"school","elements":[{"type":"school","color":"black"},{"type":"school","color":"fluogreen","transform":"scale(.95)"},{"type":"children","color":"black"}]},"school_obsolete":{"category":"school","name":"school","elements":[{"type":"school","color":"black"},{"type":"school","color":"yellow","transform":"scale(.95)"},{"type":"children","color":"black"}]},"warning_turn_left_curve":{"category":"warning","name":"turn left curve","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-l-curve","color":"black","transform":"{fit_diamond}"}]},"warning_turn_right_curve":{"category":"warning","name":"turn right curve","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-l-curve","color":"black","transform":"{fit_diamond} scale(-1,1)"}]},"warning_turn_left_curve_speed":{"category":"warning","name":"turn left curve with speed","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-l-curve","color":"black","transform":"{fit_diamond}"},{"type":"turn-curve-speed","color":"black","transform":"{fit_diamond} scale(-1,1)"}]},"warning_turn_right_curve_speed":{"category":"warning","name":"turn right curve with speed","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-l-curve","color":"black","transform":"{fit_diamond} scale(-1,1)"},{"type":"turn-curve-speed","color":"black","transform":"{fit_diamond}"}]},"warning_pretzel_loop":{"category":"warning","name":"pretzel_loop","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"pretzel-loop","color":"black","transform":"{fit_diamond}"}]}} \ No newline at end of file diff --git a/js/id/renderer/mapillary_trafficsign_layer.js b/js/id/renderer/mapillary_trafficsign_layer.js new file mode 100644 index 000000000..a6997e3da --- /dev/null +++ b/js/id/renderer/mapillary_trafficsign_layer.js @@ -0,0 +1,161 @@ +iD.MapillarySignsLayer = function (context) { + var enable = false, + currentImage, + svg, div, request; + + function show(image) { + svg.selectAll('g') + .classed('selected', function(d) { + return currentImage && d.key === currentImage.key; + }); + + div.classed('hidden', false) + .classed('temp', image !== currentImage); + + div.selectAll('img') + .attr('src', 'https://d1cuyjsrcm0gby.cloudfront.net/' + image.key + '/thumb-320.jpg'); + + div.selectAll('a') + .attr('href', 'http://mapillary.com/map/im/' + image.key); + } + + function hide() { + currentImage = undefined; + + svg.selectAll('g') + .classed('selected', false); + + div.classed('hidden', true); + } + + function transform(image) { + var t = 'translate(' + context.projection(image.loc) + ')'; + if (image.ca) t += 'rotate(' + image.ca + ',0,0)'; + return t; + } + + function render(selection) { + svg = selection.selectAll('svg') + .data([0]); + + svg.enter().append('svg') + .on('click', function() { + var image = d3.event.target.__data__; + if (currentImage === image) { + hide(); + } else { + currentImage = image; + show(image); + } + }) + .on('mouseover', function() { + show(d3.event.target.__data__); + }) + .on('mouseout', function() { + if (currentImage) { + show(currentImage); + } else { + hide(); + } + }); + + svg.style('display', enable ? 'block' : 'none'); + + div = context.container().selectAll('.mapillary-signs') + .data([0]); + + var enter = div.enter().append('div') + .attr('class', 'mapillary-signs'); + + enter.append('button') + .on('click', hide) + .append('div') + .attr('class', 'icon close'); + + enter.append('img'); + + var link = enter.append('a') + .attr('class', 'link') + .attr('target', '_blank'); + + link.append('span') + .attr('class', 'icon icon-pre-text out-link'); + + link.append('span') + .text(t('mapillary.view_on_mapillary')); + + if (!enable) { + hide(); + + svg.selectAll('g') + .remove(); + + return; + } + + // Update existing images while waiting for new ones to load. + svg.selectAll('g') + .attr('transform', transform); + + var extent = context.map().extent(); + + if (request) + request.abort(); + + request = d3.json('https://a.mapillary.com/v2/search/im/geojson/or?' + + 'or_classes[]=prohibitory_no' + + '&or_classes[]=other_no&or_package=trafficsign_eu_1.0' + + '&min_score=2&' + + 'client_id=NzNRM2otQkR2SHJzaXJmNmdQWVQ0dzoxNjQ3MDY4ZTUxY2QzNGI2&min_lat=' + + extent[0][1] + '&max_lat=' + extent[1][1] + '&min_lon=' + + extent[0][0] + '&max_lon=' + extent[1][0] + '&max_results=100&geojson=true', + function (error, data) { + if (error) return; + console.log(data); + var images = []; + + for (var i = 0; i < data.features.length; i++) { + var trafficsign = data.features[i]; + images.push({ + key: trafficsign.properties.key, + loc: trafficsign.geometry.coordinates, + signs: trafficsign.properties.rects + }); + if (images.length >= 1000) break; + } + + var g = svg.selectAll('foreignObject') + .data(images, function(d) { return d.key; }); + + var enter = g.enter(); + + var body = enter.append('foreignObject') + .attr('x', '0') + .attr('y', '0') + .attr('class', 'node') + .attr('width', '20') + .attr('height', '20') + .append('xhtml:body') + .html(''); + g.attr('transform', transform); + + g.exit() + .remove(); + console.log(images); + }); + } + + render.enable = function(_) { + if (!arguments.length) return enable; + enable = _; + return render; + }; + + render.dimensions = function(_) { + if (!arguments.length) return svg.dimensions(); + svg.dimensions(_); + return render; + }; + + return render; +}; From d970e4463c0b008a0d2e7771abdebb0c2fb51332 Mon Sep 17 00:00:00 2001 From: peterneubauer Date: Tue, 26 May 2015 17:02:54 +0200 Subject: [PATCH 03/38] making click events work --- css/map.css | 24 ++-- js/id/renderer/mapillary_trafficsign_layer.js | 108 +++++++++++------- 2 files changed, 77 insertions(+), 55 deletions(-) diff --git a/css/map.css b/css/map.css index b2d232a0d..0306fc16d 100644 --- a/css/map.css +++ b/css/map.css @@ -1552,9 +1552,8 @@ text.gpx { /* Mapillary sign Layer */ -.node { +.layer-mapillary-signs body { border: 1px solid green; - //background-color: white; } .node body { @@ -1565,30 +1564,27 @@ text.gpx { pointer-events: none; } -.layer-mapillary-signs g { +.layer-mapillary-signs body { pointer-events: visible; cursor: pointer; /* Opera */ cursor: url(img/cursor-select-mapillary.png) 6 1, pointer; /* FF */ } -.layer-mapillary-signs g * { - stroke-width: 2; - stroke: red; - fill: red; + +.layer-mapillary-signs body:hover * { + border: 1px solid red; } -.layer-mapillary-signs g:hover * { - stroke-width: 2; - stroke: red; - fill: red; -} - -.layer-mapillary-signs g.selected * { +.layer-mapillary-signs body .selected * { stroke-width: 4; stroke: red; fill: red; } +.layer-mapillary-signs .t { + position: fixed; +} + /* Modes */ .mode-draw-line .vertex.active, diff --git a/js/id/renderer/mapillary_trafficsign_layer.js b/js/id/renderer/mapillary_trafficsign_layer.js index a6997e3da..b30417de9 100644 --- a/js/id/renderer/mapillary_trafficsign_layer.js +++ b/js/id/renderer/mapillary_trafficsign_layer.js @@ -1,31 +1,33 @@ iD.MapillarySignsLayer = function (context) { var enable = false, currentImage, - svg, div, request; + svg, image_preview_div, request; function show(image) { - svg.selectAll('g') + console.log('show',image); + svg.selectAll('.node') .classed('selected', function(d) { return currentImage && d.key === currentImage.key; }); - div.classed('hidden', false) + image_preview_div.classed('hidden', false) .classed('temp', image !== currentImage); - div.selectAll('img') + image_preview_div.selectAll('img') .attr('src', 'https://d1cuyjsrcm0gby.cloudfront.net/' + image.key + '/thumb-320.jpg'); - div.selectAll('a') + image_preview_div.selectAll('a') .attr('href', 'http://mapillary.com/map/im/' + image.key); } function hide() { + currentImage = undefined; - svg.selectAll('g') + svg.selectAll('.node') .classed('selected', false); - div.classed('hidden', true); + image_preview_div.classed('hidden', true); } function transform(image) { @@ -38,34 +40,16 @@ iD.MapillarySignsLayer = function (context) { svg = selection.selectAll('svg') .data([0]); - svg.enter().append('svg') - .on('click', function() { - var image = d3.event.target.__data__; - if (currentImage === image) { - hide(); - } else { - currentImage = image; - show(image); - } - }) - .on('mouseover', function() { - show(d3.event.target.__data__); - }) - .on('mouseout', function() { - if (currentImage) { - show(currentImage); - } else { - hide(); - } - }); + svg.enter().append('svg'); + svg.style('display', enable ? 'block' : 'none'); - div = context.container().selectAll('.mapillary-signs') + image_preview_div = context.container().selectAll('.mapillary-image') .data([0]); - var enter = div.enter().append('div') - .attr('class', 'mapillary-signs'); + var enter = image_preview_div.enter().append('div') + .attr('class', 'mapillary-image'); enter.append('button') .on('click', hide) @@ -87,15 +71,19 @@ iD.MapillarySignsLayer = function (context) { if (!enable) { hide(); - svg.selectAll('g') + svg.selectAll('.node') .remove(); return; } // Update existing images while waiting for new ones to load. - svg.selectAll('g') - .attr('transform', transform); + //svg.selectAll('.node') + // .attr('transform', transform); + // + + svg.selectAll('.node') + .remove(); var extent = context.map().extent(); @@ -124,22 +112,60 @@ iD.MapillarySignsLayer = function (context) { if (images.length >= 1000) break; } - var g = svg.selectAll('foreignObject') - .data(images, function(d) { return d.key; }); + var foreignObjects = svg.selectAll('foreignObject') + .data(images, function(d) { + console.log(d); + return d.key; + }); - var enter = g.enter(); + var enter = foreignObjects.enter(); var body = enter.append('foreignObject') .attr('x', '0') .attr('y', '0') .attr('class', 'node') - .attr('width', '20') - .attr('height', '20') + .attr('width', '15') + .attr('height', '15') .append('xhtml:body') - .html(''); - g.attr('transform', transform); + .html(function(d) { + return ''; + }); + foreignObjects.on('click', function(data) { + if(!data) { + d3.event.preventDefault(); + return; + } + var image = data; + console.log(image); + if (currentImage === image) { + hide(); + } else { + currentImage = image; + show(image); + } + }) + .on('mouseover', function(data) { + if(!data) { + d3.event.preventDefault(); + return; + } + show(data); + }) + .on('mouseout', function() { + if(!data) { + d3.event.preventDefault(); + return; + } + if (currentImage) { + show(currentImage); + } else { + hide(); + } + }); - g.exit() + foreignObjects.attr('transform', transform); + + foreignObjects.exit() .remove(); console.log(images); }); From 999870c652c625a76d90c50023429863b83a97cc Mon Sep 17 00:00:00 2001 From: peterneubauer Date: Fri, 29 May 2015 13:10:15 +0200 Subject: [PATCH 04/38] intermediate commit --- css/map.css | 16 +++--- index.html | 1 + js/id/renderer/mapillary_trafficsign_layer.js | 55 ++++++++++--------- 3 files changed, 38 insertions(+), 34 deletions(-) diff --git a/css/map.css b/css/map.css index 0306fc16d..3e3458793 100644 --- a/css/map.css +++ b/css/map.css @@ -1552,12 +1552,13 @@ text.gpx { /* Mapillary sign Layer */ -.layer-mapillary-signs body { - border: 1px solid green; +.t { + font-size: 28px; + z-index: 100; } .node body { - min-width: 20px; + min-width: 30px; } .layer-mapillary-signs { @@ -1571,18 +1572,17 @@ text.gpx { } -.layer-mapillary-signs body:hover * { +.layer-mapillary-signs body:hover { border: 1px solid red; } -.layer-mapillary-signs body .selected * { +.layer-mapillary-signs .node.selected { stroke-width: 4; - stroke: red; - fill: red; + border: 1px solid yellow; } .layer-mapillary-signs .t { - position: fixed; + position: absolute; } /* Modes */ diff --git a/index.html b/index.html index c851a6ec5..622a52097 100644 --- a/index.html +++ b/index.html @@ -3,6 +3,7 @@ iD + diff --git a/js/id/renderer/mapillary_trafficsign_layer.js b/js/id/renderer/mapillary_trafficsign_layer.js index b30417de9..041f7567d 100644 --- a/js/id/renderer/mapillary_trafficsign_layer.js +++ b/js/id/renderer/mapillary_trafficsign_layer.js @@ -1,12 +1,22 @@ iD.MapillarySignsLayer = function (context) { var enable = false, currentImage, - svg, image_preview_div, request; - + svg, image_preview_div, request, eu_signs, us_signs; + request = d3.json('/europe.json', + function (error, data) { + console.error(arguments); + if (error) return; + eu_signs=data; + }); + request = d3.json('/europe.json', + function (error, data) { + console.error(arguments); + if (error) return; + us_signs=data; + }); function show(image) { - console.log('show',image); svg.selectAll('.node') - .classed('selected', function(d) { + .classed('selected', function (d) { return currentImage && d.key === currentImage.key; }); @@ -32,7 +42,6 @@ iD.MapillarySignsLayer = function (context) { function transform(image) { var t = 'translate(' + context.projection(image.loc) + ')'; - if (image.ca) t += 'rotate(' + image.ca + ',0,0)'; return t; } @@ -77,11 +86,6 @@ iD.MapillarySignsLayer = function (context) { return; } - // Update existing images while waiting for new ones to load. - //svg.selectAll('.node') - // .attr('transform', transform); - // - svg.selectAll('.node') .remove(); @@ -96,7 +100,7 @@ iD.MapillarySignsLayer = function (context) { '&min_score=2&' + 'client_id=NzNRM2otQkR2SHJzaXJmNmdQWVQ0dzoxNjQ3MDY4ZTUxY2QzNGI2&min_lat=' + extent[0][1] + '&max_lat=' + extent[1][1] + '&min_lon=' + - extent[0][0] + '&max_lon=' + extent[1][0] + '&max_results=100&geojson=true', + extent[0][0] + '&max_lon=' + extent[1][0] + '&max_results=1000&geojson=true', function (error, data) { if (error) return; console.log(data); @@ -113,8 +117,7 @@ iD.MapillarySignsLayer = function (context) { } var foreignObjects = svg.selectAll('foreignObject') - .data(images, function(d) { - console.log(d); + .data(images, function (d) { return d.key; }); @@ -123,20 +126,20 @@ iD.MapillarySignsLayer = function (context) { var body = enter.append('foreignObject') .attr('x', '0') .attr('y', '0') + .attr('width', '30px') + .attr('height', '30px') .attr('class', 'node') - .attr('width', '15') - .attr('height', '15') .append('xhtml:body') - .html(function(d) { - return ''; + .html(function (d) { + var sign_html = eu_signs[d.signs[0]['type']]; + return sign_html; }); - foreignObjects.on('click', function(data) { - if(!data) { + foreignObjects.on('click', function (data) { + if (!data) { d3.event.preventDefault(); return; } var image = data; - console.log(image); if (currentImage === image) { hide(); } else { @@ -144,15 +147,15 @@ iD.MapillarySignsLayer = function (context) { show(image); } }) - .on('mouseover', function(data) { - if(!data) { + .on('mouseover', function (data) { + if (!data) { d3.event.preventDefault(); return; } show(data); }) - .on('mouseout', function() { - if(!data) { + .on('mouseout', function (data) { + if (!data) { d3.event.preventDefault(); return; } @@ -171,13 +174,13 @@ iD.MapillarySignsLayer = function (context) { }); } - render.enable = function(_) { + render.enable = function (_) { if (!arguments.length) return enable; enable = _; return render; }; - render.dimensions = function(_) { + render.dimensions = function (_) { if (!arguments.length) return svg.dimensions(); svg.dimensions(_); return render; From da644b5a21dd3af1dad606b81dc2ece02a417d64 Mon Sep 17 00:00:00 2001 From: peterneubauer Date: Mon, 1 Jun 2015 11:33:52 +0200 Subject: [PATCH 05/38] adding traffico 0.1.5 --- css/traffico-release-0.1.5/LICENSE | 22 + css/traffico-release-0.1.5/README.md | 6 + css/traffico-release-0.1.5/at.json | 1 + css/traffico-release-0.1.5/be.json | 1 + css/traffico-release-0.1.5/bower.json | 17 + css/traffico-release-0.1.5/cz.json | 1 + css/traffico-release-0.1.5/de.json | 1 + css/traffico-release-0.1.5/dk.json | 1 + css/traffico-release-0.1.5/ee.json | 1 + css/traffico-release-0.1.5/es.json | 1 + css/traffico-release-0.1.5/europe.json | 1 + css/traffico-release-0.1.5/fi.json | 1 + .../fonts/traffico-preview.html | 1913 +++++++++++++++++ css/traffico-release-0.1.5/fonts/traffico.eot | Bin 0 -> 26178 bytes css/traffico-release-0.1.5/fonts/traffico.svg | 826 +++++++ css/traffico-release-0.1.5/fonts/traffico.ttf | Bin 0 -> 26000 bytes .../fonts/traffico.woff | Bin 0 -> 16536 bytes css/traffico-release-0.1.5/fr.json | 1 + .../global-patched.json | 1 + css/traffico-release-0.1.5/global.json | 1 + css/traffico-release-0.1.5/gr.json | 1 + css/traffico-release-0.1.5/hu.json | 1 + css/traffico-release-0.1.5/it.json | 1 + css/traffico-release-0.1.5/lt.json | 1 + css/traffico-release-0.1.5/lu.json | 1 + css/traffico-release-0.1.5/lv.json | 1 + css/traffico-release-0.1.5/nl.json | 1 + css/traffico-release-0.1.5/pl.json | 1 + css/traffico-release-0.1.5/se.json | 1 + css/traffico-release-0.1.5/si.json | 1 + css/traffico-release-0.1.5/sk.json | 1 + .../stylesheets/traffico.css | 365 ++++ .../transformations.json | 1 + css/traffico-release-0.1.5/uk.json | 1 + css/traffico-release-0.1.5/us.json | 1 + 35 files changed, 3175 insertions(+) create mode 100755 css/traffico-release-0.1.5/LICENSE create mode 100755 css/traffico-release-0.1.5/README.md create mode 100755 css/traffico-release-0.1.5/at.json create mode 100755 css/traffico-release-0.1.5/be.json create mode 100755 css/traffico-release-0.1.5/bower.json create mode 100755 css/traffico-release-0.1.5/cz.json create mode 100755 css/traffico-release-0.1.5/de.json create mode 100755 css/traffico-release-0.1.5/dk.json create mode 100755 css/traffico-release-0.1.5/ee.json create mode 100755 css/traffico-release-0.1.5/es.json create mode 100755 css/traffico-release-0.1.5/europe.json create mode 100755 css/traffico-release-0.1.5/fi.json create mode 100755 css/traffico-release-0.1.5/fonts/traffico-preview.html create mode 100755 css/traffico-release-0.1.5/fonts/traffico.eot create mode 100755 css/traffico-release-0.1.5/fonts/traffico.svg create mode 100755 css/traffico-release-0.1.5/fonts/traffico.ttf create mode 100755 css/traffico-release-0.1.5/fonts/traffico.woff create mode 100755 css/traffico-release-0.1.5/fr.json create mode 100755 css/traffico-release-0.1.5/global-patched.json create mode 100755 css/traffico-release-0.1.5/global.json create mode 100755 css/traffico-release-0.1.5/gr.json create mode 100755 css/traffico-release-0.1.5/hu.json create mode 100755 css/traffico-release-0.1.5/it.json create mode 100755 css/traffico-release-0.1.5/lt.json create mode 100755 css/traffico-release-0.1.5/lu.json create mode 100755 css/traffico-release-0.1.5/lv.json create mode 100755 css/traffico-release-0.1.5/nl.json create mode 100755 css/traffico-release-0.1.5/pl.json create mode 100755 css/traffico-release-0.1.5/se.json create mode 100755 css/traffico-release-0.1.5/si.json create mode 100755 css/traffico-release-0.1.5/sk.json create mode 100755 css/traffico-release-0.1.5/stylesheets/traffico.css create mode 100755 css/traffico-release-0.1.5/transformations.json create mode 100755 css/traffico-release-0.1.5/uk.json create mode 100755 css/traffico-release-0.1.5/us.json diff --git a/css/traffico-release-0.1.5/LICENSE b/css/traffico-release-0.1.5/LICENSE new file mode 100755 index 000000000..e32f5dc60 --- /dev/null +++ b/css/traffico-release-0.1.5/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 mapillary + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/css/traffico-release-0.1.5/README.md b/css/traffico-release-0.1.5/README.md new file mode 100755 index 000000000..9aa1239f0 --- /dev/null +++ b/css/traffico-release-0.1.5/README.md @@ -0,0 +1,6 @@ +# traffico-release +Release repository for Traffico, an Open Source Traffic Sign Font. + +Source code: [mapillary/traffico](https://github.com/mapillary/traffico) + +License: MIT diff --git a/css/traffico-release-0.1.5/at.json b/css/traffico-release-0.1.5/at.json new file mode 100755 index 000000000..c98868d2a --- /dev/null +++ b/css/traffico-release-0.1.5/at.json @@ -0,0 +1 @@ +{"information_border_at":{"category":"information","name":"European border crossing into Austria","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"ÖSTERREICH","transform":"scale(.75)"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/be.json b/css/traffico-release-0.1.5/be.json new file mode 100755 index 000000000..c1dc1db9a --- /dev/null +++ b/css/traffico-release-0.1.5/be.json @@ -0,0 +1 @@ +{"information_border_be_nl":{"category":"information","name":"European border crossing into Belgium from the Netherlands","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"België"}]},"information_border_be_fr":{"category":"information","name":"European border crossing into Belgium from France","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Belgique"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/bower.json b/css/traffico-release-0.1.5/bower.json new file mode 100755 index 000000000..93ccac3ea --- /dev/null +++ b/css/traffico-release-0.1.5/bower.json @@ -0,0 +1,17 @@ +{ + "name": "Traffico", + "version": "0.1.5", + "homepage": "https://github.com/mapillary/traffico", + "authors": [ + "Kamil Nikel " + ], + "description": "An Open Source Traffic Sign Font", + "main": "stylesheets/traffico.css", + "keywords": [ + "traffic", + "signs", + "road", + "font" + ], + "license": "MIT" +} diff --git a/css/traffico-release-0.1.5/cz.json b/css/traffico-release-0.1.5/cz.json new file mode 100755 index 000000000..2b5875bd0 --- /dev/null +++ b/css/traffico-release-0.1.5/cz.json @@ -0,0 +1 @@ +{"information_border_cz":{"category":"information","name":"European border crossing into Czech Republic","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"České","transform":"translate(0,-50%)"},{"type":"content-5","color":"white","content":"republika","transform":"translate(0,50%)"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/de.json b/css/traffico-release-0.1.5/de.json new file mode 100755 index 000000000..0869b3dad --- /dev/null +++ b/css/traffico-release-0.1.5/de.json @@ -0,0 +1 @@ +{"danger_level_crossing":{"category":"danger","name":"level crossing","elements":[{"type":"square-angular","color":"black","transform":"rotate(30deg) scale(.15,1)"},{"type":"square-angular","color":"black","transform":"rotate(-30deg) scale(.15,1)"},{"type":"square-angular","color":"red","transform":"rotate(30deg) scale(.14,.99)"},{"type":"square-angular","color":"red","transform":"rotate(-30deg) scale(.14,.99)"},{"type":"square-angular","color":"white","transform":"rotate(30deg) scale(.14,.6)"},{"type":"square-angular","color":"white","transform":"rotate(-30deg) scale(.14,.6)"}]},"danger_railway_crossing_unsecured":{"category":"danger","name":"unsecured railway crossing","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"train-electric","color":"black","transform":"scale(.4) translate(10%,40%)"}]},"information_bus_stop":{"category":"information","name":"bus stop (also used for tram)","elements":[{"type":"circle-bg","color":"yellow"},{"type":"circle-o","color":"green"},{"type":"h","color":"green","transform":"{fit_border_circle}"}]},"information_border_de":{"category":"information","name":"European border crossing into Germany","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Bundes-","transform":"scale(.9) translate(0,-130%)"},{"type":"content-5","color":"white","content":"republik","transform":"scale(.9) translate(0,-30%)"},{"type":"content-5","color":"white","content":"Deutschland","transform":"scale(.9) translate(0,70%)"}]},"priority_priority_road_end":{"category":"priority","name":"end of priority road","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"white","transform":"{square_to_diamond} scale(.98)"},{"type":"square-rounded","color":"yellow","transform":"scale(.6) {square_to_diamond}"},{"type":"square-angular","color":"black","transform":"{square_to_diamond} scale(.05,1)"},{"type":"square-angular","color":"black","transform":"{square_to_diamond} scale(.05,1) translate(150%,0)"},{"type":"square-angular","color":"black","transform":"{square_to_diamond} scale(.05,1) translate(-150%,0)"}]},"prohibitory_end_of_limits":{"category":"prohibitory","name":"end of all speed and passing limits","elements":[{"type":"circle-bg","color":"black"},{"type":"circle-bg","color":"white","transform":"scale(.95)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.025,.99)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.025,.98) translate(150%,0)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.025,.97) translate(300%,0)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.025,.98) translate(-150%,0)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.025,.97) translate(-300%,0)"}]},"prohibitory_low_emission_zone":{"category":"prohibitory","name":"low-emission zone","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95)"},{"type":"circle-bg","color":"red","transform":"translate(0,-8%) scale(.7)"},{"type":"circle-bg","color":"white","transform":"translate(0,-8%) scale(.7) {fit_border_circle}"},{"type":"content-4","content":"Umwelt","color":"black","transform":"translate(0,-50%) scale(.8) {fit_border_circle}"},{"type":"content-4","content":"ZONE","color":"black","transform":"translate(0,150%) scale(.8)"}]},"prohibitory_low_emission_zone_end":{"category":"prohibitory","name":"end of low-emission zone","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95)"},{"type":"circle-bg","color":"grey","transform":"translate(0,-8%) scale(.7)"},{"type":"circle-bg","color":"white","transform":"translate(0,-8%) scale(.7) {fit_border_circle}"},{"type":"content-4","content":"Umwelt","color":"grey","transform":"translate(0,-50%) scale(.8) {fit_border_circle}"},{"type":"content-4","content":"ZONE","color":"grey","transform":"translate(0,150%) scale(.8)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.02,1.35)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.02,1.3) translate(-150%, 0)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.02,1.3) translate(150%, 0)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.02,1.25) translate(-300%, 0)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.02,1.25) translate(300%, 0)"}]},"supplementary_destination":{"category":"supplementary","name":"destination traffic excluded","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"content-4","color":"black","content":"Anlieger","transform":"translate(0,-45%) scale(.8)"},{"type":"content-4","color":"black","content":"frei","transform":"translate(0,45%) scale(.8)"}]},"supplementary_disabled":{"category":"supplementary","name":"for disabled people","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"disabled-p","color":"black","transform":"scale(.6)"}]},"supplementary_glaze":{"category":"supplementary","name":"for disabled people","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"snowflake","color":"black","transform":"scale(.8)"}]},"supplementary_left_pointing":{"category":"supplementary","name":"left pointing","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"DE-arrow-up","color":"black","transform":"scale(.6) rotate(-90deg)"}]},"supplementary_both_directions":{"category":"supplementary","name":"both directions","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"DE-arrow-up","color":"black","transform":"translate(-15%,0) scale(.5) rotate(180deg)"},{"type":"DE-arrow-up","color":"black","transform":"translate(15%,0) scale(.5)"}]},"supplementary_pedestrians_use_opposite_sidewalk":{"category":"supplementary","name":"pedestrians should use opposite sidewalk","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"DE-arrow-up","color":"black","transform":"translate(-20%,0) scale(.5) rotate(-90deg)"},{"type":"pedestrians","color":"black","transform":"translate(25%,0) scale(.6)"}]},"supplementary_pedestrians_use_opposite_sidewalk2":{"category":"supplementary","name":"pedestrians should use opposite sidewalk","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"DE-arrow-up","color":"black","transform":"translate(20%,0) scale(.5) rotate(90deg)"},{"type":"pedestrians","color":"black","transform":"translate(-25%,0) scale(.6)"}]},"supplementary_railway_only":{"category":"supplementary","name":"railway only","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"train-electric","color":"black","transform":"scale(.45)"}]},"supplementary_right_pointing":{"category":"supplementary","name":"right pointing","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"DE-arrow-up","color":"black","transform":"scale(.6) rotate(90deg)"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/dk.json b/css/traffico-release-0.1.5/dk.json new file mode 100755 index 000000000..9350d5bb0 --- /dev/null +++ b/css/traffico-release-0.1.5/dk.json @@ -0,0 +1 @@ +{"danger_level_crossing":{"category":"danger","name":"level crossing","elements":[{"type":"square-angular","color":"red","transform":"rotate(60deg) scale(.2,1)"},{"type":"square-angular","color":"red","transform":"rotate(-60deg) scale(.2,1)"},{"type":"square-angular","color":"white","transform":"rotate(60deg) scale(.1,.5) translate(50%,50%)"},{"type":"square-angular","color":"white","transform":"rotate(-60deg) scale(.1,.5) translate(-50%,50%)"},{"type":"square-angular","color":"white","transform":"rotate(60deg) scale(.1,.5) translate(-50%,-50%)"},{"type":"square-angular","color":"white","transform":"rotate(-60deg) scale(.1,.5) translate(50%,-50%)"}]},"information_border_dk":{"category":"information","name":"European border crossing into Denmark","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Danmark"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/ee.json b/css/traffico-release-0.1.5/ee.json new file mode 100755 index 000000000..cd83633da --- /dev/null +++ b/css/traffico-release-0.1.5/ee.json @@ -0,0 +1 @@ +{"information_border_ee":{"category":"information","name":"European border crossing into Estonia","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"EESTI"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/es.json b/css/traffico-release-0.1.5/es.json new file mode 100755 index 000000000..3edf42fd6 --- /dev/null +++ b/css/traffico-release-0.1.5/es.json @@ -0,0 +1 @@ +{"information_border_es":{"category":"information","name":"European border crossing into Spain","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"ESPAÑA"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/europe.json b/css/traffico-release-0.1.5/europe.json new file mode 100755 index 000000000..85e689ce9 --- /dev/null +++ b/css/traffico-release-0.1.5/europe.json @@ -0,0 +1 @@ +{"danger_ascent":{"category":"danger","name":"steep ascent","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"descent","color":"black","transform":"{inner_triangle} scale(-1,1)"},{"type":"incline_value","content":"10%","color":"black","transform":"translate(0,-25%) {center2tri} scale(.4) rotate(-30deg)"}]},"danger_bend_first_left":{"category":"danger","name":"bend first left","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"d-curve-l","color":"black","transform":"{center2tri} scale(.6)"}]},"danger_bend_first_right":{"category":"danger","name":"bend first right","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"d-curve-l","color":"black","transform":"{center2tri} scale(-.6,.6)"}]},"danger_bend_left":{"category":"danger","name":"bend left","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"turn-l","color":"black","transform":"{center2tri} scale(.6)"}]},"danger_bend_right":{"category":"danger","name":"bend right","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"turn-l","color":"black","transform":"{center2tri} scale(-.6,.6)"}]},"danger_construction":{"category":"danger","name":"construction/road works","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"roadworks","color":"black","transform":"scale(.7) translate(0,20%)"}]},"danger_contraflow":{"category":"danger","name":"contraflow","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"DE-arrow-up","color":"black","transform":"{center2tri} scale(.35) translate(-25%,5%) rotate(180deg)"},{"type":"DE-arrow-up","color":"black","transform":"{center2tri} scale(.35) translate(25%,-5%)"}]},"danger_crossroad":{"category":"danger","name":"crossroad with priority to the right ahead","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"square-angular","color":"black","transform":"{center2tri} rotate(45deg) scale(.06,.32)"},{"type":"square-angular","color":"black","transform":"{center2tri} rotate(-45deg) scale(.06,.32)"}]},"danger_cycle_crossing":{"category":"danger","name":"cycle crossing","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"bicycle","color":"black","transform":"scale(.65) translate(0,25%)"}]},"danger_danger":{"category":"danger","name":"danger","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"exclamation","color":"black","transform":"scale(.65) {center2tri}"}]},"danger_danger_tmp":{"category":"danger","name":"danger (temporary)","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"yellow","transform":"{inner_triangle}"},{"type":"exclamation","color":"black","transform":"scale(.65) {center2tri}"}]},"danger_descent":{"category":"danger","name":"steep descent","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"descent","color":"black","transform":"{inner_triangle}"},{"type":"incline_value","content":"10%","color":"black","transform":"translate(0,-25%) {center2tri} scale(.4) rotate(30deg)"}]},"danger_domestic_animals":{"category":"danger","name":"domestic animals","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"domestic-animal","color":"black","transform":"{center2tri} translate(-6%,4%) scale(.25)"}]},"danger_level_crossing":{"category":"danger","name":"level crossing","elements":[{"type":"level-crossing","color":"red"},{"type":"level-crossing","color":"red","transform":"scale(-1,1)"},{"type":"square-angular","color":"white","transform":"rotate(60deg) scale(.05,1)"},{"type":"square-angular","color":"white","transform":"rotate(-60deg) scale(.05,1)"}]},"danger_pedestrians":{"category":"danger","name":"pedestrians","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"pedestrian","color":"black","transform":"scale(.7) {center2tri}"}]},"danger_pedestrian_crossing":{"category":"danger","name":"pedestrian crossing","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"pedestrian-crossing","color":"black","transform":"translate(0,2%)"}]},"danger_quayside_or_ferry_berth":{"category":"danger","name":"quayside or ferry berth","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"cliff","color":"black","transform":"{inner_triangle}"}]},"danger_railway_crossing_secured":{"category":"danger","name":"secured railway crossing","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"railway-xing-secured","color":"black","transform":"{center2tri} translate(0,4%) scale(.35)"}]},"danger_railway_crossing_unsecured":{"category":"danger","name":"unsecured railway crossing","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"railway-xing-unsecured","color":"black","transform":"translate(0,13%) scale(.4)"}]},"danger_road_narrows":{"category":"danger","name":"road narrows","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"narrow-road-both","color":"black","transform":"{center2tri} scale(.6)"}]},"danger_road_narrows_left":{"category":"danger","name":"road narrows left","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"narrow-road-l","color":"black","transform":"{center2tri} scale(.6)"}]},"danger_road_narrows_right":{"category":"danger","name":"road narrows right","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"narrow-road-l","color":"black","transform":"{center2tri} scale(-.6,.6)"}]},"danger_roundabout":{"category":"danger","name":"roundabout","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"roundabout","color":"black","transform":"{center2tri} scale(.55)"}]},"danger_school_crossing":{"category":"danger","name":"school crossing","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"children","color":"black","transform":"{center2tri} scale(.75)"}]},"danger_slippery_road":{"category":"danger","name":"slippery road","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"slippery-road","color":"black","transform":"{center2tri} scale(.75)"}]},"danger_snow":{"category":"danger","name":"danger snow","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"snowflake","color":"black","transform":"{center2tri} scale(.7)"}]},"danger_traffic_signal":{"category":"danger","name":"traffic signal","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"circle-bg","color":"red","transform":"{center2tri} translate(0,-20%) scale(.13)"},{"type":"circle-bg","color":"yellow","transform":"{center2tri} translate(0,-5%) scale(.13)"},{"type":"circle-bg","color":"green","transform":"{center2tri} translate(0,10%) scale(.13)"}]},"danger_uneven_road":{"category":"danger","name":"uneven road","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"bumps","color":"black","transform":"{center2tri} scale(.45)"}]},"danger_hump":{"category":"danger","name":"(speed) hump","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"bump","color":"black","transform":"{center2tri} scale(.45)"}]},"danger_wild_animals":{"category":"danger","name":"wild animals crossing","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"wild-animal","color":"black","transform":"{center2tri} scale(.7)"}]},"danger_low_flying_aircraft":{"category":"danger","name":"low flying aircraft","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"airplane","color":"black","transform":"{center2tri} scale(.4)"}]},"danger_strong_sidewind":{"category":"danger","name":"strong sidewind","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"windbag","color":"black","transform":"{center2tri} scale(.3)"}]},"information_bus_stop":{"category":"information","name":"bus stop","elements":[{"type":"square-rounded","color":"blue"},{"type":"square-rounded","color":"white","transform":"scale(.7)"},{"type":"bus","color":"black","transform":"scale(.7)"}]},"information_deadend":{"category":"information","name":"deadend","elements":[{"type":"square-rounded","color":"blue"},{"type":"square-angular","color":"white","transform":"translate(0,20%) scale(.15,.6)"},{"type":"square-angular","color":"red","transform":"translate(0,-15%) scale(.5,.15)"}]},"information_disabled_parking":{"category":"information","name":"disabled parking","elements":[{"type":"square-rounded","color":"blue"},{"type":"disabled-p","color":"white"}]},"information_first_aid":{"category":"information","name":"first aid","elements":[{"type":"square-rounded","color":"blue"},{"type":"square-rounded","color":"white","transform":"scale(.7)"},{"type":"square-angular","color":"red","transform":"scale(.15,.5)"},{"type":"square-angular","color":"red","transform":"scale(.5,.15)"}]},"information_limited_access_road":{"category":"information","name":"limited-access road","elements":[{"type":"square-rounded","color":"blue"},{"type":"car","color":"white","transform":"scale(1.5)"}]},"information_parking":{"category":"information","name":"parking","elements":[{"type":"square-rounded","color":"blue"},{"type":"parking","color":"white"}]},"information_parking_left":{"category":"information","name":"parking (left of this sign)","elements":[{"type":"square-rounded","color":"blue"},{"type":"parking","color":"white"},{"type":"DE-arrow-up","color":"white","transform":"translate(25%,30%) rotate(-90deg) scale(.33)"}]},"information_parking_right":{"category":"information","name":"parking (right of this sign)","elements":[{"type":"square-rounded","color":"blue"},{"type":"parking","color":"white"},{"type":"DE-arrow-up","color":"white","transform":"translate(25%,30%) rotate(90deg) scale(.33)"}]},"information_pedestrian_crossing":{"category":"information","name":"pedestrian crossing","elements":[{"type":"square-rounded","color":"blue"},{"type":"tri-angular","color":"white","transform":"scale(.8)"},{"type":"pedestrian-crossing","color":"black"}]},"mandatory_bicycle_pedestrian_dual_track":{"category":"mandatory","name":"bicycle/pedestrian dual track","elements":[{"type":"circle-bg","color":"blue"},{"type":"bicycle","color":"white","transform":"{right_half}"},{"type":"footpath","color":"white","transform":"{left_half}"},{"type":"circle-separator","color":"white"}]},"mandatory_cycle_track":{"category":"mandatory","name":"cycle track","elements":[{"type":"circle-bg","color":"blue"},{"type":"bicycle","color":"white"}]},"mandatory_equestrian_track":{"category":"mandatory","name":"equestrian track","elements":[{"type":"circle-bg","color":"blue"},{"type":"equestrian","color":"white","transform":"scale(.7)"}]},"mandatory_footpath":{"category":"mandatory","name":"footpath","elements":[{"type":"circle-bg","color":"blue"},{"type":"footpath","color":"white"}]},"mandatory_go_left":{"category":"mandatory","name":"go left","elements":[{"type":"circle-bg","color":"blue"},{"type":"DE-arrow-up","color":"white","transform":"rotate(-90deg)"}]},"mandatory_go_left_or_right":{"category":"mandatory","name":"go left or right","elements":[{"type":"circle-bg","color":"blue"},{"type":"DE-arrow-up","color":"white","transform":"translate(0,-15%) rotate(135deg) scale(.6) translate(0,-32%)"},{"type":"DE-arrow-up","color":"white","transform":"translate(0,-15%) rotate(-135deg) scale(.6) translate(0,-32%)"}]},"mandatory_go_right":{"category":"mandatory","name":"go right","elements":[{"type":"circle-bg","color":"blue"},{"type":"DE-arrow-up","color":"white","transform":"rotate(90deg)"}]},"mandatory_go_straight":{"category":"mandatory","name":"go straight","elements":[{"type":"circle-bg","color":"blue"},{"type":"DE-arrow-up","color":"white"}]},"mandatory_keep_left":{"category":"mandatory","name":"keep left","elements":[{"type":"circle-bg","color":"blue"},{"type":"DE-arrow-up","color":"white","transform":"rotate(-135deg)"}]},"mandatory_keep_right":{"category":"mandatory","name":"keep right","elements":[{"type":"circle-bg","color":"blue"},{"type":"DE-arrow-up","color":"white","transform":"rotate(135deg)"}]},"mandatory_minimum_speed":{"category":"mandatory","name":"minimum speed","elements":[{"type":"circle-bg","color":"blue"},{"type":"speed_value","color":"white"}]},"mandatory_minimum_speed_end":{"category":"mandatory","name":"end of minimum speed limit","elements":[{"type":"circle-bg","color":"blue"},{"type":"speed_value","color":"white"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(45deg)"}]},"mandatory_pedestrian_bicycle_dual_track":{"category":"mandatory","name":"pedestrian/bicycle dual track","elements":[{"type":"circle-bg","color":"blue"},{"type":"bicycle","color":"white","transform":"{left_half}"},{"type":"footpath","color":"white","transform":"{right_half}"},{"type":"circle-separator","color":"white"}]},"mandatory_pedestrian_cycle_track":{"category":"mandatory","name":"pedestrian cycle track","elements":[{"type":"circle-bg","color":"blue"},{"type":"footpath","color":"white","transform":"{top_half}"},{"type":"bicycle","color":"white","transform":"{bottom_half}"},{"type":"circle-separator","color":"white","transform":"rotate(90deg)"}]},"mandatory_roundabout":{"category":"mandatory","name":"roundabout","elements":[{"type":"circle-bg","color":"blue"},{"type":"roundabout","color":"white","transform":"scale(1.25)"}]},"mandatory_turn_left":{"category":"mandatory","name":"turn left","elements":[{"type":"circle-bg","color":"blue"},{"type":"arrow-l","color":"white"}]},"mandatory_turn_left_or_straight":{"category":"mandatory","name":"turn left or straight","elements":[{"type":"circle-bg","color":"blue"},{"type":"arrow-s-l","color":"white"}]},"mandatory_turn_right":{"category":"mandatory","name":"turn right","elements":[{"type":"circle-bg","color":"blue"},{"type":"arrow-l","color":"white","transform":"scale(-1,1)"}]},"mandatory_turn_right_or_straight":{"category":"mandatory","name":"turn right or straight","elements":[{"type":"circle-bg","color":"blue"},{"type":"arrow-s-l","color":"white","transform":"scale(-1,1)"}]},"other_no_entry":{"category":"other","name":"no entry, one way street","elements":[{"type":"circle-bg","color":"red"},{"type":"square-angular","color":"white","transform":"scale(.92,.16)"}]},"other_entry":{"category":"other","name":"entry, one way street","elements":[{"type":"square-rounded","color":"blue"},{"type":"arrow-oneway","color":"white","transform":"scale(.75)"}]},"priority_give_way":{"category":"priority","name":"give way","elements":[{"type":"tri-rounded","color":"red","transform":"rotate(180deg)"},{"type":"tri-angular","color":"white","transform":"{tri2center} scale(.7) {center2tri} rotate(180deg)"}]},"priority_narrow":{"category":"priority","name":"priority at narrow location","elements":[{"type":"square-rounded","color":"blue"},{"type":"DE-arrow-up","color":"red","transform":"scale(.8) translate(-25%,5%) rotate(180deg)"},{"type":"DE-arrow-up","color":"white","transform":"scale(.8) translate(25%,-5%)"}]},"priority_narrow2":{"category":"priority","name":"no priority at narrow location","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"DE-arrow-up","color":"black","transform":"{fit_border_circle} scale(.7) translate(-25%,5%) rotate(180deg)"},{"type":"DE-arrow-up","color":"red","transform":"{fit_border_circle} scale(.7) translate(25%,-5%)"}]},"priority_next_intersection":{"category":"priority","name":"priority at next intersection","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"right-of-way","color":"black","transform":"scale(.7) {center2tri}"}]},"priority_next_intersection_left":{"category":"priority","name":"priority at next intersection on the left","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"right-of-way-l fit","color":"black","transform":"scale(.7) {center2tri}"}]},"priority_next_intersection_right":{"category":"priority","name":"priority at next intersection on the right","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"right-of-way-l fit","color":"black","transform":"scale(.7) {center2tri} scale(-1,1)"}]},"priority_priority_road":{"category":"priority","name":"priority_road","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"white","transform":"scale(.98) {square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.6) {square_to_diamond}"}]},"priority_priority_road_end":{"category":"priority","name":"end of priority road","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"white","transform":"scale(.98) {square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.6) {square_to_diamond}"},{"type":"square-angular","color":"black","transform":"{square_to_diamond} scale(.2,1)"}]},"priority_stop":{"category":"priority","name":"stop","elements":[{"type":"octagon","color":"red"},{"type":"stop","color":"white"}]},"prohibitory_pedestrians":{"category":"prohibitory","name":"pedestrians prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"pedestrian","color":"black","transform":"{fit_border_circle}"}]},"prohibitory_pedestrians_and_bicycles":{"category":"prohibitory","name":"pedestrians and bicycles prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"footpath","color":"black","transform":"{fit_border_circle} {top_half}"},{"type":"bicycle","color":"black","transform":"{fit_border_circle} {bottom_half}"}]},"prohibitory_bicycles":{"category":"prohibitory","name":"cycling prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"bicycle","color":"black","transform":"{fit_border_circle}"}]},"prohibitory_mopeds_and_bicycles":{"category":"prohibitory","name":"mopeds and bicycles prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"moped","color":"black","transform":"{fit_border_circle} {top_half} scale(.7)"},{"type":"bicycle","color":"black","transform":"{fit_border_circle} {bottom_half}"}]},"prohibitory_moped":{"category":"prohibitory","name":"mopeds prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"moped","color":"black","transform":"{fit_border_circle} scale(.7)"}]},"prohibitory_motorcycles":{"category":"prohibitory","name":"motorcycles prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"motorbike","color":"black","transform":"{fit_border_circle}"}]},"prohibitory_motor_vehicles":{"category":"prohibitory","name":"motor vehicles prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"motorbike","color":"black","transform":"{fit_border_circle} {top_half}"},{"type":"car","color":"black","transform":"{fit_border_circle} {bottom_half}"},{"type":"circle-separator","color":"black","transform":"rotate(90deg) {fit_border_circle}"}]},"prohibitory_slow_vehicles":{"category":"prohibitory","name":"slow motorized vehicles prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"tractor","color":"black","transform":"{fit_border_circle} scale(.7)"}]},"prohibitory_trailers":{"category":"prohibitory","name":"no trailers allowed","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"trailer","color":"black","transform":"{fit_border_circle} scale(.8)"}]},"prohibitory_buses":{"category":"prohibitory","name":"no buses","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"bus","color":"black","transform":"{fit_border_circle}"}]},"prohibitory_trucks":{"category":"prohibitory","name":"no trucks","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"truck","color":"black"}]},"prohibitory_trucks_bar":{"category":"prohibitory","name":"no trucks","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"truck","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(45deg)"}]},"prohibitory_trucks_and_buses":{"category":"prohibitory","name":"buses and trucks prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"truck","color":"black","transform":"{fit_border_circle} {top_half}"},{"type":"bus","color":"black","transform":"{fit_border_circle} {bottom_half}"},{"type":"circle-separator","color":"black","transform":"rotate(90deg) {fit_border_circle}"}]},"prohibitory_no_parking":{"category":"prohibitory","name":"no_parking","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"prohibitory_no_parking_or_stopping":{"category":"prohibitory","name":"no parking or stopping","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(45deg)"}]},"prohibitory_no_parking_or_stopping_left":{"category":"prohibitory","name":"no parking or stopping","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(45deg)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(-90deg) scale(.3) translate(95%)"}]},"prohibitory_no_parking_or_stopping_left_and_right":{"category":"prohibitory","name":"no parking or stopping","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(45deg)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(-90deg) scale(.3) translate(95%)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(90deg) scale(.3) translate(95%)"}]},"prohibitory_no_parking_or_stopping_right":{"category":"prohibitory","name":"no parking or stopping","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(45deg)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(90deg) scale(.3) translate(95%)"}]},"prohibitory_no_parking_left":{"category":"prohibitory","name":"no_parking","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(90deg) scale(.3) translate(95%)"}]},"prohibitory_no_parking_left_and_right":{"category":"prohibitory","name":"no_parking","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(90deg) scale(.3) translate(95%)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(-90deg) scale(.3) translate(95%)"}]},"prohibitory_no_parking_right":{"category":"prohibitory","name":"no_parking","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(-90deg) scale(.3) translate(95%)"}]},"prohibitory_no_traffic_both_ways":{"category":"prohibitory","name":"no traffic both ways","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"}]},"prohibitory_no_turn_left":{"category":"prohibitory","name":"no turn left","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"turn-l","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(45deg)"}]},"prohibitory_no_turn_right":{"category":"prohibitory","name":"no turn right","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"turn-l","color":"black","transform":"scale(-1,1)"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"prohibitory_no_u_turn":{"category":"prohibitory","name":"no u-turn","elements":[{"type":"circle-bg","color":"red"},{"type":"circle-bg","color":"white","transform":"{fit_border_circle}"},{"type":"turnaround","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-55deg)"},{"type":"turnaround2","color":"black"}]},"prohibitory_overtaking":{"category":"prohibitory","name":"no overtaking","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"car-left","color":"red"},{"type":"car-right","color":"black"}]},"prohibitory_overtaking_trucks":{"category":"prohibitory","name":"no overtaking trucks","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"lorry-left","color":"red"},{"type":"car-right","color":"black"}]},"prohibitory_speed_limit":{"category":"prohibitory","name":"speed limit","elements":[{"type":"circle-bg","color":"red"},{"type":"circle-bg","color":"white","transform":"{fit_border_circle}"},{"type":"speed_value","color":"black"}]},"prohibitory_speed_limit_zone":{"category":"prohibitory","name":"speed limit","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95)"},{"type":"circle-bg","color":"red","transform":"translate(0,-10%) scale(.65)"},{"type":"circle-bg","color":"white","transform":"translate(0,-10%) scale(.65) {fit_border_circle}"},{"type":"speed_zone_value","color":"black","transform":"translate(0,-30%) scale(.7)"},{"type":"content-4","content":"ZONE","color":"black","transform":"translate(0,150%) scale(.8)"}]},"prohibitory_vehicle_height_limit":{"category":"prohibitory","name":"vehicle_height_limit","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"height","color":"black"},{"type":"height_value","color":"black"}]},"prohibitory_vehicle_weight_limit":{"category":"prohibitory","name":"vehicle weight limit","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"weight_value","color":"black"}]},"prohibitory_vehicle_width_limit":{"category":"prohibitory","name":"vehicle_width_limit","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"height","color":"black","transform":"rotate(90deg)"},{"type":"width_value","color":"black"}]},"prohibitory_vehicles_with_dangerous_goods":{"category":"prohibitory","name":"no vehicles with dangerous goods","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"square-rounded","color":"orange","transform":"scale(.25) translate(0,-25%)"},{"type":"lorry","color":"black"}]},"supplementary_priority_road_bends_left_3way_1":{"category":"supplementary","name":"priority road bends to the left at a 3-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,-30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(-.85,.85)"}]},"supplementary_priority_road_bends_left_3way_2":{"category":"supplementary","name":"priority road bends to the left at a 3-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"rotate(-90deg) translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(-.85,.85)"}]},"supplementary_priority_road_bends_left_4way":{"category":"supplementary","name":"priority road bends to the left at a 4-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,-30%) scale(.1,.25)"},{"type":"square-angular","color":"black","transform":"rotate(-90deg) translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(-.85,.85)"}]},"supplementary_priority_road_bends_right_3way_1":{"category":"supplementary","name":"priority road bends to the right at a 3-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,-30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(.85)"}]},"supplementary_priority_road_bends_right_3way_2":{"category":"supplementary","name":"priority road bends to the right at a 3-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"rotate(90deg) translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(.85)"}]},"supplementary_priority_road_bends_right_4way":{"category":"supplementary","name":"priority road bends to the right at a 4-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,-30%) scale(.1,.25)"},{"type":"square-angular","color":"black","transform":"rotate(90deg) translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(.85)"}]},"supplementary_priority_road_from_left_3way":{"category":"supplementary","name":"priority road comes from the left and continues straight at a 3-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(-.85,-.85)"}]},"supplementary_priority_road_from_left_4way":{"category":"supplementary","name":"priority road comes from the left and continues straight at a 4-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,30%) scale(.1,.25)"},{"type":"square-angular","color":"black","transform":"rotate(-90deg) translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(-.85,-.85)"}]},"supplementary_priority_road_from_right_3way":{"category":"supplementary","name":"priority road comes from the right and continues straight at a 3-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(.85,-.85)"}]},"supplementary_priority_road_from_right_4way":{"category":"supplementary","name":"priority road comes from the right and continues straight at a 4-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,30%) scale(.1,.25)"},{"type":"square-angular","color":"black","transform":"rotate(90deg) translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(.85,-.85)"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/fi.json b/css/traffico-release-0.1.5/fi.json new file mode 100755 index 000000000..1b969d3bb --- /dev/null +++ b/css/traffico-release-0.1.5/fi.json @@ -0,0 +1 @@ +{"information_border_fi":{"category":"information","name":"European border crossing into Finland","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"SUOMI","transform":"translate(0,-100%)"},{"type":"content-5","color":"white","content":"FINLAND","transform":"translate(0,0)"},{"type":"content-5","color":"white","content":"SUOPMA","transform":"translate(0,100%)"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/fonts/traffico-preview.html b/css/traffico-release-0.1.5/fonts/traffico-preview.html new file mode 100755 index 000000000..347174760 --- /dev/null +++ b/css/traffico-release-0.1.5/fonts/traffico-preview.html @@ -0,0 +1,1913 @@ + + + + traffico glyphs preview + + + + + + + + + +
+
+

traffico contains 114 glyphs:

+ Toggle Preview Characters +
+ + +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ + + +
+ + diff --git a/css/traffico-release-0.1.5/fonts/traffico.eot b/css/traffico-release-0.1.5/fonts/traffico.eot new file mode 100755 index 0000000000000000000000000000000000000000..6424728d53385555c85ceb5c50f4ac93346dd140 GIT binary patch literal 26178 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 c^N zYEy%($uEDTrMgbO})XPPUa*;1xxFm54aXnC{=tX8vz>#3Wi>6GgAC)MXj z*i4B(+oQc-{T4yd5`8wrYc2kS)MbGii*TDd1U-t2v@{~CHNT>)e=WnFW;S$*g>>y8 z&NxiFGBX)zJ`5Pu{r<<^f4dEa&*`S0i7U)Y*|9};qWgxk{b^lwo?~ad_4BUW}LH12V+0O zhAkUzrkWikg^e;B$@Uj^;S!{=CX0VAsgJQ;DlYK`+1vZ@)4k z;1OpY0hwX8&eR5fu~GF3rLK`@s$On3YE)~HzF@ffRVi)+_B>SF^Bd8$Z=apinVzlc zQMO35WYb+;%32}N&2bA+(e$#6KIM>5xwvBGOL7U;WUT91rh!gdM1C2oW-T8bO6DRx zOE8?#G|Z`)o@HmUL=%JA-hf^HX6$k-<)TCsL$bmn*N4e7`}ZGI=j`8qjyk9&wziI_ z*2DX^-qeyg>yLBJg`5M4Cg({0LGo++S(tT6-fxXEQof0;v0MEDbHehBmMvzMYQqGJ zy9tBkq_7L`3Nm@LEhHG0bj-8?r$vb5K!O{wK#UPwveayP6f%wIYJW5x^Tn5$-aqt`|g>ua}!lta+utm&}@DR=g zA@-5!OGX+OVKO^nMLmstE`w~25+#AheM}OJ$*umdK0n+rfH3giLLSWH+j#z)PN+$? zm@?sD$~GZ@&V12VOn7sE4@`?QOIRMXBMcM2E%oLgk5S{m3xu``JwG}KuN4Q0&ODTY z&iD6pG>~4->jZh41W4+mFCyD9pECAmFLJN-r{H-Iy#ss8I@oi|*5K~Ex+D@IFaB|p zxB%2#xcw~*+Yt86!KO?XyM{KT9o#TqLJAR1iLo{Q+WP&$keOeBDv1x?36!7FXP4&= z?Jl1ef@QDMX4Tu(QFQzyD2kZ+)*unJ4RRIDJd_w(^fk>zZ$Qj)|4l-3zOc4l$AM|i z57qo9@)JR2xNo8uU%aqhvG-4`HyimRs?LX%FSpmH=T|QXD(1e{+`apw^~g!8*=nws ziN2VRqU2>gw|1jDy(g>jv>sXngub4Mj@hC5lO&+ozadlRGJ6x`wCSV$ivw&`=kb^e<6`$TYl zOZz(pln;AeBWCENx=p=KJ)qvAei%ewn(xQMX2*dEPUMN(oy19pz=%j1%^s0pa~TyI z-81_e{cfpcW4J(sbj79;J}GgUEuoymuo7q2$Xf=b+yXU#v0G5HBPSZMHB7~PE@Zl& zAa2DWBVUK}oRP`2y0=^I&hi^7brv;H9vO|XQmyT6}8Pg zS@1M&A#i@Xg&%NJbr>~v$L6$og4Kc62>#ZJLavXt>tqxEFZ>Zz^f2I{(R+v&yy!L6 zD&bAXJJhCs$pqrKEW?wFZ1&6D{(NgBXrz^GcHfoFT9FwAQOOP=o1NXG5DmBN1%T#8 zkRxWJ>;|3}{95n`K0)vb0}zo6umFAgUKRIYWY6JxV3o<4Zj+!eqIPWCfwpA~F&mkQ ze?j3++pAPz=d!k!5Oz|y4kVfZ%Sb+KD%4K{|1N+sggng&L8$*IP?10h9_FimF?hcp-gUlr>rpPBL_QD~g8_V&EVZ1@< zNyc{ij+tq4qp)306ulY-l5iTEX?iNmW|xUGGeaktWBQE*QAykk)=7kr2wj^!Xu)*b z41zt(0R-g`42MISxEmw~uqU5y<#MecXtkz-JUhyWjKZvNH}(usGj?DE=~fj+lxP#oAt#V9bx2EqDZfk+ky5jIOSi(XqN+GG-X+LeUMxUxByA;-G83gC zTxKy$A!|SeQVFOgVjdF)!#one?;6~RLjX@8OeZ%*jb?c)Ki)~K)h65;79t!7aZbrV z?c4L(mBVV|ug-t%%6XR{W1b<;?V~)!9x9h{^~-w>ue^4T+PLJrmDl1lQLxiTiQ4X+ zDMy$TwY=+!D^&MSuhC`ZO<{Wr<7OLZlS;>{_Cn5gwCcs{K`NDXl( zkjuz4iS;4CVc(cDk{Al+;6pGm3}UszSv<9X1bLLkijRk7IEd*APdjKuYU;<@n?Md8g+p$xb5_d z@<+VACL)0}?D zEWu!Mk`QujcyxqgEN*8CrJi`oh$Yf>N)Zs7it#Dc=}oJ)UAKiM<~RK$BX16NcDj)! z!rHgv1hFh1rcYA`bhF$LAFgk71cxUy$Z%sH9(%;HluF%c0feiK%N>=@FSdPps6H;2 z;3t6E*nng$Mkb<8wlDw{g7H56LUj@YFc-xVCdeQ+0Wy}@gh+2kVmL;&t*klg0daIn zK_U%gAuN;W@tBgzXFfc0ov6WJTB235Y^L{$Pnt44W+W1O#W{LN6djJ}83+X^`_zgx zB(M$-aRFKUN-hi;gzf8@*l?5wweK5cR~+C{r_ea2qudMvO=Q!QTt#|KQo4LnlNIW9cOdiz-D6&uK|0GF7Fg zNHY-4k~Rq!gUM~9s!~f|{EM^(_a=ORXDalCBawPcd=|PCah_hOSl(h;OPOMphorN~ zF(D#pA|fhjb@AzOG6hl}=Q~+@X`q;oI#Mp#gOSxv`A8AAfl^nYDNcP#Bi@T5AbT-#$w!XxaBQ3?%-rs16 z@i9V$NK5|6O-Vz+BWJJw1pU0QigS`%GV!)4bs&M?lBg=*&rf(x&~KpGw_GP&JV^`s zNq!~I)JIy+sI;SUSh$5}VCqbLJwddFJO$dqf3I)Y751_A-(0bEJGAv5qYd@Q1+&Ye zf!W~A6#0wMWjtOeTiTAPR2*SmF56C!-Nz09f-o=T0#$hC^6Cd&XgdEco}ppP;{Auk zqP0zP(l-|MAWuvj&x`uXpatfu%Us#>;68Vy?*x!gY;+y68akZ_ps~yzty?rsss=}z zPQa{)eg~01TC=JAnQX3<%g%HHUYg-Yv9;7`En9KoSL{--I6k--l;w;<_K^)@<`NIu?(q`wT8n7Rnk;kpZbn5fuX zR_0n{%+Hm~x%V{+9I%?k_TSEX=8rBDcxwY}+T`wsWlBAt0eS*+fRrD7h>CT>0YJkS-F zcBzyrat4)1^ab7J_O!k1OTvfIHNzZ>DAkuJhbVU&w3K{MKAaZyX6cvjG0kXM)^ zG#09?iO3P9#-45Tc&iPXYE3dGyun7i)5M7E1uYJDqwsW2Z6*Yc2*q`5x)@o7!sI^3 zTbc=&brUiXvpH2+T*ziFU0K~}nTK~Y;zDV9YM>U8y9wY;q0e>J6DU;;`CJq<-W?XMT3TNB z-J`2J_V;U(2ZCsJW@hk!?(QuXgNaH0(` z>hcX?bV_gw@6lV-HFX}X$J?livx&Su1(+glSHcpt;oZ{-L>R7Ds;ResWU4f=@+fg| zhxEY0=U`4RPfsrcUjL#rYuXEwA^)-pVsZ&UU=ko(iA|7eNl(}7(&1jc+N ze2YX9h`pZ1^h#ir1!fRwj_Z%X#upQo;Hu}o62*a{aOm*$`F_G&m0lmWLTk;0VUkD# z;?PI0YY>5f-TbAQnRcy~tAz=1 zHM#Ape;i#pIq${ZT-Cb0Q?`x?vjXg}jh}$X6;=1N%mN54?}IWuFgU!p=W2DRw{ zu>F_ot$gLmrK6C3^mp6*@p+;)^bgKoot=$0Gpp;~s=Z__nhj$?uj_SH2{YAdCJZ4u z9?UR+KT#?cOFHr&@gOXqTGrm9o=JUk6GZFu;4t`_x`z(_r*7QvgEldr z_aNddl%6Vt&$AB%52)!Hq2VZf?0W$VxF2Q+aX=VCCg;PazO?;U*<#iSZ2uGT6A{+% zUydrGCYT2ec`zgK`nUq|ewxd3x)Xy1rt(hKb8fg{v4~Q$1E&Hcp$t)JNXo~wM7>en z1+Te-dCwc@j@y~>g&^HX##9;C-V#d_EwZH(!!v?PXQieL9)vLyYP&MKVaSOh2yJX& z3EM_kN}L0v7G3BJg9WJrQ;OCBuca^X!B{wREDgsZOp7cW6@JSpe~V!x>FE5bNeK4LY5Si=RDo#mpEI&)U?eV^Mon-p`?7u3=FXKX zm#=st3_oLbh`%InP%jlHdxs9yy4lLaa_H&btmHgqnhGd37otF~1-u-Lrxt*XBgcb) zzz^%V9#P_tX>WYd^ZDQLZ2nia?*Hn>8jaW6;9;*;2kEC;kxn732F`c!i;mu0wXVKO zW7^(hy-V?*8^&>B>k-#_?e{)5!^5+6+l%m)D<>YTY!jU9vW}(VkDMF z8iC>Y5{YVG1pmcLiCFPEgKB|y9{8P?NPCYJH9@6v*oR%fDw5-@^M-uV1Jc{~3P2QHZ)YkzW`GC8ZYh|v z3y|8GY~B>cfET*v^kAAvtcHKCE7RY2JJmMt&`|1^!4SKc)AJTQAH2g#-mM6DCU{4t z@^*R*&>12$d!S=F;`oE`Z^#V}2n)^^A^3pRDK|u?k@R)J;DqVRyNaOld(2~jFp_99 zrk%7TAYPBjka9)C@rfYa z!E-Z0SZ)b5wzoeF3Q?-{&bOM2nZX;Uih0R`WLN8crMlD|MIcI2x_oxD;tb@Az1W-* zipn#H)+>Y=a6fNIq2sLhK>EGoQ_|Ib^(;Et&On2h3*`6)anQ`zitIuL!baC0K+#d@ zBipY~-<)+H?OgSLSL^e$XflQf*V63m=r;2yu`??5deMBM6PeVS#sU=%c82r|@|)SI zay|2OTy`p*dfcCC`cr` zX&pR>xPk3(RZt2`A>AJohu1R6*f=)-L>}Y?%6X{v)SFX zW3WRm_Xl3#zxqE5t~_zq-M5~)W47JythL+i*&kRMPc04V5&j2T@}-v7ktlD57mifo zhX~kY8imWmO&^vxgk=+6JO{bLYc5cFF|+v+UZyZX+-DV*c3MeL&@As{n8%`7;O!Yr z)gmfm3F~G>t*RYFwXCZ)Q>(f}{P)#BZSansooW~3Z4Yye_rVTqfldyngX$c0t~#U+ zV-%mSE+GEm2=DJXsxBr9^q9Jo_xQYw_po1q?R=H^U3fFZb<8ump7;9Ppl(#h)hpGj z(2XbXG2g6iQMamB6UBTRUZ^|NDRrlMEqd;5=iWPRJ=|%x$Lr2`-5sxc<8^<$9*ox; z&`zca4CGp@fguD>&`zca4C zGp@fguD>&`zca4CGp@fguD>&`zca4CJFdSwuD?63zdNqKJFdSwuD?63zdNqKJFdSw zuD?63zdNqKJFdSwuD?63zdNqKH?F@ot{;;peJ;Im{k?JhOcWcXkL&M^>+g;0?~Uv4 zjqC4?>+g;0?~Uv4jqC4?>+g^2?~m*6kL&M`>+g^2?~m(;SWmB`Kd!$&uD?I7zdx?O zKd!$&uD?I7zdx?OKdyf;u75DDe=x3}H%q1U494{j#`O=z^)r!vbbMU@U|j!TT>oHP z|6pAIU|j!TT>oHP|HiofjdA@O2Cas3$CqK$^Qp1eey#9 literal 0 HcmV?d00001 diff --git a/css/traffico-release-0.1.5/fonts/traffico.svg b/css/traffico-release-0.1.5/fonts/traffico.svg new file mode 100755 index 000000000..510f0241b --- /dev/null +++ b/css/traffico-release-0.1.5/fonts/traffico.svg @@ -0,0 +1,826 @@ + + + + + +Created by FontForge 20141231 at Fri May 29 14:36:33 2015 + By Kamil Nikel +Copyright (c) 2015, Kamil Nikel + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/css/traffico-release-0.1.5/fonts/traffico.ttf b/css/traffico-release-0.1.5/fonts/traffico.ttf new file mode 100755 index 0000000000000000000000000000000000000000..04c64cf6744193d35b2a3cd021f7199ef9ba5787 GIT binary patch literal 26000 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 literal 0 HcmV?d00001 diff --git a/css/traffico-release-0.1.5/fonts/traffico.woff b/css/traffico-release-0.1.5/fonts/traffico.woff new file mode 100755 index 0000000000000000000000000000000000000000..da5cc9705a2fbabc53706486cb46afd69d7c5a92 GIT binary patch literal 16536 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 AtpET3 literal 0 HcmV?d00001 diff --git a/css/traffico-release-0.1.5/fr.json b/css/traffico-release-0.1.5/fr.json new file mode 100755 index 000000000..695b9c919 --- /dev/null +++ b/css/traffico-release-0.1.5/fr.json @@ -0,0 +1 @@ +{"information_border_fr":{"category":"information","name":"European border crossing into France","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"FRANCE"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/global-patched.json b/css/traffico-release-0.1.5/global-patched.json new file mode 100755 index 000000000..34ad40006 --- /dev/null +++ b/css/traffico-release-0.1.5/global-patched.json @@ -0,0 +1 @@ +{"information_border_at":"ÖSTERREICH","information_border_be_nl":"België","information_border_be_fr":"Belgique","information_border_cz":"Českérepublika","danger_level_crossing":"","danger_railway_crossing_unsecured":"","information_bus_stop":"","information_border_de":"Bundes-republikDeutschland","priority_priority_road_end":"","prohibitory_end_of_limits":"","prohibitory_low_emission_zone":"UmweltZONE","prohibitory_low_emission_zone_end":"UmweltZONE","supplementary_destination":"Anliegerfrei","supplementary_disabled":"","supplementary_glaze":"","supplementary_left_pointing":"","supplementary_both_directions":"","supplementary_pedestrians_use_opposite_sidewalk":"","supplementary_pedestrians_use_opposite_sidewalk2":"","supplementary_railway_only":"","supplementary_right_pointing":"","information_border_dk":"Danmark","information_border_ee":"EESTI","information_border_es":"ESPAÑA","danger_bend_first_left":"","danger_bend_first_right":"","danger_bend_left":"","danger_bend_right":"","danger_construction":"","danger_contraflow":"","danger_crossroad":"","danger_cycle_crossing":"","danger_danger":"","danger_danger_tmp":"","danger_domestic_animals":"","danger_pedestrians":"","danger_pedestrian_crossing":"","danger_quayside_or_ferry_berth":"","danger_railway_crossing_secured":"","danger_road_narrows":"","danger_road_narrows_left":"","danger_road_narrows_right":"","danger_roundabout":"","danger_school_crossing":"","danger_slippery_road":"","danger_snow":"","danger_traffic_signal":"","danger_uneven_road":"","danger_hump":"","danger_wild_animals":"","danger_low_flying_aircraft":"","danger_strong_sidewind":"","information_deadend":"","information_disabled_parking":"","information_first_aid":"","information_limited_access_road":"","information_parking":"","information_parking_left":"","information_parking_right":"","information_pedestrian_crossing":"","mandatory_bicycle_pedestrian_dual_track":"","mandatory_cycle_track":"","mandatory_equestrian_track":"","mandatory_footpath":"","mandatory_go_left":"","mandatory_go_left_or_right":"","mandatory_go_right":"","mandatory_go_straight":"","mandatory_keep_left":"","mandatory_keep_right":"","mandatory_minimum_speed_10":"10","mandatory_minimum_speed_20":"20","mandatory_minimum_speed_25":"25","mandatory_minimum_speed_30":"30","mandatory_minimum_speed_35":"35","mandatory_minimum_speed_50":"50","mandatory_minimum_speed_60":"60","mandatory_minimum_speed_70":"70","mandatory_minimum_speed_75":"75","mandatory_minimum_speed_80":"80","mandatory_minimum_speed_90":"90","mandatory_minimum_speed_100":"100","mandatory_minimum_speed_110":"110","mandatory_minimum_speed_120":"120","mandatory_minimum_speed_130":"130","mandatory_minimum_speed_end_10":"10","mandatory_minimum_speed_end_20":"20","mandatory_minimum_speed_end_25":"25","mandatory_minimum_speed_end_30":"30","mandatory_minimum_speed_end_35":"35","mandatory_minimum_speed_end_50":"50","mandatory_minimum_speed_end_60":"60","mandatory_minimum_speed_end_70":"70","mandatory_minimum_speed_end_75":"75","mandatory_minimum_speed_end_80":"80","mandatory_minimum_speed_end_90":"90","mandatory_minimum_speed_end_100":"100","mandatory_minimum_speed_end_110":"110","mandatory_minimum_speed_end_120":"120","mandatory_minimum_speed_end_130":"130","mandatory_pedestrian_bicycle_dual_track":"","mandatory_pedestrian_cycle_track":"","mandatory_roundabout":"","mandatory_turn_left":"","mandatory_turn_left_or_straight":"","mandatory_turn_right":"","mandatory_turn_right_or_straight":"","other_no_entry":"","other_entry":"","priority_give_way":"","priority_narrow":"","priority_narrow2":"","priority_next_intersection":"","priority_next_intersection_left":"","priority_next_intersection_right":"","priority_priority_road":"","priority_stop":"","prohibitory_pedestrians":"","prohibitory_pedestrians_and_bicycles":"","prohibitory_bicycles":"","prohibitory_mopeds_and_bicycles":"","prohibitory_moped":"","prohibitory_motorcycles":"","prohibitory_motor_vehicles":"","prohibitory_slow_vehicles":"","prohibitory_trailers":"","prohibitory_buses":"","prohibitory_trucks":"","prohibitory_trucks_bar":"","prohibitory_trucks_and_buses":"","prohibitory_no_parking":"","prohibitory_no_parking_or_stopping":"","prohibitory_no_parking_or_stopping_left":"","prohibitory_no_parking_or_stopping_left_and_right":"","prohibitory_no_parking_or_stopping_right":"","prohibitory_no_parking_left":"","prohibitory_no_parking_left_and_right":"","prohibitory_no_parking_right":"","prohibitory_no_traffic_both_ways":"","prohibitory_no_turn_left":"","prohibitory_no_turn_right":"","prohibitory_no_u_turn":"","prohibitory_overtaking":"","prohibitory_overtaking_trucks":"","prohibitory_speed_limit_10":"10","prohibitory_speed_limit_20":"20","prohibitory_speed_limit_25":"25","prohibitory_speed_limit_30":"30","prohibitory_speed_limit_35":"35","prohibitory_speed_limit_50":"50","prohibitory_speed_limit_60":"60","prohibitory_speed_limit_70":"70","prohibitory_speed_limit_75":"75","prohibitory_speed_limit_80":"80","prohibitory_speed_limit_90":"90","prohibitory_speed_limit_100":"100","prohibitory_speed_limit_110":"110","prohibitory_speed_limit_120":"120","prohibitory_speed_limit_130":"130","prohibitory_vehicles_with_dangerous_goods":"","supplementary_priority_road_bends_left_3way_1":"","supplementary_priority_road_bends_left_3way_2":"","supplementary_priority_road_bends_left_4way":"","supplementary_priority_road_bends_right_3way_1":"","supplementary_priority_road_bends_right_3way_2":"","supplementary_priority_road_bends_right_4way":"","supplementary_priority_road_from_left_3way":"","supplementary_priority_road_from_left_4way":"","supplementary_priority_road_from_right_3way":"","supplementary_priority_road_from_right_4way":"","information_border_fi":"SUOMIFINLANDSUOPMA","information_border_fr":"FRANCE","information_border_gr":"EΛΛAΣGREECE","information_border_hu":"Magyarország","information_border_it":"ITALIA","information_border_lt":"LietuvosRespublika","information_border_lu_fr":"Luxembourg","information_border_lu_de":"Luxemburg","information_border_lv":"LATVIJA","information_border_nl":"Nederland","information_cycleway":"fietspad","information_border_pl":"RzeczpospolitaPolska","information_border_se":"SVERIGE","information_border_si":"SLOVENIA","information_border_sk":"SLOVENSKO","regulatory_no_entry":"","regulatory_stop":"","regulatory_yield":"YIELD","warning_merge":"","warning_merging_traffic":"","warning_pedestrian_crossing":"","warning_traffic_light":"","warning_traffic_light_horizontal":"","regulatory_no_parking":"","warning_road_narrows_right":"","warning_road_narrows_left":"","warning_road_narrows_both_sides":"","regulatory_no_bicycles":"","regulatory_no_left_turn":"","regulatory_no_turn_right":"","regulatory_no_u_turn":"","warning_added_lane":"","warning_cross_roads":"","warning_side_road_perpendicular_right":"","warning_side_road_perpendicular_left":"","regulatory_no_trucks":"","warning_turn_right":"","warning_turn_left":"","warning_fire_station":"","warning_bicycles":"","warning_dead_end":"","warning_light_rail_crossing":"","warning_horizontal_alignment_left":"","warning_horizontal_alignment_right":"","warning_highway_divided":"","warning_steep_hill":"","warning_low_clearance":"","warning_offset_roads":"","warning_slippery":"","regulatory_no_left_or_u_turn":"","warning_winding_road_left":"","warning_winding_road_right":"","warning_metric_clearance":"","warning_intersection_circular":"","warning_turn_reverse_right":"","warning_turn_reverse_left":"","warning_side_road_acute_angle_right":"","warning_side_road_acute_angle_left":"","warning_t_roads":"","regulatory_no_hitch_hiking":"","warning_pass_left_or_right":"","warning_share_roads":"","warning_bickcle_slippery":"","regulatory_no_pedestrian_crossing":"","warning_workers_in_road_ahead":"","warning_play_ground":"","warning_falling_rocks":"","warning_hairpin_curve":"","warning_end":"","warning_loop_270_degree":"","warning_y_roads":"","regulatory_no_straight_through":"","warning_added_lane_from_entering_roadway":"","warning_flaggers_in_road_ahead":"","warning_skewed_railroad_crossing":"","warning_trucks_rollover":"","warning_lightground_railroad_crossing":"","regulatory_national_network_lane":"","regulatory_national_network_prohibited":"","warning_motorcycle_crossing":"","warning_railroad":"","regulatory_hazardous_material_prohibited":"","warning_truck_rollover_with_speed":"","regulatory_no_rollerblading":"","regulatory_one_way_small_left":"ONEWAY","regulatory_one_way_small_right":"ONEWAY","regulatory_one_way_large_left":"ONEWAY","regulatory_one_way_large_right":"ONEWAY","warning_single_2_reverse_curve":"","warning_double_2_reverse_curve":"","warning_triple_2_reverse_curve":"","school_school":"","school_obsolete":"","warning_turn_left_curve":"","warning_turn_right_curve":"","warning_turn_left_curve_speed":"","warning_turn_right_curve_speed":"","warning_pretzel_loop":"","information_disable_persons":"","prohibitory_no_trucks":"","prohibitory_no_motorcycles":"","prohibitory_no_motor_vehicles":"","danger_animals":"","danger_priority_next_intersection":"","danger_road_works":"","mandatory_go_left_or_straight":"","mandatory_go_right_or_straight":"","mandatory_pedestrian_cycle_dual_track":"","other_give_way":"","other_priority_road":"","prohibitory_no_pedestiran_or_cycles":"","prohibitory_no_vehicle_with_dangerous_goods":"","prohibitory_noturn_left":"","prohibitory_noturn_right":"","prohibitory_on_overtaking":"","prohibitory_on_overtaking_trucks":"","school_school_obsolete":"","warning_Y_roads":"","warning_added_lanes":"","warning_curve_reverse_left":"","warning_curve_reverse_right":"","warning_double_reverse_curve":"","warning_turn_curve_left":"","warning_turn_curve_right":"","warning_turn_curve_with_speed":"","warning_loop_pretzel":"","warning_winding_road":""} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/global.json b/css/traffico-release-0.1.5/global.json new file mode 100755 index 000000000..c6d572b89 --- /dev/null +++ b/css/traffico-release-0.1.5/global.json @@ -0,0 +1 @@ +{"information_border_at":"ÖSTERREICH","information_border_be_nl":"België","information_border_be_fr":"Belgique","information_border_cz":"Českérepublika","danger_level_crossing":"","danger_railway_crossing_unsecured":"","information_bus_stop":"","information_border_de":"Bundes-republikDeutschland","priority_priority_road_end":"","prohibitory_end_of_limits":"","prohibitory_low_emission_zone":"UmweltZONE","prohibitory_low_emission_zone_end":"UmweltZONE","supplementary_destination":"Anliegerfrei","supplementary_disabled":"","supplementary_glaze":"","supplementary_left_pointing":"","supplementary_both_directions":"","supplementary_pedestrians_use_opposite_sidewalk":"","supplementary_pedestrians_use_opposite_sidewalk2":"","supplementary_railway_only":"","supplementary_right_pointing":"","information_border_dk":"Danmark","information_border_ee":"EESTI","information_border_es":"ESPAÑA","danger_bend_first_left":"","danger_bend_first_right":"","danger_bend_left":"","danger_bend_right":"","danger_construction":"","danger_contraflow":"","danger_crossroad":"","danger_cycle_crossing":"","danger_danger":"","danger_danger_tmp":"","danger_domestic_animals":"","danger_pedestrians":"","danger_pedestrian_crossing":"","danger_quayside_or_ferry_berth":"","danger_railway_crossing_secured":"","danger_road_narrows":"","danger_road_narrows_left":"","danger_road_narrows_right":"","danger_roundabout":"","danger_school_crossing":"","danger_slippery_road":"","danger_snow":"","danger_traffic_signal":"","danger_uneven_road":"","danger_hump":"","danger_wild_animals":"","danger_low_flying_aircraft":"","danger_strong_sidewind":"","information_deadend":"","information_disabled_parking":"","information_first_aid":"","information_limited_access_road":"","information_parking":"","information_parking_left":"","information_parking_right":"","information_pedestrian_crossing":"","mandatory_bicycle_pedestrian_dual_track":"","mandatory_cycle_track":"","mandatory_equestrian_track":"","mandatory_footpath":"","mandatory_go_left":"","mandatory_go_left_or_right":"","mandatory_go_right":"","mandatory_go_straight":"","mandatory_keep_left":"","mandatory_keep_right":"","mandatory_minimum_speed_10":"10","mandatory_minimum_speed_20":"20","mandatory_minimum_speed_25":"25","mandatory_minimum_speed_30":"30","mandatory_minimum_speed_35":"35","mandatory_minimum_speed_50":"50","mandatory_minimum_speed_60":"60","mandatory_minimum_speed_70":"70","mandatory_minimum_speed_75":"75","mandatory_minimum_speed_80":"80","mandatory_minimum_speed_90":"90","mandatory_minimum_speed_100":"100","mandatory_minimum_speed_110":"110","mandatory_minimum_speed_120":"120","mandatory_minimum_speed_130":"130","mandatory_minimum_speed_end_10":"10","mandatory_minimum_speed_end_20":"20","mandatory_minimum_speed_end_25":"25","mandatory_minimum_speed_end_30":"30","mandatory_minimum_speed_end_35":"35","mandatory_minimum_speed_end_50":"50","mandatory_minimum_speed_end_60":"60","mandatory_minimum_speed_end_70":"70","mandatory_minimum_speed_end_75":"75","mandatory_minimum_speed_end_80":"80","mandatory_minimum_speed_end_90":"90","mandatory_minimum_speed_end_100":"100","mandatory_minimum_speed_end_110":"110","mandatory_minimum_speed_end_120":"120","mandatory_minimum_speed_end_130":"130","mandatory_pedestrian_bicycle_dual_track":"","mandatory_pedestrian_cycle_track":"","mandatory_roundabout":"","mandatory_turn_left":"","mandatory_turn_left_or_straight":"","mandatory_turn_right":"","mandatory_turn_right_or_straight":"","other_no_entry":"","other_entry":"","priority_give_way":"","priority_narrow":"","priority_narrow2":"","priority_next_intersection":"","priority_next_intersection_left":"","priority_next_intersection_right":"","priority_priority_road":"","priority_stop":"","prohibitory_pedestrians":"","prohibitory_pedestrians_and_bicycles":"","prohibitory_bicycles":"","prohibitory_mopeds_and_bicycles":"","prohibitory_moped":"","prohibitory_motorcycles":"","prohibitory_motor_vehicles":"","prohibitory_slow_vehicles":"","prohibitory_trailers":"","prohibitory_buses":"","prohibitory_trucks":"","prohibitory_trucks_bar":"","prohibitory_trucks_and_buses":"","prohibitory_no_parking":"","prohibitory_no_parking_or_stopping":"","prohibitory_no_parking_or_stopping_left":"","prohibitory_no_parking_or_stopping_left_and_right":"","prohibitory_no_parking_or_stopping_right":"","prohibitory_no_parking_left":"","prohibitory_no_parking_left_and_right":"","prohibitory_no_parking_right":"","prohibitory_no_traffic_both_ways":"","prohibitory_no_turn_left":"","prohibitory_no_turn_right":"","prohibitory_no_u_turn":"","prohibitory_overtaking":"","prohibitory_overtaking_trucks":"","prohibitory_speed_limit_10":"10","prohibitory_speed_limit_20":"20","prohibitory_speed_limit_25":"25","prohibitory_speed_limit_30":"30","prohibitory_speed_limit_35":"35","prohibitory_speed_limit_50":"50","prohibitory_speed_limit_60":"60","prohibitory_speed_limit_70":"70","prohibitory_speed_limit_75":"75","prohibitory_speed_limit_80":"80","prohibitory_speed_limit_90":"90","prohibitory_speed_limit_100":"100","prohibitory_speed_limit_110":"110","prohibitory_speed_limit_120":"120","prohibitory_speed_limit_130":"130","prohibitory_vehicles_with_dangerous_goods":"","supplementary_priority_road_bends_left_3way_1":"","supplementary_priority_road_bends_left_3way_2":"","supplementary_priority_road_bends_left_4way":"","supplementary_priority_road_bends_right_3way_1":"","supplementary_priority_road_bends_right_3way_2":"","supplementary_priority_road_bends_right_4way":"","supplementary_priority_road_from_left_3way":"","supplementary_priority_road_from_left_4way":"","supplementary_priority_road_from_right_3way":"","supplementary_priority_road_from_right_4way":"","information_border_fi":"SUOMIFINLANDSUOPMA","information_border_fr":"FRANCE","information_border_gr":"EΛΛAΣGREECE","information_border_hu":"Magyarország","information_border_it":"ITALIA","information_border_lt":"LietuvosRespublika","information_border_lu_fr":"Luxembourg","information_border_lu_de":"Luxemburg","information_border_lv":"LATVIJA","information_border_nl":"Nederland","information_cycleway":"fietspad","information_border_pl":"RzeczpospolitaPolska","information_border_se":"SVERIGE","information_border_si":"SLOVENIA","information_border_sk":"SLOVENSKO","regulatory_no_entry":"","regulatory_stop":"","regulatory_yield":"YIELD","warning_merge":"","warning_merging_traffic":"","warning_pedestrian_crossing":"","warning_traffic_light":"","warning_traffic_light_horizontal":"","regulatory_no_parking":"","warning_road_narrows_right":"","warning_road_narrows_left":"","warning_road_narrows_both_sides":"","regulatory_no_bicycles":"","regulatory_no_left_turn":"","regulatory_no_turn_right":"","regulatory_no_u_turn":"","warning_added_lane":"","warning_cross_roads":"","warning_side_road_perpendicular_right":"","warning_side_road_perpendicular_left":"","regulatory_no_trucks":"","warning_turn_right":"","warning_turn_left":"","warning_fire_station":"","warning_bicycles":"","warning_dead_end":"","warning_light_rail_crossing":"","warning_horizontal_alignment_left":"","warning_horizontal_alignment_right":"","warning_highway_divided":"","warning_steep_hill":"","warning_low_clearance":"","warning_offset_roads":"","warning_slippery":"","regulatory_no_left_or_u_turn":"","warning_winding_road_left":"","warning_winding_road_right":"","warning_metric_clearance":"","warning_intersection_circular":"","warning_turn_reverse_right":"","warning_turn_reverse_left":"","warning_side_road_acute_angle_right":"","warning_side_road_acute_angle_left":"","warning_t_roads":"","regulatory_no_hitch_hiking":"","warning_pass_left_or_right":"","warning_share_roads":"","warning_bickcle_slippery":"","regulatory_no_pedestrian_crossing":"","warning_workers_in_road_ahead":"","warning_play_ground":"","warning_falling_rocks":"","warning_hairpin_curve":"","warning_end":"","warning_loop_270_degree":"","warning_y_roads":"","regulatory_no_straight_through":"","warning_added_lane_from_entering_roadway":"","warning_flaggers_in_road_ahead":"","warning_skewed_railroad_crossing":"","warning_trucks_rollover":"","warning_lightground_railroad_crossing":"","regulatory_national_network_lane":"","regulatory_national_network_prohibited":"","warning_motorcycle_crossing":"","warning_railroad":"","regulatory_hazardous_material_prohibited":"","warning_truck_rollover_with_speed":"","regulatory_no_rollerblading":"","regulatory_one_way_small_left":"ONEWAY","regulatory_one_way_small_right":"ONEWAY","regulatory_one_way_large_left":"ONEWAY","regulatory_one_way_large_right":"ONEWAY","warning_single_2_reverse_curve":"","warning_double_2_reverse_curve":"","warning_triple_2_reverse_curve":"","school_school":"","school_obsolete":"","warning_turn_left_curve":"","warning_turn_right_curve":"","warning_turn_left_curve_speed":"","warning_turn_right_curve_speed":"","warning_pretzel_loop":""} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/gr.json b/css/traffico-release-0.1.5/gr.json new file mode 100755 index 000000000..3e64f8bf1 --- /dev/null +++ b/css/traffico-release-0.1.5/gr.json @@ -0,0 +1 @@ +{"information_border_gr":{"category":"information","name":"European border crossing into Greece","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"yellow","content":"EΛΛAΣ","transform":"translate(0,-50%)"},{"type":"content-5","color":"white","content":"GREECE","transform":"translate(0,50%)"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/hu.json b/css/traffico-release-0.1.5/hu.json new file mode 100755 index 000000000..a36aac38d --- /dev/null +++ b/css/traffico-release-0.1.5/hu.json @@ -0,0 +1 @@ +{"information_border_hu":{"category":"information","name":"European border crossing into Hungary","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Magyarország","transform":"scale(.75)"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/it.json b/css/traffico-release-0.1.5/it.json new file mode 100755 index 000000000..c0b1e7bae --- /dev/null +++ b/css/traffico-release-0.1.5/it.json @@ -0,0 +1 @@ +{"information_border_it":{"category":"information","name":"European border crossing into Italy","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"ITALIA"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/lt.json b/css/traffico-release-0.1.5/lt.json new file mode 100755 index 000000000..72a351c61 --- /dev/null +++ b/css/traffico-release-0.1.5/lt.json @@ -0,0 +1 @@ +{"information_border_lt":{"category":"information","name":"European border crossing into Lithuania","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Lietuvos","transform":"translate(0,-80%)"},{"type":"content-5","color":"white","content":"Respublika","transform":"translate(0,20%)"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/lu.json b/css/traffico-release-0.1.5/lu.json new file mode 100755 index 000000000..0be6c4286 --- /dev/null +++ b/css/traffico-release-0.1.5/lu.json @@ -0,0 +1 @@ +{"information_border_lu_fr":{"category":"information","name":"European border crossing into Luxembourg from France","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Luxembourg","transform":"scale(.85)"}]},"information_border_lu_de":{"category":"information","name":"European border crossing into Luxembourg from Germany","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Luxemburg","transform":"scale(.85)"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/lv.json b/css/traffico-release-0.1.5/lv.json new file mode 100755 index 000000000..baef29b8c --- /dev/null +++ b/css/traffico-release-0.1.5/lv.json @@ -0,0 +1 @@ +{"information_border_lv":{"category":"information","name":"European border crossing into Latvia","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"LATVIJA"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/nl.json b/css/traffico-release-0.1.5/nl.json new file mode 100755 index 000000000..067045fb3 --- /dev/null +++ b/css/traffico-release-0.1.5/nl.json @@ -0,0 +1 @@ +{"information_border_nl":{"category":"information","name":"European border crossing into the Netherlands","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Nederland"}]},"information_cycleway":{"category":"information","name":"non-compulsory cycleway","elements":[{"type":"square-rounded","color":"white","transform":"scale(1,.3)"},{"type":"square-rounded","color":"blue","transform":"scale(.95,.25)"},{"type":"content-4","color":"white","content":"fietspad"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/pl.json b/css/traffico-release-0.1.5/pl.json new file mode 100755 index 000000000..164bf23cf --- /dev/null +++ b/css/traffico-release-0.1.5/pl.json @@ -0,0 +1 @@ +{"information_border_pl":{"category":"information","name":"European border crossing into Poland","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Rzeczpospolita","transform":"translate(0,-70%) scale(.7)"},{"type":"content-5","color":"white","content":"Polska","transform":"translate(0,40%)"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/se.json b/css/traffico-release-0.1.5/se.json new file mode 100755 index 000000000..dec6d2d9f --- /dev/null +++ b/css/traffico-release-0.1.5/se.json @@ -0,0 +1 @@ +{"information_border_se":{"category":"information","name":"European border crossing into Sweden","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"SVERIGE"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/si.json b/css/traffico-release-0.1.5/si.json new file mode 100755 index 000000000..63268a788 --- /dev/null +++ b/css/traffico-release-0.1.5/si.json @@ -0,0 +1 @@ +{"information_border_si":{"category":"information","name":"European border crossing into Slovenia","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"SLOVENIA","transform":"scale(.85)"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/sk.json b/css/traffico-release-0.1.5/sk.json new file mode 100755 index 000000000..0140670e9 --- /dev/null +++ b/css/traffico-release-0.1.5/sk.json @@ -0,0 +1 @@ +{"information_border_sk":{"category":"information","name":"European border crossing into Slovakia","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"SLOVENSKO","transform":"scale(.8)"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/stylesheets/traffico.css b/css/traffico-release-0.1.5/stylesheets/traffico.css new file mode 100755 index 000000000..ed878d9f6 --- /dev/null +++ b/css/traffico-release-0.1.5/stylesheets/traffico.css @@ -0,0 +1,365 @@ +/* + Icon Font: traffico +*/ + +@font-face { + font-family: "traffico"; + src: url("../fonts/traffico.eot"); + src: url("../fonts/traffico.eot?#iefix") format("embedded-opentype"), + url("../fonts/traffico.woff") format("woff"), + url("../fonts/traffico.ttf") format("truetype"), + url("../fonts/traffico.svg#traffico") format("svg"); + font-weight: normal; + font-style: normal; +} + +@media screen and (-webkit-min-device-pixel-ratio:0) { + @font-face { + font-family: "traffico"; + src: url("../fonts/traffico.svg#traffico") format("svg"); + } +} + +[data-icon]:before { content: attr(data-icon); } + +[data-icon]:before, +.t-DE-arrow-up:before, +.t-US-arrow-oneway:before, +.t-US-arrow-up:before, +.t-added-lane:before, +.t-added-lane-entering-roadway:before, +.t-airplane:before, +.t-arrow-l:before, +.t-arrow-oneway:before, +.t-arrow-s-l:before, +.t-bending-priority:before, +.t-bicycle:before, +.t-bicycle-slippery:before, +.t-bump:before, +.t-bumps:before, +.t-bus:before, +.t-car:before, +.t-car-left:before, +.t-car-right:before, +.t-children:before, +.t-circle-bar-rounded:before, +.t-circle-bg:before, +.t-circle-o:before, +.t-circle-separator:before, +.t-cliff:before, +.t-cross-roads:before, +.t-curve-r-l:before, +.t-d-curve-l:before, +.t-dead-end:before, +.t-descent:before, +.t-disabled-p:before, +.t-domestic-animal:before, +.t-end:before, +.t-equestrian:before, +.t-europe_stars:before, +.t-exclamation:before, +.t-falling-rocks:before, +.t-fire-station:before, +.t-flaggers:before, +.t-footpath:before, +.t-h:before, +.t-h-align-l:before, +.t-hairpin-curve:before, +.t-hazardous-material:before, +.t-height:before, +.t-highway-divided:before, +.t-hitch-hiking:before, +.t-level-crossing:before, +.t-light-rail:before, +.t-lightground-railroad-crossing:before, +.t-loop-270:before, +.t-lorry:before, +.t-lorry-left:before, +.t-low-clearance:before, +.t-merge:before, +.t-metric-clearance:before, +.t-moped:before, +.t-motorbike:before, +.t-narrow-road-both:before, +.t-narrow-road-l:before, +.t-no-l-or-u-turn:before, +.t-octagon:before, +.t-offset-roads:before, +.t-parking:before, +.t-pass-l-r:before, +.t-pedestrian:before, +.t-pedestrian-crossing:before, +.t-pedestrians:before, +.t-play-ground:before, +.t-pretzel-loop:before, +.t-railroad:before, +.t-railway-xing-secured:before, +.t-railway-xing-unsecured:before, +.t-right-of-way:before, +.t-right-of-way-l:before, +.t-roadworks:before, +.t-rollerblading:before, +.t-roundabout:before, +.t-school:before, +.t-share-roads:before, +.t-side-road-a-a-l:before, +.t-side-road-a-a-r:before, +.t-side-road-p-l:before, +.t-side-road-p-r:before, +.t-single-2-reverse-curve:before, +.t-skewed-railroads:before, +.t-slippery:before, +.t-slippery-road:before, +.t-snowflake:before, +.t-square-angular:before, +.t-square-rounded:before, +.t-steep-hill:before, +.t-stop:before, +.t-t-roads:before, +.t-tractor:before, +.t-trailer:before, +.t-train-electric:before, +.t-tram:before, +.t-tri-angular:before, +.t-tri-rounded:before, +.t-truck:before, +.t-truck-rollover-speed:before, +.t-trucks-rollover:before, +.t-turn-90-l:before, +.t-turn-curve-speed:before, +.t-turn-l:before, +.t-turn-l-curve:before, +.t-turn-reverse-left:before, +.t-turnaround:before, +.t-turnaround2:before, +.t-u-turn:before, +.t-wild-animal:before, +.t-windbag:before, +.t-winding-road-left:before, +.t-y-roads:before { + display: inline-block; + font-family: "traffico"; + font-style: normal; + font-weight: normal; + font-variant: normal; + line-height: 1; + text-decoration: inherit; + text-rendering: optimizeLegibility; + text-transform: none; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + font-smoothing: antialiased; +} + +.t-DE-arrow-up:before { content: "\f100"; } +.t-US-arrow-oneway:before { content: "\f101"; } +.t-US-arrow-up:before { content: "\f102"; } +.t-added-lane:before { content: "\f103"; } +.t-added-lane-entering-roadway:before { content: "\f104"; } +.t-airplane:before { content: "\f105"; } +.t-arrow-l:before { content: "\f106"; } +.t-arrow-oneway:before { content: "\f107"; } +.t-arrow-s-l:before { content: "\f108"; } +.t-bending-priority:before { content: "\f109"; } +.t-bicycle:before { content: "\f10a"; } +.t-bicycle-slippery:before { content: "\f10b"; } +.t-bump:before { content: "\f10c"; } +.t-bumps:before { content: "\f10d"; } +.t-bus:before { content: "\f10e"; } +.t-car:before { content: "\f10f"; } +.t-car-left:before { content: "\f110"; } +.t-car-right:before { content: "\f111"; } +.t-children:before { content: "\f112"; } +.t-circle-bar-rounded:before { content: "\f113"; } +.t-circle-bg:before { content: "\f114"; } +.t-circle-o:before { content: "\f115"; } +.t-circle-separator:before { content: "\f116"; } +.t-cliff:before { content: "\f117"; } +.t-cross-roads:before { content: "\f118"; } +.t-curve-r-l:before { content: "\f119"; } +.t-d-curve-l:before { content: "\f11a"; } +.t-dead-end:before { content: "\f11b"; } +.t-descent:before { content: "\f11c"; } +.t-disabled-p:before { content: "\f11d"; } +.t-domestic-animal:before { content: "\f11e"; } +.t-end:before { content: "\f11f"; } +.t-equestrian:before { content: "\f120"; } +.t-europe_stars:before { content: "\f121"; } +.t-exclamation:before { content: "\f122"; } +.t-falling-rocks:before { content: "\f123"; } +.t-fire-station:before { content: "\f124"; } +.t-flaggers:before { content: "\f125"; } +.t-footpath:before { content: "\f126"; } +.t-h:before { content: "\f127"; } +.t-h-align-l:before { content: "\f128"; } +.t-hairpin-curve:before { content: "\f129"; } +.t-hazardous-material:before { content: "\f12a"; } +.t-height:before { content: "\f12b"; } +.t-highway-divided:before { content: "\f12c"; } +.t-hitch-hiking:before { content: "\f12d"; } +.t-level-crossing:before { content: "\f12e"; } +.t-light-rail:before { content: "\f12f"; } +.t-lightground-railroad-crossing:before { content: "\f130"; } +.t-loop-270:before { content: "\f131"; } +.t-lorry:before { content: "\f132"; } +.t-lorry-left:before { content: "\f133"; } +.t-low-clearance:before { content: "\f134"; } +.t-merge:before { content: "\f135"; } +.t-metric-clearance:before { content: "\f136"; } +.t-moped:before { content: "\f137"; } +.t-motorbike:before { content: "\f138"; } +.t-narrow-road-both:before { content: "\f139"; } +.t-narrow-road-l:before { content: "\f13a"; } +.t-no-l-or-u-turn:before { content: "\f13b"; } +.t-octagon:before { content: "\f13c"; } +.t-offset-roads:before { content: "\f13d"; } +.t-parking:before { content: "\f13e"; } +.t-pass-l-r:before { content: "\f13f"; } +.t-pedestrian:before { content: "\f140"; } +.t-pedestrian-crossing:before { content: "\f141"; } +.t-pedestrians:before { content: "\f142"; } +.t-play-ground:before { content: "\f143"; } +.t-pretzel-loop:before { content: "\f144"; } +.t-railroad:before { content: "\f145"; } +.t-railway-xing-secured:before { content: "\f146"; } +.t-railway-xing-unsecured:before { content: "\f147"; } +.t-right-of-way:before { content: "\f148"; } +.t-right-of-way-l:before { content: "\f149"; } +.t-roadworks:before { content: "\f14a"; } +.t-rollerblading:before { content: "\f14b"; } +.t-roundabout:before { content: "\f14c"; } +.t-school:before { content: "\f14d"; } +.t-share-roads:before { content: "\f14e"; } +.t-side-road-a-a-l:before { content: "\f14f"; } +.t-side-road-a-a-r:before { content: "\f150"; } +.t-side-road-p-l:before { content: "\f151"; } +.t-side-road-p-r:before { content: "\f152"; } +.t-single-2-reverse-curve:before { content: "\f153"; } +.t-skewed-railroads:before { content: "\f154"; } +.t-slippery:before { content: "\f155"; } +.t-slippery-road:before { content: "\f156"; } +.t-snowflake:before { content: "\f157"; } +.t-square-angular:before { content: "\f158"; } +.t-square-rounded:before { content: "\f159"; } +.t-steep-hill:before { content: "\f15a"; } +.t-stop:before { content: "\f15b"; } +.t-t-roads:before { content: "\f15c"; } +.t-tractor:before { content: "\f15d"; } +.t-trailer:before { content: "\f15e"; } +.t-train-electric:before { content: "\f15f"; } +.t-tram:before { content: "\f160"; } +.t-tri-angular:before { content: "\f161"; } +.t-tri-rounded:before { content: "\f162"; } +.t-truck:before { content: "\f163"; } +.t-truck-rollover-speed:before { content: "\f164"; } +.t-trucks-rollover:before { content: "\f165"; } +.t-turn-90-l:before { content: "\f166"; } +.t-turn-curve-speed:before { content: "\f167"; } +.t-turn-l:before { content: "\f168"; } +.t-turn-l-curve:before { content: "\f169"; } +.t-turn-reverse-left:before { content: "\f16a"; } +.t-turnaround:before { content: "\f16b"; } +.t-turnaround2:before { content: "\f16c"; } +.t-u-turn:before { content: "\f16d"; } +.t-wild-animal:before { content: "\f16e"; } +.t-windbag:before { content: "\f16f"; } +.t-winding-road-left:before { content: "\f170"; } +.t-y-roads:before { content: "\f171"; } + +/** Base */ +.t { + display: inline-block; + font: normal normal normal 14px/1 traffico; + position: relative; + width: 1em; + height: 1em; + line-height: 1em; + vertical-align: middle; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.t i { + position: absolute; + left: 0; + width: 100%; + height:1em; + line-height:0; + text-align: center; +} + +/** Content */ + +.t-content, +.t-content-3, +.t-content-4{ + font-family: Helvetica, Arial, sans-serif; + font-weight: bold; + font-style: normal; + letter-spacing:0; + top:48.5%; +} +.t-content { + font-size: 50%; +} + +.t-content-3 { + font-size: 40%; +} + +.t-content-4 { + font-size: 22.5%; +} + +.t-content-5 { + font-family: Helvetica, Arial, sans-serif; + font-weight: normal; + font-style: normal; + font-size: 15%; + letter-spacing:0; + top:50%; +} + +/** Colours */ + +.t-c-white { + color: white; +} + +.t-c-red { + color: #c1121c; +} + +.t-c-orange { + color: #f60; +} + +.t-c-blue { + color: #154889; +} + +.t-c-black { + color: black; +} + +.t-c-yellow-dark { + color: #f0ca00; +} + +.t-c-yellow { + color: #fecf33; +} + +.t-c-grey { + color: grey; +} + +.t-c-green { + color: #008754; +} + +.t-c-fluogreen { + color: #A2FF31; +} diff --git a/css/traffico-release-0.1.5/transformations.json b/css/traffico-release-0.1.5/transformations.json new file mode 100755 index 000000000..08d9a95f7 --- /dev/null +++ b/css/traffico-release-0.1.5/transformations.json @@ -0,0 +1 @@ +{"fit_triangle":"scale(.8) translate(0,5%)","fit_border_circle":"scale(.8)","fit_diamond":"scale(.9)","top_half":"scale(.6) translate(0,-35%)","bottom_half":"scale(.6) translate(0,35%)","left_half":"scale(.6) translate(-40%,0)","right_half":"scale(.6) translate(40%,0)","square_to_diamond":"scale(0.707107) rotate(45deg)","center2tri":"translate(0,14.43%)","tri2center":"translate(0,-14.43%)","inner_triangle":"{center2tri} scale(.7) {tri2center}"} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/uk.json b/css/traffico-release-0.1.5/uk.json new file mode 100755 index 000000000..8b3b5e740 --- /dev/null +++ b/css/traffico-release-0.1.5/uk.json @@ -0,0 +1 @@ +{"danger_contraflow":{"category":"danger","name":"contraflow","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"DE-arrow-up","color":"black","transform":"{center2tri} scale(.35) translate(-25%,-5%)"},{"type":"DE-arrow-up","color":"black","transform":"{center2tri} scale(.35) translate(25%,5%) rotate(180deg)"}]},"mandatory_roundabout":{"category":"mandatory","name":"roundabout","elements":[{"type":"circle-bg","color":"blue"},{"type":"roundabout","color":"white","transform":"scale(-1.25,1.25)"}]},"prohibitory_overtaking":{"category":"prohibitory","name":"no overtaking","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"car-left","color":"black"},{"type":"car-right","color":"red"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/us.json b/css/traffico-release-0.1.5/us.json new file mode 100755 index 000000000..882d459eb --- /dev/null +++ b/css/traffico-release-0.1.5/us.json @@ -0,0 +1 @@ +{"regulatory_no_entry":{"category":"regulatory","name":"no entry","elements":[{"type":"circle-bg","color":"red"},{"type":"square-angular","color":"white","transform":"scale(.92,.16)"}]},"regulatory_stop":{"category":"regulatory","name":"stop","elements":[{"type":"octagon","color":"red"},{"type":"stop","color":"white"}]},"regulatory_yield":{"category":"regulatory","name":"give way","elements":[{"type":"tri-rounded","color":"red","transform":"rotate(180deg)"},{"type":"tri-rounded","color":"white","transform":"{tri2center} scale(.55) {center2tri} rotate(180deg)"},{"type":"content-4","content":"YIELD","color":"red","transform":"translate(0,-115%) scale(.6)"}]},"warning_merge":{"category":"warning","name":"merge","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"merge","color":"black"}]},"warning_merging_traffic":{"category":"warning","name":"merging traffic","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"merge","color":"black","transform":"rotate(45deg)"}]},"warning_pedestrian_crossing":{"category":"warning","name":"pedestrian crossing","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"pedestrian","color":"black"}]},"warning_traffic_light":{"category":"warning","name":"traffic light","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"square-angular","color":"black","transform":"scale(.2,.55)"},{"type":"circle-bg","color":"green","transform":"translate(0,16.5%) scale(.14)"},{"type":"circle-bg","color":"yellow","transform":"scale(.14)"},{"type":"circle-bg","color":"red","transform":"translate(0,-16.5%) scale(.14)"}]},"warning_traffic_light_horizontal":{"category":"warning","name":"traffic light","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"square-angular","color":"black","transform":"scale(.55,.2)"},{"type":"circle-bg","color":"green","transform":"translate(16.5%,0) scale(.14)"},{"type":"circle-bg","color":"yellow","transform":"scale(.14)"},{"type":"circle-bg","color":"red","transform":"translate(-16.5%,0) scale(.14)"}]},"regulatory_no_parking":{"category":"regulatory","name":"no parking","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"parking","color":"black","transform":"{fit_border_circle}"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_road_narrows_right":{"category":"warning","name":"road narrows right","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"narrow-road-l","color":"black","transform":"{fit_diamond} scale(-1,1)"}]},"warning_road_narrows_left":{"category":"warning","name":"road narrows left","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"narrow-road-l","color":"black","transform":"{fit_diamond}"}]},"warning_road_narrows_both_sides":{"category":"warning","name":"road narrows both","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"narrow-road-both","color":"black","transform":"{fit_diamond}"}]},"regulatory_no_bicycles":{"category":"regulatory","name":"no bicycles","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"bicycle","color":"black","transform":"{fit_border_circle}"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"regulatory_no_left_turn":{"category":"regulatory","name":"no left turn","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"turn-90-l","color":"black","transform":"{fit_border_circle}"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"regulatory_no_turn_right":{"category":"regulatory","name":"no right turn","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"turn-90-l","color":"black","transform":"{fit_border_circle} scale(-1,1)"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"regulatory_no_u_turn":{"category":"regulatory","name":"no u turn","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"u-turn","color":"black","transform":"{fit_border_circle}"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_added_lane":{"category":"warning","name":"added lane","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"added-lane","color":"black"}]},"warning_cross_roads":{"category":"warning","name":"cross roads","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"cross-roads","color":"black"}]},"warning_side_road_perpendicular_right":{"category":"warning","name":"side road perpendicular right","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"side-road-p-r","color":"black"}]},"warning_side_road_perpendicular_left":{"category":"warning","name":"side road perpendicular left","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"side-road-p-l","color":"black"}]},"regulatory_no_trucks":{"category":"regulatory","name":"no trucks","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"truck","color":"black","transform":"{fit_border_circle}"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_turn_right":{"category":"warning","name":"turn right","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-90-l","color":"black","transform":"scale(-1,1)"}]},"warning_turn_left":{"category":"warning","name":"turn left","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-90-l","color":"black"}]},"warning_fire_station":{"category":"warning","name":"fire station","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"fire-station","color":"black"}]},"warning_bicycles":{"category":"warning","name":"bicycles","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"bicycle","color":"black","transform":"{fit_diamond}"}]},"warning_dead_end":{"category":"warning","name":"dead end","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"dead-end","color":"black"}]},"warning_light_rail_crossing":{"category":"warning","name":"light rail crossing","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"light-rail","color":"black"}]},"warning_horizontal_alignment_left":{"category":"warning","name":"horizontal alignment left","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"h-align-l","color":"black"}]},"warning_horizontal_alignment_right":{"category":"warning","name":"horizontal alignment right","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"h-align-l","color":"black","transform":"scale(-1,1)"}]},"warning_highway_divided":{"category":"warning","name":"highway divided","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"highway-divided","color":"black"}]},"warning_steep_hill":{"category":"warning","name":"steep hill","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"steep-hill","color":"black"}]},"warning_low_clearance":{"category":"warning","name":"low clearance","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"low-clearance","color":"black"}]},"warning_offset_roads":{"category":"warning","name":"offset roads","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"offset-roads","color":"black"}]},"warning_slippery":{"category":"warning","name":"slippery","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"slippery","color":"black"}]},"regulatory_no_left_or_u_turn":{"category":"regulatory","name":"no left or u turn","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"no-l-or-u-turn","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_winding_road_left":{"category":"warning","name":"winding road","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"winding-road-left","color":"black"}]},"warning_winding_road_right":{"category":"warning","name":"winding road","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"winding-road-left","color":"black","transform":"scale(-1,1)"}]},"warning_metric_clearance":{"category":"warning","name":"metric clearance","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"metric-clearance","color":"black"}]},"warning_intersection_circular":{"category":"warning","name":"intersection circular","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"roundabout","color":"black"}]},"warning_turn_reverse_right":{"category":"warning","name":"turn reverse right","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-reverse-left","color":"black","transform":"scale(-1,1)"}]},"warning_turn_reverse_left":{"category":"warning","name":"turn reverse left","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-reverse-left","color":"black"}]},"warning_side_road_acute_angle_right":{"category":"warning","name":"side road acute angle right","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"side-road-a-a-r","color":"black"}]},"warning_side_road_acute_angle_left":{"category":"warning","name":"side road acute angle left","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"side-road-a-a-l","color":"black"}]},"warning_t_roads":{"category":"warning","name":"t roads","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"t-roads","color":"black"}]},"regulatory_no_hitch_hiking":{"category":"regulatory","name":"no hitch hiking","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"hitch-hiking","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_pass_left_or_right":{"category":"warning","name":"pass left or right","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"pass-l-r","color":"black"}]},"warning_share_roads":{"category":"warning","name":"share roads","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"share-roads","color":"black"}]},"warning_bickcle_slippery":{"category":"warning","name":"bicycle slippery","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"bicycle-slippery","color":"black"}]},"regulatory_no_pedestrian_crossing":{"category":"regulatory","name":"no pedestrian crossing","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"pedestrian","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_workers_in_road_ahead":{"category":"warning","name":"workers in road ahead","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"roadworks","color":"black","transform":"{fit_diamond}"}]},"warning_play_ground":{"category":"warning","name":"play ground","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"play-ground","color":"black"}]},"warning_falling_rocks":{"category":"warning","name":"falling rocks","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"falling-rocks","color":"black"}]},"warning_hairpin_curve":{"category":"warning","name":"hairpin curve","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"hairpin-curve","color":"black"}]},"warning_end":{"category":"warning","name":"end","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"end","color":"black"}]},"warning_loop_270_degree":{"category":"warning","name":"loop 270 degree","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"loop-270","color":"black"}]},"warning_y_roads":{"category":"warning","name":"y roads","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"y-roads","color":"black"}]},"regulatory_no_straight_through":{"category":"regulatory","name":"no straight through","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"US-arrow-up","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_added_lane_from_entering_roadway":{"category":"warning","name":"added lane (from entering roadway)","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"added-lane","color":"black","transform":"rotate(45deg) scale(.95)"}]},"warning_flaggers_in_road_ahead":{"category":"warning","name":"flaggers in road ahead","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"flaggers","color":"black"}]},"warning_skewed_railroad_crossing":{"category":"warning","name":"skewed railroad crossing","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"skewed-railroads","color":"black"}]},"warning_trucks_rollover":{"category":"warning","name":"trucks rollover","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"trucks-rollover","color":"black"}]},"warning_lightground_railroad_crossing":{"category":"warning","name":"lightground railroad crossing","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"lightground-railroad-crossing","color":"black"}]},"regulatory_national_network_lane":{"category":"regulatory","name":"national_network_lane","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"green"},{"type":"lorry","color":"black"}]},"regulatory_national_network_prohibited":{"category":"regulatory","name":"national_network_lane","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"lorry","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_motorcycle_crossing":{"category":"warning","name":"motorcycle crossing","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"motorbike","color":"black"}]},"warning_railroad":{"category":"warning","name":"railroad","elements":[{"type":"circle-bg","color":"yellow"},{"type":"circle-bar-rounded","color":"black","transform":"rotate(-45deg)"},{"type":"circle-bar-rounded","color":"black","transform":"rotate(45deg)"},{"type":"railroad","color":"black"}]},"regulatory_hazardous_material_prohibited":{"category":"regulatory","name":"hazardous material prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"hazardous-material","color":"black","transform":"{fit_border_circle}"},{"type":"circle-o","color":"red"}]},"warning_truck_rollover_with_speed":{"category":"warning","name":"truck rollover with speed","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"truck-rollover-speed","color":"black"}]},"regulatory_no_rollerblading":{"category":"regulatory","name":"no rollerblading","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"rollerblading","color":"black","transform":"{fit_border_circle}"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"regulatory_one_way_small_left":{"category":"regulatory","name":"one way small left","elements":[{"type":"square-rounded","color":"white","transform":"scale(1.1,.33)"},{"type":"square-rounded","color":"black","transform":"scale(1.1,.33) scale(.95)"},{"type":"US-arrow-oneway","color":"white","transform":"scale(.6) scale(1.35,1) rotate(-90deg)"},{"type":"content-4","color":"black","content":"ONE","transform":"scale(.5,.6) translate(-15%,-25%)"},{"type":"content-4","color":"black","content":"WAY","transform":"scale(.5,.6) translate(45%,-25%)"}]},"regulatory_one_way_small_right":{"category":"regulatory","name":"one way small right","elements":[{"type":"square-rounded","color":"white","transform":"scale(1.1,.33)"},{"type":"square-rounded","color":"black","transform":"scale(1.1,.33) scale(.95)"},{"type":"US-arrow-oneway","color":"white","transform":"scale(.6) scale(1.35,1) rotate(90deg)"},{"type":"content-4","color":"black","content":"ONE","transform":"scale(.5,.6) translate(-45%,-25%)"},{"type":"content-4","color":"black","content":"WAY","transform":"scale(.5,.6) translate(15%,-25%)"}]},"regulatory_one_way_large_left":{"category":"regulatory","name":"one way large left","elements":[{"type":"square-rounded","color":"white","transform":"scale(.7,1)"},{"type":"square-rounded","color":"black","transform":"scale(.7,1) scale(.95)"},{"type":"square-rounded","color":"white","transform":"scale(.7,1) scale(.90)"},{"type":"content-4","color":"black","content":"ONE","transform":"scale(1,1.2) translate(0,-90%)"},{"type":"content-4","color":"black","content":"WAY","transform":"scale(1,1.2)"},{"type":"US-arrow-oneway","color":"black","transform":"scale(.5) translate(0,45%) rotate(-90deg)"}]},"regulatory_one_way_large_right":{"category":"regulatory","name":"one way large right","elements":[{"type":"square-rounded","color":"white","transform":"scale(.7,1)"},{"type":"square-rounded","color":"black","transform":"scale(.7,1) scale(.95)"},{"type":"square-rounded","color":"white","transform":"scale(.7,1) scale(.90)"},{"type":"content-4","color":"black","content":"ONE","transform":"scale(1,1.2) translate(0,-90%)"},{"type":"content-4","color":"black","content":"WAY","transform":"scale(1,1.2)"},{"type":"US-arrow-oneway","color":"black","transform":"scale(.5) translate(0,45%) rotate(90deg)"}]},"warning_single_2_reverse_curve":{"category":"warning","name":"single 2 reverse curve","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"orange","transform":"scale(.95) {square_to_diamond}"},{"type":"single-2-reverse-curve","color":"black"}]},"warning_double_2_reverse_curve":{"category":"warning","name":"double 2 reverse curve","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"orange","transform":"scale(.95) {square_to_diamond}"},{"type":"single-2-reverse-curve","color":"black","transform":"{fit_diamond} translate(-9%)"},{"type":"single-2-reverse-curve","color":"black","transform":"{fit_diamond} translate(9%)"}]},"warning_triple_2_reverse_curve":{"category":"warning","name":"triple 2 reverse curve","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"orange","transform":"scale(.95) {square_to_diamond}"},{"type":"single-2-reverse-curve","color":"black","transform":"{fit_diamond} translate(-18%)"},{"type":"single-2-reverse-curve","color":"black","transform":"{fit_diamond}"},{"type":"single-2-reverse-curve","color":"black","transform":"{fit_diamond} translate(18%)"}]},"school_school":{"category":"school","name":"school","elements":[{"type":"school","color":"black"},{"type":"school","color":"fluogreen","transform":"scale(.95)"},{"type":"children","color":"black"}]},"school_obsolete":{"category":"school","name":"school","elements":[{"type":"school","color":"black"},{"type":"school","color":"yellow","transform":"scale(.95)"},{"type":"children","color":"black"}]},"warning_turn_left_curve":{"category":"warning","name":"turn left curve","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-l-curve","color":"black","transform":"{fit_diamond}"}]},"warning_turn_right_curve":{"category":"warning","name":"turn right curve","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-l-curve","color":"black","transform":"{fit_diamond} scale(-1,1)"}]},"warning_turn_left_curve_speed":{"category":"warning","name":"turn left curve with speed","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-l-curve","color":"black","transform":"{fit_diamond}"},{"type":"turn-curve-speed","color":"black","transform":"{fit_diamond} scale(-1,1)"}]},"warning_turn_right_curve_speed":{"category":"warning","name":"turn right curve with speed","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-l-curve","color":"black","transform":"{fit_diamond} scale(-1,1)"},{"type":"turn-curve-speed","color":"black","transform":"{fit_diamond}"}]},"warning_pretzel_loop":{"category":"warning","name":"pretzel_loop","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"pretzel-loop","color":"black","transform":"{fit_diamond}"}]}} \ No newline at end of file From 3947053bd712f06626ddcb2759aa3715e1c8fba2 Mon Sep 17 00:00:00 2001 From: peterneubauer Date: Mon, 1 Jun 2015 11:37:12 +0200 Subject: [PATCH 06/38] -testing to fix initial sign render problem --- js/id/renderer/mapillary_trafficsign_layer.js | 22 ++++++++----------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/js/id/renderer/mapillary_trafficsign_layer.js b/js/id/renderer/mapillary_trafficsign_layer.js index 041f7567d..081862036 100644 --- a/js/id/renderer/mapillary_trafficsign_layer.js +++ b/js/id/renderer/mapillary_trafficsign_layer.js @@ -1,18 +1,13 @@ iD.MapillarySignsLayer = function (context) { var enable = false, + initiated = false, currentImage, - svg, image_preview_div, request, eu_signs, us_signs; - request = d3.json('/europe.json', + svg, image_preview_div, request, signs_defs; + request = d3.json('/css/traffico-release-0.1.5/global-patched.json', function (error, data) { console.error(arguments); if (error) return; - eu_signs=data; - }); - request = d3.json('/europe.json', - function (error, data) { - console.error(arguments); - if (error) return; - us_signs=data; + signs_defs=data; }); function show(image) { svg.selectAll('.node') @@ -31,12 +26,9 @@ iD.MapillarySignsLayer = function (context) { } function hide() { - currentImage = undefined; - svg.selectAll('.node') .classed('selected', false); - image_preview_div.classed('hidden', true); } @@ -131,7 +123,7 @@ iD.MapillarySignsLayer = function (context) { .attr('class', 'node') .append('xhtml:body') .html(function (d) { - var sign_html = eu_signs[d.signs[0]['type']]; + var sign_html = signs_defs[d.signs[0]['type']]; return sign_html; }); foreignObjects.on('click', function (data) { @@ -171,6 +163,10 @@ iD.MapillarySignsLayer = function (context) { foreignObjects.exit() .remove(); console.log(images); + if(!initiated) { + initiated = true; + context.map().zoomOut(); + } }); } From 7c6101f71fa7028bbfc0b5233e3d6edf4235e375 Mon Sep 17 00:00:00 2001 From: peterneubauer Date: Mon, 1 Jun 2015 12:55:07 +0200 Subject: [PATCH 07/38] adding right stylesheet --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 622a52097..83009e4c9 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@ iD - + From 1cf08ec49db474f75ed9b805945fca0d46ec1440 Mon Sep 17 00:00:00 2001 From: peterneubauer Date: Mon, 1 Jun 2015 12:58:25 +0200 Subject: [PATCH 08/38] removing traffico --- css/traffico/LICENSE | 22 - css/traffico/README.md | 6 - css/traffico/at.json | 1 - css/traffico/be.json | 1 - css/traffico/bower.json | 17 - css/traffico/cz.json | 1 - css/traffico/de.json | 1 - css/traffico/dk.json | 1 - css/traffico/ee.json | 1 - css/traffico/es.json | 1 - css/traffico/europe.json | 1 - css/traffico/fi.json | 1 - css/traffico/fonts/traffico-preview.html | 1913 ----------------- css/traffico/fonts/traffico.eot | Bin 26174 -> 0 bytes css/traffico/fonts/traffico.svg | 826 ------- css/traffico/fonts/traffico.ttf | Bin 25996 -> 0 bytes css/traffico/fonts/traffico.woff | Bin 16532 -> 0 bytes css/traffico/fr.json | 1 - css/traffico/gr.json | 1 - css/traffico/hu.json | 1 - css/traffico/it.json | 1 - css/traffico/lt.json | 1 - css/traffico/lu.json | 1 - css/traffico/lv.json | 1 - css/traffico/nl.json | 1 - css/traffico/pl.json | 1 - css/traffico/se.json | 1 - css/traffico/si.json | 1 - css/traffico/sk.json | 1 - css/traffico/stylesheets/traffico.css | 365 ---- css/traffico/transformations.json | 1 - css/traffico/uk.json | 1 - css/traffico/us.json | 1 - js/id/renderer/mapillary_trafficsign_layer.js | 2 +- 34 files changed, 1 insertion(+), 3174 deletions(-) delete mode 100755 css/traffico/LICENSE delete mode 100755 css/traffico/README.md delete mode 100755 css/traffico/at.json delete mode 100755 css/traffico/be.json delete mode 100755 css/traffico/bower.json delete mode 100755 css/traffico/cz.json delete mode 100755 css/traffico/de.json delete mode 100755 css/traffico/dk.json delete mode 100755 css/traffico/ee.json delete mode 100755 css/traffico/es.json delete mode 100755 css/traffico/europe.json delete mode 100755 css/traffico/fi.json delete mode 100755 css/traffico/fonts/traffico-preview.html delete mode 100755 css/traffico/fonts/traffico.eot delete mode 100755 css/traffico/fonts/traffico.svg delete mode 100755 css/traffico/fonts/traffico.ttf delete mode 100755 css/traffico/fonts/traffico.woff delete mode 100755 css/traffico/fr.json delete mode 100755 css/traffico/gr.json delete mode 100755 css/traffico/hu.json delete mode 100755 css/traffico/it.json delete mode 100755 css/traffico/lt.json delete mode 100755 css/traffico/lu.json delete mode 100755 css/traffico/lv.json delete mode 100755 css/traffico/nl.json delete mode 100755 css/traffico/pl.json delete mode 100755 css/traffico/se.json delete mode 100755 css/traffico/si.json delete mode 100755 css/traffico/sk.json delete mode 100755 css/traffico/stylesheets/traffico.css delete mode 100755 css/traffico/transformations.json delete mode 100755 css/traffico/uk.json delete mode 100755 css/traffico/us.json diff --git a/css/traffico/LICENSE b/css/traffico/LICENSE deleted file mode 100755 index e32f5dc60..000000000 --- a/css/traffico/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 mapillary - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - diff --git a/css/traffico/README.md b/css/traffico/README.md deleted file mode 100755 index 9aa1239f0..000000000 --- a/css/traffico/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# traffico-release -Release repository for Traffico, an Open Source Traffic Sign Font. - -Source code: [mapillary/traffico](https://github.com/mapillary/traffico) - -License: MIT diff --git a/css/traffico/at.json b/css/traffico/at.json deleted file mode 100755 index c98868d2a..000000000 --- a/css/traffico/at.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_at":{"category":"information","name":"European border crossing into Austria","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"ÖSTERREICH","transform":"scale(.75)"}]}} \ No newline at end of file diff --git a/css/traffico/be.json b/css/traffico/be.json deleted file mode 100755 index c1dc1db9a..000000000 --- a/css/traffico/be.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_be_nl":{"category":"information","name":"European border crossing into Belgium from the Netherlands","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"België"}]},"information_border_be_fr":{"category":"information","name":"European border crossing into Belgium from France","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Belgique"}]}} \ No newline at end of file diff --git a/css/traffico/bower.json b/css/traffico/bower.json deleted file mode 100755 index 3a3cd9f42..000000000 --- a/css/traffico/bower.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "Traffico", - "version": "0.1.3", - "homepage": "https://github.com/mapillary/traffico", - "authors": [ - "Kamil Nikel " - ], - "description": "An Open Source Traffic Sign Font", - "main": "stylesheets/traffico.css", - "keywords": [ - "traffic", - "signs", - "road", - "font" - ], - "license": "MIT" -} diff --git a/css/traffico/cz.json b/css/traffico/cz.json deleted file mode 100755 index 2b5875bd0..000000000 --- a/css/traffico/cz.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_cz":{"category":"information","name":"European border crossing into Czech Republic","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"České","transform":"translate(0,-50%)"},{"type":"content-5","color":"white","content":"republika","transform":"translate(0,50%)"}]}} \ No newline at end of file diff --git a/css/traffico/de.json b/css/traffico/de.json deleted file mode 100755 index 0869b3dad..000000000 --- a/css/traffico/de.json +++ /dev/null @@ -1 +0,0 @@ -{"danger_level_crossing":{"category":"danger","name":"level crossing","elements":[{"type":"square-angular","color":"black","transform":"rotate(30deg) scale(.15,1)"},{"type":"square-angular","color":"black","transform":"rotate(-30deg) scale(.15,1)"},{"type":"square-angular","color":"red","transform":"rotate(30deg) scale(.14,.99)"},{"type":"square-angular","color":"red","transform":"rotate(-30deg) scale(.14,.99)"},{"type":"square-angular","color":"white","transform":"rotate(30deg) scale(.14,.6)"},{"type":"square-angular","color":"white","transform":"rotate(-30deg) scale(.14,.6)"}]},"danger_railway_crossing_unsecured":{"category":"danger","name":"unsecured railway crossing","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"train-electric","color":"black","transform":"scale(.4) translate(10%,40%)"}]},"information_bus_stop":{"category":"information","name":"bus stop (also used for tram)","elements":[{"type":"circle-bg","color":"yellow"},{"type":"circle-o","color":"green"},{"type":"h","color":"green","transform":"{fit_border_circle}"}]},"information_border_de":{"category":"information","name":"European border crossing into Germany","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Bundes-","transform":"scale(.9) translate(0,-130%)"},{"type":"content-5","color":"white","content":"republik","transform":"scale(.9) translate(0,-30%)"},{"type":"content-5","color":"white","content":"Deutschland","transform":"scale(.9) translate(0,70%)"}]},"priority_priority_road_end":{"category":"priority","name":"end of priority road","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"white","transform":"{square_to_diamond} scale(.98)"},{"type":"square-rounded","color":"yellow","transform":"scale(.6) {square_to_diamond}"},{"type":"square-angular","color":"black","transform":"{square_to_diamond} scale(.05,1)"},{"type":"square-angular","color":"black","transform":"{square_to_diamond} scale(.05,1) translate(150%,0)"},{"type":"square-angular","color":"black","transform":"{square_to_diamond} scale(.05,1) translate(-150%,0)"}]},"prohibitory_end_of_limits":{"category":"prohibitory","name":"end of all speed and passing limits","elements":[{"type":"circle-bg","color":"black"},{"type":"circle-bg","color":"white","transform":"scale(.95)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.025,.99)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.025,.98) translate(150%,0)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.025,.97) translate(300%,0)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.025,.98) translate(-150%,0)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.025,.97) translate(-300%,0)"}]},"prohibitory_low_emission_zone":{"category":"prohibitory","name":"low-emission zone","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95)"},{"type":"circle-bg","color":"red","transform":"translate(0,-8%) scale(.7)"},{"type":"circle-bg","color":"white","transform":"translate(0,-8%) scale(.7) {fit_border_circle}"},{"type":"content-4","content":"Umwelt","color":"black","transform":"translate(0,-50%) scale(.8) {fit_border_circle}"},{"type":"content-4","content":"ZONE","color":"black","transform":"translate(0,150%) scale(.8)"}]},"prohibitory_low_emission_zone_end":{"category":"prohibitory","name":"end of low-emission zone","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95)"},{"type":"circle-bg","color":"grey","transform":"translate(0,-8%) scale(.7)"},{"type":"circle-bg","color":"white","transform":"translate(0,-8%) scale(.7) {fit_border_circle}"},{"type":"content-4","content":"Umwelt","color":"grey","transform":"translate(0,-50%) scale(.8) {fit_border_circle}"},{"type":"content-4","content":"ZONE","color":"grey","transform":"translate(0,150%) scale(.8)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.02,1.35)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.02,1.3) translate(-150%, 0)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.02,1.3) translate(150%, 0)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.02,1.25) translate(-300%, 0)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.02,1.25) translate(300%, 0)"}]},"supplementary_destination":{"category":"supplementary","name":"destination traffic excluded","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"content-4","color":"black","content":"Anlieger","transform":"translate(0,-45%) scale(.8)"},{"type":"content-4","color":"black","content":"frei","transform":"translate(0,45%) scale(.8)"}]},"supplementary_disabled":{"category":"supplementary","name":"for disabled people","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"disabled-p","color":"black","transform":"scale(.6)"}]},"supplementary_glaze":{"category":"supplementary","name":"for disabled people","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"snowflake","color":"black","transform":"scale(.8)"}]},"supplementary_left_pointing":{"category":"supplementary","name":"left pointing","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"DE-arrow-up","color":"black","transform":"scale(.6) rotate(-90deg)"}]},"supplementary_both_directions":{"category":"supplementary","name":"both directions","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"DE-arrow-up","color":"black","transform":"translate(-15%,0) scale(.5) rotate(180deg)"},{"type":"DE-arrow-up","color":"black","transform":"translate(15%,0) scale(.5)"}]},"supplementary_pedestrians_use_opposite_sidewalk":{"category":"supplementary","name":"pedestrians should use opposite sidewalk","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"DE-arrow-up","color":"black","transform":"translate(-20%,0) scale(.5) rotate(-90deg)"},{"type":"pedestrians","color":"black","transform":"translate(25%,0) scale(.6)"}]},"supplementary_pedestrians_use_opposite_sidewalk2":{"category":"supplementary","name":"pedestrians should use opposite sidewalk","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"DE-arrow-up","color":"black","transform":"translate(20%,0) scale(.5) rotate(90deg)"},{"type":"pedestrians","color":"black","transform":"translate(-25%,0) scale(.6)"}]},"supplementary_railway_only":{"category":"supplementary","name":"railway only","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"train-electric","color":"black","transform":"scale(.45)"}]},"supplementary_right_pointing":{"category":"supplementary","name":"right pointing","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"DE-arrow-up","color":"black","transform":"scale(.6) rotate(90deg)"}]}} \ No newline at end of file diff --git a/css/traffico/dk.json b/css/traffico/dk.json deleted file mode 100755 index 9350d5bb0..000000000 --- a/css/traffico/dk.json +++ /dev/null @@ -1 +0,0 @@ -{"danger_level_crossing":{"category":"danger","name":"level crossing","elements":[{"type":"square-angular","color":"red","transform":"rotate(60deg) scale(.2,1)"},{"type":"square-angular","color":"red","transform":"rotate(-60deg) scale(.2,1)"},{"type":"square-angular","color":"white","transform":"rotate(60deg) scale(.1,.5) translate(50%,50%)"},{"type":"square-angular","color":"white","transform":"rotate(-60deg) scale(.1,.5) translate(-50%,50%)"},{"type":"square-angular","color":"white","transform":"rotate(60deg) scale(.1,.5) translate(-50%,-50%)"},{"type":"square-angular","color":"white","transform":"rotate(-60deg) scale(.1,.5) translate(50%,-50%)"}]},"information_border_dk":{"category":"information","name":"European border crossing into Denmark","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Danmark"}]}} \ No newline at end of file diff --git a/css/traffico/ee.json b/css/traffico/ee.json deleted file mode 100755 index cd83633da..000000000 --- a/css/traffico/ee.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_ee":{"category":"information","name":"European border crossing into Estonia","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"EESTI"}]}} \ No newline at end of file diff --git a/css/traffico/es.json b/css/traffico/es.json deleted file mode 100755 index 3edf42fd6..000000000 --- a/css/traffico/es.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_es":{"category":"information","name":"European border crossing into Spain","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"ESPAÑA"}]}} \ No newline at end of file diff --git a/css/traffico/europe.json b/css/traffico/europe.json deleted file mode 100755 index 85e689ce9..000000000 --- a/css/traffico/europe.json +++ /dev/null @@ -1 +0,0 @@ -{"danger_ascent":{"category":"danger","name":"steep ascent","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"descent","color":"black","transform":"{inner_triangle} scale(-1,1)"},{"type":"incline_value","content":"10%","color":"black","transform":"translate(0,-25%) {center2tri} scale(.4) rotate(-30deg)"}]},"danger_bend_first_left":{"category":"danger","name":"bend first left","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"d-curve-l","color":"black","transform":"{center2tri} scale(.6)"}]},"danger_bend_first_right":{"category":"danger","name":"bend first right","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"d-curve-l","color":"black","transform":"{center2tri} scale(-.6,.6)"}]},"danger_bend_left":{"category":"danger","name":"bend left","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"turn-l","color":"black","transform":"{center2tri} scale(.6)"}]},"danger_bend_right":{"category":"danger","name":"bend right","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"turn-l","color":"black","transform":"{center2tri} scale(-.6,.6)"}]},"danger_construction":{"category":"danger","name":"construction/road works","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"roadworks","color":"black","transform":"scale(.7) translate(0,20%)"}]},"danger_contraflow":{"category":"danger","name":"contraflow","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"DE-arrow-up","color":"black","transform":"{center2tri} scale(.35) translate(-25%,5%) rotate(180deg)"},{"type":"DE-arrow-up","color":"black","transform":"{center2tri} scale(.35) translate(25%,-5%)"}]},"danger_crossroad":{"category":"danger","name":"crossroad with priority to the right ahead","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"square-angular","color":"black","transform":"{center2tri} rotate(45deg) scale(.06,.32)"},{"type":"square-angular","color":"black","transform":"{center2tri} rotate(-45deg) scale(.06,.32)"}]},"danger_cycle_crossing":{"category":"danger","name":"cycle crossing","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"bicycle","color":"black","transform":"scale(.65) translate(0,25%)"}]},"danger_danger":{"category":"danger","name":"danger","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"exclamation","color":"black","transform":"scale(.65) {center2tri}"}]},"danger_danger_tmp":{"category":"danger","name":"danger (temporary)","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"yellow","transform":"{inner_triangle}"},{"type":"exclamation","color":"black","transform":"scale(.65) {center2tri}"}]},"danger_descent":{"category":"danger","name":"steep descent","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"descent","color":"black","transform":"{inner_triangle}"},{"type":"incline_value","content":"10%","color":"black","transform":"translate(0,-25%) {center2tri} scale(.4) rotate(30deg)"}]},"danger_domestic_animals":{"category":"danger","name":"domestic animals","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"domestic-animal","color":"black","transform":"{center2tri} translate(-6%,4%) scale(.25)"}]},"danger_level_crossing":{"category":"danger","name":"level crossing","elements":[{"type":"level-crossing","color":"red"},{"type":"level-crossing","color":"red","transform":"scale(-1,1)"},{"type":"square-angular","color":"white","transform":"rotate(60deg) scale(.05,1)"},{"type":"square-angular","color":"white","transform":"rotate(-60deg) scale(.05,1)"}]},"danger_pedestrians":{"category":"danger","name":"pedestrians","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"pedestrian","color":"black","transform":"scale(.7) {center2tri}"}]},"danger_pedestrian_crossing":{"category":"danger","name":"pedestrian crossing","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"pedestrian-crossing","color":"black","transform":"translate(0,2%)"}]},"danger_quayside_or_ferry_berth":{"category":"danger","name":"quayside or ferry berth","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"cliff","color":"black","transform":"{inner_triangle}"}]},"danger_railway_crossing_secured":{"category":"danger","name":"secured railway crossing","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"railway-xing-secured","color":"black","transform":"{center2tri} translate(0,4%) scale(.35)"}]},"danger_railway_crossing_unsecured":{"category":"danger","name":"unsecured railway crossing","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"railway-xing-unsecured","color":"black","transform":"translate(0,13%) scale(.4)"}]},"danger_road_narrows":{"category":"danger","name":"road narrows","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"narrow-road-both","color":"black","transform":"{center2tri} scale(.6)"}]},"danger_road_narrows_left":{"category":"danger","name":"road narrows left","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"narrow-road-l","color":"black","transform":"{center2tri} scale(.6)"}]},"danger_road_narrows_right":{"category":"danger","name":"road narrows right","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"narrow-road-l","color":"black","transform":"{center2tri} scale(-.6,.6)"}]},"danger_roundabout":{"category":"danger","name":"roundabout","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"roundabout","color":"black","transform":"{center2tri} scale(.55)"}]},"danger_school_crossing":{"category":"danger","name":"school crossing","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"children","color":"black","transform":"{center2tri} scale(.75)"}]},"danger_slippery_road":{"category":"danger","name":"slippery road","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"slippery-road","color":"black","transform":"{center2tri} scale(.75)"}]},"danger_snow":{"category":"danger","name":"danger snow","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"snowflake","color":"black","transform":"{center2tri} scale(.7)"}]},"danger_traffic_signal":{"category":"danger","name":"traffic signal","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"circle-bg","color":"red","transform":"{center2tri} translate(0,-20%) scale(.13)"},{"type":"circle-bg","color":"yellow","transform":"{center2tri} translate(0,-5%) scale(.13)"},{"type":"circle-bg","color":"green","transform":"{center2tri} translate(0,10%) scale(.13)"}]},"danger_uneven_road":{"category":"danger","name":"uneven road","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"bumps","color":"black","transform":"{center2tri} scale(.45)"}]},"danger_hump":{"category":"danger","name":"(speed) hump","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"bump","color":"black","transform":"{center2tri} scale(.45)"}]},"danger_wild_animals":{"category":"danger","name":"wild animals crossing","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"wild-animal","color":"black","transform":"{center2tri} scale(.7)"}]},"danger_low_flying_aircraft":{"category":"danger","name":"low flying aircraft","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"airplane","color":"black","transform":"{center2tri} scale(.4)"}]},"danger_strong_sidewind":{"category":"danger","name":"strong sidewind","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"windbag","color":"black","transform":"{center2tri} scale(.3)"}]},"information_bus_stop":{"category":"information","name":"bus stop","elements":[{"type":"square-rounded","color":"blue"},{"type":"square-rounded","color":"white","transform":"scale(.7)"},{"type":"bus","color":"black","transform":"scale(.7)"}]},"information_deadend":{"category":"information","name":"deadend","elements":[{"type":"square-rounded","color":"blue"},{"type":"square-angular","color":"white","transform":"translate(0,20%) scale(.15,.6)"},{"type":"square-angular","color":"red","transform":"translate(0,-15%) scale(.5,.15)"}]},"information_disabled_parking":{"category":"information","name":"disabled parking","elements":[{"type":"square-rounded","color":"blue"},{"type":"disabled-p","color":"white"}]},"information_first_aid":{"category":"information","name":"first aid","elements":[{"type":"square-rounded","color":"blue"},{"type":"square-rounded","color":"white","transform":"scale(.7)"},{"type":"square-angular","color":"red","transform":"scale(.15,.5)"},{"type":"square-angular","color":"red","transform":"scale(.5,.15)"}]},"information_limited_access_road":{"category":"information","name":"limited-access road","elements":[{"type":"square-rounded","color":"blue"},{"type":"car","color":"white","transform":"scale(1.5)"}]},"information_parking":{"category":"information","name":"parking","elements":[{"type":"square-rounded","color":"blue"},{"type":"parking","color":"white"}]},"information_parking_left":{"category":"information","name":"parking (left of this sign)","elements":[{"type":"square-rounded","color":"blue"},{"type":"parking","color":"white"},{"type":"DE-arrow-up","color":"white","transform":"translate(25%,30%) rotate(-90deg) scale(.33)"}]},"information_parking_right":{"category":"information","name":"parking (right of this sign)","elements":[{"type":"square-rounded","color":"blue"},{"type":"parking","color":"white"},{"type":"DE-arrow-up","color":"white","transform":"translate(25%,30%) rotate(90deg) scale(.33)"}]},"information_pedestrian_crossing":{"category":"information","name":"pedestrian crossing","elements":[{"type":"square-rounded","color":"blue"},{"type":"tri-angular","color":"white","transform":"scale(.8)"},{"type":"pedestrian-crossing","color":"black"}]},"mandatory_bicycle_pedestrian_dual_track":{"category":"mandatory","name":"bicycle/pedestrian dual track","elements":[{"type":"circle-bg","color":"blue"},{"type":"bicycle","color":"white","transform":"{right_half}"},{"type":"footpath","color":"white","transform":"{left_half}"},{"type":"circle-separator","color":"white"}]},"mandatory_cycle_track":{"category":"mandatory","name":"cycle track","elements":[{"type":"circle-bg","color":"blue"},{"type":"bicycle","color":"white"}]},"mandatory_equestrian_track":{"category":"mandatory","name":"equestrian track","elements":[{"type":"circle-bg","color":"blue"},{"type":"equestrian","color":"white","transform":"scale(.7)"}]},"mandatory_footpath":{"category":"mandatory","name":"footpath","elements":[{"type":"circle-bg","color":"blue"},{"type":"footpath","color":"white"}]},"mandatory_go_left":{"category":"mandatory","name":"go left","elements":[{"type":"circle-bg","color":"blue"},{"type":"DE-arrow-up","color":"white","transform":"rotate(-90deg)"}]},"mandatory_go_left_or_right":{"category":"mandatory","name":"go left or right","elements":[{"type":"circle-bg","color":"blue"},{"type":"DE-arrow-up","color":"white","transform":"translate(0,-15%) rotate(135deg) scale(.6) translate(0,-32%)"},{"type":"DE-arrow-up","color":"white","transform":"translate(0,-15%) rotate(-135deg) scale(.6) translate(0,-32%)"}]},"mandatory_go_right":{"category":"mandatory","name":"go right","elements":[{"type":"circle-bg","color":"blue"},{"type":"DE-arrow-up","color":"white","transform":"rotate(90deg)"}]},"mandatory_go_straight":{"category":"mandatory","name":"go straight","elements":[{"type":"circle-bg","color":"blue"},{"type":"DE-arrow-up","color":"white"}]},"mandatory_keep_left":{"category":"mandatory","name":"keep left","elements":[{"type":"circle-bg","color":"blue"},{"type":"DE-arrow-up","color":"white","transform":"rotate(-135deg)"}]},"mandatory_keep_right":{"category":"mandatory","name":"keep right","elements":[{"type":"circle-bg","color":"blue"},{"type":"DE-arrow-up","color":"white","transform":"rotate(135deg)"}]},"mandatory_minimum_speed":{"category":"mandatory","name":"minimum speed","elements":[{"type":"circle-bg","color":"blue"},{"type":"speed_value","color":"white"}]},"mandatory_minimum_speed_end":{"category":"mandatory","name":"end of minimum speed limit","elements":[{"type":"circle-bg","color":"blue"},{"type":"speed_value","color":"white"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(45deg)"}]},"mandatory_pedestrian_bicycle_dual_track":{"category":"mandatory","name":"pedestrian/bicycle dual track","elements":[{"type":"circle-bg","color":"blue"},{"type":"bicycle","color":"white","transform":"{left_half}"},{"type":"footpath","color":"white","transform":"{right_half}"},{"type":"circle-separator","color":"white"}]},"mandatory_pedestrian_cycle_track":{"category":"mandatory","name":"pedestrian cycle track","elements":[{"type":"circle-bg","color":"blue"},{"type":"footpath","color":"white","transform":"{top_half}"},{"type":"bicycle","color":"white","transform":"{bottom_half}"},{"type":"circle-separator","color":"white","transform":"rotate(90deg)"}]},"mandatory_roundabout":{"category":"mandatory","name":"roundabout","elements":[{"type":"circle-bg","color":"blue"},{"type":"roundabout","color":"white","transform":"scale(1.25)"}]},"mandatory_turn_left":{"category":"mandatory","name":"turn left","elements":[{"type":"circle-bg","color":"blue"},{"type":"arrow-l","color":"white"}]},"mandatory_turn_left_or_straight":{"category":"mandatory","name":"turn left or straight","elements":[{"type":"circle-bg","color":"blue"},{"type":"arrow-s-l","color":"white"}]},"mandatory_turn_right":{"category":"mandatory","name":"turn right","elements":[{"type":"circle-bg","color":"blue"},{"type":"arrow-l","color":"white","transform":"scale(-1,1)"}]},"mandatory_turn_right_or_straight":{"category":"mandatory","name":"turn right or straight","elements":[{"type":"circle-bg","color":"blue"},{"type":"arrow-s-l","color":"white","transform":"scale(-1,1)"}]},"other_no_entry":{"category":"other","name":"no entry, one way street","elements":[{"type":"circle-bg","color":"red"},{"type":"square-angular","color":"white","transform":"scale(.92,.16)"}]},"other_entry":{"category":"other","name":"entry, one way street","elements":[{"type":"square-rounded","color":"blue"},{"type":"arrow-oneway","color":"white","transform":"scale(.75)"}]},"priority_give_way":{"category":"priority","name":"give way","elements":[{"type":"tri-rounded","color":"red","transform":"rotate(180deg)"},{"type":"tri-angular","color":"white","transform":"{tri2center} scale(.7) {center2tri} rotate(180deg)"}]},"priority_narrow":{"category":"priority","name":"priority at narrow location","elements":[{"type":"square-rounded","color":"blue"},{"type":"DE-arrow-up","color":"red","transform":"scale(.8) translate(-25%,5%) rotate(180deg)"},{"type":"DE-arrow-up","color":"white","transform":"scale(.8) translate(25%,-5%)"}]},"priority_narrow2":{"category":"priority","name":"no priority at narrow location","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"DE-arrow-up","color":"black","transform":"{fit_border_circle} scale(.7) translate(-25%,5%) rotate(180deg)"},{"type":"DE-arrow-up","color":"red","transform":"{fit_border_circle} scale(.7) translate(25%,-5%)"}]},"priority_next_intersection":{"category":"priority","name":"priority at next intersection","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"right-of-way","color":"black","transform":"scale(.7) {center2tri}"}]},"priority_next_intersection_left":{"category":"priority","name":"priority at next intersection on the left","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"right-of-way-l fit","color":"black","transform":"scale(.7) {center2tri}"}]},"priority_next_intersection_right":{"category":"priority","name":"priority at next intersection on the right","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"right-of-way-l fit","color":"black","transform":"scale(.7) {center2tri} scale(-1,1)"}]},"priority_priority_road":{"category":"priority","name":"priority_road","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"white","transform":"scale(.98) {square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.6) {square_to_diamond}"}]},"priority_priority_road_end":{"category":"priority","name":"end of priority road","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"white","transform":"scale(.98) {square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.6) {square_to_diamond}"},{"type":"square-angular","color":"black","transform":"{square_to_diamond} scale(.2,1)"}]},"priority_stop":{"category":"priority","name":"stop","elements":[{"type":"octagon","color":"red"},{"type":"stop","color":"white"}]},"prohibitory_pedestrians":{"category":"prohibitory","name":"pedestrians prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"pedestrian","color":"black","transform":"{fit_border_circle}"}]},"prohibitory_pedestrians_and_bicycles":{"category":"prohibitory","name":"pedestrians and bicycles prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"footpath","color":"black","transform":"{fit_border_circle} {top_half}"},{"type":"bicycle","color":"black","transform":"{fit_border_circle} {bottom_half}"}]},"prohibitory_bicycles":{"category":"prohibitory","name":"cycling prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"bicycle","color":"black","transform":"{fit_border_circle}"}]},"prohibitory_mopeds_and_bicycles":{"category":"prohibitory","name":"mopeds and bicycles prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"moped","color":"black","transform":"{fit_border_circle} {top_half} scale(.7)"},{"type":"bicycle","color":"black","transform":"{fit_border_circle} {bottom_half}"}]},"prohibitory_moped":{"category":"prohibitory","name":"mopeds prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"moped","color":"black","transform":"{fit_border_circle} scale(.7)"}]},"prohibitory_motorcycles":{"category":"prohibitory","name":"motorcycles prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"motorbike","color":"black","transform":"{fit_border_circle}"}]},"prohibitory_motor_vehicles":{"category":"prohibitory","name":"motor vehicles prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"motorbike","color":"black","transform":"{fit_border_circle} {top_half}"},{"type":"car","color":"black","transform":"{fit_border_circle} {bottom_half}"},{"type":"circle-separator","color":"black","transform":"rotate(90deg) {fit_border_circle}"}]},"prohibitory_slow_vehicles":{"category":"prohibitory","name":"slow motorized vehicles prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"tractor","color":"black","transform":"{fit_border_circle} scale(.7)"}]},"prohibitory_trailers":{"category":"prohibitory","name":"no trailers allowed","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"trailer","color":"black","transform":"{fit_border_circle} scale(.8)"}]},"prohibitory_buses":{"category":"prohibitory","name":"no buses","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"bus","color":"black","transform":"{fit_border_circle}"}]},"prohibitory_trucks":{"category":"prohibitory","name":"no trucks","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"truck","color":"black"}]},"prohibitory_trucks_bar":{"category":"prohibitory","name":"no trucks","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"truck","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(45deg)"}]},"prohibitory_trucks_and_buses":{"category":"prohibitory","name":"buses and trucks prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"truck","color":"black","transform":"{fit_border_circle} {top_half}"},{"type":"bus","color":"black","transform":"{fit_border_circle} {bottom_half}"},{"type":"circle-separator","color":"black","transform":"rotate(90deg) {fit_border_circle}"}]},"prohibitory_no_parking":{"category":"prohibitory","name":"no_parking","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"prohibitory_no_parking_or_stopping":{"category":"prohibitory","name":"no parking or stopping","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(45deg)"}]},"prohibitory_no_parking_or_stopping_left":{"category":"prohibitory","name":"no parking or stopping","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(45deg)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(-90deg) scale(.3) translate(95%)"}]},"prohibitory_no_parking_or_stopping_left_and_right":{"category":"prohibitory","name":"no parking or stopping","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(45deg)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(-90deg) scale(.3) translate(95%)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(90deg) scale(.3) translate(95%)"}]},"prohibitory_no_parking_or_stopping_right":{"category":"prohibitory","name":"no parking or stopping","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(45deg)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(90deg) scale(.3) translate(95%)"}]},"prohibitory_no_parking_left":{"category":"prohibitory","name":"no_parking","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(90deg) scale(.3) translate(95%)"}]},"prohibitory_no_parking_left_and_right":{"category":"prohibitory","name":"no_parking","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(90deg) scale(.3) translate(95%)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(-90deg) scale(.3) translate(95%)"}]},"prohibitory_no_parking_right":{"category":"prohibitory","name":"no_parking","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(-90deg) scale(.3) translate(95%)"}]},"prohibitory_no_traffic_both_ways":{"category":"prohibitory","name":"no traffic both ways","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"}]},"prohibitory_no_turn_left":{"category":"prohibitory","name":"no turn left","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"turn-l","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(45deg)"}]},"prohibitory_no_turn_right":{"category":"prohibitory","name":"no turn right","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"turn-l","color":"black","transform":"scale(-1,1)"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"prohibitory_no_u_turn":{"category":"prohibitory","name":"no u-turn","elements":[{"type":"circle-bg","color":"red"},{"type":"circle-bg","color":"white","transform":"{fit_border_circle}"},{"type":"turnaround","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-55deg)"},{"type":"turnaround2","color":"black"}]},"prohibitory_overtaking":{"category":"prohibitory","name":"no overtaking","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"car-left","color":"red"},{"type":"car-right","color":"black"}]},"prohibitory_overtaking_trucks":{"category":"prohibitory","name":"no overtaking trucks","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"lorry-left","color":"red"},{"type":"car-right","color":"black"}]},"prohibitory_speed_limit":{"category":"prohibitory","name":"speed limit","elements":[{"type":"circle-bg","color":"red"},{"type":"circle-bg","color":"white","transform":"{fit_border_circle}"},{"type":"speed_value","color":"black"}]},"prohibitory_speed_limit_zone":{"category":"prohibitory","name":"speed limit","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95)"},{"type":"circle-bg","color":"red","transform":"translate(0,-10%) scale(.65)"},{"type":"circle-bg","color":"white","transform":"translate(0,-10%) scale(.65) {fit_border_circle}"},{"type":"speed_zone_value","color":"black","transform":"translate(0,-30%) scale(.7)"},{"type":"content-4","content":"ZONE","color":"black","transform":"translate(0,150%) scale(.8)"}]},"prohibitory_vehicle_height_limit":{"category":"prohibitory","name":"vehicle_height_limit","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"height","color":"black"},{"type":"height_value","color":"black"}]},"prohibitory_vehicle_weight_limit":{"category":"prohibitory","name":"vehicle weight limit","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"weight_value","color":"black"}]},"prohibitory_vehicle_width_limit":{"category":"prohibitory","name":"vehicle_width_limit","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"height","color":"black","transform":"rotate(90deg)"},{"type":"width_value","color":"black"}]},"prohibitory_vehicles_with_dangerous_goods":{"category":"prohibitory","name":"no vehicles with dangerous goods","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"square-rounded","color":"orange","transform":"scale(.25) translate(0,-25%)"},{"type":"lorry","color":"black"}]},"supplementary_priority_road_bends_left_3way_1":{"category":"supplementary","name":"priority road bends to the left at a 3-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,-30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(-.85,.85)"}]},"supplementary_priority_road_bends_left_3way_2":{"category":"supplementary","name":"priority road bends to the left at a 3-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"rotate(-90deg) translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(-.85,.85)"}]},"supplementary_priority_road_bends_left_4way":{"category":"supplementary","name":"priority road bends to the left at a 4-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,-30%) scale(.1,.25)"},{"type":"square-angular","color":"black","transform":"rotate(-90deg) translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(-.85,.85)"}]},"supplementary_priority_road_bends_right_3way_1":{"category":"supplementary","name":"priority road bends to the right at a 3-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,-30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(.85)"}]},"supplementary_priority_road_bends_right_3way_2":{"category":"supplementary","name":"priority road bends to the right at a 3-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"rotate(90deg) translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(.85)"}]},"supplementary_priority_road_bends_right_4way":{"category":"supplementary","name":"priority road bends to the right at a 4-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,-30%) scale(.1,.25)"},{"type":"square-angular","color":"black","transform":"rotate(90deg) translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(.85)"}]},"supplementary_priority_road_from_left_3way":{"category":"supplementary","name":"priority road comes from the left and continues straight at a 3-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(-.85,-.85)"}]},"supplementary_priority_road_from_left_4way":{"category":"supplementary","name":"priority road comes from the left and continues straight at a 4-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,30%) scale(.1,.25)"},{"type":"square-angular","color":"black","transform":"rotate(-90deg) translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(-.85,-.85)"}]},"supplementary_priority_road_from_right_3way":{"category":"supplementary","name":"priority road comes from the right and continues straight at a 3-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(.85,-.85)"}]},"supplementary_priority_road_from_right_4way":{"category":"supplementary","name":"priority road comes from the right and continues straight at a 4-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,30%) scale(.1,.25)"},{"type":"square-angular","color":"black","transform":"rotate(90deg) translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(.85,-.85)"}]}} \ No newline at end of file diff --git a/css/traffico/fi.json b/css/traffico/fi.json deleted file mode 100755 index 1b969d3bb..000000000 --- a/css/traffico/fi.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_fi":{"category":"information","name":"European border crossing into Finland","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"SUOMI","transform":"translate(0,-100%)"},{"type":"content-5","color":"white","content":"FINLAND","transform":"translate(0,0)"},{"type":"content-5","color":"white","content":"SUOPMA","transform":"translate(0,100%)"}]}} \ No newline at end of file diff --git a/css/traffico/fonts/traffico-preview.html b/css/traffico/fonts/traffico-preview.html deleted file mode 100755 index 9422b5680..000000000 --- a/css/traffico/fonts/traffico-preview.html +++ /dev/null @@ -1,1913 +0,0 @@ - - - - traffico glyphs preview - - - - - - - - - -
-
-

traffico contains 114 glyphs:

- Toggle Preview Characters -
- - -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- - - -
- - diff --git a/css/traffico/fonts/traffico.eot b/css/traffico/fonts/traffico.eot deleted file mode 100755 index 19fd16692bfc0505cfdbf6d0c3b5b489785ab1d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26174 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 t*S|5Ye`8$##<>3Bxc*@$6-WveO{A2Pz2Eqi@K - - - - -Created by FontForge 20141231 at Wed Apr 1 08:31:03 2015 - By Kamil Nikel -Copyright (c) 2015, Kamil Nikel - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/css/traffico/fonts/traffico.ttf b/css/traffico/fonts/traffico.ttf deleted file mode 100755 index dd5738e95480c673de467c5f60e7db448ab1bf55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25996 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 diff --git a/css/traffico/fonts/traffico.woff b/css/traffico/fonts/traffico.woff deleted file mode 100755 index ab461588bcfe580b0b412b61fe62a43b31270388..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16532 zcmZvDV{|4>)a?^zCbl)1*tTukwrwX9e=O(n;01X8-xCz=RdH5$MkQQ{}cad`u{lLKl}#&3z#yu zasHPZ$mKsi_76|EbXZc>c1HhvVE^@h{T~p!UlVN%-2aUU;{T5m{s$0xkRe+G8xsJ4 zr}Upr`!9F&L5jvLdpjp*0DyP(pO*A5?Q99;wOjXfBYk6ieZW52=LX~ct4%kfJrjd} zuZWnK3+Ctd#kY?%A0{108!oKA1wi}`*8hL}oezElLHH;G-!ha{jLi-7 z^$qn+O#MMbK_J1Q#hqjf*n4yT*2UfSeuKe!Mx|h8@>|9wlGD?J0`wVSz5eTqC59&! zL;*7-2dNmNNH$+-O|fD{Qk6_NZmK#qIB@k6F?>dy68T3wb&+a8ZFr#K0m3EUEV*f{ zL}o@y>k01-M+%-U{jYY=6SK#)R^L6B=uaL`1scCcBnV{m`)O$d63 zK!`U;ct}D>UPx)k2PkMLekfz87ie&3bLin8;6L7AgJG-TqTu!66A?HO=6Jo!7~_ut=NB-kXTBfQh5LR06D#NR6}crQD# zf4+@kqbAksDJ$yB87mkq&#K3HysFM^bL&{J&HV>u5dj#0Uq1qWg9oX%>Jvdkyi?L@ zQv4_`6-t|^6P_CVO#*B*POE1jCWvMy_GBgwPY|mY<(yB=zwF<{&{#6}ms#f>nV$R; z^>TY4HmJAV@!a(+B#s0_#4E}MEo5Hz%7Lsk!doMAoANnBaq-Rm90}yB zLHjH*${~{_7z}E~9K3ot3%l;luwDHeN`)kk9_$DaK$tD)M>k|lKePzozVY1+&HJbYyXePL1oK!!Cx5_Eo=iHvf{n^y`{{n<{mWm%F%B}n zNP%_PXLL_Lqf;$L;)Hp^wX67FX;_NgEkIj`w*t|1@mAj? zcS-A6Bj_<6j!rBOt!StjYTE5bL2Nb4n8#upL$&X4*?#Bh@V>oQq*)I|cs7zd zW5sSV7TgGzWA1`CqxijY$tkzRcJZ9nwXO0-MsF?$>6vgu%#$wf z^xj*q$<^jyuT^#xgtOta7GUF9PNc>#o~>!sv2`+BR2iuHIe&CUQU5y{uKL6ZF8XRVK(c zxpbM7M8j|Lao+Z5MhfqtC3>!Qfzny(3{Q{^8*Yx=CaZ{uu|-A9COu@H=!}&BTkggB z+RyXvcrAYM)Uha2FMU*o!$Hab_hj*p2HmRti|JGR^tojmX(hEYapT8P2~%X9I$UDd zW6JfpVu5ng)NVd2v=j88kOcyPJeZ3qQ@76g`O@hTu2r${sq4~$56OL2)oDmoNneg$ zW5iBP&EGOYSPCXY)5ng{*B1CLR3h}9XQUTHN9u32ty$Z`DdBG6IfywZJ*3@~z9^2u z7Ty`o!H`(Z?OFM;B{=uu{q&TaKpUrd3g`TLkm2cEdEl?1RH_QWqOsf@HWOsYXwEG@ zhphFiPZTckaWV*FdEvI~C{%(tAg>i!ff=F}rxG6O@(+{kLL2;L z%LI(})Wa+9{CnGyl{8fI62Uns&?NrfLjp;re?Upb=!-~-YR=c2L4ndXo{1jajj)d5 znyfOG<53l&h9Qq4CI*Xw(EOu&tM_uw(mBVCD$zVEwUw!Yi?<4DX~}49$OHq`oW7m< zX?xA%o%Ho)f@(9li1}ortkhwdn)+DBliKE~L|8%;689crHKY?T(S-^vJwa@Z&MbsPp7NL09>x_Se zquuA259=LeyelQa>uAEQ014x>0XFGNt&DmOcmt_JTUhO(?HcrOVvz9$5G-V{kJ6ZD zwF`lz!G-v$$?+oF%q{^$c!~c@6$M61Uph zvDZg<&rG_IXZzu2W)9bw-*`g2VvU25XIhQFn};YI(pn|8iK{W#!np>0$V>S~A%Eii zn$vNP3Pw{)5MjP-)FL_r4Xu&XYA?_nvUiRe2F|sv7LQ>TIL_-$=WVLa_nF)G8Jzw4-6SQ~*)0KnH2jVCcvN)wrcc z?%Lx$d2kcIRYS8TR+eTmb!msr*m8b8tI{~yHOX2iacZhE!51y~(R#hq*{U1s@Z&*e zfZjqUr612rqE(2S_i^gfx_e)?tz>Hw5ba;X-8Il!>E91 zojFEe47I3}v7VtD=SeTA9RFO#-C=`fipLpEwY5iX+m56SEsrnH_d7Qi~>MG71+rF7yZW zujuk$Qn_=3Sr0!pPx9)0zo~A37fo47k8i7fLp=KlnBCtrEvLItnRbW-N}Vd11tS(P z?RF~Kl+_~GJ0?FE-u!v83=?F~OG9G1MXn&u*`gcamWPun^3?1rRGb(5CVN@N!%C|lMMcQwUhh5NxAZ&?^(;4n@)c_fU)QYChh|UH>>BFm z;38Hsq2jyywAgulYS0Vn{LaaH6tUTyF@k-wdvBP{;r*nXqXnEX=jeX`ykoqVx&pr9 zciy3WACm6$pgjb#PusL7XomC+_@3c%d|&qD_&VL@sql}x>OcJ4pE8U=7O;BBc9Fk# zT~GC{;9u7j)n|M&zWykVHm>BJ0BQu)LmERM)+@9@Dr4fgbxJrA3%d0!N__k`ZXu+q zAD$0EnmrA=Gik{R3J9l?_R`v{^hPSwu`p-iEvD6v8Scd>^A4sLby{?3(Rm*~yRcRy z6!pg6Chr?QGDdViKD5`rQsfDXA$bU|#um5x#~q|~8dAxE=glQ9a^jXbp`S2_S+Y0g z)*JdLX{GsNg1$EvkD)nlbai@>3bEMm7k?&CA;c<&lI+h0wmpOx~( z+~%6}VL^ohZn2dJ`7zP4NO%NoPOzLp_t0HLzYUk;SZ#8WPnR&wq!cwv@UEV&q;UL9 zfx&~__pVlb1Tu+T<3S@YNz;4nRauKs|1+if|D${XYyQynFJMreEKOs z$h1Y*<(afsTT6T0vUI}G!UDHwXUfQ(?*oLH#&*oc-%gF2(}$>UGhHk#NDQ}ido#*=($Na4C2NCCkqP=F6D{e-fi{7N9AH zf1q7+b2IIlq*{B>(NW)B`@trI87qGD(Va_j!Q@w}!bbQ(v&5ZD67_udQ~H+D*0o}D z!cubB#KZtW;J9l>^*e}EIaFcMl$W*}K)BdqSajrF99<+E{z2K)N5wbHH#*H07N7)s zCsBNlM(TnH$TD0MU|M`=oxP%9pLuK@;A$+3a2;uNJ-gdDIZrw@@Wcp-v3tvdH^KB0 z&X7vU-p)nbPd)5E*aN9it+8p(X09MYEcg^pT7O$VmTbUB>m@E$f#Jil0cXmZDRgC7 z_u=b0U6;egnh0&Uf2EUm_}mOL>%f`F66MlytyDzdA3}RlPY%ZvC*&J zQ&EIc#8!IgXHmaGK}Kkbka4)vhN}^;ERHRGhLhq#X0DHF~RunuFK_T}2;2tIK~SqU^7&KgveruEc{S^n3(X zSSX{Zuc2*?jRYS!YcH6VZj0{ZgYR(G(Ehb^>pmnVsd= z5PG;_ql|dJVs5-L1Gg+8-=__^VQ3j6#0s-p=1_>o%G&%>c>`&N%mPi{PJ|W=H#AoS zd}RWHJpBf}KU~6UDI{%sG$bc%l1c@|$USbZ;tce!d`OOBl}DCobM1JuNf<&#nKgZB z0aN84G*;;2{e!-!!dAYy{zA#7QG}2NFFmtr#50afSRT&kN0|;i*()j`%%)vF8j;u24>h|jmK&3+NG%YjV{H(S z7Z!Uv(Hb9do}HigjA*E=ADZO{e<5**escdd({dif_S{K6jYP8FQ1}}T>=j7~QpiL* z8H^l^-bcSh{u_}360%LD3-|iwc{{LAbo<90rFIdxf3=UdJ9dLc0I>QZ_gs{V$U)*G z`>K0se2IFgdV`!B+}L*;ya6Tp>V7GH5xVt@_}2O;dvUtO*smGf z`O`CC{sL7ukr~6>hAJOonF!J~nOD+e9-?Xi##1aNl{Lcu_g5ssy*<3&W zaC~gkb2hcuSxit<<1v-gkhz{(<0(@Uqg>P8S5{cwtwy8kZtb&_p_h$ckn;%=a?R^} z3tZ-S9>dTz{cM})JcdH`JQ^Rz_IGpXK8BE~Vb#mB@U)^jR7|>uhP~=4tlo z!JtB0;gGr<8AWzXcK3YaqV-iw^ZMwYSj_2w{cK=avaKl9oXTJBv^3khb4+bQ6P8!q z`V?zgXXc1bPAPCs*XF9VY}#1P@~+%cp3rElM>d)88X4c`ZPzo$P7X=tc)6sn+FopY zLaBt2EwgvXz>u*?F}viw1^aomY{^;Pw8VXl{LEQ{s_a|Ey3nkuR<-e>UtgI%8rzV5 zf>7SX@)+QFrCh-&ZU4m#Gc6~iQ@c3z7A5XtC5eSrD2 zPEwmHV{?!ZpeI_qW^HfFLak+~9|B5>tXE~Rs1+3weiTW`pVB>7<-iPA8_5zeVa zYMoB>DyRHm+UIo0afdNJ5F29JkDN6BCCOR}A>)x4aR87QvDnOj^*Y#A7=J$t%se@e z2L|P{VLgiuL34JW!jB9%)SMcU4IyQ+$qnTyH7*q{;W#vpnXlqVLjrA=rJSAneF^rk{)*7#TWPl@dIq3%UPIGSvY|W1zNNp+Hl_od;pUMHvcT^8Lq~7O$ba zX=Bu|fHotiRb4y!oP6k*CnTCwk3U&0&)t(lY2Kn6PBx$7`Ejsf@coQi7SSdf-Dl}=Oxb0%bMH%z}rnl zf1%L>rg~|R>X=GJDcS*V+~(eJ-SA$4(}q)*$w(dwRkc=32V1y_XM`=3Qfph|Y*9FE zmO+t$IX6WQaWi2ZPG!f5zS@;72=dy6S-Xm=&>1|gaaX4`VN}@sTM$wbTN!FFu*=Xz z{jKB{58b)MOg$iPSw|}wKcn5a1TZ$Io*#2qaz0-_%QsTMsIxq09Q>0dT7N6W8u3Y1 z=ojUKL4~1Elm?=tUmY{hN=He7nF)o?BebBhw%OQ-Fm-sz49?Yd&Igk?ncFLQ2xX9L zO)B7mk~z82*~izEv;sS3(UteUDT0TI38%Jj=rcs3q1tG1EjE&Amx%b*)Smd^I;nnO ze*-VYkZ&%xb)jTPNyt!tEW=TrxBJ{y(~G57vj7$G(wVw_G+t&{Bn5^FQd@U^#4~br zZWYv-LI?AOR=zmCu=z>5aiOp)c&~I4xIkT6M1q$xG^FfSAQ^o|3LeKSxZpN=D_@s9 z6!Q}rbp?)kv*)6Yz8-d=JU|V_hGO;_3mAlEe0I|(Kx5OyZl*cTsHSn6kz95dG1p8u zR{5oztT7DFB{3OfYSF4TthekVCg4_ko#s1B8)w9R8Qcv#(}V^gub{?4%XlZ*z*aCu zeG4!W3a*oy{mJbMdTBTqq?G~L3y$61Wc+Gejd|o$U#pdme7ey`amlH|*ppb{!(a!b4ri3>FIlki%RUcDzN$Q4YC0@kUMs-V(8xYKU!_8ow`M9I*}EhlP!Ed;^2mkcxZW!v~HTb5SKdtiqh>sn7OEQ6m8;XA*@2*jPVxpGdKM~tSF=#~(NW;wmXK6(o> zsSu(Jf-@u$#1C z^u|@-yP__3Y}6|i@f;|n-uxJ!wIuf6!0nnsNTFK19|i~UcHpR>TB<6b`V7h0l^_Yi zqJOMjviI^4kRJkmxdg9Pv(Xd|exg@@YJSY5@OcU~wAG5gG?jJDYv>e!L6wEQPbGMh z)EqSpI@1D*-sK!`XTFGrh1?af(jPaY4q+P3PFQ7<_>+t})0)pTyHS|Zqw#he~O*56~JF_KUCQiLQn>|qC3WOkT^CL-|6A~L3vTP+|;2_-fL<`!{lm@ks5kjX^` zlT}0sXSwvWx7%D!X0f?0mrPP9M!i@zs%c0J3XZ=oQc}&VD#GBas--7U|Bh{*3z}<% z&y7<$p|vEuDn)%X?Ej2980h^KKRSfAk6Wni)gK`CSu8yf6QYa2T`%-9!{8XY;po57 zk2ydng3aG&9y!lS$o;OjaT;K-0C<0I1)dAKV=4IG6 z5a(%Z4N3EAmTDw!3@e>|P7s7$?$-Mi-uLGR0Z%Win>JNZ2wfuGU)SKFUQq|XHir0_ zRMy4pmHZ>Vf=)ol!(kzbFRv`Y=wKav840DAtYkieE&6r)J<@UWbo~g<@snP&8%lqh zn#fJA<;PZ_nqV%v3){uRKU5R@?fs??v}->yx2I|ng_Fb{&rJJRhO2XxzCkk9;^Gu8 z*m9(bt=x-)TCHl~*B&+SyYkJn;F3KYTpDF`UeeKtDBrQ!z1OEH&C@RG%hASLN`Qm{ zV1=S&sCuW!v9e(Mt{kx!Sj~WRzUrO7cKTE$u3zZtlucTQK~x{S%92z;^z|Q$VjETZ zXjaZgJ2#xt!yliM3*6WfJfLUk#$Q21%0`1j427WsL}teh(bNDW`4|VPJaqDXfhMc^ z8nN2nbh!J|mYXgqAZ`A-WsGb!D=1{sHUkJYq{XbY#t@wMF8QQC9aJ|XlD)+{MZ7_O z`5URznWtQ%*9rDcHO?CcwAyTJ{Sg(ZQ1XwoH`gn1rb-giY$q4`u>UssxG>(qPrjW- z6nP*Udk_ft{T%CX4N8`hX9Ii2qN$O>Z_IA+y=%_C%QqgTrEhRjEdsRBseLt<4}gSD z3i=5!W%5xAMfKD@e5u=ENdu{qGV$`|b!;LCI9TVbt=m%t^~RSahWJ@7aQ!*^NPK$< zxyzyB%K>uNhGVyFFM)O9w#EJj_vi%>%K5htN42x}exHyO;2HX`Y*?jQrK)|^<~!tK zPt+0U>4qLi*l7$tzt^_T$rWgc9qsKm$T;i!bTbHwI#)qIZgzWZ5g(-r1I#wFE3|QwJl?Tb2IRV7 zMt%5_V*3DSwy&#`Z*g;{BM<|hr*?kYN)7V%{F;n4_X=d>FO4j<4nGQ~q+%Ai z?;lmP+wv3Z7dR`lb4gBcTbVnyy1%bbBAuRRNV2tbe7Sk-llPi!$(J6{s8}R8D{K4Y z30N}M+_zcE=K1O5t3f|%TAKxEtGx$vdmV6x94c#&N=`@2Vb@&MGl&1Q%4|-3eJ8mX zHVAkDo2MiaNMxu8`Tu-@6MzC4kKFU}5*c znrP_f$0;7-j8>m5rn^mxmTorkx;OEQuITt*A^y&2n`MqM*?XB6eyv z&z=83Fk1r1Ja6MTL=D(Urm4dL?e*C4{n$CVZpS&Qs289HZY%J5qT z&FhT-#0MVY!z`~f6Jy@Y%wL40#=K82zc_SE#kMUAy6%%LJm@gsKf!r^BRhaqSI?J) z?1Dy)>d&-;Hs^$jS_G~Mr^J+^&d39{I=Q(i6(7#=Hz-{c$FCji1Sg6Zgwx|qwV-on zmk_Y6V@ldHwXCh#&`*qY>P^mPiN^Ask~J&%?`W*~GslG<yfLQp*+A0!TPs3-C|5Q&Wd+-5*#aT*jU&qJZvo&K08$RO_K)ihP&HEn}e~9F+HNPL0bph(~8%UYTAyHgU^$Jt-7zp zBYjpgg+k-B1+&pAR#?xsx%G7L-rN0Q5UUNd?ee0ya^|9t&ODr<6 zYqgPqe0Q}6UhM`&uJ?@)HwTxJp{N21t!0tXyE}hZSqwQ*uv_7fR2GpORBUb$3!dQbwB$pxLmTMv2a3ZPb z5BbrKD4UhWG8WQPMek`7Wf+;?>=`Z-Jm#_-(LubFyprFcm5guJzi25we|(lT9`#nc z*8NCN`&AV+N~wus{F%atdnMd`<&|93$vm5^Xo_h67|<*K{Z8hlw``Eor_X~%=}*#LAv&xN5Zbv+(~?FcZkvT{ywd?GLHD}(msYFpT^ z<6>cFe&KUVZeHqr$IPdA=i9btre2Zzo#c(_jgpxk)}jp-9a3WqWDF2rNQz-=y>Jh- ze|-8AbU-?bfFg?O179=oj+i{e4)#HZIggP0-8jz7-(`z-`mkoKb$k#-0`UDnsBf|W zR6CkGoqW3JqSfLdo z194YbnDxXiDT#8bkR6{*@-*OVcHFj#37QTF-PF{uWm(Q}>QK0nhU|;xV2|nza&mv` z+$vWHU|0v=SGUubvGuIR87Mbc8jSGPqHFNxW;9nAOgaAoo_rAI`O0iXpmal6u_iIz zjit4iCq;poGQrE8NaaN_i<*wmpP)k~|IF76XW9YR{rc_h(Ys13N5*kVw|e^fdpsPa zPY)k8{v{p5=MgfjC$dS>sV;G@MoW~z+wMo*3@`QV6UANmtp zCsZ{DP|}HcKmv7e9n~zJQfn1ZA4mai7b``jkZ`Vj_Uot(VuYjF5;SdV`Jk)y)jKLG zhNtMdO^0fY`6}N z@1R+#A-BXC=9&qa)_;WKTwJzFfZw`&>HbM=H3r{@XM2I|2#1QkWcwDgwI(h**@a0+ zUg@J!&au)Xo6JPL9Mxskt!h1MMwG)un9;DWa_O+cgnWtB5(;#+Vq^svK*9{3RVlm& z7G=rSmbEwlIuC0H>Is9s0?_SD^l!+O^EyKH5?47Qh17py^sgE=J zZY|>h=&$U2S|MufG#9x(@s?ZE>MAu8kj1e!mmIx{jD>ZD6NAMfKlNF~Zt~Ms(`E4{ z=v;$MY?Gp&@i?P%`l6Fd?!Jn0RM-%zEl;Av*vJz&3yJwSIwZ-WTuG=`oPE@TYz<`1dRt*ki-s4c7!Pqvq|dieQqUy?!K zWRb4r&SXYhNmwfx0Z}f9TwR-97u&}6TtnJEcr`u53O&S19^T6(b?aBoR@;0v^vN4IY*4wNeJge+(d z{h2be{<)qzf375oPK5LBH{v}u1^~BZ#)K!-t;c7UjEAk?)?d8N_qzq(XQrz9!qrK5 z46Dlb>rO^<-60TBH4oKICD-!|Kbjxx)iWVvtW_AXCZukp>>0?bp z$wE9f7@7|Yb{eflRXx>eo&@%T=zIWB7eJ<<9+@jZNi;$%PuT&yNb+e?mu!n$l*%;602EpB&2|T|I{$p7aK6Se40jfEzVo{*8H@q zvDoMEieA+bYpOjrT7LcL)0epwJ8jW}p4R+c!PAE8c(oQey3LsOF(dE{gV?C_I7<=08&u+@k8byLu^U6@T2R}PV*CY zpLW{m?P~U7xL-PYTzCE0Y2e?!P(0T2-UCf->C#^#;=%qHGk0Ehp<(O43*!9_!A0u6 zilinJEl@+)dHHUSdEIe@80i}yaI;&v@4WlDERyU7yQ99|v`s8Kk7F+Oa7LKkIe=W9 z`N50t!u7dV8d;2ctL({a7Kv=unI2j1%sN-rAz|*kNrjx!j&p~`7zQQ5dVL>r`Qp%QEQf*1aiqcZD z$6+~>!33u`-p~b2vPENdloG>~J;7&fr}+NyDHCfg1;3jb#WDWFFioncOA+Y&o%HLZ zhcgY|@+OIknmxfKmOnXjT7QS+YG_W7p7(c6eun^n%3$0e5Hjo%z{)@t{IFcq(|y>y za6cusI!7@v$P?E6qfjn4;ShVhK2^tZz(Ja-F7d23IwZ&(w@P4byp(XqnK0J8?~tQK zbj%PAzEWwvToAnnmhCt(TVe!U&FH&+uT|8v0j%?(=`Pqz#x-{;L3Sn!fgyDmcP_Es zvGJ5yV`gR|=a}usE_F8gWV%1rBz|9$H%GMg(fHm1&jP~)lqxR)m0f&QsrMu`S>n4A zc9$O9{5J6lVq)@;C@|ry!7siFLVB>sQ97`D7Prhy6h1?WgEj3&Ig9LbP++R~<{Afe z6>$uUJruZFVwOxKmT<5t-D_u0yaBoiTH+nl3fbyFXgbK?(BY1#eQaZmBMEFaU6AJ; zRfJIPC2}g*!z@G$c8rtzbmyi6(zx^9&zjUxb5c&a7-ouj3Z3?Nk*Mdk3JLUx zH7p#w@y}%gu#hy6Rtlc-53CR8dUq47`O%)Pa8?bNvfd$q8>R|lp^FvVL))1y(JE&{ zoI%?M7bX$!A{=T@j-GMwDL3G|^486L=s+a7(2bO}g>TR##qz$g;tbitw1}58z8;1V zoj;TkB$}rl;b`p!mQ{}tE>u%n?UJ2KT|pJP`RBITninE=Q%E^dynCt(Oca(Nl&j(LoN@p>y#(!_=oJG=Cq=M=glaXgFzNG0LB`p2icJEeQKLBw?Gf+7xA^l?-(Jb9`R08 zBhrnL{j9Fu5r+4_>qYGfCuGcW0*oURiGO})%*RH78A!S7?LXb3w!|{I?$YCo&TEay z2TVyK@{CC>xRa7Z8H_YY*BnzZTX5dL4tbv$B}o=2p1o@M;@+P-j>sx)i~%jP-KfS& ztVbQ3EoY_m+a(hh4Of`0hZ^8ObX-tLB)p4VFRGe0fJxwdXy6JBSVLp~1N zHY;QxLfgV*QkTr>)AzpTTrGCM&F!z~9mKaavz$+*v)Qmu>%@)a`;hJ0qNQ-14B^$?KZ@f3yFlR4kSaSzQ@Sk$~ zi?Y=Z{xaGp$5weNRnzz@)9Zm43lRjui)j@#v|@cOI8g8!$0kr}^OlT!ZkzKsFfq2m z7LTfr5hsE>0Qs|&4apQqkFl!4<*2|8_UbxfXLS4K_gY)UtC6FVq$Sl!lx0!PU* z#1^G*Tgr2+B3qB;KNp7I@O<6*4wB7s&?+$5QVO1q<2mJt25JC}Th*F&1_sFb@s0eG7t!;H z)b||rdI_29poRWqO1N55Jow~F*n$MnXE8)(@4R=#!%uyXkSRL#RUXvDH1N7} zLN#_7PZBZPM9GN6mIhOK?zWkCO+=l70ZdzT*n*nF2=`+DW4e9 z5cJAZQ5#ajL3WeS)^`6^cX)>;P2uRX-4tnndgz$@mOZgy&M76$p@Rb z&vOUU!|Rq+aeaP(k)L4f)rJ3F@D8-%1SUT2ozXqpRq|&>G2SW@gFDd{wn)d!DS4w5 z!QRD?&I8iu2FJq!TpdYFZpzOGzNlcChgNhsa6VIOoTK+{cGjjLlrA#W@(q5xQj~iR zgncJE>H`56y zOO#3J%u^6CD{RsmOVw@Nzg>P((_>tW&be*YX$H|MWmkhG8Vef{=Ld}@SBg@b|lx$3gvc|O>IWAQ%vJq1^&tdDy_4yKO zobsDl|Gd%BSh#(|u9IO~pjZqlP2z{NZpxI1liSg564}|M5S&&Dy1)(D=!%p@9Bi`w z`kJ9Z1lCJQa`9H>X6hjmP!hYWrBfxpA9b8+W*`$YYpWc z+b&({{JsiGR+FG2WTE|{Uq#P1&vS@xJbSmOhC1Fhrsx9YpQ`)Ad2&)Px4%CYl!DLc zY*FR#xxa74CPz)nTKtvO5&`CnfQP0do^>*Xbbikb9ZI8kKUwQYsve6+`5{_^fAWH2 z8Z9ax`ij?Bea-A$tba*VJ)fK1N=4+c_eOBKNaQ<`rRAWzABaOW9WUS2;I57b~cz(~Z zuhma|vQ`A~_|C+|_X@nFj{}=$ zxHb_~*TzptxkCqX5K(^+O71ELal2_mIQIH)2mRceX-_U@@}0HC zjEA4_e^Snz1Bsuj&%z;gUmBe&q}LKmu(}EcnRIJuO9FDqOB#(Qi+27vR96`}#iHI1y={BK4WvWDyedPjgUe=;W;;t@T|OA&+8@_>O~_eceaIk7k0iC+Wx zpTalA-%WG2G|6*s);edf@K0QI-nO=bS4Z3|-Zm=hWl`s4+u)y|uT$oHQ)UZ%1RJ&sH7(jlB&&|=OP=;Y3U^5HJOV=3g5HerNkcL zIWMPQ31LY|P-q-JWLFxViI5+@2bvc0p;3PC<8W-1n;eC?A3X=~x8Go@HBqqc>pn4c zw*B;|A~i(v?aIzq^JFd{;ll8N5GpDph18|6u$4B!3HnITj0XIl!7-n)U-EpR+x{Ay z`V*cbGb_(J0JoQbeh;4gr8+^FWd}I67f0<86kj|q^D?gyxW=W11Jd^!Wy+i6mXw8> z2(;c!aIG~!GfM{7%D zq>)S|nrDmzh1Ws}DlE&yWfed}k)qtcw6Z&hykXsG^N`Ro7%8oj#rb9#6DITxPZ2&S zFP7Y$;G0)(^CE~FtD=IGs`B--SFp$ z!55k|1A);PG)%5dG@&+wpwbw!T&_)asWeN4vo=P_SnF49uFJx^G{)#y8_<2K%K^hZ zL=5BTS7-+hm(H6%W#}g#VW0jX>lncx%QOuRlxC30VahzhJ!$I|p>;^3(mujoY3q}* zb;#h_Ji>qW=oP}hO(o+#!kY2ulhVCSXX`Wxb?ZCxT2m$vP8ju^J%F zu&G;O-Dn_oU5wfI!DUf$*?9GBbsFaT|J~>1-X!?W$UX~m9)Q08i!9H)Y4BZ`eOBf? zHu(N8GDr6&(sPROnXmT{>HELPQq7x6&$-%Xx!z-i@BbnTc5gC0XKbIvI}aJY|BJ}= wVDx~P#A5v`?Ef!7{?++|{#VzouWt+pgeh^C4LFUAiLsQ|!~+O!LYM&l508sl=Kufz diff --git a/css/traffico/fr.json b/css/traffico/fr.json deleted file mode 100755 index 695b9c919..000000000 --- a/css/traffico/fr.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_fr":{"category":"information","name":"European border crossing into France","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"FRANCE"}]}} \ No newline at end of file diff --git a/css/traffico/gr.json b/css/traffico/gr.json deleted file mode 100755 index 3e64f8bf1..000000000 --- a/css/traffico/gr.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_gr":{"category":"information","name":"European border crossing into Greece","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"yellow","content":"EΛΛAΣ","transform":"translate(0,-50%)"},{"type":"content-5","color":"white","content":"GREECE","transform":"translate(0,50%)"}]}} \ No newline at end of file diff --git a/css/traffico/hu.json b/css/traffico/hu.json deleted file mode 100755 index a36aac38d..000000000 --- a/css/traffico/hu.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_hu":{"category":"information","name":"European border crossing into Hungary","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Magyarország","transform":"scale(.75)"}]}} \ No newline at end of file diff --git a/css/traffico/it.json b/css/traffico/it.json deleted file mode 100755 index c0b1e7bae..000000000 --- a/css/traffico/it.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_it":{"category":"information","name":"European border crossing into Italy","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"ITALIA"}]}} \ No newline at end of file diff --git a/css/traffico/lt.json b/css/traffico/lt.json deleted file mode 100755 index 72a351c61..000000000 --- a/css/traffico/lt.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_lt":{"category":"information","name":"European border crossing into Lithuania","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Lietuvos","transform":"translate(0,-80%)"},{"type":"content-5","color":"white","content":"Respublika","transform":"translate(0,20%)"}]}} \ No newline at end of file diff --git a/css/traffico/lu.json b/css/traffico/lu.json deleted file mode 100755 index 0be6c4286..000000000 --- a/css/traffico/lu.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_lu_fr":{"category":"information","name":"European border crossing into Luxembourg from France","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Luxembourg","transform":"scale(.85)"}]},"information_border_lu_de":{"category":"information","name":"European border crossing into Luxembourg from Germany","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Luxemburg","transform":"scale(.85)"}]}} \ No newline at end of file diff --git a/css/traffico/lv.json b/css/traffico/lv.json deleted file mode 100755 index baef29b8c..000000000 --- a/css/traffico/lv.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_lv":{"category":"information","name":"European border crossing into Latvia","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"LATVIJA"}]}} \ No newline at end of file diff --git a/css/traffico/nl.json b/css/traffico/nl.json deleted file mode 100755 index 067045fb3..000000000 --- a/css/traffico/nl.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_nl":{"category":"information","name":"European border crossing into the Netherlands","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Nederland"}]},"information_cycleway":{"category":"information","name":"non-compulsory cycleway","elements":[{"type":"square-rounded","color":"white","transform":"scale(1,.3)"},{"type":"square-rounded","color":"blue","transform":"scale(.95,.25)"},{"type":"content-4","color":"white","content":"fietspad"}]}} \ No newline at end of file diff --git a/css/traffico/pl.json b/css/traffico/pl.json deleted file mode 100755 index 164bf23cf..000000000 --- a/css/traffico/pl.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_pl":{"category":"information","name":"European border crossing into Poland","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Rzeczpospolita","transform":"translate(0,-70%) scale(.7)"},{"type":"content-5","color":"white","content":"Polska","transform":"translate(0,40%)"}]}} \ No newline at end of file diff --git a/css/traffico/se.json b/css/traffico/se.json deleted file mode 100755 index dec6d2d9f..000000000 --- a/css/traffico/se.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_se":{"category":"information","name":"European border crossing into Sweden","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"SVERIGE"}]}} \ No newline at end of file diff --git a/css/traffico/si.json b/css/traffico/si.json deleted file mode 100755 index 63268a788..000000000 --- a/css/traffico/si.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_si":{"category":"information","name":"European border crossing into Slovenia","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"SLOVENIA","transform":"scale(.85)"}]}} \ No newline at end of file diff --git a/css/traffico/sk.json b/css/traffico/sk.json deleted file mode 100755 index 0140670e9..000000000 --- a/css/traffico/sk.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_sk":{"category":"information","name":"European border crossing into Slovakia","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"SLOVENSKO","transform":"scale(.8)"}]}} \ No newline at end of file diff --git a/css/traffico/stylesheets/traffico.css b/css/traffico/stylesheets/traffico.css deleted file mode 100755 index ed878d9f6..000000000 --- a/css/traffico/stylesheets/traffico.css +++ /dev/null @@ -1,365 +0,0 @@ -/* - Icon Font: traffico -*/ - -@font-face { - font-family: "traffico"; - src: url("../fonts/traffico.eot"); - src: url("../fonts/traffico.eot?#iefix") format("embedded-opentype"), - url("../fonts/traffico.woff") format("woff"), - url("../fonts/traffico.ttf") format("truetype"), - url("../fonts/traffico.svg#traffico") format("svg"); - font-weight: normal; - font-style: normal; -} - -@media screen and (-webkit-min-device-pixel-ratio:0) { - @font-face { - font-family: "traffico"; - src: url("../fonts/traffico.svg#traffico") format("svg"); - } -} - -[data-icon]:before { content: attr(data-icon); } - -[data-icon]:before, -.t-DE-arrow-up:before, -.t-US-arrow-oneway:before, -.t-US-arrow-up:before, -.t-added-lane:before, -.t-added-lane-entering-roadway:before, -.t-airplane:before, -.t-arrow-l:before, -.t-arrow-oneway:before, -.t-arrow-s-l:before, -.t-bending-priority:before, -.t-bicycle:before, -.t-bicycle-slippery:before, -.t-bump:before, -.t-bumps:before, -.t-bus:before, -.t-car:before, -.t-car-left:before, -.t-car-right:before, -.t-children:before, -.t-circle-bar-rounded:before, -.t-circle-bg:before, -.t-circle-o:before, -.t-circle-separator:before, -.t-cliff:before, -.t-cross-roads:before, -.t-curve-r-l:before, -.t-d-curve-l:before, -.t-dead-end:before, -.t-descent:before, -.t-disabled-p:before, -.t-domestic-animal:before, -.t-end:before, -.t-equestrian:before, -.t-europe_stars:before, -.t-exclamation:before, -.t-falling-rocks:before, -.t-fire-station:before, -.t-flaggers:before, -.t-footpath:before, -.t-h:before, -.t-h-align-l:before, -.t-hairpin-curve:before, -.t-hazardous-material:before, -.t-height:before, -.t-highway-divided:before, -.t-hitch-hiking:before, -.t-level-crossing:before, -.t-light-rail:before, -.t-lightground-railroad-crossing:before, -.t-loop-270:before, -.t-lorry:before, -.t-lorry-left:before, -.t-low-clearance:before, -.t-merge:before, -.t-metric-clearance:before, -.t-moped:before, -.t-motorbike:before, -.t-narrow-road-both:before, -.t-narrow-road-l:before, -.t-no-l-or-u-turn:before, -.t-octagon:before, -.t-offset-roads:before, -.t-parking:before, -.t-pass-l-r:before, -.t-pedestrian:before, -.t-pedestrian-crossing:before, -.t-pedestrians:before, -.t-play-ground:before, -.t-pretzel-loop:before, -.t-railroad:before, -.t-railway-xing-secured:before, -.t-railway-xing-unsecured:before, -.t-right-of-way:before, -.t-right-of-way-l:before, -.t-roadworks:before, -.t-rollerblading:before, -.t-roundabout:before, -.t-school:before, -.t-share-roads:before, -.t-side-road-a-a-l:before, -.t-side-road-a-a-r:before, -.t-side-road-p-l:before, -.t-side-road-p-r:before, -.t-single-2-reverse-curve:before, -.t-skewed-railroads:before, -.t-slippery:before, -.t-slippery-road:before, -.t-snowflake:before, -.t-square-angular:before, -.t-square-rounded:before, -.t-steep-hill:before, -.t-stop:before, -.t-t-roads:before, -.t-tractor:before, -.t-trailer:before, -.t-train-electric:before, -.t-tram:before, -.t-tri-angular:before, -.t-tri-rounded:before, -.t-truck:before, -.t-truck-rollover-speed:before, -.t-trucks-rollover:before, -.t-turn-90-l:before, -.t-turn-curve-speed:before, -.t-turn-l:before, -.t-turn-l-curve:before, -.t-turn-reverse-left:before, -.t-turnaround:before, -.t-turnaround2:before, -.t-u-turn:before, -.t-wild-animal:before, -.t-windbag:before, -.t-winding-road-left:before, -.t-y-roads:before { - display: inline-block; - font-family: "traffico"; - font-style: normal; - font-weight: normal; - font-variant: normal; - line-height: 1; - text-decoration: inherit; - text-rendering: optimizeLegibility; - text-transform: none; - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - font-smoothing: antialiased; -} - -.t-DE-arrow-up:before { content: "\f100"; } -.t-US-arrow-oneway:before { content: "\f101"; } -.t-US-arrow-up:before { content: "\f102"; } -.t-added-lane:before { content: "\f103"; } -.t-added-lane-entering-roadway:before { content: "\f104"; } -.t-airplane:before { content: "\f105"; } -.t-arrow-l:before { content: "\f106"; } -.t-arrow-oneway:before { content: "\f107"; } -.t-arrow-s-l:before { content: "\f108"; } -.t-bending-priority:before { content: "\f109"; } -.t-bicycle:before { content: "\f10a"; } -.t-bicycle-slippery:before { content: "\f10b"; } -.t-bump:before { content: "\f10c"; } -.t-bumps:before { content: "\f10d"; } -.t-bus:before { content: "\f10e"; } -.t-car:before { content: "\f10f"; } -.t-car-left:before { content: "\f110"; } -.t-car-right:before { content: "\f111"; } -.t-children:before { content: "\f112"; } -.t-circle-bar-rounded:before { content: "\f113"; } -.t-circle-bg:before { content: "\f114"; } -.t-circle-o:before { content: "\f115"; } -.t-circle-separator:before { content: "\f116"; } -.t-cliff:before { content: "\f117"; } -.t-cross-roads:before { content: "\f118"; } -.t-curve-r-l:before { content: "\f119"; } -.t-d-curve-l:before { content: "\f11a"; } -.t-dead-end:before { content: "\f11b"; } -.t-descent:before { content: "\f11c"; } -.t-disabled-p:before { content: "\f11d"; } -.t-domestic-animal:before { content: "\f11e"; } -.t-end:before { content: "\f11f"; } -.t-equestrian:before { content: "\f120"; } -.t-europe_stars:before { content: "\f121"; } -.t-exclamation:before { content: "\f122"; } -.t-falling-rocks:before { content: "\f123"; } -.t-fire-station:before { content: "\f124"; } -.t-flaggers:before { content: "\f125"; } -.t-footpath:before { content: "\f126"; } -.t-h:before { content: "\f127"; } -.t-h-align-l:before { content: "\f128"; } -.t-hairpin-curve:before { content: "\f129"; } -.t-hazardous-material:before { content: "\f12a"; } -.t-height:before { content: "\f12b"; } -.t-highway-divided:before { content: "\f12c"; } -.t-hitch-hiking:before { content: "\f12d"; } -.t-level-crossing:before { content: "\f12e"; } -.t-light-rail:before { content: "\f12f"; } -.t-lightground-railroad-crossing:before { content: "\f130"; } -.t-loop-270:before { content: "\f131"; } -.t-lorry:before { content: "\f132"; } -.t-lorry-left:before { content: "\f133"; } -.t-low-clearance:before { content: "\f134"; } -.t-merge:before { content: "\f135"; } -.t-metric-clearance:before { content: "\f136"; } -.t-moped:before { content: "\f137"; } -.t-motorbike:before { content: "\f138"; } -.t-narrow-road-both:before { content: "\f139"; } -.t-narrow-road-l:before { content: "\f13a"; } -.t-no-l-or-u-turn:before { content: "\f13b"; } -.t-octagon:before { content: "\f13c"; } -.t-offset-roads:before { content: "\f13d"; } -.t-parking:before { content: "\f13e"; } -.t-pass-l-r:before { content: "\f13f"; } -.t-pedestrian:before { content: "\f140"; } -.t-pedestrian-crossing:before { content: "\f141"; } -.t-pedestrians:before { content: "\f142"; } -.t-play-ground:before { content: "\f143"; } -.t-pretzel-loop:before { content: "\f144"; } -.t-railroad:before { content: "\f145"; } -.t-railway-xing-secured:before { content: "\f146"; } -.t-railway-xing-unsecured:before { content: "\f147"; } -.t-right-of-way:before { content: "\f148"; } -.t-right-of-way-l:before { content: "\f149"; } -.t-roadworks:before { content: "\f14a"; } -.t-rollerblading:before { content: "\f14b"; } -.t-roundabout:before { content: "\f14c"; } -.t-school:before { content: "\f14d"; } -.t-share-roads:before { content: "\f14e"; } -.t-side-road-a-a-l:before { content: "\f14f"; } -.t-side-road-a-a-r:before { content: "\f150"; } -.t-side-road-p-l:before { content: "\f151"; } -.t-side-road-p-r:before { content: "\f152"; } -.t-single-2-reverse-curve:before { content: "\f153"; } -.t-skewed-railroads:before { content: "\f154"; } -.t-slippery:before { content: "\f155"; } -.t-slippery-road:before { content: "\f156"; } -.t-snowflake:before { content: "\f157"; } -.t-square-angular:before { content: "\f158"; } -.t-square-rounded:before { content: "\f159"; } -.t-steep-hill:before { content: "\f15a"; } -.t-stop:before { content: "\f15b"; } -.t-t-roads:before { content: "\f15c"; } -.t-tractor:before { content: "\f15d"; } -.t-trailer:before { content: "\f15e"; } -.t-train-electric:before { content: "\f15f"; } -.t-tram:before { content: "\f160"; } -.t-tri-angular:before { content: "\f161"; } -.t-tri-rounded:before { content: "\f162"; } -.t-truck:before { content: "\f163"; } -.t-truck-rollover-speed:before { content: "\f164"; } -.t-trucks-rollover:before { content: "\f165"; } -.t-turn-90-l:before { content: "\f166"; } -.t-turn-curve-speed:before { content: "\f167"; } -.t-turn-l:before { content: "\f168"; } -.t-turn-l-curve:before { content: "\f169"; } -.t-turn-reverse-left:before { content: "\f16a"; } -.t-turnaround:before { content: "\f16b"; } -.t-turnaround2:before { content: "\f16c"; } -.t-u-turn:before { content: "\f16d"; } -.t-wild-animal:before { content: "\f16e"; } -.t-windbag:before { content: "\f16f"; } -.t-winding-road-left:before { content: "\f170"; } -.t-y-roads:before { content: "\f171"; } - -/** Base */ -.t { - display: inline-block; - font: normal normal normal 14px/1 traffico; - position: relative; - width: 1em; - height: 1em; - line-height: 1em; - vertical-align: middle; - font-size: inherit; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.t i { - position: absolute; - left: 0; - width: 100%; - height:1em; - line-height:0; - text-align: center; -} - -/** Content */ - -.t-content, -.t-content-3, -.t-content-4{ - font-family: Helvetica, Arial, sans-serif; - font-weight: bold; - font-style: normal; - letter-spacing:0; - top:48.5%; -} -.t-content { - font-size: 50%; -} - -.t-content-3 { - font-size: 40%; -} - -.t-content-4 { - font-size: 22.5%; -} - -.t-content-5 { - font-family: Helvetica, Arial, sans-serif; - font-weight: normal; - font-style: normal; - font-size: 15%; - letter-spacing:0; - top:50%; -} - -/** Colours */ - -.t-c-white { - color: white; -} - -.t-c-red { - color: #c1121c; -} - -.t-c-orange { - color: #f60; -} - -.t-c-blue { - color: #154889; -} - -.t-c-black { - color: black; -} - -.t-c-yellow-dark { - color: #f0ca00; -} - -.t-c-yellow { - color: #fecf33; -} - -.t-c-grey { - color: grey; -} - -.t-c-green { - color: #008754; -} - -.t-c-fluogreen { - color: #A2FF31; -} diff --git a/css/traffico/transformations.json b/css/traffico/transformations.json deleted file mode 100755 index 08d9a95f7..000000000 --- a/css/traffico/transformations.json +++ /dev/null @@ -1 +0,0 @@ -{"fit_triangle":"scale(.8) translate(0,5%)","fit_border_circle":"scale(.8)","fit_diamond":"scale(.9)","top_half":"scale(.6) translate(0,-35%)","bottom_half":"scale(.6) translate(0,35%)","left_half":"scale(.6) translate(-40%,0)","right_half":"scale(.6) translate(40%,0)","square_to_diamond":"scale(0.707107) rotate(45deg)","center2tri":"translate(0,14.43%)","tri2center":"translate(0,-14.43%)","inner_triangle":"{center2tri} scale(.7) {tri2center}"} \ No newline at end of file diff --git a/css/traffico/uk.json b/css/traffico/uk.json deleted file mode 100755 index 8b3b5e740..000000000 --- a/css/traffico/uk.json +++ /dev/null @@ -1 +0,0 @@ -{"danger_contraflow":{"category":"danger","name":"contraflow","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"DE-arrow-up","color":"black","transform":"{center2tri} scale(.35) translate(-25%,-5%)"},{"type":"DE-arrow-up","color":"black","transform":"{center2tri} scale(.35) translate(25%,5%) rotate(180deg)"}]},"mandatory_roundabout":{"category":"mandatory","name":"roundabout","elements":[{"type":"circle-bg","color":"blue"},{"type":"roundabout","color":"white","transform":"scale(-1.25,1.25)"}]},"prohibitory_overtaking":{"category":"prohibitory","name":"no overtaking","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"car-left","color":"black"},{"type":"car-right","color":"red"}]}} \ No newline at end of file diff --git a/css/traffico/us.json b/css/traffico/us.json deleted file mode 100755 index 8924a94bb..000000000 --- a/css/traffico/us.json +++ /dev/null @@ -1 +0,0 @@ -{"regulatory_no_entry":{"category":"regulatory","name":"no entry","elements":[{"type":"circle-bg","color":"red"},{"type":"square-angular","color":"white","transform":"scale(.92,.16)"}]},"regulatory_stop":{"category":"regulatory","name":"stop","elements":[{"type":"octagon","color":"red"},{"type":"stop","color":"white"}]},"regulatory_yield":{"category":"regulatory","name":"give way","elements":[{"type":"tri-rounded","color":"red","transform":"rotate(180deg)"},{"type":"tri-rounded","color":"white","transform":"{tri2center} scale(.55) {center2tri} rotate(180deg)"},{"type":"content-4","content":"YIELD","color":"red","transform":"translate(0,-115%) scale(.6)"}]},"warning_merge":{"category":"warning","name":"merge","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"merge","color":"black"}]},"warning_merging_traffic":{"category":"warning","name":"merging traffic","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"merge","color":"black","transform":"rotate(45deg)"}]},"warning_pedestrian_crossing":{"category":"warning","name":"pedestrian crossing","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"pedestrian","color":"black"}]},"warning_traffic_light":{"category":"warning","name":"traffic light","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"square-angular","color":"black","transform":"scale(.2,.55)"},{"type":"circle-bg","color":"green","transform":"translate(0,16.5%) scale(.14)"},{"type":"circle-bg","color":"yellow","transform":"scale(.14)"},{"type":"circle-bg","color":"red","transform":"translate(0,-16.5%) scale(.14)"}]},"warning_traffic_light_horizontal":{"category":"warning","name":"traffic light","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"square-angular","color":"black","transform":"scale(.55,.2)"},{"type":"circle-bg","color":"green","transform":"translate(16.5%,0) scale(.14)"},{"type":"circle-bg","color":"yellow","transform":"scale(.14)"},{"type":"circle-bg","color":"red","transform":"translate(-16.5%,0) scale(.14)"}]},"regulatory_no_parking":{"category":"regulatory","name":"no parking","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"parking","color":"black","transform":"{fit_border_circle}"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_road_narrows_right":{"category":"warning","name":"road narrows right","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"narrow-road-l","color":"black","transform":"{fit_diamond} scale(-1,1)"}]},"warning_road_narrows_left":{"category":"warning","name":"road narrows left","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"narrow-road-l","color":"black","transform":"{fit_diamond}"}]},"warning_road_narrows_both_sides":{"category":"warning","name":"road narrows both","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"narrow-road-both","color":"black","transform":"{fit_diamond}"}]},"regulatory_no_bicycles":{"category":"regulatory","name":"no bicycles","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"bicycle","color":"black","transform":"{fit_border_circle}"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"regulatory_no_left_turn":{"category":"regulatory","name":"no left turn","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"turn-90-l","color":"black","transform":"{fit_border_circle}"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"regulatory_no_turn_right":{"category":"regulatory","name":"no right turn","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"turn-90-l","color":"black","transform":"{fit_border_circle} scale(-1,1)"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"regulatory_no_u_turn":{"category":"regulatory","name":"no u turn","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"u-turn","color":"black","transform":"{fit_border_circle}"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_added_lane":{"category":"warning","name":"added lane","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"added-lane","color":"black"}]},"warning_cross_roads":{"category":"warning","name":"cross roads","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"cross-roads","color":"black"}]},"warning_side_road_perpendicular_right":{"category":"warning","name":"side road perpendicular right","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"side-road-p-r","color":"black"}]},"warning_side_road_perpendicular_left":{"category":"warning","name":"side road perpendicular left","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"side-road-p-l","color":"black"}]},"regulatory_no_trucks":{"category":"regulatory","name":"no trucks","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"truck","color":"black","transform":"{fit_border_circle}"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_turn_right":{"category":"warning","name":"turn right","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-90-l","color":"black","transform":"scale(-1,1)"}]},"warning_turn_left":{"category":"warning","name":"turn left","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-90-l","color":"black"}]},"warning_fire_station":{"category":"warning","name":"fire station","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"fire-station","color":"black"}]},"warning_bicycles":{"category":"warning","name":"bicycles","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"bicycle","color":"black","transform":"{fit_diamond}"}]},"warning_dead_end":{"category":"warning","name":"dead end","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"dead-end","color":"black"}]},"warning_light_rail_crossing":{"category":"warning","name":"light rail crossing","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"light-rail","color":"black"}]},"warning_horizontal_alignment_left":{"category":"warning","name":"horizontal alignment left","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"h-align-l","color":"black"}]},"warning_horizontal_alignment_right":{"category":"warning","name":"horizontal alignment right","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"h-align-l","color":"black","transform":"scale(-1,1)"}]},"warning_highway_divided":{"category":"warning","name":"highway divided","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"highway-divided","color":"black"}]},"warning_steep_hill":{"category":"warning","name":"steep hill","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"steep-hill","color":"black"}]},"warning_low_clearance":{"category":"warning","name":"low clearance","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"low-clearance","color":"black"}]},"warning_offset_roads":{"category":"warning","name":"offset roads","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"offset-roads","color":"black"}]},"warning_slippery":{"category":"warning","name":"slippery","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"slippery","color":"black"}]},"regulatory_no_left_or_u_turn":{"category":"regulatory","name":"no left or u turn","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"no-l-or-u-turn","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_winding_road_left":{"category":"warning","name":"winding road","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"winding-road-left","color":"black"}]},"warning_winding_road_right":{"category":"warning","name":"winding road","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"winding-road-left","color":"black","transform":"scale(-1,1)"}]},"warning_metric_clearance":{"category":"warning","name":"metric clearance","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"metric-clearance","color":"black"}]},"warning_intersection_circular":{"category":"warning","name":"intersection circular","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"roundabout","color":"black"}]},"warning_turn_reverse_right":{"category":"warning","name":"turn reverse right","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-reverse-left","color":"black","transform":"scale(-1,1)"}]},"warning_turn_reverse_left":{"category":"warning","name":"turn reverse left","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-reverse-left","color":"black"}]},"warning_side_road_acute_angle_right":{"category":"warning","name":"side road acute angle right","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"side-road-a-a-r","color":"black"}]},"warning_side_road_acute_angle_left":{"category":"warning","name":"side road acute angle left","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"side-road-a-a-l","color":"black"}]},"warning_t_roads":{"category":"warning","name":"t roads","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"t-roads","color":"black"}]},"regulatory_no_hitch_hiking":{"category":"regulatory","name":"no hitch hiking","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"hitch-hiking","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_pass_left_or_right":{"category":"warning","name":"pass left or right","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"pass-l-r","color":"black"}]},"warning_share_roads":{"category":"warning","name":"share roads","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"share-roads","color":"black"}]},"warning_bickcle_slippery":{"category":"warning","name":"bicycle slippery","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"bicycle-slippery","color":"black"}]},"regulatory_no_pedestrian_crossing":{"category":"regulatory","name":"no pedestrian crossing","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"pedestrian","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_workers_in_road_ahead":{"category":"warning","name":"workers in road ahead","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"roadworks","color":"black","transform":"{fit_diamond}"}]},"warning_play_ground":{"category":"warning","name":"play ground","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"play-ground","color":"black"}]},"warning_falling_rocks":{"category":"warning","name":"falling rocks","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"falling-rocks","color":"black"}]},"warning_hairpin_curve":{"category":"warning","name":"hairpin curve","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"hairpin-curve","color":"black"}]},"warning_end":{"category":"warning","name":"end","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"end","color":"black"}]},"warning_loop_270_degree":{"category":"warning","name":"loop 270 degree","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"loop-270","color":"black"}]},"warning_y_roads":{"category":"warning","name":"y roads","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"y-roads","color":"black"}]},"regulatory_no_straight_through":{"category":"regulatory","name":"no straight through","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"US-arrow-up","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_added_lane_from_entering_roadway":{"category":"warning","name":"added lane (from entering roadway)","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"added-lane","color":"black","transform":"rotate(45deg) scale(.95)"}]},"warning_flaggers_in_road_ahead":{"category":"warning","name":"flaggers in road ahead","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"flaggers","color":"black"}]},"warning_skewed_railroad_crossing":{"category":"warning","name":"skewed railroad crossing","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"skewed-railroads","color":"black"}]},"warning_trucks_rollover":{"category":"warning","name":"trucks rollover","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"trucks-rollover","color":"black"}]},"warning_lightground_railroad_crossing":{"category":"warning","name":"lightground railroad crossing","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"lightground-railroad-crossing","color":"black"}]},"regulatory_national_network_lane":{"category":"regulatory","name":"national_network_lane","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"green"},{"type":"lorry","color":"black"}]},"regulatory_national_network_prohibited":{"category":"regulatory","name":"national_network_lane","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"lorry","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_motorcycle_crossing":{"category":"warning","name":"motorcycle crossing","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"motorbike","color":"black"}]},"warning_railroad":{"category":"warning","name":"railroad","elements":[{"type":"circle-bg","color":"yellow"},{"type":"circle-bar-rounded","color":"black","transform":"rotate(-45deg)"},{"type":"circle-bar-rounded","color":"black","transform":"rotate(45deg)"},{"type":"railroad","color":"black"}]},"regulatory_hazardous_material_prohibited":{"category":"regulatory","name":"hazardous material prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"hazardous-material","color":"black","transform":"{fit_border_circle}"},{"type":"circle-o","color":"red"}]},"warning_truck_rollover_with_speed":{"category":"warning","name":"truck rollover with speed","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"truck-rollover-speed","color":"black"}]},"regulatory_no_rollerblading":{"category":"regulatory","name":"no rollerblading","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"rollerblading","color":"black","transform":"{fit_border_circle}"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"regulatory_one_way_small_left":{"category":"regulatory","name":"one way small left","elements":[{"type":"square-rounded","color":"white","transform":"scale(1.1,.33)"},{"type":"square-rounded","color":"black","transform":"scale(1.1,.33) scale(.95)"},{"type":"US-arrow-oneway","color":"white","transform":"scale(.6) scale(1.35,1) rotate(-90deg)"},{"type":"content-4","color":"black","content":"ONE","transform":"scale(.5,.6) translate(-15%,-25%)"},{"type":"content-4","color":"black","content":"WAY","transform":"scale(.5,.6) translate(45%,-25%)"}]},"regulatory_one_way_small_right":{"category":"regulatory","name":"one way small right","elements":[{"type":"square-rounded","color":"white","transform":"scale(1.1,.33)"},{"type":"square-rounded","color":"black","transform":"scale(1.1,.33) scale(.95)"},{"type":"US-arrow-oneway","color":"white","transform":"scale(.6) scale(1.35,1) rotate(90deg)"},{"type":"content-4","color":"black","content":"ONE","transform":"scale(.5,.6) translate(-45%,-25%)"},{"type":"content-4","color":"black","content":"WAY","transform":"scale(.5,.6) translate(15%,-25%)"}]},"warning_single_2_reverse_curve":{"category":"warning","name":"single 2 reverse curve","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"orange","transform":"scale(.95) {square_to_diamond}"},{"type":"single-2-reverse-curve","color":"black"}]},"warning_double_2_reverse_curve":{"category":"warning","name":"double 2 reverse curve","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"orange","transform":"scale(.95) {square_to_diamond}"},{"type":"single-2-reverse-curve","color":"black","transform":"{fit_diamond} translate(-9%)"},{"type":"single-2-reverse-curve","color":"black","transform":"{fit_diamond} translate(9%)"}]},"warning_triple_2_reverse_curve":{"category":"warning","name":"triple 2 reverse curve","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"orange","transform":"scale(.95) {square_to_diamond}"},{"type":"single-2-reverse-curve","color":"black","transform":"{fit_diamond} translate(-18%)"},{"type":"single-2-reverse-curve","color":"black","transform":"{fit_diamond}"},{"type":"single-2-reverse-curve","color":"black","transform":"{fit_diamond} translate(18%)"}]},"school_school":{"category":"school","name":"school","elements":[{"type":"school","color":"black"},{"type":"school","color":"fluogreen","transform":"scale(.95)"},{"type":"children","color":"black"}]},"school_obsolete":{"category":"school","name":"school","elements":[{"type":"school","color":"black"},{"type":"school","color":"yellow","transform":"scale(.95)"},{"type":"children","color":"black"}]},"warning_turn_left_curve":{"category":"warning","name":"turn left curve","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-l-curve","color":"black","transform":"{fit_diamond}"}]},"warning_turn_right_curve":{"category":"warning","name":"turn right curve","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-l-curve","color":"black","transform":"{fit_diamond} scale(-1,1)"}]},"warning_turn_left_curve_speed":{"category":"warning","name":"turn left curve with speed","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-l-curve","color":"black","transform":"{fit_diamond}"},{"type":"turn-curve-speed","color":"black","transform":"{fit_diamond} scale(-1,1)"}]},"warning_turn_right_curve_speed":{"category":"warning","name":"turn right curve with speed","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-l-curve","color":"black","transform":"{fit_diamond} scale(-1,1)"},{"type":"turn-curve-speed","color":"black","transform":"{fit_diamond}"}]},"warning_pretzel_loop":{"category":"warning","name":"pretzel_loop","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"pretzel-loop","color":"black","transform":"{fit_diamond}"}]}} \ No newline at end of file diff --git a/js/id/renderer/mapillary_trafficsign_layer.js b/js/id/renderer/mapillary_trafficsign_layer.js index 081862036..0a5ecacf3 100644 --- a/js/id/renderer/mapillary_trafficsign_layer.js +++ b/js/id/renderer/mapillary_trafficsign_layer.js @@ -3,7 +3,7 @@ iD.MapillarySignsLayer = function (context) { initiated = false, currentImage, svg, image_preview_div, request, signs_defs; - request = d3.json('/css/traffico-release-0.1.5/global-patched.json', + request = d3.json('css/traffico-release-0.1.5/global-patched.json', function (error, data) { console.error(arguments); if (error) return; From 63d4047f02c49fbe8f5e1f29b3618ecf3e96c071 Mon Sep 17 00:00:00 2001 From: peterneubauer Date: Tue, 2 Jun 2015 09:17:39 +0200 Subject: [PATCH 09/38] not zooming, revealing the render bug --- js/id/renderer/mapillary_trafficsign_layer.js | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/js/id/renderer/mapillary_trafficsign_layer.js b/js/id/renderer/mapillary_trafficsign_layer.js index 0a5ecacf3..2e6604948 100644 --- a/js/id/renderer/mapillary_trafficsign_layer.js +++ b/js/id/renderer/mapillary_trafficsign_layer.js @@ -87,12 +87,9 @@ iD.MapillarySignsLayer = function (context) { request.abort(); request = d3.json('https://a.mapillary.com/v2/search/im/geojson/or?' + - 'or_classes[]=prohibitory_no' + - '&or_classes[]=other_no&or_package=trafficsign_eu_1.0' + - '&min_score=2&' + 'client_id=NzNRM2otQkR2SHJzaXJmNmdQWVQ0dzoxNjQ3MDY4ZTUxY2QzNGI2&min_lat=' + extent[0][1] + '&max_lat=' + extent[1][1] + '&min_lon=' + - extent[0][0] + '&max_lon=' + extent[1][0] + '&max_results=1000&geojson=true', + extent[0][0] + '&max_lon=' + extent[1][0] + '&limit=1000&geojson=true', function (error, data) { if (error) return; console.log(data); @@ -165,7 +162,7 @@ iD.MapillarySignsLayer = function (context) { console.log(images); if(!initiated) { initiated = true; - context.map().zoomOut(); + //context.map().zoomOut(); } }); } From c1a73b1edcce37721d36cfa4c39894557957056e Mon Sep 17 00:00:00 2001 From: peterneubauer Date: Tue, 2 Jun 2015 09:32:50 +0200 Subject: [PATCH 10/38] less data for now --- js/id/renderer/mapillary_trafficsign_layer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/id/renderer/mapillary_trafficsign_layer.js b/js/id/renderer/mapillary_trafficsign_layer.js index 2e6604948..d9060dcc9 100644 --- a/js/id/renderer/mapillary_trafficsign_layer.js +++ b/js/id/renderer/mapillary_trafficsign_layer.js @@ -89,7 +89,7 @@ iD.MapillarySignsLayer = function (context) { request = d3.json('https://a.mapillary.com/v2/search/im/geojson/or?' + 'client_id=NzNRM2otQkR2SHJzaXJmNmdQWVQ0dzoxNjQ3MDY4ZTUxY2QzNGI2&min_lat=' + extent[0][1] + '&max_lat=' + extent[1][1] + '&min_lon=' + - extent[0][0] + '&max_lon=' + extent[1][0] + '&limit=1000&geojson=true', + extent[0][0] + '&max_lon=' + extent[1][0] + '&limit=100&geojson=true', function (error, data) { if (error) return; console.log(data); From d22a3ea2d06d373a228d7d54b38943bc236ec1b0 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 1 Jul 2015 23:24:22 -0400 Subject: [PATCH 11/38] jshint, style, fix test harness --- js/id/renderer/mapillary_trafficsign_layer.js | 43 ++++++++++--------- test/index.html | 1 + 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/js/id/renderer/mapillary_trafficsign_layer.js b/js/id/renderer/mapillary_trafficsign_layer.js index d9060dcc9..c7565cf03 100644 --- a/js/id/renderer/mapillary_trafficsign_layer.js +++ b/js/id/renderer/mapillary_trafficsign_layer.js @@ -1,17 +1,18 @@ -iD.MapillarySignsLayer = function (context) { +iD.MapillarySignsLayer = function(context) { var enable = false, initiated = false, currentImage, svg, image_preview_div, request, signs_defs; - request = d3.json('css/traffico-release-0.1.5/global-patched.json', - function (error, data) { - console.error(arguments); - if (error) return; - signs_defs=data; - }); + + request = d3.json('css/traffico-release-0.1.5/global-patched.json', function(error, data) { + // console.error(arguments); + if (error) return; + signs_defs = data; + }); + function show(image) { svg.selectAll('.node') - .classed('selected', function (d) { + .classed('selected', function(d) { return currentImage && d.key === currentImage.key; }); @@ -43,7 +44,6 @@ iD.MapillarySignsLayer = function (context) { svg.enter().append('svg'); - svg.style('display', enable ? 'block' : 'none'); image_preview_div = context.container().selectAll('.mapillary-image') @@ -90,9 +90,9 @@ iD.MapillarySignsLayer = function (context) { 'client_id=NzNRM2otQkR2SHJzaXJmNmdQWVQ0dzoxNjQ3MDY4ZTUxY2QzNGI2&min_lat=' + extent[0][1] + '&max_lat=' + extent[1][1] + '&min_lon=' + extent[0][0] + '&max_lon=' + extent[1][0] + '&limit=100&geojson=true', - function (error, data) { + function(error, data) { if (error) return; - console.log(data); + // console.log(data); var images = []; for (var i = 0; i < data.features.length; i++) { @@ -106,24 +106,25 @@ iD.MapillarySignsLayer = function (context) { } var foreignObjects = svg.selectAll('foreignObject') - .data(images, function (d) { + .data(images, function(d) { return d.key; }); var enter = foreignObjects.enter(); - var body = enter.append('foreignObject') + enter.append('foreignObject') .attr('x', '0') .attr('y', '0') .attr('width', '30px') .attr('height', '30px') .attr('class', 'node') .append('xhtml:body') - .html(function (d) { - var sign_html = signs_defs[d.signs[0]['type']]; + .html(function(d) { + var sign_html = signs_defs[d.signs[0].type]; return sign_html; }); - foreignObjects.on('click', function (data) { + + foreignObjects.on('click', function(data) { if (!data) { d3.event.preventDefault(); return; @@ -136,14 +137,14 @@ iD.MapillarySignsLayer = function (context) { show(image); } }) - .on('mouseover', function (data) { + .on('mouseover', function(data) { if (!data) { d3.event.preventDefault(); return; } show(data); }) - .on('mouseout', function (data) { + .on('mouseout', function(data) { if (!data) { d3.event.preventDefault(); return; @@ -159,7 +160,7 @@ iD.MapillarySignsLayer = function (context) { foreignObjects.exit() .remove(); - console.log(images); + // console.log(images); if(!initiated) { initiated = true; //context.map().zoomOut(); @@ -167,13 +168,13 @@ iD.MapillarySignsLayer = function (context) { }); } - render.enable = function (_) { + render.enable = function(_) { if (!arguments.length) return enable; enable = _; return render; }; - render.dimensions = function (_) { + render.dimensions = function(_) { if (!arguments.length) return svg.dimensions(); svg.dimensions(_); return render; diff --git a/test/index.html b/test/index.html index 1de031b1b..04f3c5ce4 100644 --- a/test/index.html +++ b/test/index.html @@ -57,6 +57,7 @@ + From 4ffabf8933ab5bea902667d0f1a9f9c42fef95be Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Thu, 2 Jul 2015 10:40:00 -0400 Subject: [PATCH 12/38] Mapillary code cleanup --- css/map.css | 37 +++++---- data/core.yaml | 8 +- dist/locales/en.json | 4 +- index.html | 5 +- js/id/renderer/background.js | 39 +++++----- ...lary_layer.js => mapillary_image_layer.js} | 23 +++--- ...csign_layer.js => mapillary_sign_layer.js} | 77 +++++++++---------- js/id/ui/map_data.js | 55 ++++++------- test/index.html | 4 +- 9 files changed, 126 insertions(+), 126 deletions(-) rename js/id/renderer/{mapillary_layer.js => mapillary_image_layer.js} (83%) rename js/id/renderer/{mapillary_trafficsign_layer.js => mapillary_sign_layer.js} (70%) diff --git a/css/map.css b/css/map.css index 3e3458793..9e72ab0cf 100644 --- a/css/map.css +++ b/css/map.css @@ -1514,74 +1514,73 @@ text.gpx { fill: #FF26D4; } -/* Mapillary Layer */ +/* Mapillary Image Layer */ -.layer-mapillary { +.layer-mapillary-images { pointer-events: none; } -.layer-mapillary g { +.layer-mapillary-images g { pointer-events: visible; cursor: pointer; /* Opera */ cursor: url(img/cursor-select-mapillary.png) 6 1, pointer; /* FF */ } -.layer-mapillary g * { +.layer-mapillary-images g * { stroke-width: 1; stroke: #444; fill: #ffc600; } -.layer-mapillary g:hover * { +.layer-mapillary-images g:hover * { stroke-width: 1; stroke: #333; fill: #ff9900; } -.layer-mapillary g.selected * { +.layer-mapillary-images g.selected * { stroke-width: 2; stroke: #222; fill: #ff5800; } -.layer-mapillary g:hover path.viewfield, -.layer-mapillary g.selected path.viewfield, -.layer-mapillary g path.viewfield { +.layer-mapillary-images g:hover path.viewfield, +.layer-mapillary-images g.selected path.viewfield, +.layer-mapillary-images g path.viewfield { stroke-width: 0; fill-opacity: 0.6; - -/* Mapillary sign Layer */ - -.t { - font-size: 28px; - z-index: 100; } -.node body { - min-width: 30px; -} +/* Mapillary Sign Layer */ .layer-mapillary-signs { pointer-events: none; } .layer-mapillary-signs body { + min-width: 30px; pointer-events: visible; cursor: pointer; /* Opera */ cursor: url(img/cursor-select-mapillary.png) 6 1, pointer; /* FF */ } +.layer-mapillary-signs .icon-sign { + height: 30px; + width: 30px; +} .layer-mapillary-signs body:hover { border: 1px solid red; } -.layer-mapillary-signs .node.selected { +.layer-mapillary-signs .icon-sign.selected { stroke-width: 4; border: 1px solid yellow; } .layer-mapillary-signs .t { + font-size: 28px; + z-index: 100; position: absolute; } diff --git a/data/core.yaml b/data/core.yaml index 7440c3e5b..dbe4f06bf 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -414,14 +414,14 @@ en: drag_drop: "Drag and drop a .gpx file on the page, or click the button to the right to browse" zoom: "Zoom to GPX track" browse: "Browse for a .gpx file" - mapillary: + mapillary_images: tooltip: "Street-level photos from Mapillary" title: "Photo Overlay (Mapillary)" view_on_mapillary: "View this image on Mapillary" mapillary_signs: - tooltip: "Traffic signs from Mapillary" - title: "Traffic sign Overlay (Mapillary)" - view_on_mapillary: "View this image on Mapillary" + tooltip: "Traffic signs from Mapillary" + title: "Traffic Sign Overlay (Mapillary)" + view_on_mapillary: "View this image on Mapillary" help: title: "Help" help: | diff --git a/dist/locales/en.json b/dist/locales/en.json index b8e9edc46..47161545e 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -500,14 +500,14 @@ "zoom": "Zoom to GPX track", "browse": "Browse for a .gpx file" }, - "mapillary": { + "mapillary_images": { "tooltip": "Street-level photos from Mapillary", "title": "Photo Overlay (Mapillary)", "view_on_mapillary": "View this image on Mapillary" }, "mapillary_signs": { "tooltip": "Traffic signs from Mapillary", - "title": "Traffic sign Overlay (Mapillary)", + "title": "Traffic Sign Overlay (Mapillary)", "view_on_mapillary": "View this image on Mapillary" }, "help": { diff --git a/index.html b/index.html index 83009e4c9..3ba91340d 100644 --- a/index.html +++ b/index.html @@ -59,9 +59,8 @@ - - - + + diff --git a/js/id/renderer/background.js b/js/id/renderer/background.js index bbd2e69ed..b5fc14135 100644 --- a/js/id/renderer/background.js +++ b/js/id/renderer/background.js @@ -4,8 +4,8 @@ iD.Background = function(context) { .projection(context.projection), gpxLayer = iD.GpxLayer(context, dispatch) .projection(context.projection), - mapillaryLayer = iD.MapillaryLayer(context), - mapillarySignsLayer = iD.MapillarySignsLayer(context), + mapillaryImageLayer = iD.MapillaryImageLayer(context), + mapillarySignLayer = iD.MapillarySignLayer(context), overlayLayers = []; var backgroundSources; @@ -86,20 +86,21 @@ iD.Background = function(context) { gpx.call(gpxLayer); - var mapillary = selection.selectAll('.layer-mapillary') + var mapillaryImages = selection.selectAll('.layer-mapillary-images') .data([0]); - mapillary.enter().insert('div') - .attr('class', 'layer-layer layer-mapillary'); + mapillaryImages.enter().insert('div') + .attr('class', 'layer-layer layer-mapillary-images'); - mapillary.call(mapillaryLayer); - var mapillary_signs = selection.selectAll('.layer-mapillary-signs') + mapillaryImages.call(mapillaryImageLayer); + + var mapillarySigns = selection.selectAll('.layer-mapillary-signs') .data([0]); - mapillary_signs.enter().insert('div') + mapillarySigns.enter().insert('div') .attr('class', 'layer-layer layer-mapillary-signs'); - mapillary_signs.call(mapillarySignsLayer); + mapillarySigns.call(mapillarySignLayer); } background.sources = function(extent) { @@ -111,8 +112,8 @@ iD.Background = function(context) { background.dimensions = function(_) { baseLayer.dimensions(_); gpxLayer.dimensions(_); - mapillaryLayer.dimensions(_); - mapillarySignsLayer.dimensions(_); + mapillaryImageLayer.dimensions(_); + mapillarySignLayer.dimensions(_); overlayLayers.forEach(function(layer) { layer.dimensions(_); @@ -181,21 +182,21 @@ iD.Background = function(context) { dispatch.change(); }; - background.showsMapillaryLayer = function() { - return mapillaryLayer.enable(); + background.showsMapillaryImageLayer = function() { + return mapillaryImageLayer.enable(); }; - background.showsMapillarySignsLayer = function() { - return mapillarySignsLayer.enable(); + background.showsMapillarySignLayer = function() { + return mapillarySignLayer.enable(); }; - background.toggleMapillaryLayer = function() { - mapillaryLayer.enable(!mapillaryLayer.enable()); + background.toggleMapillaryImageLayer = function() { + mapillaryImageLayer.enable(!mapillaryImageLayer.enable()); dispatch.change(); }; - background.toggleMapillarySignsLayer = function() { - mapillarySignsLayer.enable(!mapillarySignsLayer.enable()); + background.toggleMapillarySignLayer = function() { + mapillarySignLayer.enable(!mapillarySignLayer.enable()); dispatch.change(); }; background.showsLayer = function(d) { diff --git a/js/id/renderer/mapillary_layer.js b/js/id/renderer/mapillary_image_layer.js similarity index 83% rename from js/id/renderer/mapillary_layer.js rename to js/id/renderer/mapillary_image_layer.js index 05b6e4ed7..f00d7ee14 100644 --- a/js/id/renderer/mapillary_layer.js +++ b/js/id/renderer/mapillary_image_layer.js @@ -1,5 +1,10 @@ -iD.MapillaryLayer = function (context) { - var enable = false, +iD.MapillaryImageLayer = function (context) { + var roundedProjection = iD.svg.RoundProjection(context.projection), + urlSearch = 'https://a.mapillary.com/v2/search/s/geojson', + urlImage = 'https://www.mapillary.com/map/im/', + urlThumb = 'https://d1cuyjsrcm0gby.cloudfront.net/', + clientId = 'NzNRM2otQkR2SHJzaXJmNmdQWVQ0dzoxNjQ3MDY4ZTUxY2QzNGI2', + enable = false, currentImage, svg, div, request; @@ -13,10 +18,10 @@ iD.MapillaryLayer = function (context) { .classed('temp', image !== currentImage); div.selectAll('img') - .attr('src', 'https://d1cuyjsrcm0gby.cloudfront.net/' + image.key + '/thumb-320.jpg'); + .attr('src', urlThumb + image.key + '/thumb-320.jpg'); div.selectAll('a') - .attr('href', 'https://www.mapillary.com/map/im/' + image.key); + .attr('href', urlImage + image.key); } function hide() { @@ -28,9 +33,9 @@ iD.MapillaryLayer = function (context) { div.classed('hidden', true); } - function transform(image) { - var t = 'translate(' + context.projection(image.loc) + ')'; - if (image.ca) t += 'rotate(' + image.ca + ',0,0)'; + function transform(d) { + var t = iD.svg.PointTransform(roundedProjection)(d); + if (d.ca) t += ' rotate(' + Math.floor(d.ca) + ',0,0)'; return t; } @@ -80,7 +85,7 @@ iD.MapillaryLayer = function (context) { .attr('target', '_blank') .call(iD.svg.Icon('#icon-out-link', 'inline')) .append('span') - .text(t('mapillary.view_on_mapillary')); + .text(t('mapillary_images.view_on_mapillary')); if (!enable) { hide(); @@ -100,7 +105,7 @@ iD.MapillaryLayer = function (context) { if (request) request.abort(); - request = d3.json('https://a.mapillary.com/v2/search/s/geojson?client_id=NzNRM2otQkR2SHJzaXJmNmdQWVQ0dzoxNjQ3MDY4ZTUxY2QzNGI2&min_lat=' + + request = d3.json(urlSearch + '?client_id=' + clientId + '&min_lat=' + extent[0][1] + '&max_lat=' + extent[1][1] + '&min_lon=' + extent[0][0] + '&max_lon=' + extent[1][0] + '&max_results=100&geojson=true', function (error, data) { diff --git a/js/id/renderer/mapillary_trafficsign_layer.js b/js/id/renderer/mapillary_sign_layer.js similarity index 70% rename from js/id/renderer/mapillary_trafficsign_layer.js rename to js/id/renderer/mapillary_sign_layer.js index c7565cf03..b19e05927 100644 --- a/js/id/renderer/mapillary_trafficsign_layer.js +++ b/js/id/renderer/mapillary_sign_layer.js @@ -1,17 +1,21 @@ -iD.MapillarySignsLayer = function(context) { - var enable = false, +iD.MapillarySignLayer = function(context) { + var roundedProjection = iD.svg.RoundProjection(context.projection), + urlSearch = 'https://a.mapillary.com/v2/search/im/geojson/or', + urlImage = 'http://mapillary.com/map/im/', + urlThumb = 'https://d1cuyjsrcm0gby.cloudfront.net/', + clientId = 'NzNRM2otQkR2SHJzaXJmNmdQWVQ0dzoxNjQ3MDY4ZTUxY2QzNGI2', + enable = false, initiated = false, currentImage, svg, image_preview_div, request, signs_defs; request = d3.json('css/traffico-release-0.1.5/global-patched.json', function(error, data) { - // console.error(arguments); if (error) return; signs_defs = data; }); function show(image) { - svg.selectAll('.node') + svg.selectAll('.icon-sign') .classed('selected', function(d) { return currentImage && d.key === currentImage.key; }); @@ -20,24 +24,19 @@ iD.MapillarySignsLayer = function(context) { .classed('temp', image !== currentImage); image_preview_div.selectAll('img') - .attr('src', 'https://d1cuyjsrcm0gby.cloudfront.net/' + image.key + '/thumb-320.jpg'); + .attr('src', urlThumb + image.key + '/thumb-320.jpg'); image_preview_div.selectAll('a') - .attr('href', 'http://mapillary.com/map/im/' + image.key); + .attr('href', urlImage + image.key); } function hide() { currentImage = undefined; - svg.selectAll('.node') + svg.selectAll('.icon-sign') .classed('selected', false); image_preview_div.classed('hidden', true); } - function transform(image) { - var t = 'translate(' + context.projection(image.loc) + ')'; - return t; - } - function render(selection) { svg = selection.selectAll('svg') .data([0]); @@ -67,18 +66,19 @@ iD.MapillarySignsLayer = function(context) { .attr('class', 'icon icon-pre-text out-link'); link.append('span') - .text(t('mapillary.view_on_mapillary')); + .text(t('mapillary_signs.view_on_mapillary')); if (!enable) { hide(); - svg.selectAll('.node') + svg.selectAll('.icon-sign') .remove(); return; } - svg.selectAll('.node') + // hack + svg.selectAll('.icon-sign') .remove(); var extent = context.map().extent(); @@ -86,13 +86,11 @@ iD.MapillarySignsLayer = function(context) { if (request) request.abort(); - request = d3.json('https://a.mapillary.com/v2/search/im/geojson/or?' + - 'client_id=NzNRM2otQkR2SHJzaXJmNmdQWVQ0dzoxNjQ3MDY4ZTUxY2QzNGI2&min_lat=' + + request = d3.json(urlSearch + '?client_id=' + clientId + '&min_lat=' + extent[0][1] + '&max_lat=' + extent[1][1] + '&min_lon=' + extent[0][0] + '&max_lon=' + extent[1][0] + '&limit=100&geojson=true', function(error, data) { if (error) return; - // console.log(data); var images = []; for (var i = 0; i < data.features.length; i++) { @@ -106,37 +104,32 @@ iD.MapillarySignsLayer = function(context) { } var foreignObjects = svg.selectAll('foreignObject') - .data(images, function(d) { - return d.key; - }); + .data(images, function(d) { return d.key; }); var enter = foreignObjects.enter(); enter.append('foreignObject') - .attr('x', '0') - .attr('y', '0') - .attr('width', '30px') - .attr('height', '30px') - .attr('class', 'node') + .attr('class', 'icon-sign') .append('xhtml:body') .html(function(d) { var sign_html = signs_defs[d.signs[0].type]; return sign_html; }); - foreignObjects.on('click', function(data) { - if (!data) { - d3.event.preventDefault(); - return; - } - var image = data; - if (currentImage === image) { - hide(); - } else { - currentImage = image; - show(image); - } - }) + foreignObjects + .on('click', function(data) { + if (!data) { + d3.event.preventDefault(); + return; + } + var image = data; + if (currentImage === image) { + hide(); + } else { + currentImage = image; + show(image); + } + }) .on('mouseover', function(data) { if (!data) { d3.event.preventDefault(); @@ -156,14 +149,14 @@ iD.MapillarySignsLayer = function(context) { } }); - foreignObjects.attr('transform', transform); + foreignObjects + .attr('transform', iD.svg.PointTransform(roundedProjection)); foreignObjects.exit() .remove(); - // console.log(images); + if(!initiated) { initiated = true; - //context.map().zoomOut(); } }); } diff --git a/js/id/ui/map_data.js b/js/id/ui/map_data.js index d35283eb0..b232ffb79 100644 --- a/js/id/ui/map_data.js +++ b/js/id/ui/map_data.js @@ -42,12 +42,12 @@ iD.ui.MapData = function(context) { update(); } - function clickMapillary() { - context.background().toggleMapillaryLayer(); + function clickMapillaryImages() { + context.background().toggleMapillaryImageLayer(); update(); } function clickMapillarySigns() { - context.background().toggleMapillarySignsLayer(); + context.background().toggleMapillarySignLayer(); update(); } @@ -103,8 +103,8 @@ iD.ui.MapData = function(context) { var hasGpx = context.background().hasGpxLayer(), showsGpx = context.background().showsGpxLayer(), - showsMapillary = context.background().showsMapillaryLayer(), - showsMapillarySigns = context.background().showsMapillarySignsLayer(); + showsMapillaryImages = context.background().showsMapillaryImageLayer(), + showsMapillarySigns = context.background().showsMapillarySignLayer(); gpxLayerItem .classed('active', showsGpx) @@ -112,12 +112,12 @@ iD.ui.MapData = function(context) { .property('disabled', !hasGpx) .property('checked', showsGpx); - mapillaryLayerItem - .classed('active', showsMapillary) + mapillaryImageLayerItem + .classed('active', showsMapillaryImages) .selectAll('input') - .property('checked', showsMapillary); + .property('checked', showsMapillaryImages); - mapillarySignsLayerItem + mapillarySignLayerItem .classed('active', showsMapillarySigns) .selectAll('input') .property('checked', showsMapillarySigns); @@ -203,41 +203,44 @@ iD.ui.MapData = function(context) { .attr('class', 'filters') .style('display', 'block'); - // mapillary - var mapillaryLayerItem = layerContainer.append('ul') + + // Mapillary Image Layer + var mapillaryImageLayerItem = layerContainer.append('ul') .attr('class', 'layer-list') .append('li'); - var label = mapillaryLayerItem.append('label') + var labelImage = mapillaryImageLayerItem.append('label') .call(bootstrap.tooltip() - .title(t('mapillary.tooltip')) + .title(t('mapillary_images.tooltip')) .placement('top')); - label.append('input') + labelImage.append('input') .attr('type', 'checkbox') - .on('change', clickMapillary); + .on('change', clickMapillaryImages); - label.append('span') - .text(t('mapillary.title')); + labelImage.append('span') + .text(t('mapillary_images.title')); - // mapillary signs - var mapillarySignsLayerItem = layerContainer.append('ul') + + // Mapillary Sign Layer + var mapillarySignLayerItem = layerContainer.append('ul') .attr('class', 'layer-list') .append('li'); - var label_signs = mapillarySignsLayerItem.append('label') + var labelSigns = mapillarySignLayerItem.append('label') .call(bootstrap.tooltip() .title(t('mapillary_signs.tooltip')) .placement('top')); - label_signs.append('input') + labelSigns.append('input') .attr('type', 'checkbox') .on('change', clickMapillarySigns); - label_signs.append('span') + labelSigns.append('span') .text(t('mapillary_signs.title')); - //gpx + + // GPX Layer var gpxLayerItem = layerContainer.append('ul') .style('display', iD.detect().filedrop ? 'block' : 'none') .attr('class', 'layer-list') @@ -271,17 +274,17 @@ iD.ui.MapData = function(context) { }) .call(iD.svg.Icon('#icon-geolocate')); - label = gpxLayerItem.append('label') + var labelGpx = gpxLayerItem.append('label') .call(bootstrap.tooltip() .title(t('gpx.drag_drop')) .placement('top')); - label.append('input') + labelGpx.append('input') .attr('type', 'checkbox') .property('disabled', true) .on('change', clickGpx); - label.append('span') + labelGpx.append('span') .text(t('gpx.local_layer')); diff --git a/test/index.html b/test/index.html index 04f3c5ce4..bc932e87a 100644 --- a/test/index.html +++ b/test/index.html @@ -56,8 +56,8 @@ - - + + From 99972bbc1b2a8d9b7ff714bd920cbc28b18a4af1 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Mon, 9 Nov 2015 16:12:11 -0500 Subject: [PATCH 13/38] Rebase to 1.8.5 and update api keys --- index.html | 3 +-- js/id/renderer/mapillary_image_layer.js | 2 +- js/id/renderer/mapillary_sign_layer.js | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index 3ba91340d..60ea3d407 100644 --- a/index.html +++ b/index.html @@ -3,11 +3,10 @@ iD - - + diff --git a/js/id/renderer/mapillary_image_layer.js b/js/id/renderer/mapillary_image_layer.js index f00d7ee14..86c429820 100644 --- a/js/id/renderer/mapillary_image_layer.js +++ b/js/id/renderer/mapillary_image_layer.js @@ -3,7 +3,7 @@ iD.MapillaryImageLayer = function (context) { urlSearch = 'https://a.mapillary.com/v2/search/s/geojson', urlImage = 'https://www.mapillary.com/map/im/', urlThumb = 'https://d1cuyjsrcm0gby.cloudfront.net/', - clientId = 'NzNRM2otQkR2SHJzaXJmNmdQWVQ0dzoxNjQ3MDY4ZTUxY2QzNGI2', + clientId = 'NzNRM2otQkR2SHJzaXJmNmdQWVQ0dzo1ZWYyMmYwNjdmNDdlNmVi', enable = false, currentImage, svg, div, request; diff --git a/js/id/renderer/mapillary_sign_layer.js b/js/id/renderer/mapillary_sign_layer.js index b19e05927..255622939 100644 --- a/js/id/renderer/mapillary_sign_layer.js +++ b/js/id/renderer/mapillary_sign_layer.js @@ -3,7 +3,7 @@ iD.MapillarySignLayer = function(context) { urlSearch = 'https://a.mapillary.com/v2/search/im/geojson/or', urlImage = 'http://mapillary.com/map/im/', urlThumb = 'https://d1cuyjsrcm0gby.cloudfront.net/', - clientId = 'NzNRM2otQkR2SHJzaXJmNmdQWVQ0dzoxNjQ3MDY4ZTUxY2QzNGI2', + clientId = 'NzNRM2otQkR2SHJzaXJmNmdQWVQ0dzo1ZWYyMmYwNjdmNDdlNmVi', enable = false, initiated = false, currentImage, From 077aa65a294c2861bde3881fd209abe4709a6202 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Sun, 7 Feb 2016 21:32:14 -0500 Subject: [PATCH 14/38] remove RoundedProjection --- js/id/renderer/mapillary_image_layer.js | 5 ++--- js/id/renderer/mapillary_sign_layer.js | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/js/id/renderer/mapillary_image_layer.js b/js/id/renderer/mapillary_image_layer.js index 86c429820..8fae6f0ef 100644 --- a/js/id/renderer/mapillary_image_layer.js +++ b/js/id/renderer/mapillary_image_layer.js @@ -1,6 +1,5 @@ iD.MapillaryImageLayer = function (context) { - var roundedProjection = iD.svg.RoundProjection(context.projection), - urlSearch = 'https://a.mapillary.com/v2/search/s/geojson', + var urlSearch = 'https://a.mapillary.com/v2/search/s/geojson', urlImage = 'https://www.mapillary.com/map/im/', urlThumb = 'https://d1cuyjsrcm0gby.cloudfront.net/', clientId = 'NzNRM2otQkR2SHJzaXJmNmdQWVQ0dzo1ZWYyMmYwNjdmNDdlNmVi', @@ -34,7 +33,7 @@ iD.MapillaryImageLayer = function (context) { } function transform(d) { - var t = iD.svg.PointTransform(roundedProjection)(d); + var t = iD.svg.PointTransform(context.projection)(d); if (d.ca) t += ' rotate(' + Math.floor(d.ca) + ',0,0)'; return t; } diff --git a/js/id/renderer/mapillary_sign_layer.js b/js/id/renderer/mapillary_sign_layer.js index 255622939..fffeb9ea0 100644 --- a/js/id/renderer/mapillary_sign_layer.js +++ b/js/id/renderer/mapillary_sign_layer.js @@ -1,6 +1,5 @@ iD.MapillarySignLayer = function(context) { - var roundedProjection = iD.svg.RoundProjection(context.projection), - urlSearch = 'https://a.mapillary.com/v2/search/im/geojson/or', + var urlSearch = 'https://a.mapillary.com/v2/search/im/geojson/or', urlImage = 'http://mapillary.com/map/im/', urlThumb = 'https://d1cuyjsrcm0gby.cloudfront.net/', clientId = 'NzNRM2otQkR2SHJzaXJmNmdQWVQ0dzo1ZWYyMmYwNjdmNDdlNmVi', @@ -150,7 +149,7 @@ iD.MapillarySignLayer = function(context) { }); foreignObjects - .attr('transform', iD.svg.PointTransform(roundedProjection)); + .attr('transform', iD.svg.PointTransform(context.projection)); foreignObjects.exit() .remove(); From a9389b67735e56d8f000adfff792c97ea582d25b Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Sun, 7 Feb 2016 23:37:33 -0500 Subject: [PATCH 15/38] update to traffico-release-0.1.26 --- css/traffico-release-0.1.26 | 1 + css/traffico-release-0.1.5/LICENSE | 22 - css/traffico-release-0.1.5/README.md | 6 - css/traffico-release-0.1.5/at.json | 1 - css/traffico-release-0.1.5/be.json | 1 - css/traffico-release-0.1.5/bower.json | 17 - css/traffico-release-0.1.5/cz.json | 1 - css/traffico-release-0.1.5/de.json | 1 - css/traffico-release-0.1.5/dk.json | 1 - css/traffico-release-0.1.5/ee.json | 1 - css/traffico-release-0.1.5/es.json | 1 - css/traffico-release-0.1.5/europe.json | 1 - css/traffico-release-0.1.5/fi.json | 1 - .../fonts/traffico-preview.html | 1913 ----------------- css/traffico-release-0.1.5/fonts/traffico.eot | Bin 26178 -> 0 bytes css/traffico-release-0.1.5/fonts/traffico.svg | 826 ------- css/traffico-release-0.1.5/fonts/traffico.ttf | Bin 26000 -> 0 bytes .../fonts/traffico.woff | Bin 16536 -> 0 bytes css/traffico-release-0.1.5/fr.json | 1 - .../global-patched.json | 1 - css/traffico-release-0.1.5/global.json | 1 - css/traffico-release-0.1.5/gr.json | 1 - css/traffico-release-0.1.5/hu.json | 1 - css/traffico-release-0.1.5/it.json | 1 - css/traffico-release-0.1.5/lt.json | 1 - css/traffico-release-0.1.5/lu.json | 1 - css/traffico-release-0.1.5/lv.json | 1 - css/traffico-release-0.1.5/nl.json | 1 - css/traffico-release-0.1.5/pl.json | 1 - css/traffico-release-0.1.5/se.json | 1 - css/traffico-release-0.1.5/si.json | 1 - css/traffico-release-0.1.5/sk.json | 1 - .../stylesheets/traffico.css | 365 ---- .../transformations.json | 1 - css/traffico-release-0.1.5/uk.json | 1 - css/traffico-release-0.1.5/us.json | 1 - index.html | 2 +- js/id/renderer/mapillary_sign_layer.js | 18 +- 38 files changed, 14 insertions(+), 3182 deletions(-) create mode 160000 css/traffico-release-0.1.26 delete mode 100755 css/traffico-release-0.1.5/LICENSE delete mode 100755 css/traffico-release-0.1.5/README.md delete mode 100755 css/traffico-release-0.1.5/at.json delete mode 100755 css/traffico-release-0.1.5/be.json delete mode 100755 css/traffico-release-0.1.5/bower.json delete mode 100755 css/traffico-release-0.1.5/cz.json delete mode 100755 css/traffico-release-0.1.5/de.json delete mode 100755 css/traffico-release-0.1.5/dk.json delete mode 100755 css/traffico-release-0.1.5/ee.json delete mode 100755 css/traffico-release-0.1.5/es.json delete mode 100755 css/traffico-release-0.1.5/europe.json delete mode 100755 css/traffico-release-0.1.5/fi.json delete mode 100755 css/traffico-release-0.1.5/fonts/traffico-preview.html delete mode 100755 css/traffico-release-0.1.5/fonts/traffico.eot delete mode 100755 css/traffico-release-0.1.5/fonts/traffico.svg delete mode 100755 css/traffico-release-0.1.5/fonts/traffico.ttf delete mode 100755 css/traffico-release-0.1.5/fonts/traffico.woff delete mode 100755 css/traffico-release-0.1.5/fr.json delete mode 100755 css/traffico-release-0.1.5/global-patched.json delete mode 100755 css/traffico-release-0.1.5/global.json delete mode 100755 css/traffico-release-0.1.5/gr.json delete mode 100755 css/traffico-release-0.1.5/hu.json delete mode 100755 css/traffico-release-0.1.5/it.json delete mode 100755 css/traffico-release-0.1.5/lt.json delete mode 100755 css/traffico-release-0.1.5/lu.json delete mode 100755 css/traffico-release-0.1.5/lv.json delete mode 100755 css/traffico-release-0.1.5/nl.json delete mode 100755 css/traffico-release-0.1.5/pl.json delete mode 100755 css/traffico-release-0.1.5/se.json delete mode 100755 css/traffico-release-0.1.5/si.json delete mode 100755 css/traffico-release-0.1.5/sk.json delete mode 100755 css/traffico-release-0.1.5/stylesheets/traffico.css delete mode 100755 css/traffico-release-0.1.5/transformations.json delete mode 100755 css/traffico-release-0.1.5/uk.json delete mode 100755 css/traffico-release-0.1.5/us.json diff --git a/css/traffico-release-0.1.26 b/css/traffico-release-0.1.26 new file mode 160000 index 000000000..2ff4ac82f --- /dev/null +++ b/css/traffico-release-0.1.26 @@ -0,0 +1 @@ +Subproject commit 2ff4ac82f199f5e793e45e2326c24228db0d7726 diff --git a/css/traffico-release-0.1.5/LICENSE b/css/traffico-release-0.1.5/LICENSE deleted file mode 100755 index e32f5dc60..000000000 --- a/css/traffico-release-0.1.5/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 mapillary - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - diff --git a/css/traffico-release-0.1.5/README.md b/css/traffico-release-0.1.5/README.md deleted file mode 100755 index 9aa1239f0..000000000 --- a/css/traffico-release-0.1.5/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# traffico-release -Release repository for Traffico, an Open Source Traffic Sign Font. - -Source code: [mapillary/traffico](https://github.com/mapillary/traffico) - -License: MIT diff --git a/css/traffico-release-0.1.5/at.json b/css/traffico-release-0.1.5/at.json deleted file mode 100755 index c98868d2a..000000000 --- a/css/traffico-release-0.1.5/at.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_at":{"category":"information","name":"European border crossing into Austria","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"ÖSTERREICH","transform":"scale(.75)"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/be.json b/css/traffico-release-0.1.5/be.json deleted file mode 100755 index c1dc1db9a..000000000 --- a/css/traffico-release-0.1.5/be.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_be_nl":{"category":"information","name":"European border crossing into Belgium from the Netherlands","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"België"}]},"information_border_be_fr":{"category":"information","name":"European border crossing into Belgium from France","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Belgique"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/bower.json b/css/traffico-release-0.1.5/bower.json deleted file mode 100755 index 93ccac3ea..000000000 --- a/css/traffico-release-0.1.5/bower.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "Traffico", - "version": "0.1.5", - "homepage": "https://github.com/mapillary/traffico", - "authors": [ - "Kamil Nikel " - ], - "description": "An Open Source Traffic Sign Font", - "main": "stylesheets/traffico.css", - "keywords": [ - "traffic", - "signs", - "road", - "font" - ], - "license": "MIT" -} diff --git a/css/traffico-release-0.1.5/cz.json b/css/traffico-release-0.1.5/cz.json deleted file mode 100755 index 2b5875bd0..000000000 --- a/css/traffico-release-0.1.5/cz.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_cz":{"category":"information","name":"European border crossing into Czech Republic","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"České","transform":"translate(0,-50%)"},{"type":"content-5","color":"white","content":"republika","transform":"translate(0,50%)"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/de.json b/css/traffico-release-0.1.5/de.json deleted file mode 100755 index 0869b3dad..000000000 --- a/css/traffico-release-0.1.5/de.json +++ /dev/null @@ -1 +0,0 @@ -{"danger_level_crossing":{"category":"danger","name":"level crossing","elements":[{"type":"square-angular","color":"black","transform":"rotate(30deg) scale(.15,1)"},{"type":"square-angular","color":"black","transform":"rotate(-30deg) scale(.15,1)"},{"type":"square-angular","color":"red","transform":"rotate(30deg) scale(.14,.99)"},{"type":"square-angular","color":"red","transform":"rotate(-30deg) scale(.14,.99)"},{"type":"square-angular","color":"white","transform":"rotate(30deg) scale(.14,.6)"},{"type":"square-angular","color":"white","transform":"rotate(-30deg) scale(.14,.6)"}]},"danger_railway_crossing_unsecured":{"category":"danger","name":"unsecured railway crossing","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"train-electric","color":"black","transform":"scale(.4) translate(10%,40%)"}]},"information_bus_stop":{"category":"information","name":"bus stop (also used for tram)","elements":[{"type":"circle-bg","color":"yellow"},{"type":"circle-o","color":"green"},{"type":"h","color":"green","transform":"{fit_border_circle}"}]},"information_border_de":{"category":"information","name":"European border crossing into Germany","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Bundes-","transform":"scale(.9) translate(0,-130%)"},{"type":"content-5","color":"white","content":"republik","transform":"scale(.9) translate(0,-30%)"},{"type":"content-5","color":"white","content":"Deutschland","transform":"scale(.9) translate(0,70%)"}]},"priority_priority_road_end":{"category":"priority","name":"end of priority road","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"white","transform":"{square_to_diamond} scale(.98)"},{"type":"square-rounded","color":"yellow","transform":"scale(.6) {square_to_diamond}"},{"type":"square-angular","color":"black","transform":"{square_to_diamond} scale(.05,1)"},{"type":"square-angular","color":"black","transform":"{square_to_diamond} scale(.05,1) translate(150%,0)"},{"type":"square-angular","color":"black","transform":"{square_to_diamond} scale(.05,1) translate(-150%,0)"}]},"prohibitory_end_of_limits":{"category":"prohibitory","name":"end of all speed and passing limits","elements":[{"type":"circle-bg","color":"black"},{"type":"circle-bg","color":"white","transform":"scale(.95)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.025,.99)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.025,.98) translate(150%,0)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.025,.97) translate(300%,0)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.025,.98) translate(-150%,0)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.025,.97) translate(-300%,0)"}]},"prohibitory_low_emission_zone":{"category":"prohibitory","name":"low-emission zone","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95)"},{"type":"circle-bg","color":"red","transform":"translate(0,-8%) scale(.7)"},{"type":"circle-bg","color":"white","transform":"translate(0,-8%) scale(.7) {fit_border_circle}"},{"type":"content-4","content":"Umwelt","color":"black","transform":"translate(0,-50%) scale(.8) {fit_border_circle}"},{"type":"content-4","content":"ZONE","color":"black","transform":"translate(0,150%) scale(.8)"}]},"prohibitory_low_emission_zone_end":{"category":"prohibitory","name":"end of low-emission zone","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95)"},{"type":"circle-bg","color":"grey","transform":"translate(0,-8%) scale(.7)"},{"type":"circle-bg","color":"white","transform":"translate(0,-8%) scale(.7) {fit_border_circle}"},{"type":"content-4","content":"Umwelt","color":"grey","transform":"translate(0,-50%) scale(.8) {fit_border_circle}"},{"type":"content-4","content":"ZONE","color":"grey","transform":"translate(0,150%) scale(.8)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.02,1.35)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.02,1.3) translate(-150%, 0)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.02,1.3) translate(150%, 0)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.02,1.25) translate(-300%, 0)"},{"type":"square-angular","color":"black","transform":"rotate(45deg) scale(.02,1.25) translate(300%, 0)"}]},"supplementary_destination":{"category":"supplementary","name":"destination traffic excluded","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"content-4","color":"black","content":"Anlieger","transform":"translate(0,-45%) scale(.8)"},{"type":"content-4","color":"black","content":"frei","transform":"translate(0,45%) scale(.8)"}]},"supplementary_disabled":{"category":"supplementary","name":"for disabled people","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"disabled-p","color":"black","transform":"scale(.6)"}]},"supplementary_glaze":{"category":"supplementary","name":"for disabled people","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"snowflake","color":"black","transform":"scale(.8)"}]},"supplementary_left_pointing":{"category":"supplementary","name":"left pointing","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"DE-arrow-up","color":"black","transform":"scale(.6) rotate(-90deg)"}]},"supplementary_both_directions":{"category":"supplementary","name":"both directions","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"DE-arrow-up","color":"black","transform":"translate(-15%,0) scale(.5) rotate(180deg)"},{"type":"DE-arrow-up","color":"black","transform":"translate(15%,0) scale(.5)"}]},"supplementary_pedestrians_use_opposite_sidewalk":{"category":"supplementary","name":"pedestrians should use opposite sidewalk","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"DE-arrow-up","color":"black","transform":"translate(-20%,0) scale(.5) rotate(-90deg)"},{"type":"pedestrians","color":"black","transform":"translate(25%,0) scale(.6)"}]},"supplementary_pedestrians_use_opposite_sidewalk2":{"category":"supplementary","name":"pedestrians should use opposite sidewalk","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"DE-arrow-up","color":"black","transform":"translate(20%,0) scale(.5) rotate(90deg)"},{"type":"pedestrians","color":"black","transform":"translate(-25%,0) scale(.6)"}]},"supplementary_railway_only":{"category":"supplementary","name":"railway only","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"train-electric","color":"black","transform":"scale(.45)"}]},"supplementary_right_pointing":{"category":"supplementary","name":"right pointing","elements":[{"type":"square-rounded","color":"black","transform":"scale(1,.5)"},{"type":"square-rounded","color":"white","transform":"scale(.95, .45)"},{"type":"DE-arrow-up","color":"black","transform":"scale(.6) rotate(90deg)"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/dk.json b/css/traffico-release-0.1.5/dk.json deleted file mode 100755 index 9350d5bb0..000000000 --- a/css/traffico-release-0.1.5/dk.json +++ /dev/null @@ -1 +0,0 @@ -{"danger_level_crossing":{"category":"danger","name":"level crossing","elements":[{"type":"square-angular","color":"red","transform":"rotate(60deg) scale(.2,1)"},{"type":"square-angular","color":"red","transform":"rotate(-60deg) scale(.2,1)"},{"type":"square-angular","color":"white","transform":"rotate(60deg) scale(.1,.5) translate(50%,50%)"},{"type":"square-angular","color":"white","transform":"rotate(-60deg) scale(.1,.5) translate(-50%,50%)"},{"type":"square-angular","color":"white","transform":"rotate(60deg) scale(.1,.5) translate(-50%,-50%)"},{"type":"square-angular","color":"white","transform":"rotate(-60deg) scale(.1,.5) translate(50%,-50%)"}]},"information_border_dk":{"category":"information","name":"European border crossing into Denmark","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Danmark"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/ee.json b/css/traffico-release-0.1.5/ee.json deleted file mode 100755 index cd83633da..000000000 --- a/css/traffico-release-0.1.5/ee.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_ee":{"category":"information","name":"European border crossing into Estonia","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"EESTI"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/es.json b/css/traffico-release-0.1.5/es.json deleted file mode 100755 index 3edf42fd6..000000000 --- a/css/traffico-release-0.1.5/es.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_es":{"category":"information","name":"European border crossing into Spain","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"ESPAÑA"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/europe.json b/css/traffico-release-0.1.5/europe.json deleted file mode 100755 index 85e689ce9..000000000 --- a/css/traffico-release-0.1.5/europe.json +++ /dev/null @@ -1 +0,0 @@ -{"danger_ascent":{"category":"danger","name":"steep ascent","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"descent","color":"black","transform":"{inner_triangle} scale(-1,1)"},{"type":"incline_value","content":"10%","color":"black","transform":"translate(0,-25%) {center2tri} scale(.4) rotate(-30deg)"}]},"danger_bend_first_left":{"category":"danger","name":"bend first left","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"d-curve-l","color":"black","transform":"{center2tri} scale(.6)"}]},"danger_bend_first_right":{"category":"danger","name":"bend first right","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"d-curve-l","color":"black","transform":"{center2tri} scale(-.6,.6)"}]},"danger_bend_left":{"category":"danger","name":"bend left","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"turn-l","color":"black","transform":"{center2tri} scale(.6)"}]},"danger_bend_right":{"category":"danger","name":"bend right","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"turn-l","color":"black","transform":"{center2tri} scale(-.6,.6)"}]},"danger_construction":{"category":"danger","name":"construction/road works","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"roadworks","color":"black","transform":"scale(.7) translate(0,20%)"}]},"danger_contraflow":{"category":"danger","name":"contraflow","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"DE-arrow-up","color":"black","transform":"{center2tri} scale(.35) translate(-25%,5%) rotate(180deg)"},{"type":"DE-arrow-up","color":"black","transform":"{center2tri} scale(.35) translate(25%,-5%)"}]},"danger_crossroad":{"category":"danger","name":"crossroad with priority to the right ahead","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"square-angular","color":"black","transform":"{center2tri} rotate(45deg) scale(.06,.32)"},{"type":"square-angular","color":"black","transform":"{center2tri} rotate(-45deg) scale(.06,.32)"}]},"danger_cycle_crossing":{"category":"danger","name":"cycle crossing","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"bicycle","color":"black","transform":"scale(.65) translate(0,25%)"}]},"danger_danger":{"category":"danger","name":"danger","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"exclamation","color":"black","transform":"scale(.65) {center2tri}"}]},"danger_danger_tmp":{"category":"danger","name":"danger (temporary)","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"yellow","transform":"{inner_triangle}"},{"type":"exclamation","color":"black","transform":"scale(.65) {center2tri}"}]},"danger_descent":{"category":"danger","name":"steep descent","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"descent","color":"black","transform":"{inner_triangle}"},{"type":"incline_value","content":"10%","color":"black","transform":"translate(0,-25%) {center2tri} scale(.4) rotate(30deg)"}]},"danger_domestic_animals":{"category":"danger","name":"domestic animals","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"domestic-animal","color":"black","transform":"{center2tri} translate(-6%,4%) scale(.25)"}]},"danger_level_crossing":{"category":"danger","name":"level crossing","elements":[{"type":"level-crossing","color":"red"},{"type":"level-crossing","color":"red","transform":"scale(-1,1)"},{"type":"square-angular","color":"white","transform":"rotate(60deg) scale(.05,1)"},{"type":"square-angular","color":"white","transform":"rotate(-60deg) scale(.05,1)"}]},"danger_pedestrians":{"category":"danger","name":"pedestrians","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"pedestrian","color":"black","transform":"scale(.7) {center2tri}"}]},"danger_pedestrian_crossing":{"category":"danger","name":"pedestrian crossing","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"pedestrian-crossing","color":"black","transform":"translate(0,2%)"}]},"danger_quayside_or_ferry_berth":{"category":"danger","name":"quayside or ferry berth","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"cliff","color":"black","transform":"{inner_triangle}"}]},"danger_railway_crossing_secured":{"category":"danger","name":"secured railway crossing","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"railway-xing-secured","color":"black","transform":"{center2tri} translate(0,4%) scale(.35)"}]},"danger_railway_crossing_unsecured":{"category":"danger","name":"unsecured railway crossing","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"railway-xing-unsecured","color":"black","transform":"translate(0,13%) scale(.4)"}]},"danger_road_narrows":{"category":"danger","name":"road narrows","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"narrow-road-both","color":"black","transform":"{center2tri} scale(.6)"}]},"danger_road_narrows_left":{"category":"danger","name":"road narrows left","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"narrow-road-l","color":"black","transform":"{center2tri} scale(.6)"}]},"danger_road_narrows_right":{"category":"danger","name":"road narrows right","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"narrow-road-l","color":"black","transform":"{center2tri} scale(-.6,.6)"}]},"danger_roundabout":{"category":"danger","name":"roundabout","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"roundabout","color":"black","transform":"{center2tri} scale(.55)"}]},"danger_school_crossing":{"category":"danger","name":"school crossing","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"children","color":"black","transform":"{center2tri} scale(.75)"}]},"danger_slippery_road":{"category":"danger","name":"slippery road","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"slippery-road","color":"black","transform":"{center2tri} scale(.75)"}]},"danger_snow":{"category":"danger","name":"danger snow","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"snowflake","color":"black","transform":"{center2tri} scale(.7)"}]},"danger_traffic_signal":{"category":"danger","name":"traffic signal","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"circle-bg","color":"red","transform":"{center2tri} translate(0,-20%) scale(.13)"},{"type":"circle-bg","color":"yellow","transform":"{center2tri} translate(0,-5%) scale(.13)"},{"type":"circle-bg","color":"green","transform":"{center2tri} translate(0,10%) scale(.13)"}]},"danger_uneven_road":{"category":"danger","name":"uneven road","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"bumps","color":"black","transform":"{center2tri} scale(.45)"}]},"danger_hump":{"category":"danger","name":"(speed) hump","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"bump","color":"black","transform":"{center2tri} scale(.45)"}]},"danger_wild_animals":{"category":"danger","name":"wild animals crossing","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"wild-animal","color":"black","transform":"{center2tri} scale(.7)"}]},"danger_low_flying_aircraft":{"category":"danger","name":"low flying aircraft","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"airplane","color":"black","transform":"{center2tri} scale(.4)"}]},"danger_strong_sidewind":{"category":"danger","name":"strong sidewind","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"windbag","color":"black","transform":"{center2tri} scale(.3)"}]},"information_bus_stop":{"category":"information","name":"bus stop","elements":[{"type":"square-rounded","color":"blue"},{"type":"square-rounded","color":"white","transform":"scale(.7)"},{"type":"bus","color":"black","transform":"scale(.7)"}]},"information_deadend":{"category":"information","name":"deadend","elements":[{"type":"square-rounded","color":"blue"},{"type":"square-angular","color":"white","transform":"translate(0,20%) scale(.15,.6)"},{"type":"square-angular","color":"red","transform":"translate(0,-15%) scale(.5,.15)"}]},"information_disabled_parking":{"category":"information","name":"disabled parking","elements":[{"type":"square-rounded","color":"blue"},{"type":"disabled-p","color":"white"}]},"information_first_aid":{"category":"information","name":"first aid","elements":[{"type":"square-rounded","color":"blue"},{"type":"square-rounded","color":"white","transform":"scale(.7)"},{"type":"square-angular","color":"red","transform":"scale(.15,.5)"},{"type":"square-angular","color":"red","transform":"scale(.5,.15)"}]},"information_limited_access_road":{"category":"information","name":"limited-access road","elements":[{"type":"square-rounded","color":"blue"},{"type":"car","color":"white","transform":"scale(1.5)"}]},"information_parking":{"category":"information","name":"parking","elements":[{"type":"square-rounded","color":"blue"},{"type":"parking","color":"white"}]},"information_parking_left":{"category":"information","name":"parking (left of this sign)","elements":[{"type":"square-rounded","color":"blue"},{"type":"parking","color":"white"},{"type":"DE-arrow-up","color":"white","transform":"translate(25%,30%) rotate(-90deg) scale(.33)"}]},"information_parking_right":{"category":"information","name":"parking (right of this sign)","elements":[{"type":"square-rounded","color":"blue"},{"type":"parking","color":"white"},{"type":"DE-arrow-up","color":"white","transform":"translate(25%,30%) rotate(90deg) scale(.33)"}]},"information_pedestrian_crossing":{"category":"information","name":"pedestrian crossing","elements":[{"type":"square-rounded","color":"blue"},{"type":"tri-angular","color":"white","transform":"scale(.8)"},{"type":"pedestrian-crossing","color":"black"}]},"mandatory_bicycle_pedestrian_dual_track":{"category":"mandatory","name":"bicycle/pedestrian dual track","elements":[{"type":"circle-bg","color":"blue"},{"type":"bicycle","color":"white","transform":"{right_half}"},{"type":"footpath","color":"white","transform":"{left_half}"},{"type":"circle-separator","color":"white"}]},"mandatory_cycle_track":{"category":"mandatory","name":"cycle track","elements":[{"type":"circle-bg","color":"blue"},{"type":"bicycle","color":"white"}]},"mandatory_equestrian_track":{"category":"mandatory","name":"equestrian track","elements":[{"type":"circle-bg","color":"blue"},{"type":"equestrian","color":"white","transform":"scale(.7)"}]},"mandatory_footpath":{"category":"mandatory","name":"footpath","elements":[{"type":"circle-bg","color":"blue"},{"type":"footpath","color":"white"}]},"mandatory_go_left":{"category":"mandatory","name":"go left","elements":[{"type":"circle-bg","color":"blue"},{"type":"DE-arrow-up","color":"white","transform":"rotate(-90deg)"}]},"mandatory_go_left_or_right":{"category":"mandatory","name":"go left or right","elements":[{"type":"circle-bg","color":"blue"},{"type":"DE-arrow-up","color":"white","transform":"translate(0,-15%) rotate(135deg) scale(.6) translate(0,-32%)"},{"type":"DE-arrow-up","color":"white","transform":"translate(0,-15%) rotate(-135deg) scale(.6) translate(0,-32%)"}]},"mandatory_go_right":{"category":"mandatory","name":"go right","elements":[{"type":"circle-bg","color":"blue"},{"type":"DE-arrow-up","color":"white","transform":"rotate(90deg)"}]},"mandatory_go_straight":{"category":"mandatory","name":"go straight","elements":[{"type":"circle-bg","color":"blue"},{"type":"DE-arrow-up","color":"white"}]},"mandatory_keep_left":{"category":"mandatory","name":"keep left","elements":[{"type":"circle-bg","color":"blue"},{"type":"DE-arrow-up","color":"white","transform":"rotate(-135deg)"}]},"mandatory_keep_right":{"category":"mandatory","name":"keep right","elements":[{"type":"circle-bg","color":"blue"},{"type":"DE-arrow-up","color":"white","transform":"rotate(135deg)"}]},"mandatory_minimum_speed":{"category":"mandatory","name":"minimum speed","elements":[{"type":"circle-bg","color":"blue"},{"type":"speed_value","color":"white"}]},"mandatory_minimum_speed_end":{"category":"mandatory","name":"end of minimum speed limit","elements":[{"type":"circle-bg","color":"blue"},{"type":"speed_value","color":"white"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(45deg)"}]},"mandatory_pedestrian_bicycle_dual_track":{"category":"mandatory","name":"pedestrian/bicycle dual track","elements":[{"type":"circle-bg","color":"blue"},{"type":"bicycle","color":"white","transform":"{left_half}"},{"type":"footpath","color":"white","transform":"{right_half}"},{"type":"circle-separator","color":"white"}]},"mandatory_pedestrian_cycle_track":{"category":"mandatory","name":"pedestrian cycle track","elements":[{"type":"circle-bg","color":"blue"},{"type":"footpath","color":"white","transform":"{top_half}"},{"type":"bicycle","color":"white","transform":"{bottom_half}"},{"type":"circle-separator","color":"white","transform":"rotate(90deg)"}]},"mandatory_roundabout":{"category":"mandatory","name":"roundabout","elements":[{"type":"circle-bg","color":"blue"},{"type":"roundabout","color":"white","transform":"scale(1.25)"}]},"mandatory_turn_left":{"category":"mandatory","name":"turn left","elements":[{"type":"circle-bg","color":"blue"},{"type":"arrow-l","color":"white"}]},"mandatory_turn_left_or_straight":{"category":"mandatory","name":"turn left or straight","elements":[{"type":"circle-bg","color":"blue"},{"type":"arrow-s-l","color":"white"}]},"mandatory_turn_right":{"category":"mandatory","name":"turn right","elements":[{"type":"circle-bg","color":"blue"},{"type":"arrow-l","color":"white","transform":"scale(-1,1)"}]},"mandatory_turn_right_or_straight":{"category":"mandatory","name":"turn right or straight","elements":[{"type":"circle-bg","color":"blue"},{"type":"arrow-s-l","color":"white","transform":"scale(-1,1)"}]},"other_no_entry":{"category":"other","name":"no entry, one way street","elements":[{"type":"circle-bg","color":"red"},{"type":"square-angular","color":"white","transform":"scale(.92,.16)"}]},"other_entry":{"category":"other","name":"entry, one way street","elements":[{"type":"square-rounded","color":"blue"},{"type":"arrow-oneway","color":"white","transform":"scale(.75)"}]},"priority_give_way":{"category":"priority","name":"give way","elements":[{"type":"tri-rounded","color":"red","transform":"rotate(180deg)"},{"type":"tri-angular","color":"white","transform":"{tri2center} scale(.7) {center2tri} rotate(180deg)"}]},"priority_narrow":{"category":"priority","name":"priority at narrow location","elements":[{"type":"square-rounded","color":"blue"},{"type":"DE-arrow-up","color":"red","transform":"scale(.8) translate(-25%,5%) rotate(180deg)"},{"type":"DE-arrow-up","color":"white","transform":"scale(.8) translate(25%,-5%)"}]},"priority_narrow2":{"category":"priority","name":"no priority at narrow location","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"DE-arrow-up","color":"black","transform":"{fit_border_circle} scale(.7) translate(-25%,5%) rotate(180deg)"},{"type":"DE-arrow-up","color":"red","transform":"{fit_border_circle} scale(.7) translate(25%,-5%)"}]},"priority_next_intersection":{"category":"priority","name":"priority at next intersection","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"right-of-way","color":"black","transform":"scale(.7) {center2tri}"}]},"priority_next_intersection_left":{"category":"priority","name":"priority at next intersection on the left","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"right-of-way-l fit","color":"black","transform":"scale(.7) {center2tri}"}]},"priority_next_intersection_right":{"category":"priority","name":"priority at next intersection on the right","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"right-of-way-l fit","color":"black","transform":"scale(.7) {center2tri} scale(-1,1)"}]},"priority_priority_road":{"category":"priority","name":"priority_road","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"white","transform":"scale(.98) {square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.6) {square_to_diamond}"}]},"priority_priority_road_end":{"category":"priority","name":"end of priority road","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"white","transform":"scale(.98) {square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.6) {square_to_diamond}"},{"type":"square-angular","color":"black","transform":"{square_to_diamond} scale(.2,1)"}]},"priority_stop":{"category":"priority","name":"stop","elements":[{"type":"octagon","color":"red"},{"type":"stop","color":"white"}]},"prohibitory_pedestrians":{"category":"prohibitory","name":"pedestrians prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"pedestrian","color":"black","transform":"{fit_border_circle}"}]},"prohibitory_pedestrians_and_bicycles":{"category":"prohibitory","name":"pedestrians and bicycles prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"footpath","color":"black","transform":"{fit_border_circle} {top_half}"},{"type":"bicycle","color":"black","transform":"{fit_border_circle} {bottom_half}"}]},"prohibitory_bicycles":{"category":"prohibitory","name":"cycling prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"bicycle","color":"black","transform":"{fit_border_circle}"}]},"prohibitory_mopeds_and_bicycles":{"category":"prohibitory","name":"mopeds and bicycles prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"moped","color":"black","transform":"{fit_border_circle} {top_half} scale(.7)"},{"type":"bicycle","color":"black","transform":"{fit_border_circle} {bottom_half}"}]},"prohibitory_moped":{"category":"prohibitory","name":"mopeds prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"moped","color":"black","transform":"{fit_border_circle} scale(.7)"}]},"prohibitory_motorcycles":{"category":"prohibitory","name":"motorcycles prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"motorbike","color":"black","transform":"{fit_border_circle}"}]},"prohibitory_motor_vehicles":{"category":"prohibitory","name":"motor vehicles prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"motorbike","color":"black","transform":"{fit_border_circle} {top_half}"},{"type":"car","color":"black","transform":"{fit_border_circle} {bottom_half}"},{"type":"circle-separator","color":"black","transform":"rotate(90deg) {fit_border_circle}"}]},"prohibitory_slow_vehicles":{"category":"prohibitory","name":"slow motorized vehicles prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"tractor","color":"black","transform":"{fit_border_circle} scale(.7)"}]},"prohibitory_trailers":{"category":"prohibitory","name":"no trailers allowed","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"trailer","color":"black","transform":"{fit_border_circle} scale(.8)"}]},"prohibitory_buses":{"category":"prohibitory","name":"no buses","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"bus","color":"black","transform":"{fit_border_circle}"}]},"prohibitory_trucks":{"category":"prohibitory","name":"no trucks","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"truck","color":"black"}]},"prohibitory_trucks_bar":{"category":"prohibitory","name":"no trucks","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"truck","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(45deg)"}]},"prohibitory_trucks_and_buses":{"category":"prohibitory","name":"buses and trucks prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"truck","color":"black","transform":"{fit_border_circle} {top_half}"},{"type":"bus","color":"black","transform":"{fit_border_circle} {bottom_half}"},{"type":"circle-separator","color":"black","transform":"rotate(90deg) {fit_border_circle}"}]},"prohibitory_no_parking":{"category":"prohibitory","name":"no_parking","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"prohibitory_no_parking_or_stopping":{"category":"prohibitory","name":"no parking or stopping","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(45deg)"}]},"prohibitory_no_parking_or_stopping_left":{"category":"prohibitory","name":"no parking or stopping","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(45deg)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(-90deg) scale(.3) translate(95%)"}]},"prohibitory_no_parking_or_stopping_left_and_right":{"category":"prohibitory","name":"no parking or stopping","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(45deg)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(-90deg) scale(.3) translate(95%)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(90deg) scale(.3) translate(95%)"}]},"prohibitory_no_parking_or_stopping_right":{"category":"prohibitory","name":"no parking or stopping","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(45deg)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(90deg) scale(.3) translate(95%)"}]},"prohibitory_no_parking_left":{"category":"prohibitory","name":"no_parking","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(90deg) scale(.3) translate(95%)"}]},"prohibitory_no_parking_left_and_right":{"category":"prohibitory","name":"no_parking","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(90deg) scale(.3) translate(95%)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(-90deg) scale(.3) translate(95%)"}]},"prohibitory_no_parking_right":{"category":"prohibitory","name":"no_parking","elements":[{"type":"circle-bg","color":"blue"},{"type":"circle-o","color":"red"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"},{"type":"DE-arrow-up","color":"white","transform":"rotate(-90deg) scale(.3) translate(95%)"}]},"prohibitory_no_traffic_both_ways":{"category":"prohibitory","name":"no traffic both ways","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"}]},"prohibitory_no_turn_left":{"category":"prohibitory","name":"no turn left","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"turn-l","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(45deg)"}]},"prohibitory_no_turn_right":{"category":"prohibitory","name":"no turn right","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"turn-l","color":"black","transform":"scale(-1,1)"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"prohibitory_no_u_turn":{"category":"prohibitory","name":"no u-turn","elements":[{"type":"circle-bg","color":"red"},{"type":"circle-bg","color":"white","transform":"{fit_border_circle}"},{"type":"turnaround","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-55deg)"},{"type":"turnaround2","color":"black"}]},"prohibitory_overtaking":{"category":"prohibitory","name":"no overtaking","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"car-left","color":"red"},{"type":"car-right","color":"black"}]},"prohibitory_overtaking_trucks":{"category":"prohibitory","name":"no overtaking trucks","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"lorry-left","color":"red"},{"type":"car-right","color":"black"}]},"prohibitory_speed_limit":{"category":"prohibitory","name":"speed limit","elements":[{"type":"circle-bg","color":"red"},{"type":"circle-bg","color":"white","transform":"{fit_border_circle}"},{"type":"speed_value","color":"black"}]},"prohibitory_speed_limit_zone":{"category":"prohibitory","name":"speed limit","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95)"},{"type":"circle-bg","color":"red","transform":"translate(0,-10%) scale(.65)"},{"type":"circle-bg","color":"white","transform":"translate(0,-10%) scale(.65) {fit_border_circle}"},{"type":"speed_zone_value","color":"black","transform":"translate(0,-30%) scale(.7)"},{"type":"content-4","content":"ZONE","color":"black","transform":"translate(0,150%) scale(.8)"}]},"prohibitory_vehicle_height_limit":{"category":"prohibitory","name":"vehicle_height_limit","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"height","color":"black"},{"type":"height_value","color":"black"}]},"prohibitory_vehicle_weight_limit":{"category":"prohibitory","name":"vehicle weight limit","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"weight_value","color":"black"}]},"prohibitory_vehicle_width_limit":{"category":"prohibitory","name":"vehicle_width_limit","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"height","color":"black","transform":"rotate(90deg)"},{"type":"width_value","color":"black"}]},"prohibitory_vehicles_with_dangerous_goods":{"category":"prohibitory","name":"no vehicles with dangerous goods","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"square-rounded","color":"orange","transform":"scale(.25) translate(0,-25%)"},{"type":"lorry","color":"black"}]},"supplementary_priority_road_bends_left_3way_1":{"category":"supplementary","name":"priority road bends to the left at a 3-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,-30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(-.85,.85)"}]},"supplementary_priority_road_bends_left_3way_2":{"category":"supplementary","name":"priority road bends to the left at a 3-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"rotate(-90deg) translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(-.85,.85)"}]},"supplementary_priority_road_bends_left_4way":{"category":"supplementary","name":"priority road bends to the left at a 4-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,-30%) scale(.1,.25)"},{"type":"square-angular","color":"black","transform":"rotate(-90deg) translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(-.85,.85)"}]},"supplementary_priority_road_bends_right_3way_1":{"category":"supplementary","name":"priority road bends to the right at a 3-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,-30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(.85)"}]},"supplementary_priority_road_bends_right_3way_2":{"category":"supplementary","name":"priority road bends to the right at a 3-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"rotate(90deg) translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(.85)"}]},"supplementary_priority_road_bends_right_4way":{"category":"supplementary","name":"priority road bends to the right at a 4-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,-30%) scale(.1,.25)"},{"type":"square-angular","color":"black","transform":"rotate(90deg) translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(.85)"}]},"supplementary_priority_road_from_left_3way":{"category":"supplementary","name":"priority road comes from the left and continues straight at a 3-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(-.85,-.85)"}]},"supplementary_priority_road_from_left_4way":{"category":"supplementary","name":"priority road comes from the left and continues straight at a 4-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,30%) scale(.1,.25)"},{"type":"square-angular","color":"black","transform":"rotate(-90deg) translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(-.85,-.85)"}]},"supplementary_priority_road_from_right_3way":{"category":"supplementary","name":"priority road comes from the right and continues straight at a 3-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(.85,-.85)"}]},"supplementary_priority_road_from_right_4way":{"category":"supplementary","name":"priority road comes from the right and continues straight at a 4-way intersection","elements":[{"type":"square-rounded","color":"black"},{"type":"square-rounded","color":"white","transform":"scale(.95, .95)"},{"type":"square-angular","color":"black","transform":"translate(0,30%) scale(.1,.25)"},{"type":"square-angular","color":"black","transform":"rotate(90deg) translate(0,30%) scale(.1,.25)"},{"type":"bending-priority","color":"black","transform":"scale(.85,-.85)"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/fi.json b/css/traffico-release-0.1.5/fi.json deleted file mode 100755 index 1b969d3bb..000000000 --- a/css/traffico-release-0.1.5/fi.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_fi":{"category":"information","name":"European border crossing into Finland","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"SUOMI","transform":"translate(0,-100%)"},{"type":"content-5","color":"white","content":"FINLAND","transform":"translate(0,0)"},{"type":"content-5","color":"white","content":"SUOPMA","transform":"translate(0,100%)"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/fonts/traffico-preview.html b/css/traffico-release-0.1.5/fonts/traffico-preview.html deleted file mode 100755 index 347174760..000000000 --- a/css/traffico-release-0.1.5/fonts/traffico-preview.html +++ /dev/null @@ -1,1913 +0,0 @@ - - - - traffico glyphs preview - - - - - - - - - -
-
-

traffico contains 114 glyphs:

- Toggle Preview Characters -
- - -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- - - -
- - diff --git a/css/traffico-release-0.1.5/fonts/traffico.eot b/css/traffico-release-0.1.5/fonts/traffico.eot deleted file mode 100755 index 6424728d53385555c85ceb5c50f4ac93346dd140..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26178 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 c^N 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 diff --git a/css/traffico-release-0.1.5/fonts/traffico.svg b/css/traffico-release-0.1.5/fonts/traffico.svg deleted file mode 100755 index 510f0241b..000000000 --- a/css/traffico-release-0.1.5/fonts/traffico.svg +++ /dev/null @@ -1,826 +0,0 @@ - - - - - -Created by FontForge 20141231 at Fri May 29 14:36:33 2015 - By Kamil Nikel -Copyright (c) 2015, Kamil Nikel - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/css/traffico-release-0.1.5/fonts/traffico.ttf b/css/traffico-release-0.1.5/fonts/traffico.ttf deleted file mode 100755 index 04c64cf6744193d35b2a3cd021f7199ef9ba5787..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26000 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 diff --git a/css/traffico-release-0.1.5/fonts/traffico.woff b/css/traffico-release-0.1.5/fonts/traffico.woff deleted file mode 100755 index da5cc9705a2fbabc53706486cb46afd69d7c5a92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16536 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 AtpET3 diff --git a/css/traffico-release-0.1.5/fr.json b/css/traffico-release-0.1.5/fr.json deleted file mode 100755 index 695b9c919..000000000 --- a/css/traffico-release-0.1.5/fr.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_fr":{"category":"information","name":"European border crossing into France","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"FRANCE"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/global-patched.json b/css/traffico-release-0.1.5/global-patched.json deleted file mode 100755 index 34ad40006..000000000 --- a/css/traffico-release-0.1.5/global-patched.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_at":"ÖSTERREICH","information_border_be_nl":"België","information_border_be_fr":"Belgique","information_border_cz":"Českérepublika","danger_level_crossing":"","danger_railway_crossing_unsecured":"","information_bus_stop":"","information_border_de":"Bundes-republikDeutschland","priority_priority_road_end":"","prohibitory_end_of_limits":"","prohibitory_low_emission_zone":"UmweltZONE","prohibitory_low_emission_zone_end":"UmweltZONE","supplementary_destination":"Anliegerfrei","supplementary_disabled":"","supplementary_glaze":"","supplementary_left_pointing":"","supplementary_both_directions":"","supplementary_pedestrians_use_opposite_sidewalk":"","supplementary_pedestrians_use_opposite_sidewalk2":"","supplementary_railway_only":"","supplementary_right_pointing":"","information_border_dk":"Danmark","information_border_ee":"EESTI","information_border_es":"ESPAÑA","danger_bend_first_left":"","danger_bend_first_right":"","danger_bend_left":"","danger_bend_right":"","danger_construction":"","danger_contraflow":"","danger_crossroad":"","danger_cycle_crossing":"","danger_danger":"","danger_danger_tmp":"","danger_domestic_animals":"","danger_pedestrians":"","danger_pedestrian_crossing":"","danger_quayside_or_ferry_berth":"","danger_railway_crossing_secured":"","danger_road_narrows":"","danger_road_narrows_left":"","danger_road_narrows_right":"","danger_roundabout":"","danger_school_crossing":"","danger_slippery_road":"","danger_snow":"","danger_traffic_signal":"","danger_uneven_road":"","danger_hump":"","danger_wild_animals":"","danger_low_flying_aircraft":"","danger_strong_sidewind":"","information_deadend":"","information_disabled_parking":"","information_first_aid":"","information_limited_access_road":"","information_parking":"","information_parking_left":"","information_parking_right":"","information_pedestrian_crossing":"","mandatory_bicycle_pedestrian_dual_track":"","mandatory_cycle_track":"","mandatory_equestrian_track":"","mandatory_footpath":"","mandatory_go_left":"","mandatory_go_left_or_right":"","mandatory_go_right":"","mandatory_go_straight":"","mandatory_keep_left":"","mandatory_keep_right":"","mandatory_minimum_speed_10":"10","mandatory_minimum_speed_20":"20","mandatory_minimum_speed_25":"25","mandatory_minimum_speed_30":"30","mandatory_minimum_speed_35":"35","mandatory_minimum_speed_50":"50","mandatory_minimum_speed_60":"60","mandatory_minimum_speed_70":"70","mandatory_minimum_speed_75":"75","mandatory_minimum_speed_80":"80","mandatory_minimum_speed_90":"90","mandatory_minimum_speed_100":"100","mandatory_minimum_speed_110":"110","mandatory_minimum_speed_120":"120","mandatory_minimum_speed_130":"130","mandatory_minimum_speed_end_10":"10","mandatory_minimum_speed_end_20":"20","mandatory_minimum_speed_end_25":"25","mandatory_minimum_speed_end_30":"30","mandatory_minimum_speed_end_35":"35","mandatory_minimum_speed_end_50":"50","mandatory_minimum_speed_end_60":"60","mandatory_minimum_speed_end_70":"70","mandatory_minimum_speed_end_75":"75","mandatory_minimum_speed_end_80":"80","mandatory_minimum_speed_end_90":"90","mandatory_minimum_speed_end_100":"100","mandatory_minimum_speed_end_110":"110","mandatory_minimum_speed_end_120":"120","mandatory_minimum_speed_end_130":"130","mandatory_pedestrian_bicycle_dual_track":"","mandatory_pedestrian_cycle_track":"","mandatory_roundabout":"","mandatory_turn_left":"","mandatory_turn_left_or_straight":"","mandatory_turn_right":"","mandatory_turn_right_or_straight":"","other_no_entry":"","other_entry":"","priority_give_way":"","priority_narrow":"","priority_narrow2":"","priority_next_intersection":"","priority_next_intersection_left":"","priority_next_intersection_right":"","priority_priority_road":"","priority_stop":"","prohibitory_pedestrians":"","prohibitory_pedestrians_and_bicycles":"","prohibitory_bicycles":"","prohibitory_mopeds_and_bicycles":"","prohibitory_moped":"","prohibitory_motorcycles":"","prohibitory_motor_vehicles":"","prohibitory_slow_vehicles":"","prohibitory_trailers":"","prohibitory_buses":"","prohibitory_trucks":"","prohibitory_trucks_bar":"","prohibitory_trucks_and_buses":"","prohibitory_no_parking":"","prohibitory_no_parking_or_stopping":"","prohibitory_no_parking_or_stopping_left":"","prohibitory_no_parking_or_stopping_left_and_right":"","prohibitory_no_parking_or_stopping_right":"","prohibitory_no_parking_left":"","prohibitory_no_parking_left_and_right":"","prohibitory_no_parking_right":"","prohibitory_no_traffic_both_ways":"","prohibitory_no_turn_left":"","prohibitory_no_turn_right":"","prohibitory_no_u_turn":"","prohibitory_overtaking":"","prohibitory_overtaking_trucks":"","prohibitory_speed_limit_10":"10","prohibitory_speed_limit_20":"20","prohibitory_speed_limit_25":"25","prohibitory_speed_limit_30":"30","prohibitory_speed_limit_35":"35","prohibitory_speed_limit_50":"50","prohibitory_speed_limit_60":"60","prohibitory_speed_limit_70":"70","prohibitory_speed_limit_75":"75","prohibitory_speed_limit_80":"80","prohibitory_speed_limit_90":"90","prohibitory_speed_limit_100":"100","prohibitory_speed_limit_110":"110","prohibitory_speed_limit_120":"120","prohibitory_speed_limit_130":"130","prohibitory_vehicles_with_dangerous_goods":"","supplementary_priority_road_bends_left_3way_1":"","supplementary_priority_road_bends_left_3way_2":"","supplementary_priority_road_bends_left_4way":"","supplementary_priority_road_bends_right_3way_1":"","supplementary_priority_road_bends_right_3way_2":"","supplementary_priority_road_bends_right_4way":"","supplementary_priority_road_from_left_3way":"","supplementary_priority_road_from_left_4way":"","supplementary_priority_road_from_right_3way":"","supplementary_priority_road_from_right_4way":"","information_border_fi":"SUOMIFINLANDSUOPMA","information_border_fr":"FRANCE","information_border_gr":"EΛΛAΣGREECE","information_border_hu":"Magyarország","information_border_it":"ITALIA","information_border_lt":"LietuvosRespublika","information_border_lu_fr":"Luxembourg","information_border_lu_de":"Luxemburg","information_border_lv":"LATVIJA","information_border_nl":"Nederland","information_cycleway":"fietspad","information_border_pl":"RzeczpospolitaPolska","information_border_se":"SVERIGE","information_border_si":"SLOVENIA","information_border_sk":"SLOVENSKO","regulatory_no_entry":"","regulatory_stop":"","regulatory_yield":"YIELD","warning_merge":"","warning_merging_traffic":"","warning_pedestrian_crossing":"","warning_traffic_light":"","warning_traffic_light_horizontal":"","regulatory_no_parking":"","warning_road_narrows_right":"","warning_road_narrows_left":"","warning_road_narrows_both_sides":"","regulatory_no_bicycles":"","regulatory_no_left_turn":"","regulatory_no_turn_right":"","regulatory_no_u_turn":"","warning_added_lane":"","warning_cross_roads":"","warning_side_road_perpendicular_right":"","warning_side_road_perpendicular_left":"","regulatory_no_trucks":"","warning_turn_right":"","warning_turn_left":"","warning_fire_station":"","warning_bicycles":"","warning_dead_end":"","warning_light_rail_crossing":"","warning_horizontal_alignment_left":"","warning_horizontal_alignment_right":"","warning_highway_divided":"","warning_steep_hill":"","warning_low_clearance":"","warning_offset_roads":"","warning_slippery":"","regulatory_no_left_or_u_turn":"","warning_winding_road_left":"","warning_winding_road_right":"","warning_metric_clearance":"","warning_intersection_circular":"","warning_turn_reverse_right":"","warning_turn_reverse_left":"","warning_side_road_acute_angle_right":"","warning_side_road_acute_angle_left":"","warning_t_roads":"","regulatory_no_hitch_hiking":"","warning_pass_left_or_right":"","warning_share_roads":"","warning_bickcle_slippery":"","regulatory_no_pedestrian_crossing":"","warning_workers_in_road_ahead":"","warning_play_ground":"","warning_falling_rocks":"","warning_hairpin_curve":"","warning_end":"","warning_loop_270_degree":"","warning_y_roads":"","regulatory_no_straight_through":"","warning_added_lane_from_entering_roadway":"","warning_flaggers_in_road_ahead":"","warning_skewed_railroad_crossing":"","warning_trucks_rollover":"","warning_lightground_railroad_crossing":"","regulatory_national_network_lane":"","regulatory_national_network_prohibited":"","warning_motorcycle_crossing":"","warning_railroad":"","regulatory_hazardous_material_prohibited":"","warning_truck_rollover_with_speed":"","regulatory_no_rollerblading":"","regulatory_one_way_small_left":"ONEWAY","regulatory_one_way_small_right":"ONEWAY","regulatory_one_way_large_left":"ONEWAY","regulatory_one_way_large_right":"ONEWAY","warning_single_2_reverse_curve":"","warning_double_2_reverse_curve":"","warning_triple_2_reverse_curve":"","school_school":"","school_obsolete":"","warning_turn_left_curve":"","warning_turn_right_curve":"","warning_turn_left_curve_speed":"","warning_turn_right_curve_speed":"","warning_pretzel_loop":"","information_disable_persons":"","prohibitory_no_trucks":"","prohibitory_no_motorcycles":"","prohibitory_no_motor_vehicles":"","danger_animals":"","danger_priority_next_intersection":"","danger_road_works":"","mandatory_go_left_or_straight":"","mandatory_go_right_or_straight":"","mandatory_pedestrian_cycle_dual_track":"","other_give_way":"","other_priority_road":"","prohibitory_no_pedestiran_or_cycles":"","prohibitory_no_vehicle_with_dangerous_goods":"","prohibitory_noturn_left":"","prohibitory_noturn_right":"","prohibitory_on_overtaking":"","prohibitory_on_overtaking_trucks":"","school_school_obsolete":"","warning_Y_roads":"","warning_added_lanes":"","warning_curve_reverse_left":"","warning_curve_reverse_right":"","warning_double_reverse_curve":"","warning_turn_curve_left":"","warning_turn_curve_right":"","warning_turn_curve_with_speed":"","warning_loop_pretzel":"","warning_winding_road":""} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/global.json b/css/traffico-release-0.1.5/global.json deleted file mode 100755 index c6d572b89..000000000 --- a/css/traffico-release-0.1.5/global.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_at":"ÖSTERREICH","information_border_be_nl":"België","information_border_be_fr":"Belgique","information_border_cz":"Českérepublika","danger_level_crossing":"","danger_railway_crossing_unsecured":"","information_bus_stop":"","information_border_de":"Bundes-republikDeutschland","priority_priority_road_end":"","prohibitory_end_of_limits":"","prohibitory_low_emission_zone":"UmweltZONE","prohibitory_low_emission_zone_end":"UmweltZONE","supplementary_destination":"Anliegerfrei","supplementary_disabled":"","supplementary_glaze":"","supplementary_left_pointing":"","supplementary_both_directions":"","supplementary_pedestrians_use_opposite_sidewalk":"","supplementary_pedestrians_use_opposite_sidewalk2":"","supplementary_railway_only":"","supplementary_right_pointing":"","information_border_dk":"Danmark","information_border_ee":"EESTI","information_border_es":"ESPAÑA","danger_bend_first_left":"","danger_bend_first_right":"","danger_bend_left":"","danger_bend_right":"","danger_construction":"","danger_contraflow":"","danger_crossroad":"","danger_cycle_crossing":"","danger_danger":"","danger_danger_tmp":"","danger_domestic_animals":"","danger_pedestrians":"","danger_pedestrian_crossing":"","danger_quayside_or_ferry_berth":"","danger_railway_crossing_secured":"","danger_road_narrows":"","danger_road_narrows_left":"","danger_road_narrows_right":"","danger_roundabout":"","danger_school_crossing":"","danger_slippery_road":"","danger_snow":"","danger_traffic_signal":"","danger_uneven_road":"","danger_hump":"","danger_wild_animals":"","danger_low_flying_aircraft":"","danger_strong_sidewind":"","information_deadend":"","information_disabled_parking":"","information_first_aid":"","information_limited_access_road":"","information_parking":"","information_parking_left":"","information_parking_right":"","information_pedestrian_crossing":"","mandatory_bicycle_pedestrian_dual_track":"","mandatory_cycle_track":"","mandatory_equestrian_track":"","mandatory_footpath":"","mandatory_go_left":"","mandatory_go_left_or_right":"","mandatory_go_right":"","mandatory_go_straight":"","mandatory_keep_left":"","mandatory_keep_right":"","mandatory_minimum_speed_10":"10","mandatory_minimum_speed_20":"20","mandatory_minimum_speed_25":"25","mandatory_minimum_speed_30":"30","mandatory_minimum_speed_35":"35","mandatory_minimum_speed_50":"50","mandatory_minimum_speed_60":"60","mandatory_minimum_speed_70":"70","mandatory_minimum_speed_75":"75","mandatory_minimum_speed_80":"80","mandatory_minimum_speed_90":"90","mandatory_minimum_speed_100":"100","mandatory_minimum_speed_110":"110","mandatory_minimum_speed_120":"120","mandatory_minimum_speed_130":"130","mandatory_minimum_speed_end_10":"10","mandatory_minimum_speed_end_20":"20","mandatory_minimum_speed_end_25":"25","mandatory_minimum_speed_end_30":"30","mandatory_minimum_speed_end_35":"35","mandatory_minimum_speed_end_50":"50","mandatory_minimum_speed_end_60":"60","mandatory_minimum_speed_end_70":"70","mandatory_minimum_speed_end_75":"75","mandatory_minimum_speed_end_80":"80","mandatory_minimum_speed_end_90":"90","mandatory_minimum_speed_end_100":"100","mandatory_minimum_speed_end_110":"110","mandatory_minimum_speed_end_120":"120","mandatory_minimum_speed_end_130":"130","mandatory_pedestrian_bicycle_dual_track":"","mandatory_pedestrian_cycle_track":"","mandatory_roundabout":"","mandatory_turn_left":"","mandatory_turn_left_or_straight":"","mandatory_turn_right":"","mandatory_turn_right_or_straight":"","other_no_entry":"","other_entry":"","priority_give_way":"","priority_narrow":"","priority_narrow2":"","priority_next_intersection":"","priority_next_intersection_left":"","priority_next_intersection_right":"","priority_priority_road":"","priority_stop":"","prohibitory_pedestrians":"","prohibitory_pedestrians_and_bicycles":"","prohibitory_bicycles":"","prohibitory_mopeds_and_bicycles":"","prohibitory_moped":"","prohibitory_motorcycles":"","prohibitory_motor_vehicles":"","prohibitory_slow_vehicles":"","prohibitory_trailers":"","prohibitory_buses":"","prohibitory_trucks":"","prohibitory_trucks_bar":"","prohibitory_trucks_and_buses":"","prohibitory_no_parking":"","prohibitory_no_parking_or_stopping":"","prohibitory_no_parking_or_stopping_left":"","prohibitory_no_parking_or_stopping_left_and_right":"","prohibitory_no_parking_or_stopping_right":"","prohibitory_no_parking_left":"","prohibitory_no_parking_left_and_right":"","prohibitory_no_parking_right":"","prohibitory_no_traffic_both_ways":"","prohibitory_no_turn_left":"","prohibitory_no_turn_right":"","prohibitory_no_u_turn":"","prohibitory_overtaking":"","prohibitory_overtaking_trucks":"","prohibitory_speed_limit_10":"10","prohibitory_speed_limit_20":"20","prohibitory_speed_limit_25":"25","prohibitory_speed_limit_30":"30","prohibitory_speed_limit_35":"35","prohibitory_speed_limit_50":"50","prohibitory_speed_limit_60":"60","prohibitory_speed_limit_70":"70","prohibitory_speed_limit_75":"75","prohibitory_speed_limit_80":"80","prohibitory_speed_limit_90":"90","prohibitory_speed_limit_100":"100","prohibitory_speed_limit_110":"110","prohibitory_speed_limit_120":"120","prohibitory_speed_limit_130":"130","prohibitory_vehicles_with_dangerous_goods":"","supplementary_priority_road_bends_left_3way_1":"","supplementary_priority_road_bends_left_3way_2":"","supplementary_priority_road_bends_left_4way":"","supplementary_priority_road_bends_right_3way_1":"","supplementary_priority_road_bends_right_3way_2":"","supplementary_priority_road_bends_right_4way":"","supplementary_priority_road_from_left_3way":"","supplementary_priority_road_from_left_4way":"","supplementary_priority_road_from_right_3way":"","supplementary_priority_road_from_right_4way":"","information_border_fi":"SUOMIFINLANDSUOPMA","information_border_fr":"FRANCE","information_border_gr":"EΛΛAΣGREECE","information_border_hu":"Magyarország","information_border_it":"ITALIA","information_border_lt":"LietuvosRespublika","information_border_lu_fr":"Luxembourg","information_border_lu_de":"Luxemburg","information_border_lv":"LATVIJA","information_border_nl":"Nederland","information_cycleway":"fietspad","information_border_pl":"RzeczpospolitaPolska","information_border_se":"SVERIGE","information_border_si":"SLOVENIA","information_border_sk":"SLOVENSKO","regulatory_no_entry":"","regulatory_stop":"","regulatory_yield":"YIELD","warning_merge":"","warning_merging_traffic":"","warning_pedestrian_crossing":"","warning_traffic_light":"","warning_traffic_light_horizontal":"","regulatory_no_parking":"","warning_road_narrows_right":"","warning_road_narrows_left":"","warning_road_narrows_both_sides":"","regulatory_no_bicycles":"","regulatory_no_left_turn":"","regulatory_no_turn_right":"","regulatory_no_u_turn":"","warning_added_lane":"","warning_cross_roads":"","warning_side_road_perpendicular_right":"","warning_side_road_perpendicular_left":"","regulatory_no_trucks":"","warning_turn_right":"","warning_turn_left":"","warning_fire_station":"","warning_bicycles":"","warning_dead_end":"","warning_light_rail_crossing":"","warning_horizontal_alignment_left":"","warning_horizontal_alignment_right":"","warning_highway_divided":"","warning_steep_hill":"","warning_low_clearance":"","warning_offset_roads":"","warning_slippery":"","regulatory_no_left_or_u_turn":"","warning_winding_road_left":"","warning_winding_road_right":"","warning_metric_clearance":"","warning_intersection_circular":"","warning_turn_reverse_right":"","warning_turn_reverse_left":"","warning_side_road_acute_angle_right":"","warning_side_road_acute_angle_left":"","warning_t_roads":"","regulatory_no_hitch_hiking":"","warning_pass_left_or_right":"","warning_share_roads":"","warning_bickcle_slippery":"","regulatory_no_pedestrian_crossing":"","warning_workers_in_road_ahead":"","warning_play_ground":"","warning_falling_rocks":"","warning_hairpin_curve":"","warning_end":"","warning_loop_270_degree":"","warning_y_roads":"","regulatory_no_straight_through":"","warning_added_lane_from_entering_roadway":"","warning_flaggers_in_road_ahead":"","warning_skewed_railroad_crossing":"","warning_trucks_rollover":"","warning_lightground_railroad_crossing":"","regulatory_national_network_lane":"","regulatory_national_network_prohibited":"","warning_motorcycle_crossing":"","warning_railroad":"","regulatory_hazardous_material_prohibited":"","warning_truck_rollover_with_speed":"","regulatory_no_rollerblading":"","regulatory_one_way_small_left":"ONEWAY","regulatory_one_way_small_right":"ONEWAY","regulatory_one_way_large_left":"ONEWAY","regulatory_one_way_large_right":"ONEWAY","warning_single_2_reverse_curve":"","warning_double_2_reverse_curve":"","warning_triple_2_reverse_curve":"","school_school":"","school_obsolete":"","warning_turn_left_curve":"","warning_turn_right_curve":"","warning_turn_left_curve_speed":"","warning_turn_right_curve_speed":"","warning_pretzel_loop":""} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/gr.json b/css/traffico-release-0.1.5/gr.json deleted file mode 100755 index 3e64f8bf1..000000000 --- a/css/traffico-release-0.1.5/gr.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_gr":{"category":"information","name":"European border crossing into Greece","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"yellow","content":"EΛΛAΣ","transform":"translate(0,-50%)"},{"type":"content-5","color":"white","content":"GREECE","transform":"translate(0,50%)"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/hu.json b/css/traffico-release-0.1.5/hu.json deleted file mode 100755 index a36aac38d..000000000 --- a/css/traffico-release-0.1.5/hu.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_hu":{"category":"information","name":"European border crossing into Hungary","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Magyarország","transform":"scale(.75)"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/it.json b/css/traffico-release-0.1.5/it.json deleted file mode 100755 index c0b1e7bae..000000000 --- a/css/traffico-release-0.1.5/it.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_it":{"category":"information","name":"European border crossing into Italy","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"ITALIA"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/lt.json b/css/traffico-release-0.1.5/lt.json deleted file mode 100755 index 72a351c61..000000000 --- a/css/traffico-release-0.1.5/lt.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_lt":{"category":"information","name":"European border crossing into Lithuania","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Lietuvos","transform":"translate(0,-80%)"},{"type":"content-5","color":"white","content":"Respublika","transform":"translate(0,20%)"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/lu.json b/css/traffico-release-0.1.5/lu.json deleted file mode 100755 index 0be6c4286..000000000 --- a/css/traffico-release-0.1.5/lu.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_lu_fr":{"category":"information","name":"European border crossing into Luxembourg from France","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Luxembourg","transform":"scale(.85)"}]},"information_border_lu_de":{"category":"information","name":"European border crossing into Luxembourg from Germany","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Luxemburg","transform":"scale(.85)"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/lv.json b/css/traffico-release-0.1.5/lv.json deleted file mode 100755 index baef29b8c..000000000 --- a/css/traffico-release-0.1.5/lv.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_lv":{"category":"information","name":"European border crossing into Latvia","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"LATVIJA"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/nl.json b/css/traffico-release-0.1.5/nl.json deleted file mode 100755 index 067045fb3..000000000 --- a/css/traffico-release-0.1.5/nl.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_nl":{"category":"information","name":"European border crossing into the Netherlands","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Nederland"}]},"information_cycleway":{"category":"information","name":"non-compulsory cycleway","elements":[{"type":"square-rounded","color":"white","transform":"scale(1,.3)"},{"type":"square-rounded","color":"blue","transform":"scale(.95,.25)"},{"type":"content-4","color":"white","content":"fietspad"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/pl.json b/css/traffico-release-0.1.5/pl.json deleted file mode 100755 index 164bf23cf..000000000 --- a/css/traffico-release-0.1.5/pl.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_pl":{"category":"information","name":"European border crossing into Poland","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"Rzeczpospolita","transform":"translate(0,-70%) scale(.7)"},{"type":"content-5","color":"white","content":"Polska","transform":"translate(0,40%)"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/se.json b/css/traffico-release-0.1.5/se.json deleted file mode 100755 index dec6d2d9f..000000000 --- a/css/traffico-release-0.1.5/se.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_se":{"category":"information","name":"European border crossing into Sweden","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"SVERIGE"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/si.json b/css/traffico-release-0.1.5/si.json deleted file mode 100755 index 63268a788..000000000 --- a/css/traffico-release-0.1.5/si.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_si":{"category":"information","name":"European border crossing into Slovenia","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"SLOVENIA","transform":"scale(.85)"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/sk.json b/css/traffico-release-0.1.5/sk.json deleted file mode 100755 index 0140670e9..000000000 --- a/css/traffico-release-0.1.5/sk.json +++ /dev/null @@ -1 +0,0 @@ -{"information_border_sk":{"category":"information","name":"European border crossing into Slovakia","elements":[{"type":"square-rounded","color":"blue"},{"type":"europe_stars","color":"yellow"},{"type":"content-5","color":"white","content":"SLOVENSKO","transform":"scale(.8)"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/stylesheets/traffico.css b/css/traffico-release-0.1.5/stylesheets/traffico.css deleted file mode 100755 index ed878d9f6..000000000 --- a/css/traffico-release-0.1.5/stylesheets/traffico.css +++ /dev/null @@ -1,365 +0,0 @@ -/* - Icon Font: traffico -*/ - -@font-face { - font-family: "traffico"; - src: url("../fonts/traffico.eot"); - src: url("../fonts/traffico.eot?#iefix") format("embedded-opentype"), - url("../fonts/traffico.woff") format("woff"), - url("../fonts/traffico.ttf") format("truetype"), - url("../fonts/traffico.svg#traffico") format("svg"); - font-weight: normal; - font-style: normal; -} - -@media screen and (-webkit-min-device-pixel-ratio:0) { - @font-face { - font-family: "traffico"; - src: url("../fonts/traffico.svg#traffico") format("svg"); - } -} - -[data-icon]:before { content: attr(data-icon); } - -[data-icon]:before, -.t-DE-arrow-up:before, -.t-US-arrow-oneway:before, -.t-US-arrow-up:before, -.t-added-lane:before, -.t-added-lane-entering-roadway:before, -.t-airplane:before, -.t-arrow-l:before, -.t-arrow-oneway:before, -.t-arrow-s-l:before, -.t-bending-priority:before, -.t-bicycle:before, -.t-bicycle-slippery:before, -.t-bump:before, -.t-bumps:before, -.t-bus:before, -.t-car:before, -.t-car-left:before, -.t-car-right:before, -.t-children:before, -.t-circle-bar-rounded:before, -.t-circle-bg:before, -.t-circle-o:before, -.t-circle-separator:before, -.t-cliff:before, -.t-cross-roads:before, -.t-curve-r-l:before, -.t-d-curve-l:before, -.t-dead-end:before, -.t-descent:before, -.t-disabled-p:before, -.t-domestic-animal:before, -.t-end:before, -.t-equestrian:before, -.t-europe_stars:before, -.t-exclamation:before, -.t-falling-rocks:before, -.t-fire-station:before, -.t-flaggers:before, -.t-footpath:before, -.t-h:before, -.t-h-align-l:before, -.t-hairpin-curve:before, -.t-hazardous-material:before, -.t-height:before, -.t-highway-divided:before, -.t-hitch-hiking:before, -.t-level-crossing:before, -.t-light-rail:before, -.t-lightground-railroad-crossing:before, -.t-loop-270:before, -.t-lorry:before, -.t-lorry-left:before, -.t-low-clearance:before, -.t-merge:before, -.t-metric-clearance:before, -.t-moped:before, -.t-motorbike:before, -.t-narrow-road-both:before, -.t-narrow-road-l:before, -.t-no-l-or-u-turn:before, -.t-octagon:before, -.t-offset-roads:before, -.t-parking:before, -.t-pass-l-r:before, -.t-pedestrian:before, -.t-pedestrian-crossing:before, -.t-pedestrians:before, -.t-play-ground:before, -.t-pretzel-loop:before, -.t-railroad:before, -.t-railway-xing-secured:before, -.t-railway-xing-unsecured:before, -.t-right-of-way:before, -.t-right-of-way-l:before, -.t-roadworks:before, -.t-rollerblading:before, -.t-roundabout:before, -.t-school:before, -.t-share-roads:before, -.t-side-road-a-a-l:before, -.t-side-road-a-a-r:before, -.t-side-road-p-l:before, -.t-side-road-p-r:before, -.t-single-2-reverse-curve:before, -.t-skewed-railroads:before, -.t-slippery:before, -.t-slippery-road:before, -.t-snowflake:before, -.t-square-angular:before, -.t-square-rounded:before, -.t-steep-hill:before, -.t-stop:before, -.t-t-roads:before, -.t-tractor:before, -.t-trailer:before, -.t-train-electric:before, -.t-tram:before, -.t-tri-angular:before, -.t-tri-rounded:before, -.t-truck:before, -.t-truck-rollover-speed:before, -.t-trucks-rollover:before, -.t-turn-90-l:before, -.t-turn-curve-speed:before, -.t-turn-l:before, -.t-turn-l-curve:before, -.t-turn-reverse-left:before, -.t-turnaround:before, -.t-turnaround2:before, -.t-u-turn:before, -.t-wild-animal:before, -.t-windbag:before, -.t-winding-road-left:before, -.t-y-roads:before { - display: inline-block; - font-family: "traffico"; - font-style: normal; - font-weight: normal; - font-variant: normal; - line-height: 1; - text-decoration: inherit; - text-rendering: optimizeLegibility; - text-transform: none; - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - font-smoothing: antialiased; -} - -.t-DE-arrow-up:before { content: "\f100"; } -.t-US-arrow-oneway:before { content: "\f101"; } -.t-US-arrow-up:before { content: "\f102"; } -.t-added-lane:before { content: "\f103"; } -.t-added-lane-entering-roadway:before { content: "\f104"; } -.t-airplane:before { content: "\f105"; } -.t-arrow-l:before { content: "\f106"; } -.t-arrow-oneway:before { content: "\f107"; } -.t-arrow-s-l:before { content: "\f108"; } -.t-bending-priority:before { content: "\f109"; } -.t-bicycle:before { content: "\f10a"; } -.t-bicycle-slippery:before { content: "\f10b"; } -.t-bump:before { content: "\f10c"; } -.t-bumps:before { content: "\f10d"; } -.t-bus:before { content: "\f10e"; } -.t-car:before { content: "\f10f"; } -.t-car-left:before { content: "\f110"; } -.t-car-right:before { content: "\f111"; } -.t-children:before { content: "\f112"; } -.t-circle-bar-rounded:before { content: "\f113"; } -.t-circle-bg:before { content: "\f114"; } -.t-circle-o:before { content: "\f115"; } -.t-circle-separator:before { content: "\f116"; } -.t-cliff:before { content: "\f117"; } -.t-cross-roads:before { content: "\f118"; } -.t-curve-r-l:before { content: "\f119"; } -.t-d-curve-l:before { content: "\f11a"; } -.t-dead-end:before { content: "\f11b"; } -.t-descent:before { content: "\f11c"; } -.t-disabled-p:before { content: "\f11d"; } -.t-domestic-animal:before { content: "\f11e"; } -.t-end:before { content: "\f11f"; } -.t-equestrian:before { content: "\f120"; } -.t-europe_stars:before { content: "\f121"; } -.t-exclamation:before { content: "\f122"; } -.t-falling-rocks:before { content: "\f123"; } -.t-fire-station:before { content: "\f124"; } -.t-flaggers:before { content: "\f125"; } -.t-footpath:before { content: "\f126"; } -.t-h:before { content: "\f127"; } -.t-h-align-l:before { content: "\f128"; } -.t-hairpin-curve:before { content: "\f129"; } -.t-hazardous-material:before { content: "\f12a"; } -.t-height:before { content: "\f12b"; } -.t-highway-divided:before { content: "\f12c"; } -.t-hitch-hiking:before { content: "\f12d"; } -.t-level-crossing:before { content: "\f12e"; } -.t-light-rail:before { content: "\f12f"; } -.t-lightground-railroad-crossing:before { content: "\f130"; } -.t-loop-270:before { content: "\f131"; } -.t-lorry:before { content: "\f132"; } -.t-lorry-left:before { content: "\f133"; } -.t-low-clearance:before { content: "\f134"; } -.t-merge:before { content: "\f135"; } -.t-metric-clearance:before { content: "\f136"; } -.t-moped:before { content: "\f137"; } -.t-motorbike:before { content: "\f138"; } -.t-narrow-road-both:before { content: "\f139"; } -.t-narrow-road-l:before { content: "\f13a"; } -.t-no-l-or-u-turn:before { content: "\f13b"; } -.t-octagon:before { content: "\f13c"; } -.t-offset-roads:before { content: "\f13d"; } -.t-parking:before { content: "\f13e"; } -.t-pass-l-r:before { content: "\f13f"; } -.t-pedestrian:before { content: "\f140"; } -.t-pedestrian-crossing:before { content: "\f141"; } -.t-pedestrians:before { content: "\f142"; } -.t-play-ground:before { content: "\f143"; } -.t-pretzel-loop:before { content: "\f144"; } -.t-railroad:before { content: "\f145"; } -.t-railway-xing-secured:before { content: "\f146"; } -.t-railway-xing-unsecured:before { content: "\f147"; } -.t-right-of-way:before { content: "\f148"; } -.t-right-of-way-l:before { content: "\f149"; } -.t-roadworks:before { content: "\f14a"; } -.t-rollerblading:before { content: "\f14b"; } -.t-roundabout:before { content: "\f14c"; } -.t-school:before { content: "\f14d"; } -.t-share-roads:before { content: "\f14e"; } -.t-side-road-a-a-l:before { content: "\f14f"; } -.t-side-road-a-a-r:before { content: "\f150"; } -.t-side-road-p-l:before { content: "\f151"; } -.t-side-road-p-r:before { content: "\f152"; } -.t-single-2-reverse-curve:before { content: "\f153"; } -.t-skewed-railroads:before { content: "\f154"; } -.t-slippery:before { content: "\f155"; } -.t-slippery-road:before { content: "\f156"; } -.t-snowflake:before { content: "\f157"; } -.t-square-angular:before { content: "\f158"; } -.t-square-rounded:before { content: "\f159"; } -.t-steep-hill:before { content: "\f15a"; } -.t-stop:before { content: "\f15b"; } -.t-t-roads:before { content: "\f15c"; } -.t-tractor:before { content: "\f15d"; } -.t-trailer:before { content: "\f15e"; } -.t-train-electric:before { content: "\f15f"; } -.t-tram:before { content: "\f160"; } -.t-tri-angular:before { content: "\f161"; } -.t-tri-rounded:before { content: "\f162"; } -.t-truck:before { content: "\f163"; } -.t-truck-rollover-speed:before { content: "\f164"; } -.t-trucks-rollover:before { content: "\f165"; } -.t-turn-90-l:before { content: "\f166"; } -.t-turn-curve-speed:before { content: "\f167"; } -.t-turn-l:before { content: "\f168"; } -.t-turn-l-curve:before { content: "\f169"; } -.t-turn-reverse-left:before { content: "\f16a"; } -.t-turnaround:before { content: "\f16b"; } -.t-turnaround2:before { content: "\f16c"; } -.t-u-turn:before { content: "\f16d"; } -.t-wild-animal:before { content: "\f16e"; } -.t-windbag:before { content: "\f16f"; } -.t-winding-road-left:before { content: "\f170"; } -.t-y-roads:before { content: "\f171"; } - -/** Base */ -.t { - display: inline-block; - font: normal normal normal 14px/1 traffico; - position: relative; - width: 1em; - height: 1em; - line-height: 1em; - vertical-align: middle; - font-size: inherit; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.t i { - position: absolute; - left: 0; - width: 100%; - height:1em; - line-height:0; - text-align: center; -} - -/** Content */ - -.t-content, -.t-content-3, -.t-content-4{ - font-family: Helvetica, Arial, sans-serif; - font-weight: bold; - font-style: normal; - letter-spacing:0; - top:48.5%; -} -.t-content { - font-size: 50%; -} - -.t-content-3 { - font-size: 40%; -} - -.t-content-4 { - font-size: 22.5%; -} - -.t-content-5 { - font-family: Helvetica, Arial, sans-serif; - font-weight: normal; - font-style: normal; - font-size: 15%; - letter-spacing:0; - top:50%; -} - -/** Colours */ - -.t-c-white { - color: white; -} - -.t-c-red { - color: #c1121c; -} - -.t-c-orange { - color: #f60; -} - -.t-c-blue { - color: #154889; -} - -.t-c-black { - color: black; -} - -.t-c-yellow-dark { - color: #f0ca00; -} - -.t-c-yellow { - color: #fecf33; -} - -.t-c-grey { - color: grey; -} - -.t-c-green { - color: #008754; -} - -.t-c-fluogreen { - color: #A2FF31; -} diff --git a/css/traffico-release-0.1.5/transformations.json b/css/traffico-release-0.1.5/transformations.json deleted file mode 100755 index 08d9a95f7..000000000 --- a/css/traffico-release-0.1.5/transformations.json +++ /dev/null @@ -1 +0,0 @@ -{"fit_triangle":"scale(.8) translate(0,5%)","fit_border_circle":"scale(.8)","fit_diamond":"scale(.9)","top_half":"scale(.6) translate(0,-35%)","bottom_half":"scale(.6) translate(0,35%)","left_half":"scale(.6) translate(-40%,0)","right_half":"scale(.6) translate(40%,0)","square_to_diamond":"scale(0.707107) rotate(45deg)","center2tri":"translate(0,14.43%)","tri2center":"translate(0,-14.43%)","inner_triangle":"{center2tri} scale(.7) {tri2center}"} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/uk.json b/css/traffico-release-0.1.5/uk.json deleted file mode 100755 index 8b3b5e740..000000000 --- a/css/traffico-release-0.1.5/uk.json +++ /dev/null @@ -1 +0,0 @@ -{"danger_contraflow":{"category":"danger","name":"contraflow","elements":[{"type":"tri-rounded","color":"red"},{"type":"tri-angular","color":"white","transform":"{inner_triangle}"},{"type":"DE-arrow-up","color":"black","transform":"{center2tri} scale(.35) translate(-25%,-5%)"},{"type":"DE-arrow-up","color":"black","transform":"{center2tri} scale(.35) translate(25%,5%) rotate(180deg)"}]},"mandatory_roundabout":{"category":"mandatory","name":"roundabout","elements":[{"type":"circle-bg","color":"blue"},{"type":"roundabout","color":"white","transform":"scale(-1.25,1.25)"}]},"prohibitory_overtaking":{"category":"prohibitory","name":"no overtaking","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"car-left","color":"black"},{"type":"car-right","color":"red"}]}} \ No newline at end of file diff --git a/css/traffico-release-0.1.5/us.json b/css/traffico-release-0.1.5/us.json deleted file mode 100755 index 882d459eb..000000000 --- a/css/traffico-release-0.1.5/us.json +++ /dev/null @@ -1 +0,0 @@ -{"regulatory_no_entry":{"category":"regulatory","name":"no entry","elements":[{"type":"circle-bg","color":"red"},{"type":"square-angular","color":"white","transform":"scale(.92,.16)"}]},"regulatory_stop":{"category":"regulatory","name":"stop","elements":[{"type":"octagon","color":"red"},{"type":"stop","color":"white"}]},"regulatory_yield":{"category":"regulatory","name":"give way","elements":[{"type":"tri-rounded","color":"red","transform":"rotate(180deg)"},{"type":"tri-rounded","color":"white","transform":"{tri2center} scale(.55) {center2tri} rotate(180deg)"},{"type":"content-4","content":"YIELD","color":"red","transform":"translate(0,-115%) scale(.6)"}]},"warning_merge":{"category":"warning","name":"merge","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"merge","color":"black"}]},"warning_merging_traffic":{"category":"warning","name":"merging traffic","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"merge","color":"black","transform":"rotate(45deg)"}]},"warning_pedestrian_crossing":{"category":"warning","name":"pedestrian crossing","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"pedestrian","color":"black"}]},"warning_traffic_light":{"category":"warning","name":"traffic light","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"square-angular","color":"black","transform":"scale(.2,.55)"},{"type":"circle-bg","color":"green","transform":"translate(0,16.5%) scale(.14)"},{"type":"circle-bg","color":"yellow","transform":"scale(.14)"},{"type":"circle-bg","color":"red","transform":"translate(0,-16.5%) scale(.14)"}]},"warning_traffic_light_horizontal":{"category":"warning","name":"traffic light","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"square-angular","color":"black","transform":"scale(.55,.2)"},{"type":"circle-bg","color":"green","transform":"translate(16.5%,0) scale(.14)"},{"type":"circle-bg","color":"yellow","transform":"scale(.14)"},{"type":"circle-bg","color":"red","transform":"translate(-16.5%,0) scale(.14)"}]},"regulatory_no_parking":{"category":"regulatory","name":"no parking","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"parking","color":"black","transform":"{fit_border_circle}"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_road_narrows_right":{"category":"warning","name":"road narrows right","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"narrow-road-l","color":"black","transform":"{fit_diamond} scale(-1,1)"}]},"warning_road_narrows_left":{"category":"warning","name":"road narrows left","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"narrow-road-l","color":"black","transform":"{fit_diamond}"}]},"warning_road_narrows_both_sides":{"category":"warning","name":"road narrows both","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"narrow-road-both","color":"black","transform":"{fit_diamond}"}]},"regulatory_no_bicycles":{"category":"regulatory","name":"no bicycles","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"bicycle","color":"black","transform":"{fit_border_circle}"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"regulatory_no_left_turn":{"category":"regulatory","name":"no left turn","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"turn-90-l","color":"black","transform":"{fit_border_circle}"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"regulatory_no_turn_right":{"category":"regulatory","name":"no right turn","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"turn-90-l","color":"black","transform":"{fit_border_circle} scale(-1,1)"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"regulatory_no_u_turn":{"category":"regulatory","name":"no u turn","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"u-turn","color":"black","transform":"{fit_border_circle}"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_added_lane":{"category":"warning","name":"added lane","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"added-lane","color":"black"}]},"warning_cross_roads":{"category":"warning","name":"cross roads","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"cross-roads","color":"black"}]},"warning_side_road_perpendicular_right":{"category":"warning","name":"side road perpendicular right","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"side-road-p-r","color":"black"}]},"warning_side_road_perpendicular_left":{"category":"warning","name":"side road perpendicular left","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"side-road-p-l","color":"black"}]},"regulatory_no_trucks":{"category":"regulatory","name":"no trucks","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"truck","color":"black","transform":"{fit_border_circle}"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_turn_right":{"category":"warning","name":"turn right","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-90-l","color":"black","transform":"scale(-1,1)"}]},"warning_turn_left":{"category":"warning","name":"turn left","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-90-l","color":"black"}]},"warning_fire_station":{"category":"warning","name":"fire station","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"fire-station","color":"black"}]},"warning_bicycles":{"category":"warning","name":"bicycles","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"bicycle","color":"black","transform":"{fit_diamond}"}]},"warning_dead_end":{"category":"warning","name":"dead end","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"dead-end","color":"black"}]},"warning_light_rail_crossing":{"category":"warning","name":"light rail crossing","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"light-rail","color":"black"}]},"warning_horizontal_alignment_left":{"category":"warning","name":"horizontal alignment left","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"h-align-l","color":"black"}]},"warning_horizontal_alignment_right":{"category":"warning","name":"horizontal alignment right","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"h-align-l","color":"black","transform":"scale(-1,1)"}]},"warning_highway_divided":{"category":"warning","name":"highway divided","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"highway-divided","color":"black"}]},"warning_steep_hill":{"category":"warning","name":"steep hill","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"steep-hill","color":"black"}]},"warning_low_clearance":{"category":"warning","name":"low clearance","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"low-clearance","color":"black"}]},"warning_offset_roads":{"category":"warning","name":"offset roads","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"offset-roads","color":"black"}]},"warning_slippery":{"category":"warning","name":"slippery","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"slippery","color":"black"}]},"regulatory_no_left_or_u_turn":{"category":"regulatory","name":"no left or u turn","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"no-l-or-u-turn","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_winding_road_left":{"category":"warning","name":"winding road","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"winding-road-left","color":"black"}]},"warning_winding_road_right":{"category":"warning","name":"winding road","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"winding-road-left","color":"black","transform":"scale(-1,1)"}]},"warning_metric_clearance":{"category":"warning","name":"metric clearance","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"metric-clearance","color":"black"}]},"warning_intersection_circular":{"category":"warning","name":"intersection circular","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"roundabout","color":"black"}]},"warning_turn_reverse_right":{"category":"warning","name":"turn reverse right","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-reverse-left","color":"black","transform":"scale(-1,1)"}]},"warning_turn_reverse_left":{"category":"warning","name":"turn reverse left","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-reverse-left","color":"black"}]},"warning_side_road_acute_angle_right":{"category":"warning","name":"side road acute angle right","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"side-road-a-a-r","color":"black"}]},"warning_side_road_acute_angle_left":{"category":"warning","name":"side road acute angle left","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"side-road-a-a-l","color":"black"}]},"warning_t_roads":{"category":"warning","name":"t roads","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"t-roads","color":"black"}]},"regulatory_no_hitch_hiking":{"category":"regulatory","name":"no hitch hiking","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"hitch-hiking","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_pass_left_or_right":{"category":"warning","name":"pass left or right","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"pass-l-r","color":"black"}]},"warning_share_roads":{"category":"warning","name":"share roads","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"share-roads","color":"black"}]},"warning_bickcle_slippery":{"category":"warning","name":"bicycle slippery","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"bicycle-slippery","color":"black"}]},"regulatory_no_pedestrian_crossing":{"category":"regulatory","name":"no pedestrian crossing","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"pedestrian","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_workers_in_road_ahead":{"category":"warning","name":"workers in road ahead","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"roadworks","color":"black","transform":"{fit_diamond}"}]},"warning_play_ground":{"category":"warning","name":"play ground","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"play-ground","color":"black"}]},"warning_falling_rocks":{"category":"warning","name":"falling rocks","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"falling-rocks","color":"black"}]},"warning_hairpin_curve":{"category":"warning","name":"hairpin curve","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"hairpin-curve","color":"black"}]},"warning_end":{"category":"warning","name":"end","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"end","color":"black"}]},"warning_loop_270_degree":{"category":"warning","name":"loop 270 degree","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"loop-270","color":"black"}]},"warning_y_roads":{"category":"warning","name":"y roads","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"y-roads","color":"black"}]},"regulatory_no_straight_through":{"category":"regulatory","name":"no straight through","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"US-arrow-up","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_added_lane_from_entering_roadway":{"category":"warning","name":"added lane (from entering roadway)","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"added-lane","color":"black","transform":"rotate(45deg) scale(.95)"}]},"warning_flaggers_in_road_ahead":{"category":"warning","name":"flaggers in road ahead","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"flaggers","color":"black"}]},"warning_skewed_railroad_crossing":{"category":"warning","name":"skewed railroad crossing","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"skewed-railroads","color":"black"}]},"warning_trucks_rollover":{"category":"warning","name":"trucks rollover","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"trucks-rollover","color":"black"}]},"warning_lightground_railroad_crossing":{"category":"warning","name":"lightground railroad crossing","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"lightground-railroad-crossing","color":"black"}]},"regulatory_national_network_lane":{"category":"regulatory","name":"national_network_lane","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"green"},{"type":"lorry","color":"black"}]},"regulatory_national_network_prohibited":{"category":"regulatory","name":"national_network_lane","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"lorry","color":"black"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"warning_motorcycle_crossing":{"category":"warning","name":"motorcycle crossing","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"motorbike","color":"black"}]},"warning_railroad":{"category":"warning","name":"railroad","elements":[{"type":"circle-bg","color":"yellow"},{"type":"circle-bar-rounded","color":"black","transform":"rotate(-45deg)"},{"type":"circle-bar-rounded","color":"black","transform":"rotate(45deg)"},{"type":"railroad","color":"black"}]},"regulatory_hazardous_material_prohibited":{"category":"regulatory","name":"hazardous material prohibited","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"hazardous-material","color":"black","transform":"{fit_border_circle}"},{"type":"circle-o","color":"red"}]},"warning_truck_rollover_with_speed":{"category":"warning","name":"truck rollover with speed","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"truck-rollover-speed","color":"black"}]},"regulatory_no_rollerblading":{"category":"regulatory","name":"no rollerblading","elements":[{"type":"circle-bg","color":"white"},{"type":"circle-o","color":"red"},{"type":"rollerblading","color":"black","transform":"{fit_border_circle}"},{"type":"circle-bar-rounded","color":"red","transform":"rotate(-45deg)"}]},"regulatory_one_way_small_left":{"category":"regulatory","name":"one way small left","elements":[{"type":"square-rounded","color":"white","transform":"scale(1.1,.33)"},{"type":"square-rounded","color":"black","transform":"scale(1.1,.33) scale(.95)"},{"type":"US-arrow-oneway","color":"white","transform":"scale(.6) scale(1.35,1) rotate(-90deg)"},{"type":"content-4","color":"black","content":"ONE","transform":"scale(.5,.6) translate(-15%,-25%)"},{"type":"content-4","color":"black","content":"WAY","transform":"scale(.5,.6) translate(45%,-25%)"}]},"regulatory_one_way_small_right":{"category":"regulatory","name":"one way small right","elements":[{"type":"square-rounded","color":"white","transform":"scale(1.1,.33)"},{"type":"square-rounded","color":"black","transform":"scale(1.1,.33) scale(.95)"},{"type":"US-arrow-oneway","color":"white","transform":"scale(.6) scale(1.35,1) rotate(90deg)"},{"type":"content-4","color":"black","content":"ONE","transform":"scale(.5,.6) translate(-45%,-25%)"},{"type":"content-4","color":"black","content":"WAY","transform":"scale(.5,.6) translate(15%,-25%)"}]},"regulatory_one_way_large_left":{"category":"regulatory","name":"one way large left","elements":[{"type":"square-rounded","color":"white","transform":"scale(.7,1)"},{"type":"square-rounded","color":"black","transform":"scale(.7,1) scale(.95)"},{"type":"square-rounded","color":"white","transform":"scale(.7,1) scale(.90)"},{"type":"content-4","color":"black","content":"ONE","transform":"scale(1,1.2) translate(0,-90%)"},{"type":"content-4","color":"black","content":"WAY","transform":"scale(1,1.2)"},{"type":"US-arrow-oneway","color":"black","transform":"scale(.5) translate(0,45%) rotate(-90deg)"}]},"regulatory_one_way_large_right":{"category":"regulatory","name":"one way large right","elements":[{"type":"square-rounded","color":"white","transform":"scale(.7,1)"},{"type":"square-rounded","color":"black","transform":"scale(.7,1) scale(.95)"},{"type":"square-rounded","color":"white","transform":"scale(.7,1) scale(.90)"},{"type":"content-4","color":"black","content":"ONE","transform":"scale(1,1.2) translate(0,-90%)"},{"type":"content-4","color":"black","content":"WAY","transform":"scale(1,1.2)"},{"type":"US-arrow-oneway","color":"black","transform":"scale(.5) translate(0,45%) rotate(90deg)"}]},"warning_single_2_reverse_curve":{"category":"warning","name":"single 2 reverse curve","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"orange","transform":"scale(.95) {square_to_diamond}"},{"type":"single-2-reverse-curve","color":"black"}]},"warning_double_2_reverse_curve":{"category":"warning","name":"double 2 reverse curve","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"orange","transform":"scale(.95) {square_to_diamond}"},{"type":"single-2-reverse-curve","color":"black","transform":"{fit_diamond} translate(-9%)"},{"type":"single-2-reverse-curve","color":"black","transform":"{fit_diamond} translate(9%)"}]},"warning_triple_2_reverse_curve":{"category":"warning","name":"triple 2 reverse curve","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"orange","transform":"scale(.95) {square_to_diamond}"},{"type":"single-2-reverse-curve","color":"black","transform":"{fit_diamond} translate(-18%)"},{"type":"single-2-reverse-curve","color":"black","transform":"{fit_diamond}"},{"type":"single-2-reverse-curve","color":"black","transform":"{fit_diamond} translate(18%)"}]},"school_school":{"category":"school","name":"school","elements":[{"type":"school","color":"black"},{"type":"school","color":"fluogreen","transform":"scale(.95)"},{"type":"children","color":"black"}]},"school_obsolete":{"category":"school","name":"school","elements":[{"type":"school","color":"black"},{"type":"school","color":"yellow","transform":"scale(.95)"},{"type":"children","color":"black"}]},"warning_turn_left_curve":{"category":"warning","name":"turn left curve","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-l-curve","color":"black","transform":"{fit_diamond}"}]},"warning_turn_right_curve":{"category":"warning","name":"turn right curve","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-l-curve","color":"black","transform":"{fit_diamond} scale(-1,1)"}]},"warning_turn_left_curve_speed":{"category":"warning","name":"turn left curve with speed","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-l-curve","color":"black","transform":"{fit_diamond}"},{"type":"turn-curve-speed","color":"black","transform":"{fit_diamond} scale(-1,1)"}]},"warning_turn_right_curve_speed":{"category":"warning","name":"turn right curve with speed","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"turn-l-curve","color":"black","transform":"{fit_diamond} scale(-1,1)"},{"type":"turn-curve-speed","color":"black","transform":"{fit_diamond}"}]},"warning_pretzel_loop":{"category":"warning","name":"pretzel_loop","elements":[{"type":"square-rounded","color":"black","transform":"{square_to_diamond}"},{"type":"square-rounded","color":"yellow","transform":"scale(.95) {square_to_diamond}"},{"type":"pretzel-loop","color":"black","transform":"{fit_diamond}"}]}} \ No newline at end of file diff --git a/index.html b/index.html index 60ea3d407..1b832bc3c 100644 --- a/index.html +++ b/index.html @@ -6,7 +6,7 @@ - + diff --git a/js/id/renderer/mapillary_sign_layer.js b/js/id/renderer/mapillary_sign_layer.js index fffeb9ea0..4769ec674 100644 --- a/js/id/renderer/mapillary_sign_layer.js +++ b/js/id/renderer/mapillary_sign_layer.js @@ -5,12 +5,15 @@ iD.MapillarySignLayer = function(context) { clientId = 'NzNRM2otQkR2SHJzaXJmNmdQWVQ0dzo1ZWYyMmYwNjdmNDdlNmVi', enable = false, initiated = false, - currentImage, - svg, image_preview_div, request, signs_defs; + signs_defs = {}, + currentImage, svg, image_preview_div, request; - request = d3.json('css/traffico-release-0.1.5/global-patched.json', function(error, data) { - if (error) return; - signs_defs = data; + _.each(['au', 'br', 'ca', 'de', 'us'], function(el) { + d3.json('css/traffico-release-0.1.26/string-maps/' + el + '-map.json', function(err, data) { + if (err) return; + if (el === 'de') el = 'eu'; + signs_defs[el] = data; + }); }); function show(image) { @@ -111,7 +114,10 @@ iD.MapillarySignLayer = function(context) { .attr('class', 'icon-sign') .append('xhtml:body') .html(function(d) { - var sign_html = signs_defs[d.signs[0].type]; + var detectionPackage = d.signs[0].package, + type = d.signs[0].type, + country= detectionPackage.split('_')[1], + sign_html = signs_defs[country][type]; return sign_html; }); From 3e651567544c0fcd5b81f890b59e4894c0e3fbef Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Mon, 8 Feb 2016 10:31:34 -0500 Subject: [PATCH 16/38] Refactor services --- API.md | 6 ++-- Makefile | 1 + index.html | 5 ++-- js/id/services.js | 1 + .../services/{countrycode.js => nominatum.js} | 26 ++++++++++------- js/id/services/taginfo.js | 19 +++++++++---- js/id/services/wikipedia.js | 2 +- js/id/ui/preset/address.js | 2 +- js/id/ui/preset/localized.js | 2 +- js/id/ui/preset/wikipedia.js | 2 +- test/index.html | 9 +++--- test/index_packaged.html | 6 ++-- .../{countrycode.js => services/nominatum.js} | 28 +++++++++---------- test/spec/{ => services}/taginfo.js | 4 +-- 14 files changed, 65 insertions(+), 48 deletions(-) create mode 100644 js/id/services.js rename js/id/services/{countrycode.js => nominatum.js} (66%) rename test/spec/{countrycode.js => services/nominatum.js} (81%) rename test/spec/{ => services}/taginfo.js (98%) diff --git a/API.md b/API.md index b88592cae..e0981f8e0 100644 --- a/API.md +++ b/API.md @@ -137,7 +137,7 @@ iD can use external presets exclusively or along with the default OpenStreetMap var iD = iD() .presets(customPresets) - .taginfo(iD.taginfo()) + .taginfo(iD.services.taginfo()) .imagery(iD.data.imagery); ``` @@ -152,7 +152,7 @@ Just like Presets, Imagery can be configured using the `iD().imagery` accessor. var iD = iD() .presets(customPresets) - .taginfo(iD.taginfo()) + .taginfo(iD.services.taginfo()) .imagery(customImagery); ``` @@ -168,7 +168,7 @@ The Imagery object should follow the structure defined by [editor-imagery-index] var iD = iD() .presets(customPresets) - .taginfo(iD.taginfo().endpoint('url')) + .taginfo(iD.services.taginfo().endpoint('url')) .imagery(customImagery); ``` diff --git a/Makefile b/Makefile index 4ad6861eb..65a4f96a5 100644 --- a/Makefile +++ b/Makefile @@ -63,6 +63,7 @@ dist/iD.js: \ js/lib/marked.js \ js/id/start.js \ js/id/id.js \ + js/id/services.js \ js/id/services/*.js \ js/id/util.js \ js/id/util/*.js \ diff --git a/index.html b/index.html index 1b832bc3c..1567bd893 100644 --- a/index.html +++ b/index.html @@ -40,7 +40,8 @@ - + + @@ -251,7 +252,7 @@ id = iD() .presets(iD.data.presets) .imagery(iD.data.imagery) - .taginfo(iD.taginfo()) + .taginfo(iD.services.taginfo()) .assetPath('dist/'); d3.select('#id-container') diff --git a/js/id/services.js b/js/id/services.js new file mode 100644 index 000000000..c11dc788f --- /dev/null +++ b/js/id/services.js @@ -0,0 +1 @@ +iD.services = {}; diff --git a/js/id/services/countrycode.js b/js/id/services/nominatum.js similarity index 66% rename from js/id/services/countrycode.js rename to js/id/services/nominatum.js index c324cf64e..37aa8e2c1 100644 --- a/js/id/services/countrycode.js +++ b/js/id/services/nominatum.js @@ -1,15 +1,11 @@ -iD.countryCode = function() { - var countryCode = {}, +iD.services.nominatum = function() { + var nominatum = {}, endpoint = 'https://nominatim.openstreetmap.org/reverse?'; - if (!iD.countryCode.cache) { - iD.countryCode.cache = rbush(); - } - var cache = iD.countryCode.cache; - - countryCode.search = function(location, callback) { - var countryCodes = cache.search([location[0], location[1], location[0], location[1]]); + nominatum.countryCode = function(location, callback) { + var cache = iD.services.nominatum.cache, + countryCodes = cache.search([location[0], location[1], location[0], location[1]]); if (countryCodes.length > 0) return callback(null, countryCodes[0][4]); @@ -34,5 +30,15 @@ iD.countryCode = function() { }); }; - return countryCode; + nominatum.reset = function() { + iD.services.nominatum.cache = rbush(); + return nominatum; + }; + + + if (!iD.services.nominatum.cache) { + nominatum.reset(); + } + + return nominatum; }; diff --git a/js/id/services/taginfo.js b/js/id/services/taginfo.js index ade77ada7..b71661d25 100644 --- a/js/id/services/taginfo.js +++ b/js/id/services/taginfo.js @@ -1,4 +1,4 @@ -iD.taginfo = function() { +iD.services.taginfo = function() { var taginfo = {}, endpoint = 'https://taginfo.openstreetmap.org/api/4/', tag_sorts = { @@ -14,11 +14,6 @@ iD.taginfo = function() { line: 'ways' }; - if (!iD.taginfo.cache) { - iD.taginfo.cache = {}; - } - - var cache = iD.taginfo.cache; function sets(parameters, n, o) { if (parameters.geometry && o[parameters.geometry]) { @@ -68,6 +63,8 @@ iD.taginfo = function() { var debounced = _.debounce(d3.json, 100, true); function request(url, debounce, callback) { + var cache = iD.services.taginfo.cache; + if (cache[url]) { callback(null, cache[url]); } else if (debounce) { @@ -132,5 +129,15 @@ iD.taginfo = function() { return taginfo; }; + taginfo.reset = function() { + iD.services.taginfo.cache = {}; + return taginfo; + }; + + + if (!iD.services.taginfo.cache) { + taginfo.reset(); + } + return taginfo; }; diff --git a/js/id/services/wikipedia.js b/js/id/services/wikipedia.js index eb121f57a..a33143a07 100644 --- a/js/id/services/wikipedia.js +++ b/js/id/services/wikipedia.js @@ -1,4 +1,4 @@ -iD.wikipedia = function() { +iD.services.wikipedia = function() { var wiki = {}, endpoint = 'https://en.wikipedia.org/w/api.php?'; diff --git a/js/id/ui/preset/address.js b/js/id/ui/preset/address.js index d19fe9213..6457d0044 100644 --- a/js/id/ui/preset/address.js +++ b/js/id/ui/preset/address.js @@ -109,7 +109,7 @@ iD.ui.preset.address = function(field, context) { var center = entity.extent(context.graph()).center(), addressFormat; - iD.countryCode().search(center, function (err, countryCode) { + iD.services.nominatum().countryCode(center, function (err, countryCode) { addressFormat = _.find(iD.data.addressFormats, function (a) { return a && a.countryCodes && _.contains(a.countryCodes, countryCode); }) || _.first(iD.data.addressFormats); diff --git a/js/id/ui/preset/localized.js b/js/id/ui/preset/localized.js index 35e6307c7..18d27ff70 100644 --- a/js/id/ui/preset/localized.js +++ b/js/id/ui/preset/localized.js @@ -1,6 +1,6 @@ iD.ui.preset.localized = function(field, context) { var dispatch = d3.dispatch('change', 'input'), - wikipedia = iD.wikipedia(), + wikipedia = iD.services.wikipedia(), input, localizedInputs, wikiTitles, entity; diff --git a/js/id/ui/preset/wikipedia.js b/js/id/ui/preset/wikipedia.js index 4b069cc2b..5ac04cef3 100644 --- a/js/id/ui/preset/wikipedia.js +++ b/js/id/ui/preset/wikipedia.js @@ -1,6 +1,6 @@ iD.ui.preset.wikipedia = function(field, context) { var dispatch = d3.dispatch('change'), - wikipedia = iD.wikipedia(), + wikipedia = iD.services.wikipedia(), link, entity, lang, title; function i(selection) { diff --git a/test/index.html b/test/index.html index bc932e87a..439242d07 100644 --- a/test/index.html +++ b/test/index.html @@ -38,7 +38,8 @@ - + + @@ -262,6 +263,7 @@ + @@ -301,9 +303,8 @@ - - - + + diff --git a/test/index_packaged.html b/test/index_packaged.html index 5af0b5d99..9cd68a17e 100644 --- a/test/index_packaged.html +++ b/test/index_packaged.html @@ -59,6 +59,7 @@ + @@ -98,9 +99,8 @@ - - - + + diff --git a/test/spec/countrycode.js b/test/spec/services/nominatum.js similarity index 81% rename from test/spec/countrycode.js rename to test/spec/services/nominatum.js index 1b519d3f4..b280e8741 100644 --- a/test/spec/countrycode.js +++ b/test/spec/services/nominatum.js @@ -1,10 +1,10 @@ -describe("iD.countryCode", function() { - var server, countryCode; +describe("iD.services.nominatum", function() { + var server, nominatum; beforeEach(function() { server = sinon.fakeServer.create(); - iD.countryCode.cache = null; - countryCode = iD.countryCode(); + nominatum = iD.services.nominatum(); + nominatum.reset(); }); afterEach(function() { @@ -15,10 +15,10 @@ describe("iD.countryCode", function() { return iD.util.stringQs(url.substring(url.indexOf('?') + 1)); } - describe("#search", function() { - it("calls the given callback with the results of the search query", function() { + describe("#countryCode", function() { + it("calls the given callback with the results of the country code query", function() { var callback = sinon.spy(); - countryCode.search([16, 48], callback); + nominatum.countryCode([16, 48], callback); server.respondWith("GET", "https://nominatim.openstreetmap.org/reverse?addressdetails=1&format=json&lat=48&lon=16", [200, { "Content-Type": "application/json" }, @@ -29,9 +29,9 @@ describe("iD.countryCode", function() { {format: "json", addressdetails: "1", lat: "48", lon: "16"}); expect(callback).to.have.been.calledWith(null, "at"); }); - it("should not cache the first search result", function() { + it("should not cache the first country code result", function() { var callback = sinon.spy(); - countryCode.search([16, 48], callback); + nominatum.countryCode([16, 48], callback); server.respondWith("GET", "https://nominatim.openstreetmap.org/reverse?addressdetails=1&format=json&lat=48&lon=16", [200, { "Content-Type": "application/json" }, @@ -45,7 +45,7 @@ describe("iD.countryCode", function() { server.restore(); server = sinon.fakeServer.create(); - countryCode.search([17, 49], callback); + nominatum.countryCode([17, 49], callback); server.respondWith("GET", "https://nominatim.openstreetmap.org/reverse?addressdetails=1&format=json&lat=49&lon=17", [200, { "Content-Type": "application/json" }, @@ -56,9 +56,9 @@ describe("iD.countryCode", function() { {format: "json", addressdetails: "1", lat: "49", lon: "17"}); expect(callback).to.have.been.calledWith(null, "cz"); }); - it("should cache the first search result", function() { + it("should cache the first country code result", function() { var callback = sinon.spy(); - countryCode.search([16, 48], callback); + nominatum.countryCode([16, 48], callback); server.respondWith("GET", "https://nominatim.openstreetmap.org/reverse?addressdetails=1&format=json&lat=48&lon=16", [200, { "Content-Type": "application/json" }, @@ -72,7 +72,7 @@ describe("iD.countryCode", function() { server.restore(); server = sinon.fakeServer.create(); - countryCode.search([16.01, 48.01], callback); + nominatum.countryCode([16.01, 48.01], callback); server.respondWith("GET", "https://nominatim.openstreetmap.org/reverse?addressdetails=1&format=json&lat=48.01&lon=16.01", [200, { "Content-Type": "application/json" }, @@ -83,7 +83,7 @@ describe("iD.countryCode", function() { }); it("calls the given callback with an error", function() { var callback = sinon.spy(); - countryCode.search([1000, 1000], callback); + nominatum.countryCode([1000, 1000], callback); server.respondWith("GET", "https://nominatim.openstreetmap.org/reverse?addressdetails=1&format=json&lat=1000&lon=1000", [200, { "Content-Type": "application/json" }, diff --git a/test/spec/taginfo.js b/test/spec/services/taginfo.js similarity index 98% rename from test/spec/taginfo.js rename to test/spec/services/taginfo.js index 7d91d2f5b..df66510c6 100644 --- a/test/spec/taginfo.js +++ b/test/spec/services/taginfo.js @@ -1,9 +1,9 @@ -describe("iD.taginfo", function() { +describe("iD.services.taginfo", function() { var server, taginfo; beforeEach(function() { server = sinon.fakeServer.create(); - taginfo = iD.taginfo(); + taginfo = iD.services.taginfo(); }); afterEach(function() { From a083ae3001d7c4d53ec9a7b5403194da2493ab5b Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Mon, 8 Feb 2016 10:55:27 -0500 Subject: [PATCH 17/38] Call service `reset` functions from `iD.flush()` Also fix misspelling nominatum -> nominatim --- index.html | 2 +- js/id/id.js | 4 ++++ js/id/services/{nominatum.js => nominatim.js} | 20 +++++++++---------- js/id/ui/preset/address.js | 2 +- test/index.html | 4 ++-- test/index_packaged.html | 2 +- .../services/{nominatum.js => nominatim.js} | 20 +++++++++---------- 7 files changed, 29 insertions(+), 25 deletions(-) rename js/id/services/{nominatum.js => nominatim.js} (72%) rename test/spec/services/{nominatum.js => nominatim.js} (88%) diff --git a/index.html b/index.html index 1567bd893..f97818ad5 100644 --- a/index.html +++ b/index.html @@ -41,7 +41,7 @@ - + diff --git a/js/id/id.js b/js/id/id.js index 0ff24a6f6..5f0807a35 100644 --- a/js/id/id.js +++ b/js/id/id.js @@ -157,6 +157,10 @@ window.iD = function () { connection.flush(); features.reset(); history.reset(); + _.each(iD.services, function(service) { + var reset = service().reset; + if (reset) reset(); + }); return context; }; diff --git a/js/id/services/nominatum.js b/js/id/services/nominatim.js similarity index 72% rename from js/id/services/nominatum.js rename to js/id/services/nominatim.js index 37aa8e2c1..8431ce6aa 100644 --- a/js/id/services/nominatum.js +++ b/js/id/services/nominatim.js @@ -1,10 +1,10 @@ -iD.services.nominatum = function() { - var nominatum = {}, +iD.services.nominatim = function() { + var nominatim = {}, endpoint = 'https://nominatim.openstreetmap.org/reverse?'; - nominatum.countryCode = function(location, callback) { - var cache = iD.services.nominatum.cache, + nominatim.countryCode = function(location, callback) { + var cache = iD.services.nominatim.cache, countryCodes = cache.search([location[0], location[1], location[0], location[1]]); if (countryCodes.length > 0) @@ -30,15 +30,15 @@ iD.services.nominatum = function() { }); }; - nominatum.reset = function() { - iD.services.nominatum.cache = rbush(); - return nominatum; + nominatim.reset = function() { + iD.services.nominatim.cache = rbush(); + return nominatim; }; - if (!iD.services.nominatum.cache) { - nominatum.reset(); + if (!iD.services.nominatim.cache) { + nominatim.reset(); } - return nominatum; + return nominatim; }; diff --git a/js/id/ui/preset/address.js b/js/id/ui/preset/address.js index 6457d0044..823b0e7f4 100644 --- a/js/id/ui/preset/address.js +++ b/js/id/ui/preset/address.js @@ -109,7 +109,7 @@ iD.ui.preset.address = function(field, context) { var center = entity.extent(context.graph()).center(), addressFormat; - iD.services.nominatum().countryCode(center, function (err, countryCode) { + iD.services.nominatim().countryCode(center, function (err, countryCode) { addressFormat = _.find(iD.data.addressFormats, function (a) { return a && a.countryCodes && _.contains(a.countryCodes, countryCode); }) || _.first(iD.data.addressFormats); diff --git a/test/index.html b/test/index.html index 439242d07..58735a09c 100644 --- a/test/index.html +++ b/test/index.html @@ -39,7 +39,7 @@ - + @@ -303,7 +303,7 @@ - + diff --git a/test/index_packaged.html b/test/index_packaged.html index 9cd68a17e..4fc6c13bd 100644 --- a/test/index_packaged.html +++ b/test/index_packaged.html @@ -99,7 +99,7 @@ - + diff --git a/test/spec/services/nominatum.js b/test/spec/services/nominatim.js similarity index 88% rename from test/spec/services/nominatum.js rename to test/spec/services/nominatim.js index b280e8741..e77dbd725 100644 --- a/test/spec/services/nominatum.js +++ b/test/spec/services/nominatim.js @@ -1,10 +1,10 @@ -describe("iD.services.nominatum", function() { - var server, nominatum; +describe("iD.services.nominatim", function() { + var server, nominatim; beforeEach(function() { server = sinon.fakeServer.create(); - nominatum = iD.services.nominatum(); - nominatum.reset(); + nominatim = iD.services.nominatim(); + nominatim.reset(); }); afterEach(function() { @@ -18,7 +18,7 @@ describe("iD.services.nominatum", function() { describe("#countryCode", function() { it("calls the given callback with the results of the country code query", function() { var callback = sinon.spy(); - nominatum.countryCode([16, 48], callback); + nominatim.countryCode([16, 48], callback); server.respondWith("GET", "https://nominatim.openstreetmap.org/reverse?addressdetails=1&format=json&lat=48&lon=16", [200, { "Content-Type": "application/json" }, @@ -31,7 +31,7 @@ describe("iD.services.nominatum", function() { }); it("should not cache the first country code result", function() { var callback = sinon.spy(); - nominatum.countryCode([16, 48], callback); + nominatim.countryCode([16, 48], callback); server.respondWith("GET", "https://nominatim.openstreetmap.org/reverse?addressdetails=1&format=json&lat=48&lon=16", [200, { "Content-Type": "application/json" }, @@ -45,7 +45,7 @@ describe("iD.services.nominatum", function() { server.restore(); server = sinon.fakeServer.create(); - nominatum.countryCode([17, 49], callback); + nominatim.countryCode([17, 49], callback); server.respondWith("GET", "https://nominatim.openstreetmap.org/reverse?addressdetails=1&format=json&lat=49&lon=17", [200, { "Content-Type": "application/json" }, @@ -58,7 +58,7 @@ describe("iD.services.nominatum", function() { }); it("should cache the first country code result", function() { var callback = sinon.spy(); - nominatum.countryCode([16, 48], callback); + nominatim.countryCode([16, 48], callback); server.respondWith("GET", "https://nominatim.openstreetmap.org/reverse?addressdetails=1&format=json&lat=48&lon=16", [200, { "Content-Type": "application/json" }, @@ -72,7 +72,7 @@ describe("iD.services.nominatum", function() { server.restore(); server = sinon.fakeServer.create(); - nominatum.countryCode([16.01, 48.01], callback); + nominatim.countryCode([16.01, 48.01], callback); server.respondWith("GET", "https://nominatim.openstreetmap.org/reverse?addressdetails=1&format=json&lat=48.01&lon=16.01", [200, { "Content-Type": "application/json" }, @@ -83,7 +83,7 @@ describe("iD.services.nominatum", function() { }); it("calls the given callback with an error", function() { var callback = sinon.spy(); - nominatum.countryCode([1000, 1000], callback); + nominatim.countryCode([1000, 1000], callback); server.respondWith("GET", "https://nominatim.openstreetmap.org/reverse?addressdetails=1&format=json&lat=1000&lon=1000", [200, { "Content-Type": "application/json" }, From 524c093f68f9238700c4dc357b128fcc49ae8a96 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Mon, 8 Feb 2016 14:15:05 -0500 Subject: [PATCH 18/38] Move traffico to asset path, reorganize id.js init after context definition --- css/traffico-release-0.1.26 => dist/traffico | 0 js/id/id.js | 182 ++++++++++--------- js/id/renderer/mapillary_sign_layer.js | 2 +- 3 files changed, 102 insertions(+), 82 deletions(-) rename css/traffico-release-0.1.26 => dist/traffico (100%) diff --git a/css/traffico-release-0.1.26 b/dist/traffico similarity index 100% rename from css/traffico-release-0.1.26 rename to dist/traffico diff --git a/js/id/id.js b/js/id/id.js index 5f0807a35..959bb2059 100644 --- a/js/id/id.js +++ b/js/id/id.js @@ -2,11 +2,12 @@ window.iD = function () { window.locale.en = iD.data.en; window.locale.current('en'); - var context = {}, - storage; + var dispatch = d3.dispatch('enter', 'exit'), + context = {}; // https://github.com/openstreetmap/iD/issues/772 // http://mathiasbynens.be/notes/localstorage-pattern#comment-9 + var storage; try { storage = localStorage; } catch (e) {} // eslint-disable-line no-empty storage = storage || (function() { var s = {}; @@ -30,34 +31,7 @@ window.iD = function () { } }; - /* Accessor for setting minimum zoom for editing features. */ - - var minEditableZoom = 16; - context.minEditableZoom = function(_) { - if (!arguments.length) return minEditableZoom; - minEditableZoom = _; - connection.tileZoom(_); - return context; - }; - - var history = iD.History(context), - dispatch = d3.dispatch('enter', 'exit'), - mode, - container, - ui = iD.ui(context), - connection = iD.Connection(), - locale = iD.detect().locale, - localePath; - - if (locale && iD.data.locales.indexOf(locale) === -1) { - locale = locale.split('-')[0]; - } - - context.preauth = function(options) { - connection.switch(options); - return context; - }; - + var locale, localePath; context.locale = function(loc, path) { locale = loc; localePath = path; @@ -83,16 +57,24 @@ window.iD = function () { } }; + /* Straight accessors. Avoid using these if you can. */ + var ui, connection, history; context.ui = function() { return ui; }; context.connection = function() { return connection; }; context.history = function() { return history; }; + /* Connection */ function entitiesLoaded(err, result) { if (!err) history.merge(result.data, result.extent); } + context.preauth = function(options) { + connection.switch(options); + return context; + }; + context.loadTiles = function(projection, dimensions, callback) { function done(err, result) { entitiesLoaded(err, result); @@ -133,13 +115,17 @@ window.iD = function () { }); }; + var minEditableZoom = 16; + context.minEditableZoom = function(_) { + if (!arguments.length) return minEditableZoom; + minEditableZoom = _; + connection.tileZoom(_); + return context; + }; + + /* History */ - context.graph = history.graph; - context.changes = history.changes; - context.intersects = history.intersects; - var inIntro = false; - context.inIntro = function(_) { if (!arguments.length) return inIntro; inIntro = _; @@ -164,42 +150,27 @@ window.iD = function () { return context; }; - // Debounce save, since it's a synchronous localStorage write, - // and history changes can happen frequently (e.g. when dragging). - context.debouncedSave = _.debounce(context.save, 350); - function withDebouncedSave(fn) { - return function() { - var result = fn.apply(history, arguments); - context.debouncedSave(); - return result; - }; - } - - context.perform = withDebouncedSave(history.perform); - context.replace = withDebouncedSave(history.replace); - context.pop = withDebouncedSave(history.pop); - context.overwrite = withDebouncedSave(history.overwrite); - context.undo = withDebouncedSave(history.undo); - context.redo = withDebouncedSave(history.redo); /* Graph */ context.hasEntity = function(id) { return history.graph().hasEntity(id); }; - context.entity = function(id) { return history.graph().entity(id); }; - context.childNodes = function(way) { return history.graph().childNodes(way); }; - context.geometry = function(id) { return context.entity(id).geometry(history.graph()); }; + /* Modes */ + var mode; + context.mode = function() { + return mode; + }; context.enter = function(newMode) { if (mode) { mode.exit(); @@ -211,10 +182,6 @@ window.iD = function () { dispatch.enter(mode); }; - context.mode = function() { - return mode; - }; - context.selectedIDs = function() { if (mode && mode.selectedIDs) { return mode.selectedIDs(); @@ -223,15 +190,16 @@ window.iD = function () { } }; + /* Behaviors */ context.install = function(behavior) { context.surface().call(behavior); }; - context.uninstall = function(behavior) { context.surface().call(behavior.off); }; + /* Copy/Paste */ var copyIDs = [], copyGraph; context.copyGraph = function() { return copyGraph; }; @@ -242,15 +210,14 @@ window.iD = function () { return context; }; - /* Projection */ - context.projection = iD.geo.RawMercator(); /* Background */ - var background = iD.Background(context); + var background; context.background = function() { return background; }; + /* Features */ - var features = iD.Features(context); + var features; context.features = function() { return features; }; context.hasHiddenConnections = function(id) { var graph = history.graph(), @@ -258,20 +225,13 @@ window.iD = function () { return features.hasHiddenConnections(entity, graph); }; + /* Map */ - var map = iD.Map(context); + var map; context.map = function() { return map; }; context.layers = function() { return map.layers; }; context.surface = function() { return map.surface; }; context.editable = function() { return map.editable(); }; - context.mouse = map.mouse; - context.extent = map.extent; - context.pan = map.pan; - context.zoomIn = map.zoomIn; - context.zoomOut = map.zoomOut; - context.zoomInFurther = map.zoomInFurther; - context.zoomOutFurther = map.zoomOutFurther; - context.redrawEnable = map.redrawEnable; context.surfaceRect = function() { // Work around a bug in Firefox. @@ -280,9 +240,9 @@ window.iD = function () { return context.surface().node().parentNode.getBoundingClientRect(); }; - /* Presets */ - var presets = iD.presets(); + /* Presets */ + var presets; context.presets = function(_) { if (!arguments.length) return presets; presets.load(_); @@ -290,17 +250,28 @@ window.iD = function () { return context; }; + + /* Imagery */ context.imagery = function(_) { background.load(_); return context; }; + + /* Container */ + var container, embed; context.container = function(_) { if (!arguments.length) return container; container = _; container.classed('id-container', true); return context; }; + context.embed = function(_) { + if (!arguments.length) return embed; + embed = _; + return context; + }; + /* Taginfo */ var taginfo; @@ -310,13 +281,8 @@ window.iD = function () { return context; }; - var embed = false; - context.embed = function(_) { - if (!arguments.length) return embed; - embed = _; - return context; - }; + /* Assets */ var assetPath = ''; context.assetPath = function(_) { if (!arguments.length) return assetPath; @@ -336,9 +302,63 @@ window.iD = function () { return assetMap[asset] || assetPath + asset; }; + + /* Init */ + + context.projection = iD.geo.RawMercator(); + + locale = iD.detect().locale; + if (locale && iD.data.locales.indexOf(locale) === -1) { + locale = locale.split('-')[0]; + } + + history = iD.History(context); + context.graph = history.graph; + context.changes = history.changes; + context.intersects = history.intersects; + + // Debounce save, since it's a synchronous localStorage write, + // and history changes can happen frequently (e.g. when dragging). + context.debouncedSave = _.debounce(context.save, 350); + function withDebouncedSave(fn) { + return function() { + var result = fn.apply(history, arguments); + context.debouncedSave(); + return result; + }; + } + + context.perform = withDebouncedSave(history.perform); + context.replace = withDebouncedSave(history.replace); + context.pop = withDebouncedSave(history.pop); + context.overwrite = withDebouncedSave(history.overwrite); + context.undo = withDebouncedSave(history.undo); + context.redo = withDebouncedSave(history.redo); + + ui = iD.ui(context); + + connection = iD.Connection(); + + background = iD.Background(context); + + features = iD.Features(context); + + map = iD.Map(context); + context.mouse = map.mouse; + context.extent = map.extent; + context.pan = map.pan; + context.zoomIn = map.zoomIn; + context.zoomOut = map.zoomOut; + context.zoomInFurther = map.zoomInFurther; + context.zoomOutFurther = map.zoomOutFurther; + context.redrawEnable = map.redrawEnable; + + presets = iD.presets(); + return d3.rebind(context, dispatch, 'on'); }; + iD.version = '1.8.5'; (function() { diff --git a/js/id/renderer/mapillary_sign_layer.js b/js/id/renderer/mapillary_sign_layer.js index 4769ec674..2eaf85bbe 100644 --- a/js/id/renderer/mapillary_sign_layer.js +++ b/js/id/renderer/mapillary_sign_layer.js @@ -9,7 +9,7 @@ iD.MapillarySignLayer = function(context) { currentImage, svg, image_preview_div, request; _.each(['au', 'br', 'ca', 'de', 'us'], function(el) { - d3.json('css/traffico-release-0.1.26/string-maps/' + el + '-map.json', function(err, data) { + d3.json(context.assetPath() + 'traffico/string-maps/' + el + '-map.json', function(err, data) { if (err) return; if (el === 'de') el = 'eu'; signs_defs[el] = data; From f173441fe32dddce7370c6853bc5dc3cc0292c3c Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Mon, 8 Feb 2016 15:46:37 -0500 Subject: [PATCH 19/38] WIP: Mapillary service --- index.html | 1 + js/id/renderer/mapillary_image_layer.js | 94 ++++++++++++------------- js/id/services/mapillary.js | 25 +++++++ test/index.html | 2 + test/index_packaged.html | 1 + test/spec/services/mapillary.js | 24 +++++++ 6 files changed, 99 insertions(+), 48 deletions(-) create mode 100644 js/id/services/mapillary.js create mode 100644 test/spec/services/mapillary.js diff --git a/index.html b/index.html index f97818ad5..3f79dabc0 100644 --- a/index.html +++ b/index.html @@ -41,6 +41,7 @@ + diff --git a/js/id/renderer/mapillary_image_layer.js b/js/id/renderer/mapillary_image_layer.js index 8fae6f0ef..c46d22e50 100644 --- a/js/id/renderer/mapillary_image_layer.js +++ b/js/id/renderer/mapillary_image_layer.js @@ -1,8 +1,5 @@ iD.MapillaryImageLayer = function (context) { - var urlSearch = 'https://a.mapillary.com/v2/search/s/geojson', - urlImage = 'https://www.mapillary.com/map/im/', - urlThumb = 'https://d1cuyjsrcm0gby.cloudfront.net/', - clientId = 'NzNRM2otQkR2SHJzaXJmNmdQWVQ0dzo1ZWYyMmYwNjdmNDdlNmVi', + var mapillary = iD.services.mapillary(), enable = false, currentImage, svg, div, request; @@ -38,7 +35,45 @@ iD.MapillaryImageLayer = function (context) { return t; } - function render(selection) { + function render(err, data) { + if (err) return; + + var images = []; + for (var i = 0; i < data.features.length; i++) { + var sequence = data.features[i]; + for (var j = 0; j < sequence.geometry.coordinates.length; j++) { + images.push({ + key: sequence.properties.keys[j], + ca: sequence.properties.cas[j], + loc: sequence.geometry.coordinates[j] + }); + if (images.length >= 1000) break; + } + } + + var g = svg.selectAll('g') + .data(images, function(d) { return d.key; }); + + var enter = g.enter().append('g') + .attr('class', 'image'); + + enter.append('path') + .attr('class', 'viewfield') + .attr('transform', 'scale(1.5,1.5),translate(-8, -13)') + .attr('d', 'M 6,9 C 8,8.4 8,8.4 10,9 L 16,-2 C 12,-5 4,-5 0,-2 z'); + + enter.append('circle') + .attr('dx', '0') + .attr('dy', '0') + .attr('r', '6'); + + g.attr('transform', transform); + + g.exit() + .remove(); + } + + function layer(selection) { svg = selection.selectAll('svg') .data([0]); @@ -107,57 +142,20 @@ iD.MapillaryImageLayer = function (context) { request = d3.json(urlSearch + '?client_id=' + clientId + '&min_lat=' + extent[0][1] + '&max_lat=' + extent[1][1] + '&min_lon=' + extent[0][0] + '&max_lon=' + extent[1][0] + '&max_results=100&geojson=true', - function (error, data) { - if (error) return; - - var images = []; - - for (var i = 0; i < data.features.length; i++) { - var sequence = data.features[i]; - for (var j = 0; j < sequence.geometry.coordinates.length; j++) { - images.push({ - key: sequence.properties.keys[j], - ca: sequence.properties.cas[j], - loc: sequence.geometry.coordinates[j] - }); - if (images.length >= 1000) break; - } - } - - var g = svg.selectAll('g') - .data(images, function(d) { return d.key; }); - - var enter = g.enter().append('g') - .attr('class', 'image'); - - enter.append('path') - .attr('class', 'viewfield') - .attr('transform', 'scale(1.5,1.5),translate(-8, -13)') - .attr('d', 'M 6,9 C 8,8.4 8,8.4 10,9 L 16,-2 C 12,-5 4,-5 0,-2 z'); - - enter.append('circle') - .attr('dx', '0') - .attr('dy', '0') - .attr('r', '6'); - - g.attr('transform', transform); - - g.exit() - .remove(); - }); + ); } - render.enable = function(_) { + layer.enable = function(_) { if (!arguments.length) return enable; enable = _; - return render; + return layer; }; - render.dimensions = function(_) { + layer.dimensions = function(_) { if (!arguments.length) return svg.dimensions(); svg.dimensions(_); - return render; + return layer; }; - return render; + return layer; }; diff --git a/js/id/services/mapillary.js b/js/id/services/mapillary.js new file mode 100644 index 000000000..5a0b572d4 --- /dev/null +++ b/js/id/services/mapillary.js @@ -0,0 +1,25 @@ +iD.services.mapillary = function() { + var mapillary = {}, + apiBase = 'https://a.mapillary.com/v2/', + urlSearch = 'search/s/geojson', + urlImage = 'https://www.mapillary.com/map/im/', + urlThumb = 'https://d1cuyjsrcm0gby.cloudfront.net/', + clientId = 'NzNRM2otQkR2SHJzaXJmNmdQWVQ0dzo1ZWYyMmYwNjdmNDdlNmVi'; + + + mapillary.images = function(location, callback) { + var cache = iD.services.mapillary.cache; + }; + + mapillary.reset = function() { + iD.services.mapillary.cache = rbush(); + return mapillary; + }; + + + if (!iD.services.mapillary.cache) { + mapillary.reset(); + } + + return mapillary; +}; diff --git a/test/index.html b/test/index.html index 58735a09c..c8b018623 100644 --- a/test/index.html +++ b/test/index.html @@ -39,6 +39,7 @@ + @@ -303,6 +304,7 @@ + diff --git a/test/index_packaged.html b/test/index_packaged.html index 4fc6c13bd..bb2b50d29 100644 --- a/test/index_packaged.html +++ b/test/index_packaged.html @@ -99,6 +99,7 @@ + diff --git a/test/spec/services/mapillary.js b/test/spec/services/mapillary.js new file mode 100644 index 000000000..8df099dd6 --- /dev/null +++ b/test/spec/services/mapillary.js @@ -0,0 +1,24 @@ +describe("iD.services.mapillary", function() { + var server, mapillary; + + beforeEach(function() { + server = sinon.fakeServer.create(); + mapillary = iD.services.mapillary(); + mapillary.reset(); + }); + + afterEach(function() { + server.restore(); + }); + + function query(url) { + return iD.util.stringQs(url.substring(url.indexOf('?') + 1)); + } + + describe("#images", function() { + }); + + describe("#signs", function() { + }); + +}); From caf464e3d395ae74be0045dd028d5dba0a5cbf4f Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Mon, 8 Feb 2016 17:14:46 -0500 Subject: [PATCH 20/38] Fetch mapillary data in tiles and cache --- js/id/renderer/mapillary_image_layer.js | 83 +++++++++---------- js/id/services/mapillary.js | 104 ++++++++++++++++++++++-- 2 files changed, 139 insertions(+), 48 deletions(-) diff --git a/js/id/renderer/mapillary_image_layer.js b/js/id/renderer/mapillary_image_layer.js index c46d22e50..b41bfb669 100644 --- a/js/id/renderer/mapillary_image_layer.js +++ b/js/id/renderer/mapillary_image_layer.js @@ -1,8 +1,13 @@ -iD.MapillaryImageLayer = function (context) { - var mapillary = iD.services.mapillary(), +iD.MapillaryImageLayer = function(context) { + var mapillary = iD.services.mapillary() + .on('loadedImages.imageLayer', imagesLoaded), + imageData = rbush(), + urlImage = 'http://mapillary.com/map/im/', + urlThumb = 'https://d1cuyjsrcm0gby.cloudfront.net/', enable = false, currentImage, - svg, div, request; + svg, thumbnail; + function show(image) { svg.selectAll('g') @@ -10,13 +15,13 @@ iD.MapillaryImageLayer = function (context) { return currentImage && d.key === currentImage.key; }); - div.classed('hidden', false) + thumbnail.classed('hidden', false) .classed('temp', image !== currentImage); - div.selectAll('img') + thumbnail.selectAll('img') .attr('src', urlThumb + image.key + '/thumb-320.jpg'); - div.selectAll('a') + thumbnail.selectAll('a') .attr('href', urlImage + image.key); } @@ -26,7 +31,7 @@ iD.MapillaryImageLayer = function (context) { svg.selectAll('g') .classed('selected', false); - div.classed('hidden', true); + thumbnail.classed('hidden', true); } function transform(d) { @@ -35,22 +40,30 @@ iD.MapillaryImageLayer = function (context) { return t; } - function render(err, data) { - if (err) return; + function imagesLoaded(data) { + var images = [], + sequence, loc; - var images = []; for (var i = 0; i < data.features.length; i++) { - var sequence = data.features[i]; + sequence = data.features[i]; for (var j = 0; j < sequence.geometry.coordinates.length; j++) { - images.push({ + loc = sequence.geometry.coordinates[j]; + images.push([loc[0], loc[1], loc[0], loc[1], { key: sequence.properties.keys[j], ca: sequence.properties.cas[j], loc: sequence.geometry.coordinates[j] - }); - if (images.length >= 1000) break; + }]); } } + imageData.load(images); + } + + function render() { + var images = imageData + .search(context.map().extent().rectangle()) + .map(function(d) { return d[4]; }); + var g = svg.selectAll('g') .data(images, function(d) { return d.key; }); @@ -73,6 +86,7 @@ iD.MapillaryImageLayer = function (context) { .remove(); } + function layer(selection) { svg = selection.selectAll('svg') .data([0]); @@ -100,49 +114,36 @@ iD.MapillaryImageLayer = function (context) { svg.style('display', enable ? 'block' : 'none'); - div = context.container().selectAll('.mapillary-image') + thumbnail = context.container().selectAll('.mapillary-image') .data([0]); - var enter = div.enter().append('div') + var enter = thumbnail.enter().append('div') .attr('class', 'mapillary-image'); enter.append('button') .on('click', hide) .append('div') - .call(iD.svg.Icon('#icon-close')); + .attr('class', 'icon close'); enter.append('img'); - enter - .append('a') + var link = enter.append('a') .attr('class', 'link') - .attr('target', '_blank') - .call(iD.svg.Icon('#icon-out-link', 'inline')) - .append('span') + .attr('target', '_blank'); + + link.append('span') + .attr('class', 'icon icon-pre-text out-link'); + + link.append('span') .text(t('mapillary_images.view_on_mapillary')); if (!enable) { hide(); - - svg.selectAll('g') - .remove(); - - return; + svg.selectAll('g').remove(); + } else { + render(); + mapillary.loadImages(context.projection, svg.dimensions()); } - - // Update existing images while waiting for new ones to load. - svg.selectAll('g') - .attr('transform', transform); - - var extent = context.map().extent(); - - if (request) - request.abort(); - - request = d3.json(urlSearch + '?client_id=' + clientId + '&min_lat=' + - extent[0][1] + '&max_lat=' + extent[1][1] + '&min_lon=' + - extent[0][0] + '&max_lon=' + extent[1][0] + '&max_results=100&geojson=true', - ); } layer.enable = function(_) { diff --git a/js/id/services/mapillary.js b/js/id/services/mapillary.js index 5a0b572d4..c3e6ebbdc 100644 --- a/js/id/services/mapillary.js +++ b/js/id/services/mapillary.js @@ -1,18 +1,107 @@ iD.services.mapillary = function() { var mapillary = {}, - apiBase = 'https://a.mapillary.com/v2/', - urlSearch = 'search/s/geojson', + dispatch = d3.dispatch('loadedImages', 'loadedSigns', 'loadedThumbnail'), + endpoint = 'https://a.mapillary.com/v2/', urlImage = 'https://www.mapillary.com/map/im/', urlThumb = 'https://d1cuyjsrcm0gby.cloudfront.net/', - clientId = 'NzNRM2otQkR2SHJzaXJmNmdQWVQ0dzo1ZWYyMmYwNjdmNDdlNmVi'; + clientId = 'NzNRM2otQkR2SHJzaXJmNmdQWVQ0dzo1ZWYyMmYwNjdmNDdlNmVi', + tileZoom = 17; - mapillary.images = function(location, callback) { - var cache = iD.services.mapillary.cache; + function abortRequest(i) { + i.abort(); + } + + function getTiles(projection, dimensions) { + var s = projection.scale() * 2 * Math.PI, + z = Math.max(Math.log(s) / Math.log(2) - 8, 0), + ts = 256 * Math.pow(2, z - tileZoom), + origin = [ + s / 2 - projection.translate()[0], + s / 2 - projection.translate()[1]]; + + return d3.geo.tile() + .scaleExtent([tileZoom, tileZoom]) + .scale(s) + .size(dimensions) + .translate(projection.translate())() + .map(function(tile) { + var x = tile[0] * ts - origin[0], + y = tile[1] * ts - origin[1]; + + return { + id: tile.toString(), + extent: iD.geo.Extent( + projection.invert([x, y + ts]), + projection.invert([x + ts, y])) + }; + }); + } + + + function loadTiles(which, url, projection, dimensions) { + var cache = iD.services.mapillary.cache, + tiles = getTiles(projection, dimensions); + + _.filter(which.inflight, function(v, k) { + var wanted = _.find(tiles, function(tile) { return k === tile.id; }); + if (!wanted) delete which.inflight[k]; + return !wanted; + }).map(abortRequest); + + tiles.forEach(function(tile) { + var id = tile.id, + extent = tile.extent; + + if (which.loaded[id] || which.inflight[id]) return; + + which.inflight[id] = d3.json(url + + iD.util.qsString({ + geojson: 'true', + client_id: clientId, + min_lat: extent[0][1], + max_lat: extent[1][1], + min_lon: extent[0][0], + max_lon: extent[1][0] + }), function(err, data) { + which.loaded[id] = true; + delete which.inflight[id]; + if (err) return; + + if (which === cache.images) + dispatch.loadedImages(data); + else if (which === cache.signs) + dispatch.loadedSigns(data); + } + ); + }); + } + + mapillary.loadImages = function(projection, dimensions) { + var cache = iD.services.mapillary.cache, + url = endpoint + 'search/s/geojson?'; + loadTiles(cache.images, url, projection, dimensions); + }; + + mapillary.loadSigns = function(projection, dimensions) { + var cache = iD.services.mapillary.cache, + url = endpoint + 'search/im/geojson/or?'; + loadTiles(cache.signs, url, projection, dimensions); }; mapillary.reset = function() { - iD.services.mapillary.cache = rbush(); + var cache = iD.services.mapillary.cache; + + if (cache) { + _.forEach(cache.images.inflight, abortRequest); + _.forEach(cache.signs.inflight, abortRequest); + } + + iD.services.mapillary.cache = { + images: { inflight: {}, loaded: {}, rbush: rbush() }, + signs: { inflight: {}, loaded: {}, rbush: rbush() } + }; + return mapillary; }; @@ -21,5 +110,6 @@ iD.services.mapillary = function() { mapillary.reset(); } - return mapillary; + return d3.rebind(mapillary, dispatch, 'on'); }; + From c50a290cd19fa54eefb4516d621b2eb65ec302b4 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Fri, 3 Jul 2015 11:14:54 -0400 Subject: [PATCH 21/38] Add iD.geo.Extent#rectangle --- js/id/core/tree.js | 13 ++----------- js/id/geo/extent.js | 6 +++++- js/id/services/nominatim.js | 2 +- test/spec/geo/extent.js | 15 ++++++++++++++- 4 files changed, 22 insertions(+), 14 deletions(-) diff --git a/js/id/core/tree.js b/js/id/core/tree.js index 6bc40c33d..05bbc2230 100644 --- a/js/id/core/tree.js +++ b/js/id/core/tree.js @@ -2,17 +2,8 @@ iD.Tree = function(head) { var rtree = rbush(), rectangles = {}; - function extentRectangle(extent) { - return [ - extent[0][0], - extent[0][1], - extent[1][0], - extent[1][1] - ]; - } - function entityRectangle(entity) { - var rect = extentRectangle(entity.extent(head)); + var rect = entity.extent(head).rectangle(); rect.id = entity.id; rectangles[entity.id] = rect; return rect; @@ -90,7 +81,7 @@ iD.Tree = function(head) { rtree.load(_.map(insertions, entityRectangle)); } - return rtree.search(extentRectangle(extent)).map(function(rect) { + return rtree.search(extent.rectangle()).map(function(rect) { return head.entity(rect.id); }); }; diff --git a/js/id/geo/extent.js b/js/id/geo/extent.js index 912bcf08a..685c22282 100644 --- a/js/id/geo/extent.js +++ b/js/id/geo/extent.js @@ -45,6 +45,10 @@ _.extend(iD.geo.Extent.prototype, { (this[0][1] + this[1][1]) / 2]; }, + rectangle: function() { + return [this[0][0], this[0][1], this[1][0], this[1][1]]; + }, + polygon: function() { return [ [this[0][0], this[0][1]], @@ -100,7 +104,7 @@ _.extend(iD.geo.Extent.prototype, { }, toParam: function() { - return [this[0][0], this[0][1], this[1][0], this[1][1]].join(','); + return this.rectangle().join(','); } }); diff --git a/js/id/services/nominatim.js b/js/id/services/nominatim.js index 8431ce6aa..e57921331 100644 --- a/js/id/services/nominatim.js +++ b/js/id/services/nominatim.js @@ -24,7 +24,7 @@ iD.services.nominatim = function() { var extent = iD.geo.Extent(location).padByMeters(1000); - cache.insert([extent[0][0], extent[0][1], extent[1][0], extent[1][1], result.address.country_code]); + cache.insert(extent.rectangle().concat(result.address.country_code)); callback(null, result.address.country_code); }); diff --git a/test/spec/geo/extent.js b/test/spec/geo/extent.js index cd2e84cb0..b58dbefec 100644 --- a/test/spec/geo/extent.js +++ b/test/spec/geo/extent.js @@ -57,7 +57,20 @@ describe("iD.geo.Extent", function () { describe("#center", function () { it("returns the center point", function () { - expect(iD.geo.Extent([0, 0], [5, 10]).center()).to.eql([2.5, 5]); + expect(iD.geo.Extent([0, 0], [5, 10]).center()).to.eql([2.5, 5]); + }); + }); + + describe("#rectangle", function () { + it("returns the extent as a rectangle", function () { + expect(iD.geo.Extent([0, 0], [5, 10]).rectangle()).to.eql([0, 0, 5, 10]); + }); + }); + + describe("#polygon", function () { + it("returns the extent as a polygon", function () { + expect(iD.geo.Extent([0, 0], [5, 10]).polygon()) + .to.eql([[0, 0], [0, 10], [5, 10], [5, 0], [0, 0]]); }); }); From a62f41b611e25189868b88afefa1460c5de4372c Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Mon, 8 Feb 2016 23:46:26 -0500 Subject: [PATCH 22/38] Cleanup MapillaryImageryLayer, Mapillary service --- data/core.yaml | 2 +- dist/locales/en.json | 7 +- js/id/renderer/mapillary_image_layer.js | 106 +++++++++--------------- js/id/services/mapillary.js | 57 ++++++++++++- 4 files changed, 99 insertions(+), 73 deletions(-) diff --git a/data/core.yaml b/data/core.yaml index dbe4f06bf..a6ebc32c3 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -417,10 +417,10 @@ en: mapillary_images: tooltip: "Street-level photos from Mapillary" title: "Photo Overlay (Mapillary)" - view_on_mapillary: "View this image on Mapillary" mapillary_signs: tooltip: "Traffic signs from Mapillary" title: "Traffic Sign Overlay (Mapillary)" + mapillary: view_on_mapillary: "View this image on Mapillary" help: title: "Help" diff --git a/dist/locales/en.json b/dist/locales/en.json index 47161545e..ae7fdb77d 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -502,12 +502,13 @@ }, "mapillary_images": { "tooltip": "Street-level photos from Mapillary", - "title": "Photo Overlay (Mapillary)", - "view_on_mapillary": "View this image on Mapillary" + "title": "Photo Overlay (Mapillary)" }, "mapillary_signs": { "tooltip": "Traffic signs from Mapillary", - "title": "Traffic Sign Overlay (Mapillary)", + "title": "Traffic Sign Overlay (Mapillary)" + }, + "mapillary": { "view_on_mapillary": "View this image on Mapillary" }, "help": { diff --git a/js/id/renderer/mapillary_image_layer.js b/js/id/renderer/mapillary_image_layer.js index b41bfb669..8eda68504 100644 --- a/js/id/renderer/mapillary_image_layer.js +++ b/js/id/renderer/mapillary_image_layer.js @@ -1,37 +1,26 @@ iD.MapillaryImageLayer = function(context) { - var mapillary = iD.services.mapillary() - .on('loadedImages.imageLayer', imagesLoaded), - imageData = rbush(), - urlImage = 'http://mapillary.com/map/im/', - urlThumb = 'https://d1cuyjsrcm0gby.cloudfront.net/', + var mapillary = iD.services.mapillary(), + rtree = rbush(), enable = false, - currentImage, - svg, thumbnail; + selectedImage, + layer; function show(image) { - svg.selectAll('g') + layer.selectAll('g') .classed('selected', function(d) { - return currentImage && d.key === currentImage.key; + return selectedImage && d.key === selectedImage.key; }); - thumbnail.classed('hidden', false) - .classed('temp', image !== currentImage); - - thumbnail.selectAll('img') - .attr('src', urlThumb + image.key + '/thumb-320.jpg'); - - thumbnail.selectAll('a') - .attr('href', urlImage + image.key); + mapillary.showThumbnail(context.container(), image); } function hide() { - currentImage = undefined; - - svg.selectAll('g') + selectedImage = undefined; + layer.selectAll('g') .classed('selected', false); - thumbnail.classed('hidden', true); + mapillary.hideThumbnail(context.container()); } function transform(d) { @@ -56,15 +45,15 @@ iD.MapillaryImageLayer = function(context) { } } - imageData.load(images); + rtree.load(images); } - function render() { - var images = imageData + function update() { + var images = rtree .search(context.map().extent().rectangle()) .map(function(d) { return d[4]; }); - var g = svg.selectAll('g') + var g = layer.selectAll('g') .data(images, function(d) { return d.key; }); var enter = g.enter().append('g') @@ -87,17 +76,19 @@ iD.MapillaryImageLayer = function(context) { } - function layer(selection) { - svg = selection.selectAll('svg') + function render(selection) { + layer = selection.selectAll('svg') .data([0]); - svg.enter().append('svg') + /* Enter */ + layer.enter() + .append('svg') .on('click', function() { var image = d3.event.target.__data__; - if (currentImage === image) { + if (selectedImage === image) { hide(); } else { - currentImage = image; + selectedImage = image; show(image); } }) @@ -105,58 +96,43 @@ iD.MapillaryImageLayer = function(context) { show(d3.event.target.__data__); }) .on('mouseout', function() { - if (currentImage) { - show(currentImage); + if (selectedImage) { + show(selectedImage); } else { hide(); } }); - svg.style('display', enable ? 'block' : 'none'); - thumbnail = context.container().selectAll('.mapillary-image') - .data([0]); - - var enter = thumbnail.enter().append('div') - .attr('class', 'mapillary-image'); - - enter.append('button') - .on('click', hide) - .append('div') - .attr('class', 'icon close'); - - enter.append('img'); - - var link = enter.append('a') - .attr('class', 'link') - .attr('target', '_blank'); - - link.append('span') - .attr('class', 'icon icon-pre-text out-link'); - - link.append('span') - .text(t('mapillary_images.view_on_mapillary')); + /* Update */ + layer + .style('display', enable ? 'block' : 'none'); if (!enable) { hide(); - svg.selectAll('g').remove(); + layer.selectAll('g') + .remove(); } else { - render(); - mapillary.loadImages(context.projection, svg.dimensions()); + update(); + mapillary.loadImages(context.projection, layer.dimensions()); } } - layer.enable = function(_) { + render.enable = function(_) { if (!arguments.length) return enable; enable = _; - return layer; + return render; }; - layer.dimensions = function(_) { - if (!arguments.length) return svg.dimensions(); - svg.dimensions(_); - return layer; + render.dimensions = function(_) { + if (!arguments.length) return layer.dimensions(); + layer.dimensions(_); + return render; }; - return layer; + + mapillary + .on('loadedImages', imagesLoaded); + + return render; }; diff --git a/js/id/services/mapillary.js b/js/id/services/mapillary.js index c3e6ebbdc..c3c58096e 100644 --- a/js/id/services/mapillary.js +++ b/js/id/services/mapillary.js @@ -1,7 +1,7 @@ iD.services.mapillary = function() { var mapillary = {}, - dispatch = d3.dispatch('loadedImages', 'loadedSigns', 'loadedThumbnail'), - endpoint = 'https://a.mapillary.com/v2/', + dispatch = d3.dispatch('loadedImages', 'loadedSigns'), + apibase = 'https://a.mapillary.com/v2/', urlImage = 'https://www.mapillary.com/map/im/', urlThumb = 'https://d1cuyjsrcm0gby.cloudfront.net/', clientId = 'NzNRM2otQkR2SHJzaXJmNmdQWVQ0dzo1ZWYyMmYwNjdmNDdlNmVi', @@ -79,16 +79,65 @@ iD.services.mapillary = function() { mapillary.loadImages = function(projection, dimensions) { var cache = iD.services.mapillary.cache, - url = endpoint + 'search/s/geojson?'; + url = apibase + 'search/s/geojson?'; loadTiles(cache.images, url, projection, dimensions); }; mapillary.loadSigns = function(projection, dimensions) { var cache = iD.services.mapillary.cache, - url = endpoint + 'search/im/geojson/or?'; + url = apibase + 'search/im/geojson/or?'; loadTiles(cache.signs, url, projection, dimensions); }; + mapillary.showThumbnail = function(selection, image) { + if (!(image && image.key)) return; + + var thumbnail = selection.selectAll('.mapillary-image') + .data([0]); + + /* Enter */ + + var enter = thumbnail.enter().append('div') + .attr('class', 'mapillary-image'); + + enter.append('button') + .on('click', mapillary.hideThumbnail) + .append('div') + .call(iD.svg.Icon('#icon-close')); + + enter.append('img'); + + var link = enter + .append('a') + .attr('class', 'link') + .attr('target', '_blank') + .call(iD.svg.Icon('#icon-out-link', 'inline')) + .append('span') + .text(t('mapillary.view_on_mapillary')); + + /* Update */ + + thumbnail + .transition() + .duration(200) + .style('opacity', 1); + + thumbnail.selectAll('img') + .attr('src', urlThumb + image.key + '/thumb-320.jpg'); + + thumbnail.selectAll('a') + .attr('href', urlImage + image.key); + + }; + + mapillary.hideThumbnail = function(selection) { + selection.selectAll('.mapillary-image') + .transition() + .duration(200) + .style('opacity', 0) + .remove(); + } + mapillary.reset = function() { var cache = iD.services.mapillary.cache; From 977790671166221a465e5813997442ad27381e74 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 9 Feb 2016 11:57:39 -0500 Subject: [PATCH 23/38] Cleanup MapillarySignLayer, Mapillary service --- index.html | 2 +- js/id/id.js | 2 +- js/id/renderer/mapillary_image_layer.js | 21 +- js/id/renderer/mapillary_sign_layer.js | 259 ++++++++++-------------- js/id/services/mapillary.js | 48 +++-- 5 files changed, 154 insertions(+), 178 deletions(-) diff --git a/index.html b/index.html index 3f79dabc0..798ce1acc 100644 --- a/index.html +++ b/index.html @@ -6,7 +6,7 @@ - + diff --git a/js/id/id.js b/js/id/id.js index 959bb2059..b0d3dc83d 100644 --- a/js/id/id.js +++ b/js/id/id.js @@ -145,7 +145,7 @@ window.iD = function () { history.reset(); _.each(iD.services, function(service) { var reset = service().reset; - if (reset) reset(); + if (reset) reset(context); }); return context; }; diff --git a/js/id/renderer/mapillary_image_layer.js b/js/id/renderer/mapillary_image_layer.js index 8eda68504..d8d584219 100644 --- a/js/id/renderer/mapillary_image_layer.js +++ b/js/id/renderer/mapillary_image_layer.js @@ -1,7 +1,7 @@ iD.MapillaryImageLayer = function(context) { var mapillary = iD.services.mapillary(), rtree = rbush(), - enable = false, + enabled = false, selectedImage, layer; @@ -40,7 +40,7 @@ iD.MapillaryImageLayer = function(context) { images.push([loc[0], loc[1], loc[0], loc[1], { key: sequence.properties.keys[j], ca: sequence.properties.cas[j], - loc: sequence.geometry.coordinates[j] + loc: loc }]); } } @@ -56,6 +56,7 @@ iD.MapillaryImageLayer = function(context) { var g = layer.selectAll('g') .data(images, function(d) { return d.key; }); + // Enter var enter = g.enter().append('g') .attr('class', 'image'); @@ -69,6 +70,7 @@ iD.MapillaryImageLayer = function(context) { .attr('dy', '0') .attr('r', '6'); + // Update g.attr('transform', transform); g.exit() @@ -80,7 +82,7 @@ iD.MapillaryImageLayer = function(context) { layer = selection.selectAll('svg') .data([0]); - /* Enter */ + // Enter layer.enter() .append('svg') .on('click', function() { @@ -104,13 +106,16 @@ iD.MapillaryImageLayer = function(context) { }); - /* Update */ + // Update layer - .style('display', enable ? 'block' : 'none'); + .style('display', enabled ? 'block' : 'none'); - if (!enable) { + if (!enabled) { hide(); layer.selectAll('g') + .transition() + .duration(200) + .style('opacity', 0) .remove(); } else { update(); @@ -119,8 +124,8 @@ iD.MapillaryImageLayer = function(context) { } render.enable = function(_) { - if (!arguments.length) return enable; - enable = _; + if (!arguments.length) return enabled; + enabled = _; return render; }; diff --git a/js/id/renderer/mapillary_sign_layer.js b/js/id/renderer/mapillary_sign_layer.js index 2eaf85bbe..05b578b9a 100644 --- a/js/id/renderer/mapillary_sign_layer.js +++ b/js/id/renderer/mapillary_sign_layer.js @@ -1,182 +1,133 @@ iD.MapillarySignLayer = function(context) { - var urlSearch = 'https://a.mapillary.com/v2/search/im/geojson/or', - urlImage = 'http://mapillary.com/map/im/', - urlThumb = 'https://d1cuyjsrcm0gby.cloudfront.net/', - clientId = 'NzNRM2otQkR2SHJzaXJmNmdQWVQ0dzo1ZWYyMmYwNjdmNDdlNmVi', - enable = false, - initiated = false, - signs_defs = {}, - currentImage, svg, image_preview_div, request; + var mapillary = iD.services.mapillary(), + rtree = rbush(), + enabled = false, + selectedImage, + layer; - _.each(['au', 'br', 'ca', 'de', 'us'], function(el) { - d3.json(context.assetPath() + 'traffico/string-maps/' + el + '-map.json', function(err, data) { - if (err) return; - if (el === 'de') el = 'eu'; - signs_defs[el] = data; - }); - }); function show(image) { - svg.selectAll('.icon-sign') + layer.selectAll('.icon-sign') .classed('selected', function(d) { - return currentImage && d.key === currentImage.key; + return selectedImage && d.key === selectedImage.key; }); - image_preview_div.classed('hidden', false) - .classed('temp', image !== currentImage); - - image_preview_div.selectAll('img') - .attr('src', urlThumb + image.key + '/thumb-320.jpg'); - - image_preview_div.selectAll('a') - .attr('href', urlImage + image.key); + mapillary.showThumbnail(context.container(), image); } function hide() { - currentImage = undefined; - svg.selectAll('.icon-sign') + selectedImage = undefined; + layer.selectAll('.icon-sign') .classed('selected', false); - image_preview_div.classed('hidden', true); + + mapillary.hideThumbnail(context.container()); } - function render(selection) { - svg = selection.selectAll('svg') - .data([0]); + function signsLoaded(data) { + var signs = [], + sign, loc; - svg.enter().append('svg'); - - svg.style('display', enable ? 'block' : 'none'); - - image_preview_div = context.container().selectAll('.mapillary-image') - .data([0]); - - var enter = image_preview_div.enter().append('div') - .attr('class', 'mapillary-image'); - - enter.append('button') - .on('click', hide) - .append('div') - .attr('class', 'icon close'); - - enter.append('img'); - - var link = enter.append('a') - .attr('class', 'link') - .attr('target', '_blank'); - - link.append('span') - .attr('class', 'icon icon-pre-text out-link'); - - link.append('span') - .text(t('mapillary_signs.view_on_mapillary')); - - if (!enable) { - hide(); - - svg.selectAll('.icon-sign') - .remove(); - - return; + for (var i = 0; i < data.features.length; i++) { + sign = data.features[i]; + loc = sign.geometry.coordinates; + signs.push([loc[0], loc[1], loc[0], loc[1], { + key: sign.properties.key, + signs: sign.properties.rects, + loc: loc + }]); } - // hack - svg.selectAll('.icon-sign') - .remove(); - - var extent = context.map().extent(); - - if (request) - request.abort(); - - request = d3.json(urlSearch + '?client_id=' + clientId + '&min_lat=' + - extent[0][1] + '&max_lat=' + extent[1][1] + '&min_lon=' + - extent[0][0] + '&max_lon=' + extent[1][0] + '&limit=100&geojson=true', - function(error, data) { - if (error) return; - var images = []; - - for (var i = 0; i < data.features.length; i++) { - var trafficsign = data.features[i]; - images.push({ - key: trafficsign.properties.key, - loc: trafficsign.geometry.coordinates, - signs: trafficsign.properties.rects - }); - if (images.length >= 1000) break; - } - - var foreignObjects = svg.selectAll('foreignObject') - .data(images, function(d) { return d.key; }); - - var enter = foreignObjects.enter(); - - enter.append('foreignObject') - .attr('class', 'icon-sign') - .append('xhtml:body') - .html(function(d) { - var detectionPackage = d.signs[0].package, - type = d.signs[0].type, - country= detectionPackage.split('_')[1], - sign_html = signs_defs[country][type]; - return sign_html; - }); - - foreignObjects - .on('click', function(data) { - if (!data) { - d3.event.preventDefault(); - return; - } - var image = data; - if (currentImage === image) { - hide(); - } else { - currentImage = image; - show(image); - } - }) - .on('mouseover', function(data) { - if (!data) { - d3.event.preventDefault(); - return; - } - show(data); - }) - .on('mouseout', function(data) { - if (!data) { - d3.event.preventDefault(); - return; - } - if (currentImage) { - show(currentImage); - } else { - hide(); - } - }); - - foreignObjects - .attr('transform', iD.svg.PointTransform(context.projection)); - - foreignObjects.exit() - .remove(); - - if(!initiated) { - initiated = true; - } - }); + rtree.load(signs); } + + function update() { + var signs = rtree + .search(context.map().extent().rectangle()) + .map(function(d) { return d[4]; }); + + var signGroups = layer.selectAll('.mapillary-sign') + .data(signs, function(d) { return d.key; }); + + // Enter + var enter = signGroups.enter() + .append('g') + .attr('class', 'mapillary-sign') + .attr('transform', 'translate(-15, -15)') + .append('foreignObject') + .attr('class', 'icon-sign') + .append('xhtml:body') + .html(mapillary.signHTML); + + enter + .on('click', function(d) { + if (d === selectedImage) { + hide(); + } else { + selectedImage = d; + show(d); + } + }) + .on('mouseover', show) + .on('mouseout', function() { + if (selectedImage) { + show(selectedImage); + } else { + hide(); + } + }); + + // Update + signGroups + .select('.icon-sign') + .attr('transform', iD.svg.PointTransform(context.projection)); + + signGroups.exit() + .remove(); + } + + + function render(selection) { + layer = selection.selectAll('svg') + .data([0]); + + // Enter + layer.enter() + .append('svg'); + + // Update + layer + .style('display', enabled ? 'block' : 'none'); + + if (!enabled) { + hide(); + layer.selectAll('.mapillary-sign') + .transition() + .duration(200) + .style('opacity', 0) + .remove(); + } else { + update(); + mapillary.loadSigns(context, context.projection, layer.dimensions()); + } + } + + render.enable = function(_) { - if (!arguments.length) return enable; - enable = _; + if (!arguments.length) return enabled; + enabled = _; return render; }; render.dimensions = function(_) { - if (!arguments.length) return svg.dimensions(); - svg.dimensions(_); + if (!arguments.length) return layer.dimensions(); + layer.dimensions(_); return render; }; + + mapillary + .on('loadedSigns', signsLoaded); + return render; }; diff --git a/js/id/services/mapillary.js b/js/id/services/mapillary.js index c3c58096e..ac844c625 100644 --- a/js/id/services/mapillary.js +++ b/js/id/services/mapillary.js @@ -7,6 +7,18 @@ iD.services.mapillary = function() { clientId = 'NzNRM2otQkR2SHJzaXJmNmdQWVQ0dzo1ZWYyMmYwNjdmNDdlNmVi', tileZoom = 17; + function loadSignDefs(context) { + if (!iD.services.mapillary.sign_defs) { + iD.services.mapillary.sign_defs = {}; + _.each(['au', 'br', 'ca', 'de', 'us'], function(region) { + d3.json(context.assetPath() + 'traffico/string-maps/' + region + '-map.json', function(err, data) { + if (err) return; + if (region === 'de') region = 'eu'; + iD.services.mapillary.sign_defs[region] = data; + }); + }); + } + } function abortRequest(i) { i.abort(); @@ -51,7 +63,7 @@ iD.services.mapillary = function() { tiles.forEach(function(tile) { var id = tile.id, - extent = tile.extent; + rect = tile.extent.rectangle(); if (which.loaded[id] || which.inflight[id]) return; @@ -59,10 +71,10 @@ iD.services.mapillary = function() { iD.util.qsString({ geojson: 'true', client_id: clientId, - min_lat: extent[0][1], - max_lat: extent[1][1], - min_lon: extent[0][0], - max_lon: extent[1][0] + min_lon: rect[0], + min_lat: rect[1], + max_lon: rect[2], + max_lat: rect[3] }), function(err, data) { which.loaded[id] = true; delete which.inflight[id]; @@ -83,40 +95,48 @@ iD.services.mapillary = function() { loadTiles(cache.images, url, projection, dimensions); }; - mapillary.loadSigns = function(projection, dimensions) { + mapillary.loadSigns = function(context, projection, dimensions) { var cache = iD.services.mapillary.cache, url = apibase + 'search/im/geojson/or?'; + + loadSignDefs(context); loadTiles(cache.signs, url, projection, dimensions); }; + mapillary.signHTML = function(d) { + if (!iD.services.mapillary.sign_defs) return; + + var detectionPackage = d.signs[0].package, + type = d.signs[0].type, + country = detectionPackage.split('_')[1]; + return iD.services.mapillary.sign_defs[country][type]; + }; + mapillary.showThumbnail = function(selection, image) { if (!(image && image.key)) return; var thumbnail = selection.selectAll('.mapillary-image') .data([0]); - /* Enter */ - + // Enter var enter = thumbnail.enter().append('div') .attr('class', 'mapillary-image'); enter.append('button') - .on('click', mapillary.hideThumbnail) + .on('click', function () { mapillary.hideThumbnail(selection) }) .append('div') .call(iD.svg.Icon('#icon-close')); enter.append('img'); - var link = enter - .append('a') + enter.append('a') .attr('class', 'link') .attr('target', '_blank') .call(iD.svg.Icon('#icon-out-link', 'inline')) .append('span') .text(t('mapillary.view_on_mapillary')); - /* Update */ - + // Update thumbnail .transition() .duration(200) @@ -136,7 +156,7 @@ iD.services.mapillary = function() { .duration(200) .style('opacity', 0) .remove(); - } + }; mapillary.reset = function() { var cache = iD.services.mapillary.cache; From 3facc289288ba169c01e65fd55ef1194f50aac47 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 9 Feb 2016 17:19:06 -0500 Subject: [PATCH 24/38] Improve layer transitions, debounce redraws, other goodness --- js/id/renderer/mapillary_image_layer.js | 120 +++++++++++++---------- js/id/renderer/mapillary_sign_layer.js | 121 ++++++++++++++---------- js/id/services/mapillary.js | 27 ++++-- 3 files changed, 161 insertions(+), 107 deletions(-) diff --git a/js/id/renderer/mapillary_image_layer.js b/js/id/renderer/mapillary_image_layer.js index d8d584219..4272a49c2 100644 --- a/js/id/renderer/mapillary_image_layer.js +++ b/js/id/renderer/mapillary_image_layer.js @@ -1,28 +1,51 @@ iD.MapillaryImageLayer = function(context) { var mapillary = iD.services.mapillary(), + debouncedRedraw = _.debounce(function () { context.pan([0,0]); }, 1000), rtree = rbush(), enabled = false, - selectedImage, layer; - function show(image) { + function showThumbnail(imageKey) { + var thumb = mapillary.selectedThumbnail(); layer.selectAll('g') - .classed('selected', function(d) { - return selectedImage && d.key === selectedImage.key; - }); + .classed('selected', function(d) { return d.key === thumb; }); - mapillary.showThumbnail(context.container(), image); + mapillary.showThumbnail(context.container(), imageKey); } - function hide() { - selectedImage = undefined; + function hideThumbnail() { layer.selectAll('g') .classed('selected', false); mapillary.hideThumbnail(context.container()); } + function showLayer() { + layer + .style('display', 'block') + .style('opacity', 0) + .transition() + .duration(500) + .style('opacity', 1) + .each('end', debouncedRedraw); + } + + function hideLayer() { + debouncedRedraw.cancel(); + hideThumbnail(); + layer + .transition() + .duration(500) + .style('opacity', 0) + .each('end', function() { + layer + .style('display', 'none') + .selectAll('g') + .remove(); + }); + } + function transform(d) { var t = iD.svg.PointTransform(context.projection)(d); if (d.ca) t += ' rotate(' + Math.floor(d.ca) + ',0,0)'; @@ -30,34 +53,36 @@ iD.MapillaryImageLayer = function(context) { } function imagesLoaded(data) { + if (!data.features.length) return; + var images = [], - sequence, loc; + image, loc; for (var i = 0; i < data.features.length; i++) { - sequence = data.features[i]; - for (var j = 0; j < sequence.geometry.coordinates.length; j++) { - loc = sequence.geometry.coordinates[j]; - images.push([loc[0], loc[1], loc[0], loc[1], { - key: sequence.properties.keys[j], - ca: sequence.properties.cas[j], - loc: loc - }]); - } + image = data.features[i]; + loc = image.geometry.coordinates; + images.push([loc[0], loc[1], loc[0], loc[1], { + key: image.properties.key, + ca: image.properties.ca, + loc: loc + }]); } rtree.load(images); + debouncedRedraw(); } - function update() { - var images = rtree + function drawMarkers() { + var data = rtree .search(context.map().extent().rectangle()) .map(function(d) { return d[4]; }); - var g = layer.selectAll('g') - .data(images, function(d) { return d.key; }); + var markers = layer.selectAll('g') + .data(data, function(d) { return d.key; }); // Enter - var enter = g.enter().append('g') + var enter = markers.enter() + .append('g') .attr('class', 'image'); enter.append('path') @@ -71,9 +96,11 @@ iD.MapillaryImageLayer = function(context) { .attr('r', '6'); // Update - g.attr('transform', transform); + markers + .attr('transform', transform); - g.exit() + // Exit + markers.exit() .remove(); } @@ -85,40 +112,30 @@ iD.MapillaryImageLayer = function(context) { // Enter layer.enter() .append('svg') - .on('click', function() { - var image = d3.event.target.__data__; - if (selectedImage === image) { - hide(); + .style('display', enabled ? 'block' : 'none') + .on('click', function() { // deselect/select + var imageKey = d3.event.target.__data__.key; + if (imageKey === mapillary.selectedThumbnail()) { + hideThumbnail(); } else { - selectedImage = image; - show(image); + mapillary.selectedThumbnail(imageKey); + showThumbnail(imageKey); } }) .on('mouseover', function() { - show(d3.event.target.__data__); + showThumbnail(d3.event.target.__data__.key); }) .on('mouseout', function() { - if (selectedImage) { - show(selectedImage); + var thumb = mapillary.selectedThumbnail(); + if (thumb) { + showThumbnail(thumb); } else { - hide(); + hideThumbnail(); } }); - - // Update - layer - .style('display', enabled ? 'block' : 'none'); - - if (!enabled) { - hide(); - layer.selectAll('g') - .transition() - .duration(200) - .style('opacity', 0) - .remove(); - } else { - update(); + if (enabled) { + drawMarkers(); mapillary.loadImages(context.projection, layer.dimensions()); } } @@ -126,6 +143,11 @@ iD.MapillaryImageLayer = function(context) { render.enable = function(_) { if (!arguments.length) return enabled; enabled = _; + if (enabled) { + showLayer(); + } else { + hideLayer(); + } return render; }; diff --git a/js/id/renderer/mapillary_sign_layer.js b/js/id/renderer/mapillary_sign_layer.js index 05b578b9a..fb1473cbf 100644 --- a/js/id/renderer/mapillary_sign_layer.js +++ b/js/id/renderer/mapillary_sign_layer.js @@ -1,29 +1,54 @@ iD.MapillarySignLayer = function(context) { var mapillary = iD.services.mapillary(), + debouncedRedraw = _.debounce(function () { context.pan([0,0]); }, 1000), rtree = rbush(), enabled = false, - selectedImage, layer; - function show(image) { + function showThumbnail(imageKey) { + var thumb = mapillary.selectedThumbnail(); layer.selectAll('.icon-sign') - .classed('selected', function(d) { - return selectedImage && d.key === selectedImage.key; - }); + .classed('selected', function(d) { return d.key === thumb; }); - mapillary.showThumbnail(context.container(), image); + mapillary.showThumbnail(context.container(), imageKey); } - function hide() { - selectedImage = undefined; + function hideThumbnail() { layer.selectAll('.icon-sign') .classed('selected', false); mapillary.hideThumbnail(context.container()); } + function showLayer() { + layer + .style('display', 'block') + .style('opacity', 0) + .transition() + .duration(500) + .style('opacity', 1) + .each('end', debouncedRedraw); + } + + function hideLayer() { + debouncedRedraw.cancel(); + hideThumbnail(); + layer + .transition() + .duration(500) + .style('opacity', 0) + .each('end', function() { + layer + .style('display', 'none') + .selectAll('.icon-sign') + .remove(); + }); + } + function signsLoaded(data) { + if (!data.features.length) return; + var signs = [], sign, loc; @@ -38,84 +63,78 @@ iD.MapillarySignLayer = function(context) { } rtree.load(signs); + debouncedRedraw(); } + function drawSigns() { + var data = rtree + .search(context.map().extent().rectangle()) + .map(function(d) { return d[4]; }); - function update() { - var signs = rtree - .search(context.map().extent().rectangle()) - .map(function(d) { return d[4]; }); - - var signGroups = layer.selectAll('.mapillary-sign') - .data(signs, function(d) { return d.key; }); + var signs = layer.select('.mapillary-sign-offset') + .selectAll('.icon-sign') + .data(data, function(d) { return d.key; }); // Enter - var enter = signGroups.enter() - .append('g') - .attr('class', 'mapillary-sign') - .attr('transform', 'translate(-15, -15)') + signs.enter() .append('foreignObject') .attr('class', 'icon-sign') .append('xhtml:body') - .html(mapillary.signHTML); - - enter - .on('click', function(d) { - if (d === selectedImage) { - hide(); + .html(mapillary.signHTML) + .on('click', function(d) { // deselect/select + if (d.key === mapillary.selectedThumbnail()) { + hideThumbnail(); } else { - selectedImage = d; - show(d); + mapillary.selectedThumbnail(d.key); + showThumbnail(d.key); } }) - .on('mouseover', show) + .on('mouseover', function(d) { + showThumbnail(d.key); + }) .on('mouseout', function() { - if (selectedImage) { - show(selectedImage); + var thumb = mapillary.selectedThumbnail(); + if (thumb) { + showThumbnail(thumb); } else { - hide(); + hideThumbnail(); } }); // Update - signGroups - .select('.icon-sign') + signs .attr('transform', iD.svg.PointTransform(context.projection)); - signGroups.exit() + // Exit + signs.exit() .remove(); } - function render(selection) { layer = selection.selectAll('svg') .data([0]); - // Enter layer.enter() - .append('svg'); + .append('svg') + .style('display', enabled ? 'block' : 'none') + .append('g') + .attr('class', 'mapillary-sign-offset') + .attr('transform', 'translate(-15, -15)'); // center signs on loc - // Update - layer - .style('display', enabled ? 'block' : 'none'); - - if (!enabled) { - hide(); - layer.selectAll('.mapillary-sign') - .transition() - .duration(200) - .style('opacity', 0) - .remove(); - } else { - update(); + if (enabled) { + drawSigns(); mapillary.loadSigns(context, context.projection, layer.dimensions()); } } - render.enable = function(_) { if (!arguments.length) return enabled; enabled = _; + if (enabled) { + showLayer(); + } else { + hideLayer(); + } return render; }; diff --git a/js/id/services/mapillary.js b/js/id/services/mapillary.js index ac844c625..599acbc2c 100644 --- a/js/id/services/mapillary.js +++ b/js/id/services/mapillary.js @@ -5,7 +5,9 @@ iD.services.mapillary = function() { urlImage = 'https://www.mapillary.com/map/im/', urlThumb = 'https://d1cuyjsrcm0gby.cloudfront.net/', clientId = 'NzNRM2otQkR2SHJzaXJmNmdQWVQ0dzo1ZWYyMmYwNjdmNDdlNmVi', - tileZoom = 17; + tileZoom = 14, + selectedThumbnail; + function loadSignDefs(context) { if (!iD.services.mapillary.sign_defs) { @@ -67,6 +69,9 @@ iD.services.mapillary = function() { if (which.loaded[id] || which.inflight[id]) return; + var what = (which === cache.images ? 'images' : 'signs'); + console.log('requesting ' + what + ' tile ' + id); + which.inflight[id] = d3.json(url + iD.util.qsString({ geojson: 'true', @@ -91,7 +96,7 @@ iD.services.mapillary = function() { mapillary.loadImages = function(projection, dimensions) { var cache = iD.services.mapillary.cache, - url = apibase + 'search/s/geojson?'; + url = apibase + 'search/im/geojson?'; loadTiles(cache.images, url, projection, dimensions); }; @@ -112,8 +117,8 @@ iD.services.mapillary = function() { return iD.services.mapillary.sign_defs[country][type]; }; - mapillary.showThumbnail = function(selection, image) { - if (!(image && image.key)) return; + mapillary.showThumbnail = function(selection, imageKey) { + if (!imageKey) return; var thumbnail = selection.selectAll('.mapillary-image') .data([0]); @@ -123,7 +128,9 @@ iD.services.mapillary = function() { .attr('class', 'mapillary-image'); enter.append('button') - .on('click', function () { mapillary.hideThumbnail(selection) }) + .on('click', function () { + mapillary.hideThumbnail(selection); + }) .append('div') .call(iD.svg.Icon('#icon-close')); @@ -143,14 +150,15 @@ iD.services.mapillary = function() { .style('opacity', 1); thumbnail.selectAll('img') - .attr('src', urlThumb + image.key + '/thumb-320.jpg'); + .attr('src', urlThumb + imageKey + '/thumb-320.jpg'); thumbnail.selectAll('a') - .attr('href', urlImage + image.key); + .attr('href', urlImage + imageKey); }; mapillary.hideThumbnail = function(selection) { + selectedThumbnail = null; selection.selectAll('.mapillary-image') .transition() .duration(200) @@ -158,6 +166,11 @@ iD.services.mapillary = function() { .remove(); }; + mapillary.selectedThumbnail = function(imageKey) { + if (!arguments.length) return selectedThumbnail; + selectedThumbnail = imageKey; + }; + mapillary.reset = function() { var cache = iD.services.mapillary.cache; From bed73a78e385959d3d4e7754604cf4cf95f878d4 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 10 Feb 2016 01:05:36 -0500 Subject: [PATCH 25/38] Fetch all paginated Mapillary results, cleanup thumbnail selection --- js/id/renderer/mapillary_image_layer.js | 15 ++--- js/id/renderer/mapillary_sign_layer.js | 26 +++----- js/id/services/mapillary.js | 80 ++++++++++++++----------- 3 files changed, 60 insertions(+), 61 deletions(-) diff --git a/js/id/renderer/mapillary_image_layer.js b/js/id/renderer/mapillary_image_layer.js index 4272a49c2..ee5876e15 100644 --- a/js/id/renderer/mapillary_image_layer.js +++ b/js/id/renderer/mapillary_image_layer.js @@ -8,14 +8,15 @@ iD.MapillaryImageLayer = function(context) { function showThumbnail(imageKey) { var thumb = mapillary.selectedThumbnail(); - layer.selectAll('g') + + d3.selectAll('.layer-mapillary-images .viewfield-group, .layer-mapillary-signs .icon-sign') .classed('selected', function(d) { return d.key === thumb; }); mapillary.showThumbnail(context.container(), imageKey); } function hideThumbnail() { - layer.selectAll('g') + d3.selectAll('.layer-mapillary-images .viewfield-group, .layer-mapillary-signs .icon-sign') .classed('selected', false); mapillary.hideThumbnail(context.container()); @@ -41,7 +42,7 @@ iD.MapillaryImageLayer = function(context) { .each('end', function() { layer .style('display', 'none') - .selectAll('g') + .selectAll('.viewfield-group') .remove(); }); } @@ -74,16 +75,16 @@ iD.MapillaryImageLayer = function(context) { function drawMarkers() { var data = rtree - .search(context.map().extent().rectangle()) - .map(function(d) { return d[4]; }); + .search(context.map().extent().rectangle()) + .map(function(d) { return d[4]; }); - var markers = layer.selectAll('g') + var markers = layer.selectAll('.viewfield-group') .data(data, function(d) { return d.key; }); // Enter var enter = markers.enter() .append('g') - .attr('class', 'image'); + .attr('class', 'viewfield-group'); enter.append('path') .attr('class', 'viewfield') diff --git a/js/id/renderer/mapillary_sign_layer.js b/js/id/renderer/mapillary_sign_layer.js index fb1473cbf..adfcd5fc5 100644 --- a/js/id/renderer/mapillary_sign_layer.js +++ b/js/id/renderer/mapillary_sign_layer.js @@ -8,42 +8,30 @@ iD.MapillarySignLayer = function(context) { function showThumbnail(imageKey) { var thumb = mapillary.selectedThumbnail(); - layer.selectAll('.icon-sign') + + d3.selectAll('.layer-mapillary-images .viewfield-group, .layer-mapillary-signs .icon-sign') .classed('selected', function(d) { return d.key === thumb; }); mapillary.showThumbnail(context.container(), imageKey); } function hideThumbnail() { - layer.selectAll('.icon-sign') + d3.selectAll('.layer-mapillary-images .viewfield-group, .layer-mapillary-signs .icon-sign') .classed('selected', false); mapillary.hideThumbnail(context.container()); } function showLayer() { - layer - .style('display', 'block') - .style('opacity', 0) - .transition() - .duration(500) - .style('opacity', 1) - .each('end', debouncedRedraw); + layer.style('display', 'block') + debouncedRedraw(); } function hideLayer() { debouncedRedraw.cancel(); hideThumbnail(); - layer - .transition() - .duration(500) - .style('opacity', 0) - .each('end', function() { - layer - .style('display', 'none') - .selectAll('.icon-sign') - .remove(); - }); + layer.selectAll('.icon-sign').remove(); + layer.style('display', 'none'); } function signsLoaded(data) { diff --git a/js/id/services/mapillary.js b/js/id/services/mapillary.js index 599acbc2c..ee0fbbc78 100644 --- a/js/id/services/mapillary.js +++ b/js/id/services/mapillary.js @@ -1,12 +1,12 @@ -iD.services.mapillary = function() { +iD.services.mapillary = function() { var mapillary = {}, dispatch = d3.dispatch('loadedImages', 'loadedSigns'), apibase = 'https://a.mapillary.com/v2/', urlImage = 'https://www.mapillary.com/map/im/', urlThumb = 'https://d1cuyjsrcm0gby.cloudfront.net/', clientId = 'NzNRM2otQkR2SHJzaXJmNmdQWVQ0dzo1ZWYyMmYwNjdmNDdlNmVi', - tileZoom = 14, - selectedThumbnail; + maxResults = 1000, + tileZoom = 14; function loadSignDefs(context) { @@ -54,8 +54,7 @@ iD.services.mapillary = function() { function loadTiles(which, url, projection, dimensions) { - var cache = iD.services.mapillary.cache, - tiles = getTiles(projection, dimensions); + var tiles = getTiles(projection, dimensions); _.filter(which.inflight, function(v, k) { var wanted = _.find(tiles, function(tile) { return k === tile.id; }); @@ -64,36 +63,45 @@ iD.services.mapillary = function() { }).map(abortRequest); tiles.forEach(function(tile) { - var id = tile.id, - rect = tile.extent.rectangle(); - - if (which.loaded[id] || which.inflight[id]) return; - - var what = (which === cache.images ? 'images' : 'signs'); - console.log('requesting ' + what + ' tile ' + id); - - which.inflight[id] = d3.json(url + - iD.util.qsString({ - geojson: 'true', - client_id: clientId, - min_lon: rect[0], - min_lat: rect[1], - max_lon: rect[2], - max_lat: rect[3] - }), function(err, data) { - which.loaded[id] = true; - delete which.inflight[id]; - if (err) return; - - if (which === cache.images) - dispatch.loadedImages(data); - else if (which === cache.signs) - dispatch.loadedSigns(data); - } - ); + loadTilePage(which, url, tile, 0); }); } + function loadTilePage(which, url, tile, page) { + var cache = iD.services.mapillary.cache, + id = tile.id + ',' + String(page), + rect = tile.extent.rectangle(); + + if (which.loaded[id] || which.inflight[id]) return; + + which.inflight[id] = d3.json(url + + iD.util.qsString({ + geojson: 'true', + limit: maxResults, + page: page, + client_id: clientId, + min_lon: rect[0], + min_lat: rect[1], + max_lon: rect[2], + max_lat: rect[3] + }), function(err, data) { + which.loaded[id] = true; + delete which.inflight[id]; + if (err) return; + + if (which === cache.images) { + dispatch.loadedImages(data); + } else if (which === cache.signs) { + dispatch.loadedSigns(data); + } + + if (data.features.length === maxResults) { + loadTilePage(which, url, tile, ++page); + } + } + ); + } + mapillary.loadImages = function(projection, dimensions) { var cache = iD.services.mapillary.cache, url = apibase + 'search/im/geojson?'; @@ -158,7 +166,7 @@ iD.services.mapillary = function() { }; mapillary.hideThumbnail = function(selection) { - selectedThumbnail = null; + iD.services.mapillary.thumb = null; selection.selectAll('.mapillary-image') .transition() .duration(200) @@ -167,8 +175,8 @@ iD.services.mapillary = function() { }; mapillary.selectedThumbnail = function(imageKey) { - if (!arguments.length) return selectedThumbnail; - selectedThumbnail = imageKey; + if (!arguments.length) return iD.services.mapillary.thumb; + iD.services.mapillary.thumb = imageKey; }; mapillary.reset = function() { @@ -184,6 +192,8 @@ iD.services.mapillary = function() { signs: { inflight: {}, loaded: {}, rbush: rbush() } }; + iD.services.mapillary.thumb = null; + return mapillary; }; From 221bf225f1363ae966aaaa7a1b6288d0383fb15b Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 10 Feb 2016 01:06:14 -0500 Subject: [PATCH 26/38] Reset supersurface transform for Mapillary streetsigns layer For some reason the foreignObject nodes are not correctly positioned unless this transform is set to a value. --- js/id/renderer/map.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/js/id/renderer/map.js b/js/id/renderer/map.js index 94023f33e..2a92b5b0d 100644 --- a/js/id/renderer/map.js +++ b/js/id/renderer/map.js @@ -37,6 +37,10 @@ iD.Map = function(context) { supersurface = selection.append('div') .attr('id', 'supersurface'); + // Mapillary streetsigns require supersurface transform to have + // a value in order to do correct foreignObject positioning.. + iD.util.setTransform(supersurface, 0, 0); + // Need a wrapper div because Opera can't cope with an absolutely positioned // SVG element: http://bl.ocks.org/jfirebaugh/6fbfbd922552bf776c16 var dataLayer = supersurface.append('div') From e38ea2ab6097e3ec185a9968d7c2c6676793996d Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 10 Feb 2016 01:07:32 -0500 Subject: [PATCH 27/38] Improve styling of hover/selected Mapillary features --- css/map.css | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/css/map.css b/css/map.css index 9e72ab0cf..d24a998b2 100644 --- a/css/map.css +++ b/css/map.css @@ -1520,33 +1520,36 @@ text.gpx { pointer-events: none; } -.layer-mapillary-images g { +.layer-mapillary-images .viewfield-group { pointer-events: visible; cursor: pointer; /* Opera */ cursor: url(img/cursor-select-mapillary.png) 6 1, pointer; /* FF */ } -.layer-mapillary-images g * { +.layer-mapillary-images .viewfield-group * { stroke-width: 1; stroke: #444; fill: #ffc600; + z-index: 50; } -.layer-mapillary-images g:hover * { +.layer-mapillary-images .viewfield-group:hover * { stroke-width: 1; stroke: #333; fill: #ff9900; + z-index: 60; } -.layer-mapillary-images g.selected * { +.layer-mapillary-images .viewfield-group.selected * { stroke-width: 2; stroke: #222; fill: #ff5800; + z-index: 60; } -.layer-mapillary-images g:hover path.viewfield, -.layer-mapillary-images g.selected path.viewfield, -.layer-mapillary-images g path.viewfield { +.layer-mapillary-images .viewfield-group:hover path.viewfield, +.layer-mapillary-images .viewfield-group.selected path.viewfield, +.layer-mapillary-images .viewfield-group path.viewfield { stroke-width: 0; fill-opacity: 0.6; } @@ -1565,25 +1568,30 @@ text.gpx { } .layer-mapillary-signs .icon-sign { - height: 30px; - width: 30px; + height: 32px; + width: 32px; + border: 2px solid transparent; } -.layer-mapillary-signs body:hover { - border: 1px solid red; +.layer-mapillary-signs .icon-sign:hover { + border: 2px solid rgba(255,198,0,0.8); } .layer-mapillary-signs .icon-sign.selected { - stroke-width: 4; - border: 1px solid yellow; + border: 2px solid rgba(255,0,0,0.8); } .layer-mapillary-signs .t { font-size: 28px; - z-index: 100; + z-index: 70; position: absolute; } +.layer-mapillary-signs .icon-sign:hover .t, +.layer-mapillary-signs .icon-sign.selected .t { + z-index: 80; +} + /* Modes */ .mode-draw-line .vertex.active, From 0210d69177017204f09e9da8b2a8f065b6bfc219 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 10 Feb 2016 17:08:11 -0500 Subject: [PATCH 28/38] Use `getBoundingClientRect` for dimensions instead of `offsetHeight`/`offsetWidth` `offsetHeight`/`offsetWidth` does not work for SVG Elements except in Chrome and this support is being removed from Chrome soon: >'SVGElement.offsetWidth' is deprecated and will be removed in M50, around April 2016. See https://www.chromestatus.com/features/5724912467574784 for more details. --- js/lib/d3.dimensions.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/js/lib/d3.dimensions.js b/js/lib/d3.dimensions.js index 7f9ef0521..d54a05e25 100644 --- a/js/lib/d3.dimensions.js +++ b/js/lib/d3.dimensions.js @@ -1,8 +1,10 @@ d3.selection.prototype.dimensions = function (dimensions) { if (!arguments.length) { var node = this.node(); - return [node.offsetWidth, - node.offsetHeight]; + if (!node) return; + + var cr = node.getBoundingClientRect(); + return [cr.width, cr.height]; } return this.attr({width: dimensions[0], height: dimensions[1]}); }; From e5fc872a199710691636f6e8661d57b499613333 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 10 Feb 2016 17:12:51 -0500 Subject: [PATCH 29/38] Adjust Mapillary styles for cross browser support --- css/map.css | 26 +++++++++++++------------- js/id/renderer/map.js | 2 +- js/id/renderer/mapillary_sign_layer.js | 14 ++++++++++---- 3 files changed, 24 insertions(+), 18 deletions(-) diff --git a/css/map.css b/css/map.css index d24a998b2..88fcb6003 100644 --- a/css/map.css +++ b/css/map.css @@ -1560,28 +1560,28 @@ text.gpx { pointer-events: none; } -.layer-mapillary-signs body { - min-width: 30px; +.layer-mapillary-signs .icon-sign body { + min-width: 20px; + height: 28px; + width: 28px; + border: 2px solid transparent; pointer-events: visible; cursor: pointer; /* Opera */ cursor: url(img/cursor-select-mapillary.png) 6 1, pointer; /* FF */ + z-index: 70; } -.layer-mapillary-signs .icon-sign { - height: 32px; - width: 32px; - border: 2px solid transparent; -} - -.layer-mapillary-signs .icon-sign:hover { +.layer-mapillary-signs .icon-sign:hover body { border: 2px solid rgba(255,198,0,0.8); -} + z-index: 80; + } -.layer-mapillary-signs .icon-sign.selected { +.layer-mapillary-signs .icon-sign.selected body { border: 2px solid rgba(255,0,0,0.8); -} + z-index: 80; + } -.layer-mapillary-signs .t { +.layer-mapillary-signs .icon-sign .t { font-size: 28px; z-index: 70; position: absolute; diff --git a/js/id/renderer/map.js b/js/id/renderer/map.js index 2a92b5b0d..a8d70826d 100644 --- a/js/id/renderer/map.js +++ b/js/id/renderer/map.js @@ -38,7 +38,7 @@ iD.Map = function(context) { .attr('id', 'supersurface'); // Mapillary streetsigns require supersurface transform to have - // a value in order to do correct foreignObject positioning.. + // a value in order to do correct foreignObject positioning in Chrome iD.util.setTransform(supersurface, 0, 0); // Need a wrapper div because Opera can't cope with an absolutely positioned diff --git a/js/id/renderer/mapillary_sign_layer.js b/js/id/renderer/mapillary_sign_layer.js index adfcd5fc5..50197f3d6 100644 --- a/js/id/renderer/mapillary_sign_layer.js +++ b/js/id/renderer/mapillary_sign_layer.js @@ -23,7 +23,7 @@ iD.MapillarySignLayer = function(context) { } function showLayer() { - layer.style('display', 'block') + layer.style('display', 'block'); debouncedRedraw(); } @@ -64,11 +64,17 @@ iD.MapillarySignLayer = function(context) { .data(data, function(d) { return d.key; }); // Enter - signs.enter() + var enter = signs.enter() .append('foreignObject') .attr('class', 'icon-sign') + .attr('width', '32px') // for Firefox + .attr('height', '32px'); // for Firefox + + enter .append('xhtml:body') - .html(mapillary.signHTML) + .html(mapillary.signHTML); + + enter .on('click', function(d) { // deselect/select if (d.key === mapillary.selectedThumbnail()) { hideThumbnail(); @@ -107,7 +113,7 @@ iD.MapillarySignLayer = function(context) { .style('display', enabled ? 'block' : 'none') .append('g') .attr('class', 'mapillary-sign-offset') - .attr('transform', 'translate(-15, -15)'); // center signs on loc + .attr('transform', 'translate(-16, -16)'); // center signs on loc if (enabled) { drawSigns(); From 6b1fe52d0dacdfd0ba2c3ce9f072f1db373a8ab9 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 10 Feb 2016 22:41:18 -0500 Subject: [PATCH 30/38] Map centerEase to selected marker --- js/id/renderer/mapillary_image_layer.js | 9 +++++---- js/id/renderer/mapillary_sign_layer.js | 1 + 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/js/id/renderer/mapillary_image_layer.js b/js/id/renderer/mapillary_image_layer.js index ee5876e15..60571c32f 100644 --- a/js/id/renderer/mapillary_image_layer.js +++ b/js/id/renderer/mapillary_image_layer.js @@ -115,12 +115,13 @@ iD.MapillaryImageLayer = function(context) { .append('svg') .style('display', enabled ? 'block' : 'none') .on('click', function() { // deselect/select - var imageKey = d3.event.target.__data__.key; - if (imageKey === mapillary.selectedThumbnail()) { + var image = d3.event.target.__data__; + if (image.key === mapillary.selectedThumbnail()) { hideThumbnail(); } else { - mapillary.selectedThumbnail(imageKey); - showThumbnail(imageKey); + mapillary.selectedThumbnail(image.key); + context.map().centerEase(image.loc); + showThumbnail(image.key); } }) .on('mouseover', function() { diff --git a/js/id/renderer/mapillary_sign_layer.js b/js/id/renderer/mapillary_sign_layer.js index 50197f3d6..52b649bc5 100644 --- a/js/id/renderer/mapillary_sign_layer.js +++ b/js/id/renderer/mapillary_sign_layer.js @@ -80,6 +80,7 @@ iD.MapillarySignLayer = function(context) { hideThumbnail(); } else { mapillary.selectedThumbnail(d.key); + context.map().centerEase(d.loc); showThumbnail(d.key); } }) From ab6a81e34491579bfeb2f63cc15fb01a175347d2 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Thu, 11 Feb 2016 14:09:18 -0500 Subject: [PATCH 31/38] Move rtrees to Mapillary service, DRY code, set minZoom to 12 --- js/id/renderer/mapillary_image_layer.js | 56 +++++++++------------- js/id/renderer/mapillary_sign_layer.js | 47 ++++++++----------- js/id/services/mapillary.js | 62 ++++++++++++++++--------- 3 files changed, 81 insertions(+), 84 deletions(-) diff --git a/js/id/renderer/mapillary_image_layer.js b/js/id/renderer/mapillary_image_layer.js index 60571c32f..2e172a6e7 100644 --- a/js/id/renderer/mapillary_image_layer.js +++ b/js/id/renderer/mapillary_image_layer.js @@ -1,8 +1,8 @@ iD.MapillaryImageLayer = function(context) { var mapillary = iD.services.mapillary(), debouncedRedraw = _.debounce(function () { context.pan([0,0]); }, 1000), - rtree = rbush(), enabled = false, + minZoom = 12, layer; @@ -23,8 +23,8 @@ iD.MapillaryImageLayer = function(context) { } function showLayer() { + editOn(); layer - .style('display', 'block') .style('opacity', 0) .transition() .duration(500) @@ -39,12 +39,16 @@ iD.MapillaryImageLayer = function(context) { .transition() .duration(500) .style('opacity', 0) - .each('end', function() { - layer - .style('display', 'none') - .selectAll('.viewfield-group') - .remove(); - }); + .each('end', editOff); + } + + function editOn() { + layer.style('display', 'block'); + } + + function editOff() { + layer.selectAll('.viewfield-group').remove(); + layer.style('display', 'none'); } function transform(d) { @@ -53,30 +57,8 @@ iD.MapillaryImageLayer = function(context) { return t; } - function imagesLoaded(data) { - if (!data.features.length) return; - - var images = [], - image, loc; - - for (var i = 0; i < data.features.length; i++) { - image = data.features[i]; - loc = image.geometry.coordinates; - images.push([loc[0], loc[1], loc[0], loc[1], { - key: image.properties.key, - ca: image.properties.ca, - loc: loc - }]); - } - - rtree.load(images); - debouncedRedraw(); - } - function drawMarkers() { - var data = rtree - .search(context.map().extent().rectangle()) - .map(function(d) { return d[4]; }); + var data = mapillary.images(context.map().extent()); var markers = layer.selectAll('.viewfield-group') .data(data, function(d) { return d.key; }); @@ -105,7 +87,6 @@ iD.MapillaryImageLayer = function(context) { .remove(); } - function render(selection) { layer = selection.selectAll('svg') .data([0]); @@ -137,8 +118,13 @@ iD.MapillaryImageLayer = function(context) { }); if (enabled) { - drawMarkers(); - mapillary.loadImages(context.projection, layer.dimensions()); + if (~~context.map().zoom() < minZoom) { + editOff(); + } else { + editOn(); + drawMarkers(); + mapillary.loadImages(context.projection, layer.dimensions()); + } } } @@ -161,7 +147,7 @@ iD.MapillaryImageLayer = function(context) { mapillary - .on('loadedImages', imagesLoaded); + .on('loadedImages', debouncedRedraw); return render; }; diff --git a/js/id/renderer/mapillary_sign_layer.js b/js/id/renderer/mapillary_sign_layer.js index 52b649bc5..739f17c35 100644 --- a/js/id/renderer/mapillary_sign_layer.js +++ b/js/id/renderer/mapillary_sign_layer.js @@ -1,8 +1,8 @@ iD.MapillarySignLayer = function(context) { var mapillary = iD.services.mapillary(), debouncedRedraw = _.debounce(function () { context.pan([0,0]); }, 1000), - rtree = rbush(), enabled = false, + minZoom = 12, layer; @@ -23,41 +23,27 @@ iD.MapillarySignLayer = function(context) { } function showLayer() { - layer.style('display', 'block'); + editOn(); debouncedRedraw(); } function hideLayer() { debouncedRedraw.cancel(); hideThumbnail(); + editOff(); + } + + function editOn() { + layer.style('display', 'block'); + } + + function editOff() { layer.selectAll('.icon-sign').remove(); layer.style('display', 'none'); } - function signsLoaded(data) { - if (!data.features.length) return; - - var signs = [], - sign, loc; - - for (var i = 0; i < data.features.length; i++) { - sign = data.features[i]; - loc = sign.geometry.coordinates; - signs.push([loc[0], loc[1], loc[0], loc[1], { - key: sign.properties.key, - signs: sign.properties.rects, - loc: loc - }]); - } - - rtree.load(signs); - debouncedRedraw(); - } - function drawSigns() { - var data = rtree - .search(context.map().extent().rectangle()) - .map(function(d) { return d[4]; }); + var data = mapillary.signs(context.map().extent()); var signs = layer.select('.mapillary-sign-offset') .selectAll('.icon-sign') @@ -117,8 +103,13 @@ iD.MapillarySignLayer = function(context) { .attr('transform', 'translate(-16, -16)'); // center signs on loc if (enabled) { - drawSigns(); - mapillary.loadSigns(context, context.projection, layer.dimensions()); + if (~~context.map().zoom() < minZoom) { + hideLayer(); + } else { + layer.style('display', 'block'); + drawSigns(); + mapillary.loadSigns(context, context.projection, layer.dimensions()); + } } } @@ -141,7 +132,7 @@ iD.MapillarySignLayer = function(context) { mapillary - .on('loadedSigns', signsLoaded); + .on('loadedSigns', debouncedRedraw); return render; }; diff --git a/js/id/services/mapillary.js b/js/id/services/mapillary.js index ee0fbbc78..9ebca7153 100644 --- a/js/id/services/mapillary.js +++ b/js/id/services/mapillary.js @@ -57,7 +57,7 @@ iD.services.mapillary = function() { var tiles = getTiles(projection, dimensions); _.filter(which.inflight, function(v, k) { - var wanted = _.find(tiles, function(tile) { return k === tile.id; }); + var wanted = _.find(tiles, function(tile) { return k === (tile.id + ',0'); }); if (!wanted) delete which.inflight[k]; return !wanted; }).map(abortRequest); @@ -68,13 +68,13 @@ iD.services.mapillary = function() { } function loadTilePage(which, url, tile, page) { - var cache = iD.services.mapillary.cache, + var cache = iD.services.mapillary.cache[which], id = tile.id + ',' + String(page), rect = tile.extent.rectangle(); - if (which.loaded[id] || which.inflight[id]) return; + if (cache.loaded[id] || cache.inflight[id]) return; - which.inflight[id] = d3.json(url + + cache.inflight[id] = d3.json(url + iD.util.qsString({ geojson: 'true', limit: maxResults, @@ -85,16 +85,28 @@ iD.services.mapillary = function() { max_lon: rect[2], max_lat: rect[3] }), function(err, data) { - which.loaded[id] = true; - delete which.inflight[id]; - if (err) return; + cache.loaded[id] = true; + delete cache.inflight[id]; + if (err || !data.features || !data.features.length) return; - if (which === cache.images) { - dispatch.loadedImages(data); - } else if (which === cache.signs) { - dispatch.loadedSigns(data); + var features = [], + feature, loc, d; + + for (var i = 0; i < data.features.length; i++) { + feature = data.features[i]; + loc = feature.geometry.coordinates; + d = { key: feature.properties.key, loc: loc }; + if (which === 'images') d.ca = feature.properties.ca; + if (which === 'signs') d.signs = feature.properties.rects; + + features.push([loc[0], loc[1], loc[0], loc[1], d]); } + cache.rtree.load(features); + + if (which === 'images') dispatch.loadedImages(); + if (which === 'signs') dispatch.loadedSigns(); + if (data.features.length === maxResults) { loadTilePage(which, url, tile, ++page); } @@ -103,17 +115,26 @@ iD.services.mapillary = function() { } mapillary.loadImages = function(projection, dimensions) { - var cache = iD.services.mapillary.cache, - url = apibase + 'search/im/geojson?'; - loadTiles(cache.images, url, projection, dimensions); + var url = apibase + 'search/im/geojson?'; + loadTiles('images', url, projection, dimensions); }; mapillary.loadSigns = function(context, projection, dimensions) { - var cache = iD.services.mapillary.cache, - url = apibase + 'search/im/geojson/or?'; - + var url = apibase + 'search/im/geojson/or?'; loadSignDefs(context); - loadTiles(cache.signs, url, projection, dimensions); + loadTiles('signs', url, projection, dimensions); + }; + + mapillary.images = function(extent) { + return iD.services.mapillary.cache.images.rtree + .search(extent.rectangle()) + .map(function(d) { return d[4]; }); + }; + + mapillary.signs = function(extent) { + return iD.services.mapillary.cache.signs.rtree + .search(extent.rectangle()) + .map(function(d) { return d[4]; }); }; mapillary.signHTML = function(d) { @@ -188,8 +209,8 @@ iD.services.mapillary = function() { } iD.services.mapillary.cache = { - images: { inflight: {}, loaded: {}, rbush: rbush() }, - signs: { inflight: {}, loaded: {}, rbush: rbush() } + images: { inflight: {}, loaded: {}, rtree: rbush() }, + signs: { inflight: {}, loaded: {}, rtree: rbush() } }; iD.services.mapillary.thumb = null; @@ -204,4 +225,3 @@ iD.services.mapillary = function() { return d3.rebind(mapillary, dispatch, 'on'); }; - From 9a1b7628ba247c6b976198826fe3f64aa5bfaf98 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Thu, 11 Feb 2016 21:23:52 -0500 Subject: [PATCH 32/38] Bump rbush to 1.4.2 --- js/lib/rbush.js | 153 ++++++++++++++++++++++++++++++++++-------------- 1 file changed, 110 insertions(+), 43 deletions(-) diff --git a/js/lib/rbush.js b/js/lib/rbush.js index 19b841a8a..f6975dfe8 100644 --- a/js/lib/rbush.js +++ b/js/lib/rbush.js @@ -1,10 +1,11 @@ /* - (c) 2013, Vladimir Agafonkin + (c) 2015, Vladimir Agafonkin RBush, a JavaScript library for high-performance 2D spatial indexing of points and rectangles. https://github.com/mourner/rbush */ -(function () { 'use strict'; +(function () { +'use strict'; function rbush(maxEntries, format) { @@ -57,6 +58,33 @@ rbush.prototype = { return result; }, + collides: function (bbox) { + + var node = this.data, + toBBox = this.toBBox; + + if (!intersects(bbox, node.bbox)) return false; + + var nodesToSearch = [], + i, len, child, childBBox; + + while (node) { + for (i = 0, len = node.children.length; i < len; i++) { + + child = node.children[i]; + childBBox = node.leaf ? toBBox(child) : child.bbox; + + if (intersects(bbox, childBBox)) { + if (node.leaf || contains(bbox, childBBox)) return true; + nodesToSearch.push(child); + } + } + node = nodesToSearch.pop(); + } + + return false; + }, + load: function (data) { if (!(data && data.length)) return this; @@ -180,13 +208,14 @@ rbush.prototype = { return result; }, - _build: function (items, left, right, level, height) { + _build: function (items, left, right, height) { var N = right - left + 1, M = this._maxEntries, node; if (N <= M) { + // reached leaf level; return leaf node = { children: items.slice(left, right + 1), height: 1, @@ -197,7 +226,7 @@ rbush.prototype = { return node; } - if (!level) { + if (!height) { // target height of the bulk-loaded tree height = Math.ceil(Math.log(N) / Math.log(M)); @@ -205,31 +234,33 @@ rbush.prototype = { M = Math.ceil(N / Math.pow(M, height - 1)); } - // TODO eliminate recursion? - node = { children: [], height: height, - bbox: null + bbox: null, + leaf: false }; + // split the items into M mostly square tiles + var N2 = Math.ceil(N / M), N1 = N2 * Math.ceil(Math.sqrt(M)), - i, j, right2, childNode; + i, j, right2, right3; + + multiSelect(items, left, right, N1, this.compareMinX); - // split the items into M mostly square tiles for (i = left; i <= right; i += N1) { - if (i + N1 <= right) partitionSort(items, i, right, i + N1, this.compareMinX); right2 = Math.min(i + N1 - 1, right); + multiSelect(items, i, right2, N2, this.compareMinY); + for (j = i; j <= right2; j += N2) { - if (j + N2 <= right2) partitionSort(items, j, right2, j + N2, this.compareMinY); + right3 = Math.min(j + N2 - 1, right2); // pack each entry recursively - childNode = this._build(items, j, Math.min(j + N2 - 1, right2), level + 1, height - 1); - node.children.push(childNode); + node.children.push(this._build(items, j, right3, height - 1)); } } @@ -309,9 +340,13 @@ rbush.prototype = { this._chooseSplitAxis(node, m, M); + var splitIndex = this._chooseSplitIndex(node, m, M); + var newNode = { - children: node.children.splice(this._chooseSplitIndex(node, m, M)), - height: node.height + children: node.children.splice(splitIndex, node.children.length - splitIndex), + height: node.height, + bbox: null, + leaf: false }; if (node.leaf) newNode.leaf = true; @@ -327,7 +362,9 @@ rbush.prototype = { // split root node this.data = { children: [node, newNode], - height: node.height + 1 + height: node.height + 1, + bbox: null, + leaf: false }; calcBBox(this.data, this.toBBox); }, @@ -442,6 +479,7 @@ rbush.prototype = { } }; + // calculate node's bbox from bboxes of its children function calcBBox(node, toBBox) { node.bbox = distBBox(node, 0, node.children.length, toBBox); @@ -459,7 +497,6 @@ function distBBox(node, k, p, toBBox) { return bbox; } - function empty() { return [Infinity, Infinity, -Infinity, -Infinity]; } function extend(a, b) { @@ -481,7 +518,7 @@ function enlargedArea(a, b) { (Math.max(b[3], a[3]) - Math.min(b[1], a[1])); } -function intersectionArea (a, b) { +function intersectionArea(a, b) { var minX = Math.max(a[0], b[0]), minY = Math.max(a[1], b[1]), maxX = Math.min(a[2], b[2]), @@ -498,44 +535,74 @@ function contains(a, b) { b[3] <= a[3]; } -function intersects (a, b) { +function intersects(a, b) { return b[0] <= a[2] && b[1] <= a[3] && b[2] >= a[0] && b[3] >= a[1]; } +// sort an array so that items come in groups of n unsorted items, with groups sorted between each other; +// combines selection algorithm with binary divide & conquer approach -function partitionSort(arr, left, right, k, compare) { - var pivot; +function multiSelect(arr, left, right, n, compare) { + var stack = [left, right], + mid; - while (true) { - pivot = Math.floor((left + right) / 2); - pivot = partition(arr, left, right, pivot, compare); + while (stack.length) { + right = stack.pop(); + left = stack.pop(); - if (k === pivot) break; - else if (k < pivot) right = pivot - 1; - else left = pivot + 1; + if (right - left <= n) continue; + + mid = left + Math.ceil((right - left) / n / 2) * n; + select(arr, left, right, mid, compare); + + stack.push(left, mid, mid, right); } - - partition(arr, left, right, k, compare); } -function partition(arr, left, right, pivot, compare) { - var k = left, - value = arr[pivot]; +// Floyd-Rivest selection algorithm: +// sort an array between left and right (inclusive) so that the smallest k elements come first (unordered) +function select(arr, left, right, k, compare) { + var n, i, z, s, sd, newLeft, newRight, t, j; - swap(arr, pivot, right); - - for (var i = left; i < right; i++) { - if (compare(arr[i], value) < 0) { - swap(arr, k, i); - k++; + while (right > left) { + if (right - left > 600) { + n = right - left + 1; + i = k - left + 1; + z = Math.log(n); + s = 0.5 * Math.exp(2 * z / 3); + sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (i - n / 2 < 0 ? -1 : 1); + newLeft = Math.max(left, Math.floor(k - i * s / n + sd)); + newRight = Math.min(right, Math.floor(k + (n - i) * s / n + sd)); + select(arr, newLeft, newRight, k, compare); } - } - swap(arr, right, k); - return k; + t = arr[k]; + i = left; + j = right; + + swap(arr, left, k); + if (compare(arr[right], t) > 0) swap(arr, left, right); + + while (i < j) { + swap(arr, i, j); + i++; + j--; + while (compare(arr[i], t) < 0) i++; + while (compare(arr[j], t) > 0) j--; + } + + if (compare(arr[left], t) === 0) swap(arr, left, j); + else { + j++; + swap(arr, j, right); + } + + if (j <= k) left = j + 1; + if (k <= j) right = j - 1; + } } function swap(arr, i, j) { @@ -546,9 +613,9 @@ function swap(arr, i, j) { // export as AMD/CommonJS module or global variable -if (typeof define === 'function' && define.amd) define(function() { return rbush; }); +if (typeof define === 'function' && define.amd) define('rbush', function () { return rbush; }); else if (typeof module !== 'undefined') module.exports = rbush; else if (typeof self !== 'undefined') self.rbush = rbush; else window.rbush = rbush; -})(); \ No newline at end of file +})(); From 3b0347eebcaeac1df75382e580bc2893bd512da7 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Fri, 12 Feb 2016 17:12:03 -0500 Subject: [PATCH 33/38] Persist dimensions in property to avoid reflow --- js/lib/d3.dimensions.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/js/lib/d3.dimensions.js b/js/lib/d3.dimensions.js index d54a05e25..eef257401 100644 --- a/js/lib/d3.dimensions.js +++ b/js/lib/d3.dimensions.js @@ -3,8 +3,15 @@ d3.selection.prototype.dimensions = function (dimensions) { var node = this.node(); if (!node) return; - var cr = node.getBoundingClientRect(); - return [cr.width, cr.height]; + var prop = this.property('__dimensions__'); + if (!prop) { + var cr = node.getBoundingClientRect(); + prop = [cr.width, cr.height]; + this.property('__dimensions__', prop); + } + return prop; } + + this.property('__dimensions__', [dimensions[0], dimensions[1]]); return this.attr({width: dimensions[0], height: dimensions[1]}); }; From 272924140ca61d71228e9f6c1984a9d76fc3f2ce Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Sat, 13 Feb 2016 13:31:01 -0500 Subject: [PATCH 34/38] Partition viewport into regions and cull visible mapillary data This is awesome because it allows mappers to see a subset of the data at low zoom, but they get more of it as they zoom in. --- js/id/renderer/mapillary_image_layer.js | 2 +- js/id/renderer/mapillary_sign_layer.js | 2 +- js/id/services/mapillary.js | 48 ++++++++++++++++++++----- 3 files changed, 42 insertions(+), 10 deletions(-) diff --git a/js/id/renderer/mapillary_image_layer.js b/js/id/renderer/mapillary_image_layer.js index 2e172a6e7..23ad84650 100644 --- a/js/id/renderer/mapillary_image_layer.js +++ b/js/id/renderer/mapillary_image_layer.js @@ -58,7 +58,7 @@ iD.MapillaryImageLayer = function(context) { } function drawMarkers() { - var data = mapillary.images(context.map().extent()); + var data = mapillary.images(context); var markers = layer.selectAll('.viewfield-group') .data(data, function(d) { return d.key; }); diff --git a/js/id/renderer/mapillary_sign_layer.js b/js/id/renderer/mapillary_sign_layer.js index 739f17c35..5dbf6fbab 100644 --- a/js/id/renderer/mapillary_sign_layer.js +++ b/js/id/renderer/mapillary_sign_layer.js @@ -43,7 +43,7 @@ iD.MapillarySignLayer = function(context) { } function drawSigns() { - var data = mapillary.signs(context.map().extent()); + var data = mapillary.signs(context); var signs = layer.select('.mapillary-sign-offset') .selectAll('.icon-sign') diff --git a/js/id/services/mapillary.js b/js/id/services/mapillary.js index 9ebca7153..3313657db 100644 --- a/js/id/services/mapillary.js +++ b/js/id/services/mapillary.js @@ -125,16 +125,48 @@ iD.services.mapillary = function() { loadTiles('signs', url, projection, dimensions); }; - mapillary.images = function(extent) { - return iD.services.mapillary.cache.images.rtree - .search(extent.rectangle()) - .map(function(d) { return d[4]; }); + + // partition viewport into `psize` x `psize` regions + function partitionViewport(psize, context) { + psize = psize || 16; + var projection = context.projection, + dimensions = context.map().dimensions(), + cols = d3.range(0, dimensions[0], psize), + rows = d3.range(0, dimensions[1], psize), + partitions = []; + + rows.forEach(function(y) { + cols.forEach(function(x) { + var min = [x, y + psize], + max = [x + psize, y]; + partitions.push( + iD.geo.Extent(projection.invert(min), projection.invert(max))); + }); + }); + + return partitions; + } + + // no more than `limit` results per partition. + function searchLimited(psize, limit, context, rtree) { + limit = limit || 3; + + var partitions = partitionViewport(psize, context); + return _.flatten(_.compact(_.map(partitions, function(extent) { + return rtree.search(extent.rectangle()) + .slice(0, limit) + .map(function(d) { return d[4]; }); + }))); + } + + mapillary.images = function(context) { + var psize = 16, limit = 3; + return searchLimited(psize, limit, context, iD.services.mapillary.cache.images.rtree); }; - mapillary.signs = function(extent) { - return iD.services.mapillary.cache.signs.rtree - .search(extent.rectangle()) - .map(function(d) { return d[4]; }); + mapillary.signs = function(context) { + var psize = 32, limit = 3; + return searchLimited(psize, limit, context, iD.services.mapillary.cache.signs.rtree); }; mapillary.signHTML = function(d) { From ff5139fc58940d319bf36f8f6c65f3d69b68323f Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Sun, 14 Feb 2016 00:23:18 -0500 Subject: [PATCH 35/38] Position Mapillary thumbnail on opposite side of map from marker (closes #2775) --- css/app.css | 4 +-- js/id/renderer/mapillary_image_layer.js | 30 ++++++++++------- js/id/renderer/mapillary_sign_layer.js | 28 +++++++++------- js/id/services/mapillary.js | 43 +++++++++++++++---------- 4 files changed, 62 insertions(+), 43 deletions(-) diff --git a/css/app.css b/css/app.css index a83bb2847..2ddd3d96a 100644 --- a/css/app.css +++ b/css/app.css @@ -295,6 +295,8 @@ ul li { list-style: none;} .fl { float: left;} .fr { float: right;} +.al { left: 0; } +.ar { right: 0; } div.hide, form.hide, @@ -655,7 +657,6 @@ button.save.has-count .count::before { .mapillary-image { position: absolute; - right: 0; bottom: 30px; width: 330px; height: 250px; @@ -669,7 +670,6 @@ button.save.has-count .count::before { height: auto; background-color: rgba(0,0,0,.5); bottom: 0; - right: 0; padding: 5px 10px; } diff --git a/js/id/renderer/mapillary_image_layer.js b/js/id/renderer/mapillary_image_layer.js index 23ad84650..8e5fd288a 100644 --- a/js/id/renderer/mapillary_image_layer.js +++ b/js/id/renderer/mapillary_image_layer.js @@ -6,20 +6,25 @@ iD.MapillaryImageLayer = function(context) { layer; - function showThumbnail(imageKey) { - var thumb = mapillary.selectedThumbnail(); + function showThumbnail(image) { + var thumb = mapillary.selectedThumbnail(), + posX = context.projection(image.loc)[0], + width = layer.dimensions()[0], + position = (posX < width / 2) ? 'right' : 'left'; - d3.selectAll('.layer-mapillary-images .viewfield-group, .layer-mapillary-signs .icon-sign') - .classed('selected', function(d) { return d.key === thumb; }); + if (thumb) { + d3.selectAll('.layer-mapillary-images .viewfield-group, .layer-mapillary-signs .icon-sign') + .classed('selected', function(d) { return d.key === thumb.key; }); + } - mapillary.showThumbnail(context.container(), imageKey); + mapillary.showThumbnail(image.key, position); } function hideThumbnail() { d3.selectAll('.layer-mapillary-images .viewfield-group, .layer-mapillary-signs .icon-sign') .classed('selected', false); - mapillary.hideThumbnail(context.container()); + mapillary.hideThumbnail(); } function showLayer() { @@ -96,17 +101,18 @@ iD.MapillaryImageLayer = function(context) { .append('svg') .style('display', enabled ? 'block' : 'none') .on('click', function() { // deselect/select - var image = d3.event.target.__data__; - if (image.key === mapillary.selectedThumbnail()) { + var d = d3.event.target.__data__, + thumb = mapillary.selectedThumbnail(); + if (thumb && thumb.key === d.key) { hideThumbnail(); } else { - mapillary.selectedThumbnail(image.key); - context.map().centerEase(image.loc); - showThumbnail(image.key); + mapillary.selectedThumbnail(d); + context.map().centerEase(d.loc); + showThumbnail(d); } }) .on('mouseover', function() { - showThumbnail(d3.event.target.__data__.key); + showThumbnail(d3.event.target.__data__); }) .on('mouseout', function() { var thumb = mapillary.selectedThumbnail(); diff --git a/js/id/renderer/mapillary_sign_layer.js b/js/id/renderer/mapillary_sign_layer.js index 5dbf6fbab..818d66718 100644 --- a/js/id/renderer/mapillary_sign_layer.js +++ b/js/id/renderer/mapillary_sign_layer.js @@ -6,20 +6,25 @@ iD.MapillarySignLayer = function(context) { layer; - function showThumbnail(imageKey) { - var thumb = mapillary.selectedThumbnail(); + function showThumbnail(image) { + var thumb = mapillary.selectedThumbnail(), + posX = context.projection(image.loc)[0], + width = layer.dimensions()[0], + position = (posX < width / 2) ? 'right' : 'left'; - d3.selectAll('.layer-mapillary-images .viewfield-group, .layer-mapillary-signs .icon-sign') - .classed('selected', function(d) { return d.key === thumb; }); + if (thumb) { + d3.selectAll('.layer-mapillary-images .viewfield-group, .layer-mapillary-signs .icon-sign') + .classed('selected', function(d) { return d.key === thumb.key; }); + } - mapillary.showThumbnail(context.container(), imageKey); + mapillary.showThumbnail(image.key, position); } function hideThumbnail() { d3.selectAll('.layer-mapillary-images .viewfield-group, .layer-mapillary-signs .icon-sign') .classed('selected', false); - mapillary.hideThumbnail(context.container()); + mapillary.hideThumbnail(); } function showLayer() { @@ -62,17 +67,16 @@ iD.MapillarySignLayer = function(context) { enter .on('click', function(d) { // deselect/select - if (d.key === mapillary.selectedThumbnail()) { + var thumb = mapillary.selectedThumbnail(); + if (thumb && thumb.key === d.key) { hideThumbnail(); } else { - mapillary.selectedThumbnail(d.key); + mapillary.selectedThumbnail(d); context.map().centerEase(d.loc); - showThumbnail(d.key); + showThumbnail(d); } }) - .on('mouseover', function(d) { - showThumbnail(d.key); - }) + .on('mouseover', showThumbnail) .on('mouseout', function() { var thumb = mapillary.selectedThumbnail(); if (thumb) { diff --git a/js/id/services/mapillary.js b/js/id/services/mapillary.js index 3313657db..c22b924b1 100644 --- a/js/id/services/mapillary.js +++ b/js/id/services/mapillary.js @@ -178,19 +178,24 @@ iD.services.mapillary = function() { return iD.services.mapillary.sign_defs[country][type]; }; - mapillary.showThumbnail = function(selection, imageKey) { - if (!imageKey) return; + mapillary.showThumbnail = function(imageKey, position) { + if (!imageKey) return - var thumbnail = selection.selectAll('.mapillary-image') + var positionClass = { + 'ar': (position !== 'left'), + 'al': (position === 'left') + }; + + var thumbnail = d3.select('#content').selectAll('.mapillary-image') .data([0]); // Enter var enter = thumbnail.enter().append('div') - .attr('class', 'mapillary-image'); + .attr('class', 'mapillary-image ar'); enter.append('button') .on('click', function () { - mapillary.hideThumbnail(selection); + mapillary.hideThumbnail(); }) .append('div') .call(iD.svg.Icon('#icon-close')); @@ -198,38 +203,42 @@ iD.services.mapillary = function() { enter.append('img'); enter.append('a') - .attr('class', 'link') + .attr('class', 'link ar') .attr('target', '_blank') .call(iD.svg.Icon('#icon-out-link', 'inline')) .append('span') .text(t('mapillary.view_on_mapillary')); // Update + thumbnail.selectAll('img') + .attr('src', urlThumb + imageKey + '/thumb-320.jpg'); + + var link = thumbnail.selectAll('a') + .attr('href', urlImage + imageKey); + + if (position) { + thumbnail.classed(positionClass); + link.classed(positionClass); + } + thumbnail .transition() .duration(200) .style('opacity', 1); - - thumbnail.selectAll('img') - .attr('src', urlThumb + imageKey + '/thumb-320.jpg'); - - thumbnail.selectAll('a') - .attr('href', urlImage + imageKey); - }; - mapillary.hideThumbnail = function(selection) { + mapillary.hideThumbnail = function() { iD.services.mapillary.thumb = null; - selection.selectAll('.mapillary-image') + d3.select('#content').selectAll('.mapillary-image') .transition() .duration(200) .style('opacity', 0) .remove(); }; - mapillary.selectedThumbnail = function(imageKey) { + mapillary.selectedThumbnail = function(d) { if (!arguments.length) return iD.services.mapillary.thumb; - iD.services.mapillary.thumb = imageKey; + iD.services.mapillary.thumb = d; }; mapillary.reset = function() { From 5957adb67df1dd4047113f9bf9510b3ef218a8c1 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Mon, 15 Feb 2016 16:16:44 -0500 Subject: [PATCH 36/38] Dynamically check for existence of Mapillary service This allows us to 1. enable specific parts of Mapillary only for certain browsers 2. remove the Mapillary service completely if desired (closes #2722) To remove Mapillary, just set `iD.services.mapillary = null` or remove the