/[thuban]/branches/WIP-pyshapelib-bramz/Thuban/UI/scalebar.py
ViewVC logotype

Contents of /branches/WIP-pyshapelib-bramz/Thuban/UI/scalebar.py

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2734 - (show annotations)
Thu Mar 1 12:42:59 2007 UTC (18 years ago) by bramz
File MIME type: text/x-python
File size: 2441 byte(s)
made a copy
1 # Copyright (c) 2001, 2002 by Intevation GmbH
2 # Authors:
3 # Frank Koormann <[email protected]>
4 #
5 # This program is free software under the GPL (>=v2)
6 # Read the file COPYING coming with Thuban for details.
7
8 __version__ = "$Revision$"
9
10 from Thuban import _
11 from Thuban.Model.scalebar import deriveInterval, roundInterval
12 from Thuban.Model.proj import PROJ_UNITS_METERS
13
14 import wx
15
16 class ScaleBar:
17
18 def __init__(self, map):
19 self.map = map
20
21 def DrawScaleBar(self, scale, dc, position, size):
22 """Draw a scalebar on a given DC"""
23
24 # Only draw a legend if the corresponding map has a layer
25 if self.map is not None \
26 and self.map.projection is not None \
27 and len(self.map.layers) > 0 \
28 and scale > 0.0:
29
30 # We have a projection, draw the scalebar in bw
31 BlackPen = wx.BLACK_PEN
32 BlackBrush = wx.BLACK_BRUSH
33 BlackText = wx.BLACK
34
35 # Get the dimension
36 width, height = size
37 posx, posy = position
38 l1width, l1height = dc.GetTextExtent("%d"%0)
39
40 # Make a first guess for the interval (to get the size we have
41 # to reserve for the labels)
42 interval, unit = deriveInterval(width, scale)
43 l2width, l2height = dc.GetTextExtent("%d %s"%(interval,unit))
44 width = width - 4.0 - l1width/2.0 -l2width/2.0
45
46 # Having precised the width now the final interval can be calculated
47 interval, unit = deriveInterval(width, scale)
48 interval, label = roundInterval(interval)
49
50 if interval > 0.0:
51 # We draw 2 rectangles with half the width
52 if unit == 'km':
53 width = int(interval*1000.0*scale/2)
54 else:
55 width = int(interval*scale/2)
56
57 dc.SetPen(BlackPen)
58
59 brush = wx.Brush(wx.WHITE, wx.SOLID)
60 dc.SetBrush(brush)
61 dc.DrawRectangle(posx+4,posy+2,width,8)
62
63 dc.SetBrush(BlackBrush)
64 dc.DrawRectangle(posx+width+4,posy+2,width,8)
65
66 dc.SetTextForeground(BlackText)
67 dc.DrawText("%d"%0, posx+ 4 - l1width/2, posy+12)
68
69 l2width, l2height = dc.GetTextExtent("%s %s"%(label, unit))
70 dc.DrawText("%s %s"%(interval, unit), posx+ 2*width+4 - l2width/2, posy + 12)
71

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26