Porównaj commity

...

3 Commity

Autor SHA1 Wiadomość Data
Hartmut Holzgraefe 92ed053487 add status message for output file writing/finishing
this can take significant amounts of time, too
2023-10-02 21:11:48 +00:00
Hartmut Holzgraefe fd2fe3aa85 make status updates more consistent 2023-09-30 22:06:10 +00:00
Hartmut Holzgraefe 6cc9b85793 render into temporary files at first, rename when complete 2023-09-30 21:50:29 +00:00
2 zmienionych plików z 18 dodań i 9 usunięć

Wyświetl plik

@ -832,6 +832,7 @@ class OCitySMap:
-------
void
"""
tmp_output_filename = output_filename + ".tmp"
config.output_format = output_format.upper()
LOG.debug('Rendering to %s format...' % config.output_format)
config.status_update(_("Rendering %s") % config.output_format)
@ -872,15 +873,15 @@ class OCitySMap:
surface = cairo.PDFSurface(None, w_px, h_px)
elif output_format == 'svg':
surface = cairo.SVGSurface(output_filename,
surface = cairo.SVGSurface(tmp_output_filename,
renderer.paper_width_pt, renderer.paper_height_pt)
surface.restrict_to_version(cairo.SVGVersion.VERSION_1_2);
elif output_format == 'svgz':
surface = cairo.SVGSurface(gzip.GzipFile(output_filename, 'wb'),
surface = cairo.SVGSurface(gzip.GzipFile(tmp_output_filename, 'wb'),
renderer.paper_width_pt, renderer.paper_height_pt)
surface.restrict_to_version(cairo.SVGVersion.VERSION_1_2);
elif output_format == 'pdf':
surface = cairo.PDFSurface(output_filename,
surface = cairo.PDFSurface(tmp_output_filename,
renderer.paper_width_pt, renderer.paper_height_pt)
surface.restrict_to_version(cairo.PDFVersion.VERSION_1_5);
@ -904,10 +905,10 @@ class OCitySMap:
LOG.warning("Installed Cairo version does not support PDF annotations yet")
elif output_format == 'ps':
surface = cairo.PSSurface(output_filename,
surface = cairo.PSSurface(tmp_output_filename,
renderer.paper_width_pt, renderer.paper_height_pt)
elif output_format == 'ps.gz':
surface = cairo.PSSurface(gzip.GzipFile(output_filename, 'wb'),
surface = cairo.PSSurface(gzip.GzipFile(tmp_output_filename, 'wb'),
renderer.paper_width_pt, renderer.paper_height_pt)
elif output_format == 'csv':
# We don't render maps into CSV.
@ -920,11 +921,15 @@ class OCitySMap:
LOG.debug('Writing %s...' % output_filename)
config.status_update(_("%s: writing output file") % output_format.upper())
if output_format == 'png':
surface.write_to_png(output_filename)
surface.write_to_png(tmp_output_filename)
surface.finish()
os.rename(tmp_output_filename, output_filename)
if __name__ == '__main__':
logging.basicConfig(level=logging.DEBUG)

Wyświetl plik

@ -362,8 +362,6 @@ class MultiPageRenderer(Renderer):
self.overview_overlay_effects = {}
for overlay in self._overlays:
self.rc.status_update(_("Preparing overview page: %s") % overlay.name)
path = overlay.path.strip()
if path.startswith('internal:'):
plugin_name = path.lstrip('internal:')
@ -375,6 +373,7 @@ class MultiPageRenderer(Renderer):
else:
self.overview_overlay_effects[plugin_name] = self.get_plugin(plugin_name)
else:
self.rc.status_update(_("Preparing overview page: %s") % overlay.name)
ov_canvas = MapCanvas(overlay,
overview_bb,
self._usable_area_width_pt,
@ -1129,7 +1128,7 @@ class MultiPageRenderer(Renderer):
self._render_overview_page(ctx, cairo_surface, dpi)
for map_number, (canvas, grid, overlay_canvases, overlay_effects) in enumerate(self.pages):
self.rc.status_update(_("Rendering map page %(page)d of %(total)d: base map")
self.rc.status_update(_("Rendering map page %(page)d of %(total)d")
% { 'page': map_number + 1,
'total': len(self.pages),
})
@ -1147,6 +1146,11 @@ class MultiPageRenderer(Renderer):
dest_tag = "mypage%d" % (map_number + self._first_map_page_number)
draw_utils.anchor(ctx, dest_tag)
self.rc.status_update(_("Rendering map page %(page)d of %(total)d: base map")
% { 'page': map_number + 1,
'total': len(self.pages),
})
mapnik.render(rendered_map, ctx)
for overlay_canvas in overlay_canvases: