From 01e6674cd01dcf36abd9b5980a8d2dcc343b9a22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Sun, 4 Dec 2016 13:47:36 +0100 Subject: [PATCH] rendermap: add --show-accessibles --- .../mapdata/management/commands/rendermap.py | 6 +++++- src/c3nav/mapdata/render/__init__.py | 4 ++-- src/c3nav/mapdata/render/renderer.py | 19 ++++++++++++++++++- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/c3nav/mapdata/management/commands/rendermap.py b/src/c3nav/mapdata/management/commands/rendermap.py index 3b365add..3483bced 100644 --- a/src/c3nav/mapdata/management/commands/rendermap.py +++ b/src/c3nav/mapdata/management/commands/rendermap.py @@ -6,5 +6,9 @@ from c3nav.mapdata.render import render_all_levels class Command(BaseCommand): help = 'render the map' + def add_arguments(self, parser): + parser.add_argument('--show-accessibles', action='store_const', const=True, default=False, + help='highlight graph building areas (for debugging, but it looks nice, too)') + def handle(self, *args, **options): - render_all_levels() + render_all_levels(show_accessibles=options['show_accessibles']) diff --git a/src/c3nav/mapdata/render/__init__.py b/src/c3nav/mapdata/render/__init__.py index e0cdc89a..fcc3393a 100644 --- a/src/c3nav/mapdata/render/__init__.py +++ b/src/c3nav/mapdata/render/__init__.py @@ -2,13 +2,13 @@ from c3nav.mapdata.models import Level from c3nav.mapdata.render.renderer import LevelRenderer, get_render_path # noqa -def render_all_levels(): +def render_all_levels(show_accessibles=False): renderers = [] for level in Level.objects.all().order_by('altitude'): renderers.append(LevelRenderer(level)) for renderer in renderers: - renderer.render_base() + renderer.render_base(show_accessibles=show_accessibles) for renderer in renderers: if not renderer.level.intermediate: diff --git a/src/c3nav/mapdata/render/renderer.py b/src/c3nav/mapdata/render/renderer.py index fc680148..dec3ff15 100644 --- a/src/c3nav/mapdata/render/renderer.py +++ b/src/c3nav/mapdata/render/renderer.py @@ -91,7 +91,7 @@ class LevelRenderer(): }) svg.append(contents) - def render_base(self, png=True): + def render_base(self, png=True, show_accessibles=False): svg = self.create_svg() contents = self.add_svg_content(svg) @@ -111,6 +111,23 @@ class LevelRenderer(): fill_color='#000000', fill_opacity=0.06)) + if show_accessibles: + main_geometry = self.level.geometries.accessible.buffer(-0.6, join_style=JOIN_STYLE.mitre) + clear_geometry = self.level.geometries.accessible.buffer(-0.3, join_style=JOIN_STYLE.mitre) + missing_geometry = clear_geometry.difference(main_geometry.buffer(0.31, join_style=JOIN_STYLE.mitre)) + + contents.append(self.polygon_svg(clear_geometry, + fill_color='#FFFF00', + fill_opacity=0.5)) + + contents.append(self.polygon_svg(main_geometry, + fill_color='#009900', + fill_opacity=0.5)) + + contents.append(self.polygon_svg(missing_geometry, + fill_color='#FF9900', + fill_opacity=0.5)) + contents.append(self.polygon_svg(self.level.geometries.elevatorlevels, fill_color='#9EF8FB'))