drop suppoprt for svg output
This commit is contained in:
parent
4a0de2a13d
commit
37e9dcc1f6
5 changed files with 10 additions and 19 deletions
|
@ -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
|
||||
|
||||
|
|
|
@ -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'')
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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'),
|
||||
]
|
||||
|
|
|
@ -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'
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue