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

Diff of /branches/WIP-pyshapelib-bramz/Thuban/UI/renderer.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 148 by bh, Tue May 7 16:40:29 2002 UTC revision 416 by jonathan, Wed Feb 19 16:53:08 2003 UTC
# Line 1  Line 1 
1  # Copyright (c) 2001, 2002 by Intevation GmbH  # Copyright (c) 2001, 2002 by Intevation GmbH
2  # Authors:  # Authors:
3  # Bernhard Herzog <[email protected]>  # Bernhard Herzog <[email protected]>
4    # Jonathan Coles <[email protected]>
5  #  #
6  # This program is free software under the GPL (>=v2)  # This program is free software under the GPL (>=v2)
7  # Read the file COPYING coming with Thuban for details.  # Read the file COPYING coming with Thuban for details.
# Line 13  from wxPython.wx import wxPoint, wxColou Line 14  from wxPython.wx import wxPoint, wxColou
14    
15  from wxproj import draw_polygon_shape  from wxproj import draw_polygon_shape
16    
17    from Thuban import _
18    
19  from Thuban.Model.layer import SHAPETYPE_POLYGON, SHAPETYPE_ARC, \  from Thuban.Model.layer import SHAPETYPE_POLYGON, SHAPETYPE_ARC, \
20       SHAPETYPE_POINT       SHAPETYPE_POINT
21  from Thuban.Model.label import ALIGN_CENTER, ALIGN_TOP, ALIGN_BOTTOM, \  from Thuban.Model.label import ALIGN_CENTER, ALIGN_TOP, ALIGN_BOTTOM, \
22       ALIGN_LEFT, ALIGN_RIGHT, ALIGN_BASELINE       ALIGN_LEFT, ALIGN_RIGHT, ALIGN_BASELINE
23    
24    from Thuban.Model.classification import Classification
25    from Thuban.Model.color import Color
26    
27    
28  class MapRenderer:  class MapRenderer:
29    
# Line 63  class MapRenderer: Line 69  class MapRenderer:
69          scale = self.scale          scale = self.scale
70          offx, offy = self.offset          offx, offy = self.offset
71    
         fill = layer.fill  
         if fill is None:  
             brush = wxTRANSPARENT_BRUSH  
         else:  
             color = wxColour(fill.red * 255,  
                              fill.green * 255,  
                              fill.blue * 255)  
             brush = wxBrush(color, wxSOLID)  
         stroke = layer.stroke  
         stroke_width = layer.stroke_width  
         if stroke is None:  
             pen = wxTRANSPARENT_PEN  
         else:  
             color = wxColour(stroke.red * 255,  
                              stroke.green * 255,  
                              stroke.blue * 255)  
             pen = wxPen(color, stroke_width, wxSOLID)  
   
72          map_proj = self.map.projection          map_proj = self.map.projection
73          layer_proj = layer.projection          layer_proj = layer.projection
74    
75          shapetype = layer.ShapeType()          shapetype = layer.ShapeType()
76    
77          if shapetype == SHAPETYPE_POLYGON:          brush = wxTRANSPARENT_BRUSH
78              for i in self.layer_ids(layer):          pen   = wxTRANSPARENT_PEN
79    
80            old_prop = None
81            for i in self.layer_ids(layer):
82                value = None
83                shape = layer.Shape(i)
84                lc = layer.GetClassification()
85                field = lc.field
86    
87                if field is not None:
88                    record = layer.table.read_record(i)
89                    if record is not None:
90                        value = record[field]
91    
92                #
93                # if the above statements fail 'value' should
94                # be null, at which point this call will
95                # at least retreive the NullData
96                #
97                prop = lc.GetProperties(value)
98    
99                if prop != old_prop:
100                    old_prop = prop
101    
102                    if shapetype == SHAPETYPE_ARC:
103                        fill = Color.None
104                    else:
105                        fill = prop.GetFill()
106        
107                    if fill is Color.None:
108                        brush = wxTRANSPARENT_BRUSH
109                    else:
110                        color = wxColour(fill.red * 255,
111                                         fill.green * 255,
112                                         fill.blue * 255)
113                        brush = wxBrush(color, wxSOLID)
114        
115                    stroke = prop.GetStroke()
116                    stroke_width = prop.GetStrokeWidth()
117                    if stroke is Color.None:
118                        pen = wxTRANSPARENT_PEN
119                    else:
120                        color = wxColour(stroke.red * 255,
121                                         stroke.green * 255,
122                                         stroke.blue * 255)
123                        pen = wxPen(color, stroke_width, wxSOLID)
124        
125                if shapetype == SHAPETYPE_POINT:
126                    self.dc.SetBrush(brush)
127                    self.dc.SetPen(pen)
128                    self.draw_point_shape(layer, i)
129                else:
130                  self.draw_polygon_shape(layer, i, pen, brush)                  self.draw_polygon_shape(layer, i, pen, brush)
         elif shapetype == SHAPETYPE_ARC:  
             for i in self.layer_ids(layer):  
                 self.draw_polygon_shape(layer, i, pen, None)  
         else:  
             self.dc.SetBrush(brush)  
             self.dc.SetPen(pen)  
             if shapetype == SHAPETYPE_ARC:  
                 f = self.draw_arc_shape  
             elif shapetype == SHAPETYPE_POINT:  
                 f = self.draw_point_shape  
             for i in self.layer_ids(layer):  
                 f(layer, i)  
131    
132      def layer_ids(self, layer):      def layer_ids(self, layer):
133          """Return the shape ids of the given layer that have to be drawn.          """Return the shape ids of the given layer that have to be drawn.
# Line 216  class ScreenRenderer(MapRenderer): Line 243  class ScreenRenderer(MapRenderer):
243              index = self.selected_shape              index = self.selected_shape
244              if shapetype == SHAPETYPE_POLYGON:              if shapetype == SHAPETYPE_POLYGON:
245                  self.draw_polygon_shape(layer, index, pen, brush)                  self.draw_polygon_shape(layer, index, pen, brush)
246                elif shapetype == SHAPETYPE_ARC:
247                    self.draw_polygon_shape(layer, index, pen, None)
248              else:              else:
249                  self.dc.SetBrush(brush)                  self.dc.SetBrush(brush)
250                  self.dc.SetPen(pen)                  self.dc.SetPen(pen)
251                  if shapetype == SHAPETYPE_ARC:                  if shapetype == SHAPETYPE_POINT:
252                      f = self.draw_arc_shape                      self.draw_point_shape(layer, index)
253                  elif shapetype == SHAPETYPE_POINT:                  else:
254                      f = self.draw_point_shape                      raise TypeError(_("Unhandled shape type %s") % shapetype)
                 f(layer, index)  
255    
256      def layer_ids(self, layer):      def layer_ids(self, layer):
257          """Return the shapeids covered by the region that has to be redrawn          """Return the shapeids covered by the region that has to be redrawn

Legend:
Removed from v.148  
changed lines
  Added in v.416

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26