drop suppoprt for svg output

This commit is contained in:
Laura Klünder 2017-11-09 17:42:19 +01:00
parent 4a0de2a13d
commit 37e9dcc1f6
5 changed files with 10 additions and 19 deletions

View file

@ -48,7 +48,7 @@ class RenderEngine(ABC):
self.background_rgb = tuple(int(background[i:i + 2], 16)/255 for i in range(1, 6, 2))
@abstractmethod
def get_png(self) -> bytes:
def render(self) -> bytes:
# render the image to png.
pass

View file

@ -173,7 +173,7 @@ class OpenGLEngine(Base3DEngine):
worker = OpenGLWorker()
def get_png(self) -> bytes:
def render(self) -> bytes:
return self.worker.render(self.width, self.height, self.background_rgb,
np.hstack(self.vertices).astype(np.float32).tobytes() if self.vertices else b'')

View file

@ -81,7 +81,7 @@ class SVGEngine(RenderEngine):
result += '</svg>'
return result
def get_png(self):
def render(self):
# render the image to png. returns bytes if f is None, otherwise it calls f.write()
if self.width == 256 and self.height == 256 and not self.g:

View file

@ -3,7 +3,7 @@ from django.conf.urls import url
from c3nav.mapdata.views import history, tile, tile_access
urlpatterns = [
url(r'^(?P<level>\d+)/(?P<zoom>\d+)/(?P<x>-?\d+)/(?P<y>-?\d+).(?P<format>png|svg)$', tile, name='mapdata.tile'),
url(r'^(?P<level>\d+)/(?P<zoom>\d+)/(?P<x>-?\d+)/(?P<y>-?\d+).png$', tile, name='mapdata.tile'),
url(r'^history/(?P<level>\d+)/(?P<mode>base|render).(?P<format>png|data)$', history, name='mapdata.history'),
url(r'^tile_access$', tile_access, name='mapdata.tile_access'),
]

View file

@ -19,7 +19,7 @@ from c3nav.mapdata.render.engines import ImageRenderEngine
@no_language()
def tile(request, level, zoom, x, y, format):
def tile(request, level, zoom, x, y):
zoom = int(zoom)
if not (0 <= zoom <= 10):
raise Http404
@ -70,7 +70,7 @@ def tile(request, level, zoom, x, y, format):
if settings.CACHE_TILES:
tile_dirname = os.path.sep.join((settings.TILES_ROOT, str(level), str(zoom), str(x), str(y)))
last_update_filename = os.path.join(tile_dirname, 'last_update')
tile_filename = os.path.join(tile_dirname, renderer.access_cache_key+'.'+format)
tile_filename = os.path.join(tile_dirname, renderer.access_cache_key+'.png')
# get tile cache last update
tile_cache_update_cache_key = 'mapdata:tile-cache-update:%d-%d-%d-%d' % (level, zoom, x, y)
@ -91,28 +91,19 @@ def tile(request, level, zoom, x, y, format):
except FileNotFoundError:
pass
content_type = 'image/svg+xml' if format == 'svg' else 'image/png'
if data is None:
svg = renderer.render(ImageRenderEngine)
if format == 'svg':
data = svg.get_xml()
filemode = 'w'
elif format == 'png':
data = svg.get_png()
filemode = 'wb'
else:
raise ValueError
image = renderer.render(ImageRenderEngine)
data = image.render()
if settings.CACHE_TILES:
os.makedirs(tile_dirname, exist_ok=True)
with open(tile_filename, filemode) as f:
with open(tile_filename, 'wb') as f:
f.write(data)
with open(last_update_filename, 'w') as f:
f.write(update_cache_key)
cache.get(tile_cache_update_cache_key, update_cache_key, 60)
response = HttpResponse(data, content_type)
response = HttpResponse(data, 'image/png')
response['ETag'] = etag
response['Cache-Control'] = 'no-cache'
response['Vary'] = 'Cookie'