Merge branch 'upstream_dev_render_overlay' into upstream_dev_markdown

upstream_dev_markdown
Hartmut Holzgraefe 2016-05-09 16:24:11 +02:00
commit cd0709729a
3 zmienionych plików z 40 dodań i 0 usunięć

Wyświetl plik

@ -111,6 +111,7 @@ class RenderingConfiguration:
self.language = None # str (locale)
self.stylesheet = None # Obj Stylesheet
self.overlay = None # Obj Stylesheet
self.paper_width_mm = None
self.paper_height_mm = None

Wyświetl plik

@ -41,6 +41,7 @@ from ocitysmap.indexlib.renderer import StreetIndexRenderer
from indexlib.indexer import StreetIndex
from indexlib.commons import IndexDoesNotFitError, IndexEmptyError
import draw_utils
from ocitysmap.maplib.map_canvas import MapCanvas
LOG = logging.getLogger('ocitysmap')
@ -145,6 +146,14 @@ class SinglePageRenderer(Renderer):
rc.osmid is not None
)
# Prepare map overlay
if self.rc.overlay:
self._overlay_canvas = MapCanvas(self.rc.overlay,
self.rc.bounding_box,
float(self._map_coords[2]), # W
float(self._map_coords[3]), # H
dpi)
# Prepare the grid
self.grid = self._create_grid(self._map_canvas)
@ -159,6 +168,11 @@ class SinglePageRenderer(Renderer):
# Commit the internal rendering stack of the map
self._map_canvas.render()
if self.rc.overlay:
self._overlay_canvas.render()
def _create_index_rendering(self, on_the_side):
"""
@ -404,11 +418,20 @@ class SinglePageRenderer(Renderer):
# Draw the rescaled Map
ctx.save()
rendered_map = self._map_canvas.get_rendered_map()
LOG.debug('Map:')
LOG.debug('Mapnik scale: 1/%f' % rendered_map.scale_denominator())
LOG.debug('Actual scale: 1/%f' % self._map_canvas.get_actual_scale())
mapnik.render(rendered_map, ctx)
ctx.restore()
# Draw the rescaled Overlay
if self.rc.overlay:
ctx.save()
rendered_overlay = self._overlay_canvas.get_rendered_map()
LOG.debug('Overlay:')
mapnik.render(rendered_overlay, ctx)
ctx.restore()
# Draw a rectangle around the map
ctx.rectangle(0, 0, map_coords_dots[2], map_coords_dots[3])
ctx.stroke()

Wyświetl plik

@ -83,6 +83,10 @@ def main():
metavar='NAME',
help='specify which stylesheet to use. Defaults to the '
'first specified in the configuration file.')
parser.add_option('--overlay', dest='overlay',
metavar='NAME',
help='specify which overlay stylesheet to use. '
'Defaults to none')
parser.add_option('-l', '--layout', dest='layout',
metavar='NAME',
default=KNOWN_RENDERERS_NAMES[0].split()[0],
@ -156,6 +160,17 @@ def main():
% (ex, ', '.join(map(lambda s: s.name,
mapper.STYLESHEET_REGISTRY))))
# Parse overlay stylesheet (defaults to none)
if options.overlay is None:
overlay = None
else:
try:
overlay = mapper.get_stylesheet_by_name(options.overlay)
except LookupError, ex:
parser.error("%s. Available stylesheets: %s."
% (ex, ', '.join(map(lambda s: s.name,
mapper.STYLESHEET_REGISTRY))))
# Parse rendering layout
if options.layout is None:
cls_renderer = ocitysmap.layoutlib.renderers.get_renderers()[0]
@ -226,6 +241,7 @@ def main():
rc.bounding_box = bbox
rc.language = options.language
rc.stylesheet = stylesheet
rc.overlay = overlay
if options.orientation == 'portrait':
rc.paper_width_mm = paper_descr[1]
rc.paper_height_mm = paper_descr[2]