From 6e1c33e59ab2f3db2ff0034e2ddddb0edb01ee5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Sun, 4 Dec 2016 18:14:36 +0100 Subject: [PATCH] rendermap: add hole shadows --- src/c3nav/mapdata/models/level.py | 9 +++++++++ src/c3nav/mapdata/render/renderer.py | 7 ++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/c3nav/mapdata/models/level.py b/src/c3nav/mapdata/models/level.py index 41a307c9..bc50b71d 100644 --- a/src/c3nav/mapdata/models/level.py +++ b/src/c3nav/mapdata/models/level.py @@ -176,3 +176,12 @@ class LevelGeometries(): if to_level is not None: shadows = shadows.intersection(to_level.geometries.accessible) return shadows + + def hole_shadows(self): + holes = self.holes.buffer(0.1, join_style=JOIN_STYLE.mitre) + shadows = holes.difference(self.holes.buffer(-0.3, join_style=JOIN_STYLE.mitre)) + qs = self.level.levelconnectors.prefetch_related('levels').filter(levels__altitude__lt=self.level.altitude) + print(self.level.name, qs) + connectors = cascaded_union([levelconnector.geometry for levelconnector in qs]) + shadows = shadows.difference(connectors.buffer(0.3, join_style=JOIN_STYLE.mitre)) + return shadows diff --git a/src/c3nav/mapdata/render/renderer.py b/src/c3nav/mapdata/render/renderer.py index ca29a6e6..ae36cc17 100644 --- a/src/c3nav/mapdata/render/renderer.py +++ b/src/c3nav/mapdata/render/renderer.py @@ -172,6 +172,11 @@ class LevelRenderer(): for level in lower: self.add_svg_image(svg, 'file://'+get_render_path('level-%s.base.png' % level.name)) + contents = self.add_svg_content(svg) + contents.append(self.polygon_svg(self.level.geometries.hole_shadows(), + fill_color='#000000', + fill_opacity=0.1)) + filename = get_render_path('level-%s.simple.svg' % self.level.name) with open(filename, 'w') as f: f.write(ET.tostring(svg).decode()) @@ -195,7 +200,7 @@ class LevelRenderer(): for level in higher: contents.append(self.polygon_svg(level.geometries.intermediate_shadows(to_level=self.level), fill_color='#000000', - fill_opacity=0.05)) + fill_opacity=0.1)) for level in higher: self.add_svg_image(svg, 'file://'+get_render_path('level-%s.base.png' % level.name))