[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Maposmatic-dev] [PATCH] Propose a default amongst compatible paper size
From: |
gael . utard |
Subject: |
[Maposmatic-dev] [PATCH] Propose a default amongst compatible paper sizes |
Date: |
Sat, 31 Mar 2012 23:55:25 +0200 |
From: Gael UTARD <address@hidden>
Signed-off-by: Gael UTARD <address@hidden>
---
ocitysmap2-render | 24 +++++++++++-------------
ocitysmap2/layoutlib/abstract_renderer.py | 4 ++--
ocitysmap2/layoutlib/multi_page_renderer.py | 3 ++-
ocitysmap2/layoutlib/single_page_renderers.py | 14 +++++++++-----
4 files changed, 24 insertions(+), 21 deletions(-)
diff --git a/ocitysmap2-render b/ocitysmap2-render
index 4961c8c..8f34d6a 100755
--- a/ocitysmap2-render
+++ b/ocitysmap2-render
@@ -88,10 +88,9 @@ def main():
% (', '.join(KNOWN_RENDERERS_NAMES),
KNOWN_RENDERERS_NAMES[0].split()[0])))
parser.add_option('--paper-format', metavar='FMT',
- help='Either "first" for the first allowed (default), '
- 'or one of %s.'\
+ help='Either "default", or one of %s.'\
% ', '.join(KNOWN_PAPER_SIZE_NAMES),
- default='first')
+ default='default')
parser.add_option('--orientation', metavar='ORIENTATION',
help='Either "portrait" or "landscape".',
default='portrait')
@@ -173,24 +172,23 @@ def main():
(format, cls_renderer.name))
# Parse paper size
- if (options.paper_format != 'first') \
+ if (options.paper_format != 'default') \
and options.paper_format not in KNOWN_PAPER_SIZE_NAMES:
- parser.error("Invalid paper format. Allowed formats = first, %s"
+ parser.error("Invalid paper format. Allowed formats = default, %s"
% ', '.join(KNOWN_PAPER_SIZE_NAMES))
# Determine actual paper size
- compat_papers = sorted(cls_renderer.get_compatible_paper_sizes(bbox,
- stylesheet.zoom_level),
- key = lambda p: p[1])
+ compat_papers = cls_renderer.get_compatible_paper_sizes(bbox,
+ stylesheet.zoom_level)
if not compat_papers:
parser.error("No paper size compatible with this rendering.")
paper_descr = None
- if options.paper_format == 'first':
- if len(compat_papers) > 1:
- paper_descr = compat_papers[1] # First non-Best-fit
- else:
- paper_descr = compat_papers[0] # Best Fit
+ if options.paper_format == 'default':
+ for p in compat_papers:
+ if p[5]:
+ paper_descr = p
+ break
else:
# Make sure the requested paper size is in list
for p in compat_papers:
diff --git a/ocitysmap2/layoutlib/abstract_renderer.py
b/ocitysmap2/layoutlib/abstract_renderer.py
index 11aed7d..3811b5a 100644
--- a/ocitysmap2/layoutlib/abstract_renderer.py
+++ b/ocitysmap2/layoutlib/abstract_renderer.py
@@ -313,7 +313,7 @@ class Renderer:
milimeters on the rendered map.
Returns a list of tuples (paper name, width in mm, height in
- mm, portrait_ok, landscape_ok). Paper sizes are represented in
- portrait mode.
+ mm, portrait_ok, landscape_ok, is_default). Paper sizes are
+ represented in portrait mode.
"""
raise NotImplementedError
diff --git a/ocitysmap2/layoutlib/multi_page_renderer.py
b/ocitysmap2/layoutlib/multi_page_renderer.py
index f66ba94..6df10f8 100644
--- a/ocitysmap2/layoutlib/multi_page_renderer.py
+++ b/ocitysmap2/layoutlib/multi_page_renderer.py
@@ -763,6 +763,7 @@ class MultiPageRenderer(Renderer):
# In multi-page mode, we only accept A4, A5 and US letter as paper
# sizes. The goal is to render booklets, not posters.
+ # The default paper size is A4 portrait
@staticmethod
def get_compatible_paper_sizes(bounding_box, zoom_level,
resolution_km_in_mm=Renderer.DEFAULT_KM_IN_MM,
@@ -773,7 +774,7 @@ class MultiPageRenderer(Renderer):
# Skip unsupported paper formats
if sz[0] not in acceptable_formats:
continue
- valid_sizes.append((sz[0], sz[1], sz[2], True, True))
+ valid_sizes.append((sz[0], sz[1], sz[2], True, True, sz[0] ==
'A4'))
return valid_sizes
@classmethod
diff --git a/ocitysmap2/layoutlib/single_page_renderers.py
b/ocitysmap2/layoutlib/single_page_renderers.py
index 0ac066c..4a564ba 100644
--- a/ocitysmap2/layoutlib/single_page_renderers.py
+++ b/ocitysmap2/layoutlib/single_page_renderers.py
@@ -448,8 +448,8 @@ class SinglePageRenderer(Renderer):
'bottom' (index at bottom).
Returns a list of tuples (paper name, width in mm, height in
- mm, portrait_ok, landscape_ok). Paper sizes are represented in
- portrait mode.
+ mm, portrait_ok, landscape_ok, is_default). Paper sizes are
+ represented in portrait mode.
"""
geo_height_m, geo_width_m = bounding_box.spheric_sizes()
paper_width_mm = int(geo_width_m/1000.0 * resolution_km_in_mm)
@@ -479,15 +479,19 @@ class SinglePageRenderer(Renderer):
landscape_ok = paper_width_mm <= h and paper_height_mm <= w
if portrait_ok or landscape_ok:
- valid_sizes.append((name, w, h, portrait_ok, landscape_ok))
+ valid_sizes.append([name, w, h, portrait_ok, landscape_ok,
False])
# Add a 'Custom' paper format to the list that perfectly matches the
# bounding box.
- valid_sizes.append(('Best fit',
+ valid_sizes.append(['Best fit',
min(paper_width_mm, paper_height_mm),
max(paper_width_mm, paper_height_mm),
paper_width_mm < paper_height_mm,
- paper_width_mm > paper_height_mm))
+ paper_width_mm > paper_height_mm,
+ False])
+
+ # select the first one as default
+ valid_sizes[0][5] = True
return valid_sizes
--
1.7.5.4
- [Maposmatic-dev] [PATCH] Propose a default amongst compatible paper sizes,
gael . utard <=