mirror of
https://github.com/enzet/map-machine.git
synced 2025-04-28 17:57:11 +02:00
73 lines
1.8 KiB
Python
73 lines
1.8 KiB
Python
"""Icon grids for documentation."""
|
|
from pathlib import Path
|
|
from typing import Iterable
|
|
|
|
from colour import Color
|
|
|
|
from map_machine.pictogram.icon import (
|
|
Shape,
|
|
Icon,
|
|
ShapeSpecification,
|
|
ShapeExtractor,
|
|
)
|
|
from map_machine.pictogram.icon_collection import IconCollection
|
|
from map_machine.workspace import workspace
|
|
|
|
SKIP: bool = True
|
|
|
|
|
|
def draw_special_grid(all_shapes, function, path, color=None):
|
|
"""Draw special icon grid to illustrate map feature."""
|
|
icons = [
|
|
Icon([ShapeSpecification(shape)])
|
|
for shape in all_shapes
|
|
if function(shape)
|
|
]
|
|
icons = sorted(icons)
|
|
|
|
if color:
|
|
for icon in icons:
|
|
icon.recolor(color)
|
|
|
|
IconCollection(icons).draw_grid(path, 8, scale=4.0)
|
|
|
|
|
|
def draw_special_grids():
|
|
"""Draw special icon grids."""
|
|
extractor: ShapeExtractor = ShapeExtractor(
|
|
workspace.ICONS_PATH, workspace.ICONS_CONFIG_PATH
|
|
)
|
|
all_shapes: Iterable[Shape] = extractor.shapes.values()
|
|
|
|
draw_special_grid(
|
|
all_shapes,
|
|
lambda shape: shape.id_.startswith("power_tower")
|
|
or shape.id_.startswith("power_pole"),
|
|
Path("doc/icons_power.svg"),
|
|
)
|
|
if SKIP:
|
|
draw_special_grid(
|
|
all_shapes,
|
|
lambda shape: shape.group == "root_space",
|
|
Path("doc/icons_space.svg"),
|
|
)
|
|
draw_special_grid(
|
|
all_shapes,
|
|
lambda shape: shape.group == "root_street_playground",
|
|
Path("doc/icons_playground.svg"),
|
|
)
|
|
draw_special_grid(
|
|
all_shapes,
|
|
lambda shape: "emergency" in shape.categories,
|
|
Path("doc/icons_emergency.svg"),
|
|
color=Color("#DD2222"),
|
|
)
|
|
draw_special_grid(
|
|
all_shapes,
|
|
lambda shape: shape.id_.startswith("japan"),
|
|
Path("doc/icons_japanese.svg"),
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
draw_special_grids()
|