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))