From 3b6a55dda7fa47be286bc68c3d416f2a311d8545 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Sun, 19 Nov 2017 20:04:58 +0100 Subject: [PATCH] outsource this duplicate code --- src/c3nav/mapdata/render/data.py | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/c3nav/mapdata/render/data.py b/src/c3nav/mapdata/render/data.py index a3572252..e25873a1 100644 --- a/src/c3nav/mapdata/render/data.py +++ b/src/c3nav/mapdata/render/data.py @@ -153,27 +153,27 @@ class AltitudeAreaGeometries: for color, areas in self.colors.items(): for key in tuple(areas.keys()): - geom = areas[key] - new_geom, new_vertices, new_faces = HybridGeometry.create_full(geom, vertices_offset, faces_offset) - areas[key] = new_geom - vertices_offset += new_vertices.shape[0] - faces_offset += new_faces.shape[0] - vertices.append(new_vertices) - faces.append(new_faces) + faces_offset, vertices_offset = self._call_create_full(areas, key, faces, vertices, + faces_offset, vertices_offset) for key in tuple(self.obstacles.keys()): - geom = self.obstacles[key] - new_geom, new_vertices, new_faces = HybridGeometry.create_full(geom, vertices_offset, faces_offset) - self.obstacles[key] = new_geom - vertices_offset += new_vertices.shape[0] - faces_offset += new_faces.shape[0] - vertices.append(new_vertices) - faces.append(new_faces) + faces_offset, vertices_offset = self._call_create_full(self.obstacles, key, faces, vertices, + faces_offset, vertices_offset) if not vertices: return np.empty((0, 2), dtype=np.int32), np.empty((0, 3), dtype=np.uint32) return np.vstack(vertices), np.vstack(faces) + def _call_create_full(self, mapping, key, faces, vertices, faces_offset, vertices_offset): + geom = mapping[key] + new_geom, new_vertices, new_faces = HybridGeometry.create_full(geom, vertices_offset, faces_offset) + mapping[key] = new_geom + vertices_offset += new_vertices.shape[0] + faces_offset += new_faces.shape[0] + vertices.append(new_vertices) + faces.append(new_faces) + return faces_offset, vertices_offset + def remove_faces(self, faces): self.geometry.remove_faces(faces) for areas in self.colors.values():