maposmatic-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Maposmatic-dev] [PATCH 21/22] MultiPageStreetIndexRenderer: automatical


From: Thomas Petazzoni
Subject: [Maposmatic-dev] [PATCH 21/22] MultiPageStreetIndexRenderer: automatically compute the number of columns
Date: Fri, 30 Mar 2012 13:00:38 +0200

Signed-off-by: Thomas Petazzoni <address@hidden>
---
 ocitysmap2/indexlib/multi_page_renderer.py |   18 ++++++++++++++----
 1 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/ocitysmap2/indexlib/multi_page_renderer.py 
b/ocitysmap2/indexlib/multi_page_renderer.py
index 004249c..97a6f83 100644
--- a/ocitysmap2/indexlib/multi_page_renderer.py
+++ b/ocitysmap2/indexlib/multi_page_renderer.py
@@ -79,9 +79,19 @@ class MultiPageStreetIndexRenderer:
 
         margin = label_em
 
+        max_drawing_width = 0
+        for category in self.index_categories:
+            for street in category.items:
+                w = street.min_drawing_width(label_layout, label_em)
+                if w > max_drawing_width:
+                    max_drawing_width = w
+
+        columns_count = int(self.rendering_area_w / max_drawing_width)
+        if columns_count == 0:
+            columns_count = 1
+
         # We have three columns
-        COLUMNS_COUNT = 3
-        column_width = self.rendering_area_w / COLUMNS_COUNT
+        column_width = self.rendering_area_w / columns_count
 
         label_layout.set_width(int(UTILS.convert_pt_to_dots(
                     (column_width - margin) * pango.SCALE, dpi)))
@@ -105,7 +115,7 @@ class MultiPageStreetIndexRenderer:
                 offset_x      += delta_x
                 actual_n_cols += 1
 
-                if actual_n_cols == COLUMNS_COUNT:
+                if actual_n_cols == columns_count:
                     actual_n_cols = 0
                     offset_y = margin / 2.
                     offset_x = orig_offset_x
@@ -130,7 +140,7 @@ class MultiPageStreetIndexRenderer:
                     offset_x      += delta_x
                     actual_n_cols += 1
 
-                    if actual_n_cols == COLUMNS_COUNT:
+                    if actual_n_cols == columns_count:
                         actual_n_cols = 0
                         offset_y = margin / 2.
                         offset_x = orig_offset_x
-- 
1.7.4.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]