From 0e10eeabb81c8c7456e0467cbaf4f3127438030c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Thu, 19 Oct 2017 11:36:53 +0200 Subject: [PATCH] draw correct altitude-based shadows --- src/c3nav/mapdata/utils/svg.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/c3nav/mapdata/utils/svg.py b/src/c3nav/mapdata/utils/svg.py index a1d6af7b..fed7e3b7 100644 --- a/src/c3nav/mapdata/utils/svg.py +++ b/src/c3nav/mapdata/utils/svg.py @@ -206,10 +206,17 @@ class SVGImage: return if altitude is not None or elevation is not None: - elevation = float(1 if elevation is None else elevation) - if elevation: - shadow = self.get_shadow(geometry, elevation) - self.g.append(shadow) + if elevation is not None: + elevation = float(1 if elevation is None else elevation) + if elevation: + shadow = self.get_shadow(geometry, elevation) + self.g.append(shadow) + else: + for other_altitude, other_geom in self.altitudes.items(): + shadow_clip = self.register_geometry(other_geom, as_clip_path=True) + shadow = self.get_shadow(geometry, altitude-other_altitude) + shadow.set('clip-path', 'url(#'+shadow_clip+')') + self.g.append(shadow) self.clip_altitudes(geometry, altitude)