mirror of
https://github.com/enzet/map-machine.git
synced 2025-05-22 05:26:24 +02:00
Refactor icons; update images.
This commit is contained in:
parent
2939351b54
commit
c4d7821f79
8 changed files with 70 additions and 67 deletions
BIN
doc/grid.png
BIN
doc/grid.png
Binary file not shown.
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 72 KiB |
Binary file not shown.
Before Width: | Height: | Size: 140 KiB After Width: | Height: | Size: 141 KiB |
|
@ -148,8 +148,8 @@
|
||||||
showgrid="true"
|
showgrid="true"
|
||||||
inkscape:document-units="px"
|
inkscape:document-units="px"
|
||||||
inkscape:current-layer="layer1"
|
inkscape:current-layer="layer1"
|
||||||
inkscape:cy="67.746636"
|
inkscape:cy="457.6421"
|
||||||
inkscape:cx="147.76204"
|
inkscape:cx="88.227768"
|
||||||
inkscape:zoom="32"
|
inkscape:zoom="32"
|
||||||
inkscape:pageshadow="2"
|
inkscape:pageshadow="2"
|
||||||
inkscape:pageopacity="0.0"
|
inkscape:pageopacity="0.0"
|
||||||
|
@ -543,6 +543,12 @@
|
||||||
inkscape:label="main"
|
inkscape:label="main"
|
||||||
id="layer1"
|
id="layer1"
|
||||||
style="display:inline">
|
style="display:inline">
|
||||||
|
<path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#cccccc;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 115,461 c 4,0 4,-6 8,-6"
|
||||||
|
id="path7733"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="cc" />
|
||||||
<path
|
<path
|
||||||
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
d="M 84 306 C 83.446 306 83 306.446 83 307 L 83 315 C 83 315.554 83.446 316 84 316 L 88 316 L 88 314 C 88 312.892 88.892 312 90 312 L 90 307 C 90 306.446 89.554 306 89 306 L 84 306 z M 86.5 308 L 88.5 311 L 86.5 314 L 84.5 311 L 86.5 308 z M 90 313 C 89.446 313 89 313.446 89 314 L 89 317 C 89 317.554 89.446 318 90 318 L 93 318 C 93.554 318 94 317.554 94 317 L 94 314 C 94 313.446 93.554 313 93 313 L 90 313 z M 90.5 314 A 0.5 0.5 0 0 1 91 314.5 A 0.5 0.5 0 0 1 90.5 315 A 0.5 0.5 0 0 1 90 314.5 A 0.5 0.5 0 0 1 90.5 314 z M 92.5 316 A 0.5 0.5 0 0 1 93 316.5 A 0.5 0.5 0 0 1 92.5 317 A 0.5 0.5 0 0 1 92 316.5 A 0.5 0.5 0 0 1 92.5 316 z "
|
d="M 84 306 C 83.446 306 83 306.446 83 307 L 83 315 C 83 315.554 83.446 316 84 316 L 88 316 L 88 314 C 88 312.892 88.892 312 90 312 L 90 307 C 90 306.446 89.554 306 89 306 L 84 306 z M 86.5 308 L 88.5 311 L 86.5 314 L 84.5 311 L 86.5 308 z M 90 313 C 89.446 313 89 313.446 89 314 L 89 317 C 89 317.554 89.446 318 90 318 L 93 318 C 93.554 318 94 317.554 94 317 L 94 314 C 94 313.446 93.554 313 93 313 L 90 313 z M 90.5 314 A 0.5 0.5 0 0 1 91 314.5 A 0.5 0.5 0 0 1 90.5 315 A 0.5 0.5 0 0 1 90 314.5 A 0.5 0.5 0 0 1 90.5 314 z M 92.5 316 A 0.5 0.5 0 0 1 93 316.5 A 0.5 0.5 0 0 1 92.5 317 A 0.5 0.5 0 0 1 92 316.5 A 0.5 0.5 0 0 1 92.5 316 z "
|
||||||
|
@ -2015,7 +2021,7 @@
|
||||||
id="rect3359"
|
id="rect3359"
|
||||||
width="7"
|
width="7"
|
||||||
height="8"
|
height="8"
|
||||||
x="85"
|
x="84"
|
||||||
y="130"
|
y="130"
|
||||||
ry="1.1428572"
|
ry="1.1428572"
|
||||||
rx="1" />
|
rx="1" />
|
||||||
|
@ -2023,16 +2029,16 @@
|
||||||
style="fill:none;stroke:#000000;stroke-width:0.10000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
style="fill:none;stroke:#000000;stroke-width:0.10000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
id="rect3363"
|
id="rect3363"
|
||||||
width="1"
|
width="1"
|
||||||
height="5"
|
height="4.5"
|
||||||
x="88"
|
x="87"
|
||||||
y="136.5"
|
y="137"
|
||||||
rx="1"
|
rx="0"
|
||||||
ry="0" />
|
ry="0" />
|
||||||
<rect
|
<rect
|
||||||
ry="1.25"
|
ry="1.25"
|
||||||
rx="1"
|
rx="1"
|
||||||
y="131"
|
y="131"
|
||||||
x="86"
|
x="85"
|
||||||
height="5"
|
height="5"
|
||||||
width="5"
|
width="5"
|
||||||
id="rect3383"
|
id="rect3383"
|
||||||
|
@ -2041,7 +2047,7 @@
|
||||||
rx="0.5"
|
rx="0.5"
|
||||||
ry="0.5"
|
ry="0.5"
|
||||||
y="132"
|
y="132"
|
||||||
x="87"
|
x="86"
|
||||||
height="2"
|
height="2"
|
||||||
width="3"
|
width="3"
|
||||||
id="rect3374"
|
id="rect3374"
|
||||||
|
@ -2760,7 +2766,7 @@
|
||||||
rx="0.5"
|
rx="0.5"
|
||||||
ry="0.5"
|
ry="0.5"
|
||||||
y="141"
|
y="141"
|
||||||
x="86"
|
x="85"
|
||||||
height="1"
|
height="1"
|
||||||
width="5"
|
width="5"
|
||||||
id="rect4562"
|
id="rect4562"
|
||||||
|
@ -2769,7 +2775,7 @@
|
||||||
inkscape:connector-curvature="0"
|
inkscape:connector-curvature="0"
|
||||||
inkscape:label="#rect4564"
|
inkscape:label="#rect4564"
|
||||||
id="bus_stop"
|
id="bus_stop"
|
||||||
d="m 86,146 c -0.554,0 -1,0.52311 -1,1.15625 l 0,5.6875 C 85,153.47689 85.446,154 86,154 l 2,0 0,3 -1.5,0 c -0.277,0 -0.5,0.223 -0.5,0.5 0,0.277 0.223,0.5 0.5,0.5 l 4,0 c 0.277,0 0.5,-0.223 0.5,-0.5 0,-0.277 -0.223,-0.5 -0.5,-0.5 l -1.5,0 0,-3 2,0 c 0.554,0 1,-0.52311 1,-1.15625 l 0,-5.6875 C 92,146.52311 91.554,146 91,146 l -5,0 z m 1,1 3,0 c 0.554,0 1,0.5575 1,1.25 l 0,2.5 c 0,0.6925 -0.446,1.25 -1,1.25 l -3,0 c -0.554,0 -1,-0.5575 -1,-1.25 l 0,-2.5 c 0,-0.6925 0.446,-1.25 1,-1.25 z m 0.5,1 c -0.277,0 -0.5,0.223 -0.5,0.5 l 0,1 c 0,0.277 0.223,0.5 0.5,0.5 l 2,0 c 0.277,0 0.5,-0.223 0.5,-0.5 l 0,-1 c 0,-0.277 -0.223,-0.5 -0.5,-0.5 l -2,0 z"
|
d="m 85,146 c -0.554,0 -1,0.52311 -1,1.15625 l 0,5.6875 C 84,153.47689 84.446,154 85,154 l 2,0 0,3 -1.5,0 c -0.277,0 -0.5,0.223 -0.5,0.5 0,0.277 0.223,0.5 0.5,0.5 l 4,0 c 0.277,0 0.5,-0.223 0.5,-0.5 0,-0.277 -0.223,-0.5 -0.5,-0.5 l -1.5,0 0,-3 2,0 c 0.554,0 1,-0.52311 1,-1.15625 l 0,-5.6875 C 91,146.52311 90.554,146 90,146 l -5,0 z m 1,1 3,0 c 0.554,0 1,0.5575 1,1.25 l 0,2.5 c 0,0.6925 -0.446,1.25 -1,1.25 l -3,0 c -0.554,0 -1,-0.5575 -1,-1.25 l 0,-2.5 c 0,-0.6925 0.446,-1.25 1,-1.25 z m 0.5,1 c -0.277,0 -0.5,0.223 -0.5,0.5 l 0,1 c 0,0.277 0.223,0.5 0.5,0.5 l 2,0 c 0.277,0 0.5,-0.223 0.5,-0.5 l 0,-1 c 0,-0.277 -0.223,-0.5 -0.5,-0.5 l -2,0 z"
|
||||||
style="fill:#000000;stroke:none" />
|
style="fill:#000000;stroke:none" />
|
||||||
<rect
|
<rect
|
||||||
style="fill:none;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
style="fill:none;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
@ -13651,9 +13657,9 @@
|
||||||
<rect
|
<rect
|
||||||
style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.09999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.09999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
id="rect6027"
|
id="rect6027"
|
||||||
width="3"
|
width="1.5"
|
||||||
height="2"
|
height="2"
|
||||||
x="113"
|
x="114"
|
||||||
y="460"
|
y="460"
|
||||||
ry="0.5"
|
ry="0.5"
|
||||||
rx="0.5" />
|
rx="0.5" />
|
||||||
|
@ -13661,23 +13667,17 @@
|
||||||
rx="0.5"
|
rx="0.5"
|
||||||
ry="0.5"
|
ry="0.5"
|
||||||
y="454"
|
y="454"
|
||||||
x="124"
|
x="122.5"
|
||||||
height="2"
|
height="2"
|
||||||
width="3"
|
width="1.5"
|
||||||
id="rect6029"
|
id="rect6029"
|
||||||
style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.09999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.09999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||||
<path
|
|
||||||
style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
d="m 125,454 0,2 c -5,0 -4,6 -10,6 l 0,-2 c 5,0 4,-6 10,-6 z"
|
|
||||||
id="path6034"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
sodipodi:nodetypes="ccccc" />
|
|
||||||
<rect
|
<rect
|
||||||
style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
id="rect6038"
|
id="rect6038"
|
||||||
width="3"
|
width="2"
|
||||||
height="1"
|
height="1"
|
||||||
x="124"
|
x="123"
|
||||||
y="457"
|
y="457"
|
||||||
ry="0.45580584"
|
ry="0.45580584"
|
||||||
rx="0.5" />
|
rx="0.5" />
|
||||||
|
@ -13685,25 +13685,20 @@
|
||||||
rx="0.5"
|
rx="0.5"
|
||||||
ry="0.45580584"
|
ry="0.45580584"
|
||||||
y="459"
|
y="459"
|
||||||
x="124"
|
x="123.5"
|
||||||
height="1"
|
height="1"
|
||||||
width="3"
|
width="2"
|
||||||
id="rect6040"
|
id="rect6040"
|
||||||
style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||||
<rect
|
<rect
|
||||||
style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
id="rect6042"
|
id="rect6042"
|
||||||
width="3"
|
width="2"
|
||||||
height="1"
|
height="1"
|
||||||
x="124"
|
x="124"
|
||||||
y="461"
|
y="461"
|
||||||
ry="0.45580584"
|
ry="0.45580584"
|
||||||
rx="0.5" />
|
rx="0.5" />
|
||||||
<path
|
|
||||||
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.09999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
d="M 124.5 470 C 124.42722 470 124.35914 470.0172 124.29688 470.04492 C 119.08983 470.50726 119.79011 476 115 476 L 113.5 476 C 113.223 476 113 476.223 113 476.5 L 113 477.5 C 113 477.777 113.223 478 113.5 478 L 115.5 478 C 115.57278 478 115.64086 477.9828 115.70312 477.95508 C 120.91017 477.49274 120.20989 472 125 472 L 126.5 472 C 126.777 472 127 471.777 127 471.5 L 127 470.5 C 127 470.223 126.777 470 126.5 470 L 124.5 470 z M 124.5 473 C 124.223 473 124 473.20256 124 473.45508 L 124 473.54492 C 124 473.79744 124.223 474 124.5 474 L 126.5 474 C 126.777 474 127 473.79744 127 473.54492 L 127 473.45508 C 127 473.20256 126.777 473 126.5 473 L 124.5 473 z M 124.5 475 C 124.223 475 124 475.20256 124 475.45508 L 124 475.54492 C 124 475.79744 124.223 476 124.5 476 L 126.5 476 C 126.777 476 127 475.79744 127 475.54492 L 127 475.45508 C 127 475.20256 126.777 475 126.5 475 L 124.5 475 z M 124.5 477 C 124.223 477 124 477.20256 124 477.45508 L 124 477.54492 C 124 477.79744 124.223 478 124.5 478 L 126.5 478 C 126.777 478 127 477.79744 127 477.54492 L 127 477.45508 C 127 477.20256 126.777 477 126.5 477 L 124.5 477 z "
|
|
||||||
id="slide"
|
|
||||||
inkscape:label="#rect6044" />
|
|
||||||
<rect
|
<rect
|
||||||
style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
id="rect6062"
|
id="rect6062"
|
||||||
|
@ -15172,5 +15167,13 @@
|
||||||
<title
|
<title
|
||||||
id="title7731">dumbbell</title>
|
id="title7731">dumbbell</title>
|
||||||
</path>
|
</path>
|
||||||
|
<path
|
||||||
|
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||||
|
d="M 123 470 C 121.75 470 120.71149 470.51259 119.95508 471.19336 C 119.19867 471.87413 118.66797 472.69531 118.16797 473.44531 C 117.66797 474.19531 117.19867 474.87413 116.70508 475.31836 C 116.21149 475.76259 115.75 476 115 476 L 114.5 476 C 114.223 476 114 476.223 114 476.5 L 114 476.83203 A 1.0001 1.0001 0 0 0 114 477.1582 L 114 477.5 C 114 477.777 114.223 478 114.5 478 L 115 478 C 116.25 478 117.28851 477.48741 118.04492 476.80664 C 118.80133 476.12587 119.33203 475.30469 119.83203 474.55469 C 120.33203 473.80469 120.80133 473.12587 121.29492 472.68164 C 121.78851 472.23741 122.25 472 123 472 L 123.5 472 C 123.777 472 124 471.777 124 471.5 L 124 471.16797 A 1.0001 1.0001 0 0 0 124 470.8418 L 124 470.5 C 124 470.223 123.777 470 123.5 470 L 123 470 z M 123.5 473 C 123.223 473 123 473.20256 123 473.45508 L 123 473.54492 C 123 473.79744 123.223 474 123.5 474 L 124.5 474 C 124.777 474 125 473.79744 125 473.54492 L 125 473.45508 C 125 473.20256 124.777 473 124.5 473 L 123.5 473 z M 124 475 C 123.723 475 123.5 475.20256 123.5 475.45508 L 123.5 475.54492 C 123.5 475.79744 123.723 476 124 476 L 125 476 C 125.277 476 125.5 475.79744 125.5 475.54492 L 125.5 475.45508 C 125.5 475.20256 125.277 475 125 475 L 124 475 z M 124.5 477 C 124.223 477 124 477.20256 124 477.45508 L 124 477.54492 C 124 477.79744 124.223 478 124.5 478 L 125.5 478 C 125.777 478 126 477.79744 126 477.54492 L 126 477.45508 C 126 477.20256 125.777 477 125.5 477 L 124.5 477 z "
|
||||||
|
id="slide"
|
||||||
|
inkscape:label="#path7765">
|
||||||
|
<title
|
||||||
|
id="title7780">slide</title>
|
||||||
|
</path>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 838 KiB After Width: | Height: | Size: 840 KiB |
|
@ -19,7 +19,7 @@ from roentgen.osm_reader import (
|
||||||
Map, OSMMember, OSMNode, OSMRelation, OSMWay, Tagged
|
Map, OSMMember, OSMNode, OSMRelation, OSMWay, Tagged
|
||||||
)
|
)
|
||||||
from roentgen.point import Point
|
from roentgen.point import Point
|
||||||
from roentgen.scheme import IconSet, LineStyle, Scheme
|
from roentgen.scheme import Icon, LineStyle, Scheme
|
||||||
from roentgen.util import MinMax
|
from roentgen.util import MinMax
|
||||||
|
|
||||||
DEBUG: bool = False
|
DEBUG: bool = False
|
||||||
|
@ -352,7 +352,7 @@ class Constructor:
|
||||||
self.scheme.is_area(line.tags)):
|
self.scheme.is_area(line.tags)):
|
||||||
|
|
||||||
priority: int
|
priority: int
|
||||||
icon_set: IconSet
|
icon_set: Icon
|
||||||
icon_set, priority = self.scheme.get_icon(
|
icon_set, priority = self.scheme.get_icon(
|
||||||
self.icon_extractor, line.tags, for_="line")
|
self.icon_extractor, line.tags, for_="line")
|
||||||
|
|
||||||
|
@ -369,7 +369,7 @@ class Constructor:
|
||||||
line.tags, inners, outers, LineStyle(style, 1000)))
|
line.tags, inners, outers, LineStyle(style, 1000)))
|
||||||
|
|
||||||
priority: int
|
priority: int
|
||||||
icon_set: IconSet
|
icon_set: Icon
|
||||||
icon_set, priority = self.scheme.get_icon(
|
icon_set, priority = self.scheme.get_icon(
|
||||||
self.icon_extractor, line.tags)
|
self.icon_extractor, line.tags)
|
||||||
|
|
||||||
|
@ -429,7 +429,7 @@ class Constructor:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
priority: int
|
priority: int
|
||||||
icon_set: IconSet
|
icon_set: Icon
|
||||||
draw_outline: bool = True
|
draw_outline: bool = True
|
||||||
|
|
||||||
if self.mode in ["time", "user-coloring"]:
|
if self.mode in ["time", "user-coloring"]:
|
||||||
|
@ -440,7 +440,7 @@ class Constructor:
|
||||||
if self.mode == "time":
|
if self.mode == "time":
|
||||||
color = get_time_color(node.timestamp, self.map_.time)
|
color = get_time_color(node.timestamp, self.map_.time)
|
||||||
dot, _ = self.icon_extractor.get_path(DEFAULT_SMALL_SHAPE_ID)
|
dot, _ = self.icon_extractor.get_path(DEFAULT_SMALL_SHAPE_ID)
|
||||||
icon_set = IconSet([dot], [], color, set(), True)
|
icon_set = Icon([dot], [], color, set(), True)
|
||||||
priority = 0
|
priority = 0
|
||||||
draw_outline = False
|
draw_outline = False
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -10,7 +10,7 @@ import numpy as np
|
||||||
from colour import Color
|
from colour import Color
|
||||||
from svgwrite import Drawing
|
from svgwrite import Drawing
|
||||||
|
|
||||||
from roentgen.icon import Icon, IconExtractor
|
from roentgen.icon import Shape, IconExtractor
|
||||||
from roentgen.scheme import Scheme
|
from roentgen.scheme import Scheme
|
||||||
|
|
||||||
|
|
||||||
|
@ -82,7 +82,7 @@ def draw_grid(
|
||||||
file_name: str, combined_icon_ids: List[Set[str]],
|
file_name: str, combined_icon_ids: List[Set[str]],
|
||||||
extractor: IconExtractor, output_directory: str, columns: int = 16,
|
extractor: IconExtractor, output_directory: str, columns: int = 16,
|
||||||
step: float = 24, color=Color("#444444")
|
step: float = 24, color=Color("#444444")
|
||||||
) -> List[List[Icon]]:
|
) -> List[List[Shape]]:
|
||||||
"""
|
"""
|
||||||
Draw icons in the form of table
|
Draw icons in the form of table
|
||||||
|
|
||||||
|
@ -99,14 +99,14 @@ def draw_grid(
|
||||||
point: np.array = np.array((step / 2, step / 2))
|
point: np.array = np.array((step / 2, step / 2))
|
||||||
width: float = step * columns
|
width: float = step * columns
|
||||||
number: int = 0
|
number: int = 0
|
||||||
icons: List[List[Icon]] = []
|
icons: List[List[Shape]] = []
|
||||||
|
|
||||||
for icons_to_draw in combined_icon_ids: # type: Set[str]
|
for icons_to_draw in combined_icon_ids: # type: Set[str]
|
||||||
found: bool = False
|
found: bool = False
|
||||||
icon_set: List[Icon] = []
|
icon_set: List[Shape] = []
|
||||||
names = []
|
names = []
|
||||||
for icon_id in icons_to_draw: # type: str
|
for icon_id in icons_to_draw: # type: str
|
||||||
icon, extracted = extractor.get_path(icon_id) # type: Icon, bool
|
icon, extracted = extractor.get_path(icon_id) # type: Shape, bool
|
||||||
assert extracted, f"no icon with ID {icon_id}"
|
assert extracted, f"no icon with ID {icon_id}"
|
||||||
icon_set.append(icon)
|
icon_set.append(icon)
|
||||||
found = True
|
found = True
|
||||||
|
@ -124,12 +124,12 @@ def draw_grid(
|
||||||
svg: Drawing = Drawing(file_name, (width, height))
|
svg: Drawing = Drawing(file_name, (width, height))
|
||||||
svg.add(svg.rect((0, 0), (width, height), fill="#FFFFFF"))
|
svg.add(svg.rect((0, 0), (width, height), fill="#FFFFFF"))
|
||||||
|
|
||||||
for combined_icon in icons: # type: List[Icon]
|
for combined_icon in icons: # type: List[Shape]
|
||||||
background_color = "#FFFFFF"
|
background_color = "#FFFFFF"
|
||||||
svg.add(svg.rect(
|
svg.add(svg.rect(
|
||||||
point - np.array((-10, -10)), (20, 20),
|
point - np.array((-10, -10)), (20, 20),
|
||||||
fill=background_color))
|
fill=background_color))
|
||||||
for icon in combined_icon: # type: Icon
|
for icon in combined_icon: # type: Shape
|
||||||
path = icon.get_path(svg, point)
|
path = icon.get_path(svg, point)
|
||||||
path.update({"fill": color.hex})
|
path.update({"fill": color.hex})
|
||||||
svg.add(path)
|
svg.add(path)
|
||||||
|
@ -151,15 +151,15 @@ def draw_icon(
|
||||||
file_name: str, icon_ids: Set[str], extractor: IconExtractor
|
file_name: str, icon_ids: Set[str], extractor: IconExtractor
|
||||||
) -> None:
|
) -> None:
|
||||||
|
|
||||||
icon_set: List[Icon] = []
|
icon_set: List[Shape] = []
|
||||||
for icon_id in icon_ids: # type: str
|
for icon_id in icon_ids: # type: str
|
||||||
icon, extracted = extractor.get_path(icon_id) # type: Icon, bool
|
icon, extracted = extractor.get_path(icon_id) # type: Shape, bool
|
||||||
assert extracted, f"no icon with ID {icon_id}"
|
assert extracted, f"no icon with ID {icon_id}"
|
||||||
icon_set.append(icon)
|
icon_set.append(icon)
|
||||||
|
|
||||||
svg: Drawing = Drawing(file_name, (16, 16))
|
svg: Drawing = Drawing(file_name, (16, 16))
|
||||||
|
|
||||||
for icon in icon_set: # type: Icon
|
for icon in icon_set: # type: Shape
|
||||||
path = icon.get_path(svg, (8, 8))
|
path = icon.get_path(svg, (8, 8))
|
||||||
path.update({"fill": "black"})
|
path.update({"fill": "black"})
|
||||||
svg.add(path)
|
svg.add(path)
|
||||||
|
|
|
@ -23,7 +23,7 @@ GRID_STEP: int = 16
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class Icon:
|
class Shape:
|
||||||
"""
|
"""
|
||||||
SVG icon path description.
|
SVG icon path description.
|
||||||
"""
|
"""
|
||||||
|
@ -58,7 +58,7 @@ class Icon:
|
||||||
Draw icon shape into SVG file.
|
Draw icon shape into SVG file.
|
||||||
|
|
||||||
:param svg: output SVG file
|
:param svg: output SVG file
|
||||||
:param point: icon position
|
:param point: 2D position of the icon centre
|
||||||
:param color: fill color
|
:param color: fill color
|
||||||
:param opacity: icon opacity
|
:param opacity: icon opacity
|
||||||
:param tags: tags to be displayed as hint
|
:param tags: tags to be displayed as hint
|
||||||
|
@ -104,7 +104,7 @@ class IconExtractor:
|
||||||
:param svg_file_name: input SVG file name with icons. File may contain
|
:param svg_file_name: input SVG file name with icons. File may contain
|
||||||
any other irrelevant graphics.
|
any other irrelevant graphics.
|
||||||
"""
|
"""
|
||||||
self.icons: Dict[str, Icon] = {}
|
self.icons: Dict[str, Shape] = {}
|
||||||
|
|
||||||
with open(svg_file_name) as input_file:
|
with open(svg_file_name) as input_file:
|
||||||
content = parse(input_file) # type: Document
|
content = parse(input_file) # type: Document
|
||||||
|
@ -157,11 +157,11 @@ class IconExtractor:
|
||||||
|
|
||||||
matcher = re.match(STANDARD_INKSCAPE_ID, id_)
|
matcher = re.match(STANDARD_INKSCAPE_ID, id_)
|
||||||
if not matcher:
|
if not matcher:
|
||||||
self.icons[id_] = Icon(path, point, id_, name)
|
self.icons[id_] = Shape(path, point, id_, name)
|
||||||
else:
|
else:
|
||||||
ui.error(f"not standard ID {id_}")
|
ui.error(f"not standard ID {id_}")
|
||||||
|
|
||||||
def get_path(self, id_: str) -> (Icon, bool):
|
def get_path(self, id_: str) -> (Shape, bool):
|
||||||
"""
|
"""
|
||||||
Get SVG path of the icon.
|
Get SVG path of the icon.
|
||||||
|
|
||||||
|
|
|
@ -6,9 +6,9 @@ import svgwrite
|
||||||
from colour import Color
|
from colour import Color
|
||||||
|
|
||||||
from roentgen.color import is_bright
|
from roentgen.color import is_bright
|
||||||
from roentgen.icon import Icon
|
from roentgen.icon import Shape
|
||||||
from roentgen.osm_reader import Tagged
|
from roentgen.osm_reader import Tagged
|
||||||
from roentgen.scheme import IconSet
|
from roentgen.scheme import Icon
|
||||||
from roentgen.text import get_address, get_text
|
from roentgen.text import get_address, get_text
|
||||||
|
|
||||||
DEFAULT_FONT: str = "Roboto"
|
DEFAULT_FONT: str = "Roboto"
|
||||||
|
@ -138,7 +138,7 @@ class Point(Tagged):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self, icon_set: IconSet, tags: Dict[str, str], point: np.array,
|
self, icon_set: Icon, tags: Dict[str, str], point: np.array,
|
||||||
coordinates: np.array, priority: float = 0,
|
coordinates: np.array, priority: float = 0,
|
||||||
is_for_node: bool = True, draw_outline: bool = True
|
is_for_node: bool = True, draw_outline: bool = True
|
||||||
):
|
):
|
||||||
|
@ -146,7 +146,7 @@ class Point(Tagged):
|
||||||
|
|
||||||
assert point is not None
|
assert point is not None
|
||||||
|
|
||||||
self.icon_set: IconSet = icon_set
|
self.icon_set: Icon = icon_set
|
||||||
self.tags: Dict[str, str] = tags
|
self.tags: Dict[str, str] = tags
|
||||||
self.point: np.array = point
|
self.point: np.array = point
|
||||||
self.coordinates: np.array = coordinates
|
self.coordinates: np.array = coordinates
|
||||||
|
@ -200,7 +200,7 @@ class Point(Tagged):
|
||||||
self.y += 16
|
self.y += 16
|
||||||
|
|
||||||
def draw_point_shape(
|
def draw_point_shape(
|
||||||
self, svg: svgwrite.Drawing, icons: List[Icon], position,
|
self, svg: svgwrite.Drawing, shapes: List[Shape], position,
|
||||||
fill: Color, occupied, tags=None) -> bool:
|
fill: Color, occupied, tags=None) -> bool:
|
||||||
"""
|
"""
|
||||||
Draw one combined icon and its outline.
|
Draw one combined icon and its outline.
|
||||||
|
@ -214,7 +214,7 @@ class Point(Tagged):
|
||||||
# Draw outlines.
|
# Draw outlines.
|
||||||
|
|
||||||
if self.draw_outline:
|
if self.draw_outline:
|
||||||
for icon in icons: # type: Icon
|
for icon in shapes: # type: Shape
|
||||||
bright: bool = is_bright(fill)
|
bright: bool = is_bright(fill)
|
||||||
color: Color = Color("black") if bright else Color("white")
|
color: Color = Color("black") if bright else Color("white")
|
||||||
opacity: float = 0.7 if bright else 0.5
|
opacity: float = 0.7 if bright else 0.5
|
||||||
|
@ -222,7 +222,7 @@ class Point(Tagged):
|
||||||
|
|
||||||
# Draw icons.
|
# Draw icons.
|
||||||
|
|
||||||
for icon in icons: # type: Icon
|
for icon in shapes: # type: Shape
|
||||||
icon.draw(svg, position, fill, tags=tags)
|
icon.draw(svg, position, fill, tags=tags)
|
||||||
|
|
||||||
if occupied:
|
if occupied:
|
||||||
|
|
|
@ -10,18 +10,18 @@ from typing import Any, Dict, List, Optional, Set, Tuple, Union
|
||||||
import yaml
|
import yaml
|
||||||
from colour import Color
|
from colour import Color
|
||||||
|
|
||||||
from roentgen.icon import DEFAULT_SHAPE_ID, Icon, IconExtractor
|
from roentgen.icon import DEFAULT_SHAPE_ID, Shape, IconExtractor
|
||||||
|
|
||||||
DEFAULT_COLOR: Color = Color("#444444")
|
DEFAULT_COLOR: Color = Color("#444444")
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class IconSet:
|
class Icon:
|
||||||
"""
|
"""
|
||||||
Node representation: icons and color.
|
Node representation: icons and color.
|
||||||
"""
|
"""
|
||||||
main_icon: List[Icon] # list of icons
|
main_icon: List[Shape] # list of icons
|
||||||
extra_icons: List[List[Icon]] # list of lists of icons
|
extra_icons: List[List[Shape]] # list of lists of icons
|
||||||
color: Color # fill color of all icons
|
color: Color # fill color of all icons
|
||||||
# tag keys that were processed to create icon set (other
|
# tag keys that were processed to create icon set (other
|
||||||
# tag keys should be displayed by text or ignored)
|
# tag keys should be displayed by text or ignored)
|
||||||
|
@ -107,7 +107,7 @@ class Scheme:
|
||||||
self.prefix_to_skip: List[str] = content["prefix_to_skip"]
|
self.prefix_to_skip: List[str] = content["prefix_to_skip"]
|
||||||
|
|
||||||
# Storage for created icon sets.
|
# Storage for created icon sets.
|
||||||
self.cache: Dict[str, Tuple[IconSet, int]] = {}
|
self.cache: Dict[str, Tuple[Icon, int]] = {}
|
||||||
|
|
||||||
def get_color(self, color: str) -> Color:
|
def get_color(self, color: str) -> Color:
|
||||||
"""
|
"""
|
||||||
|
@ -159,7 +159,7 @@ class Scheme:
|
||||||
|
|
||||||
def get_icon(
|
def get_icon(
|
||||||
self, icon_extractor: IconExtractor, tags: Dict[str, Any],
|
self, icon_extractor: IconExtractor, tags: Dict[str, Any],
|
||||||
for_: str = "node") -> Tuple[IconSet, int]:
|
for_: str = "node") -> Tuple[Icon, int]:
|
||||||
"""
|
"""
|
||||||
Construct icon set.
|
Construct icon set.
|
||||||
|
|
||||||
|
@ -222,17 +222,17 @@ class Scheme:
|
||||||
main_icon_id = [DEFAULT_SHAPE_ID]
|
main_icon_id = [DEFAULT_SHAPE_ID]
|
||||||
is_default = True
|
is_default = True
|
||||||
|
|
||||||
main_icon: List[Icon] = []
|
main_icon: List[Shape] = []
|
||||||
if main_icon_id:
|
if main_icon_id:
|
||||||
main_icon = list(map(
|
main_icon = list(map(
|
||||||
lambda x: icon_extractor.get_path(x)[0], main_icon_id))
|
lambda x: icon_extractor.get_path(x)[0], main_icon_id))
|
||||||
|
|
||||||
extra_icons: List[List[Icon]] = []
|
extra_icons: List[List[Shape]] = []
|
||||||
for icon_id in extra_icon_ids:
|
for icon_id in extra_icon_ids:
|
||||||
extra_icons.append(list(map(
|
extra_icons.append(list(map(
|
||||||
lambda x: icon_extractor.get_path(x)[0], icon_id)))
|
lambda x: icon_extractor.get_path(x)[0], icon_id)))
|
||||||
|
|
||||||
returned: IconSet = IconSet(
|
returned: Icon = Icon(
|
||||||
main_icon, extra_icons, fill, processed, is_default)
|
main_icon, extra_icons, fill, processed, is_default)
|
||||||
|
|
||||||
self.cache[tags_hash] = returned, priority
|
self.cache[tags_hash] = returned, priority
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue