/[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 416 by jonathan, Wed Feb 19 16:53:08 2003 UTC revision 535 by bh, Fri Mar 14 20:42:18 2003 UTC
# Line 1  Line 1 
1  # Copyright (c) 2001, 2002 by Intevation GmbH  # Copyright (c) 2001, 2002, 2003 by Intevation GmbH
2  # Authors:  # Authors:
3  # Bernhard Herzog <[email protected]>  # Bernhard Herzog <[email protected]>
4  # Jonathan Coles <[email protected]>  # Jonathan Coles <[email protected]>
# Line 8  Line 8 
8    
9  __version__ = "$Revision$"  __version__ = "$Revision$"
10    
11  from wxPython.wx import wxPoint, wxColour, wxPen, wxBrush, wxFont, \  from wxPython.wx import wxPoint, wxPen, wxBrush, wxFont, \
12       wxTRANSPARENT_PEN, wxTRANSPARENT_BRUSH, \       wxTRANSPARENT_PEN, wxTRANSPARENT_BRUSH, \
13       wxBLACK, wxSOLID, wxCROSS_HATCH, wxSWISS, wxNORMAL       wxBLACK, wxSOLID, wxCROSS_HATCH, wxSWISS, wxNORMAL
14    
15  from wxproj import draw_polygon_shape  from wxproj import draw_polygon_shape
16    
17  from Thuban import _  from Thuban import _
18    from Thuban.UI.common import *
19    
20  from Thuban.Model.layer import SHAPETYPE_POLYGON, SHAPETYPE_ARC, \  from Thuban.Model.layer import SHAPETYPE_POLYGON, SHAPETYPE_ARC, \
21       SHAPETYPE_POINT       SHAPETYPE_POINT
# Line 78  class MapRenderer: Line 79  class MapRenderer:
79          pen   = wxTRANSPARENT_PEN          pen   = wxTRANSPARENT_PEN
80    
81          old_prop = None          old_prop = None
82            lc = layer.GetClassification()
83            field = lc.GetField()
84    
85            defaultProps = lc.GetDefaultGroup().GetProperties()
86    
87          for i in self.layer_ids(layer):          for i in self.layer_ids(layer):
88              value = None              value = None
             shape = layer.Shape(i)  
             lc = layer.GetClassification()  
             field = lc.field  
89    
90              if field is not None:              if field is not None:
91                  record = layer.table.read_record(i)                  try:
92                  if record is not None:                      record = layer.table.read_record(i)
93                      value = record[field]                      if record is not None:
94                            value = record[field]
95              #                  except:
96              # if the above statements fail 'value' should                      pass
97              # be null, at which point this call will  
98              # at least retreive the NullData                  #
99              #                  # if the above statements fail 'value' should
100              prop = lc.GetProperties(value)                  # be null, at which point this call will
101                    # at least retreive the NullData
102                    #
103                    prop = lc.GetProperties(value)
104                else:
105                    prop = defaultProps
106    
107              if prop != old_prop:              # don't recreate new objects if they are the same as before
108                if prop != old_prop:
109                  old_prop = prop                  old_prop = prop
110    
111                  if shapetype == SHAPETYPE_ARC:                  if shapetype == SHAPETYPE_ARC:
# Line 107  class MapRenderer: Line 116  class MapRenderer:
116                  if fill is Color.None:                  if fill is Color.None:
117                      brush = wxTRANSPARENT_BRUSH                      brush = wxTRANSPARENT_BRUSH
118                  else:                  else:
119                      color = wxColour(fill.red * 255,                      color = Color2wxColour(fill)
                                      fill.green * 255,  
                                      fill.blue * 255)  
120                      brush = wxBrush(color, wxSOLID)                      brush = wxBrush(color, wxSOLID)
121            
122                  stroke = prop.GetStroke()                  stroke = prop.GetLineColor()
123                  stroke_width = prop.GetStrokeWidth()                  stroke_width = prop.GetLineWidth()
124                  if stroke is Color.None:                  if stroke is Color.None:
125                      pen = wxTRANSPARENT_PEN                      pen = wxTRANSPARENT_PEN
126                  else:                  else:
127                      color = wxColour(stroke.red * 255,                      color = Color2wxColour(stroke)
                                      stroke.green * 255,  
                                      stroke.blue * 255)  
128                      pen = wxPen(color, stroke_width, wxSOLID)                      pen = wxPen(color, stroke_width, wxSOLID)
129            
130              if shapetype == SHAPETYPE_POINT:              if shapetype == SHAPETYPE_POINT:
# Line 221  class ScreenRenderer(MapRenderer): Line 226  class ScreenRenderer(MapRenderer):
226      # On the screen we want to see only visible layers by default      # On the screen we want to see only visible layers by default
227      honor_visibility = 1      honor_visibility = 1
228            
229      def RenderMap(self, map, region, selected_layer, selected_shape):      def RenderMap(self, map, region, selected_layer, selected_shapes):
230          """Render the map.          """Render the map.
231    
232          Only the given region (a tuple in window coordinates as returned          Only the given region (a tuple in window coordinates as returned
233          by a wxrect's asTuple method) needs to be redrawn. Highlight the          by a wxrect's asTuple method) needs to be redrawn. Highlight the
234          shape with id selected_shape in the selected_layer.          shapes given by the ids in selected_shapes in the
235            selected_layer.
236          """          """
237          self.update_region = region          self.update_region = region
238          self.selected_layer = selected_layer          self.selected_layer = selected_layer
239          self.selected_shape = selected_shape          self.selected_shapes = selected_shapes
240          self.render_map(map)          self.render_map(map)
241    
242      def draw_shape_layer(self, layer):      def draw_shape_layer(self, layer):
243          MapRenderer.draw_shape_layer(self, layer)          MapRenderer.draw_shape_layer(self, layer)
244          if layer is self.selected_layer and self.selected_shape is not None:          if layer is self.selected_layer and self.selected_shapes:
245              pen = wxPen(wxBLACK, 3, wxSOLID)              pen = wxPen(wxBLACK, 3, wxSOLID)
246              brush = wxBrush(wxBLACK, wxCROSS_HATCH)              brush = wxBrush(wxBLACK, wxCROSS_HATCH)
247                
248              shapetype = layer.ShapeType()              shapetype = layer.ShapeType()
             index = self.selected_shape  
249              if shapetype == SHAPETYPE_POLYGON:              if shapetype == SHAPETYPE_POLYGON:
250                  self.draw_polygon_shape(layer, index, pen, brush)                  func = self.draw_polygon_shape
251                    args = (pen, brush)
252              elif shapetype == SHAPETYPE_ARC:              elif shapetype == SHAPETYPE_ARC:
253                  self.draw_polygon_shape(layer, index, pen, None)                  func = self.draw_polygon_shape
254              else:                  args = (pen, None)
255                elif shapetype == SHAPETYPE_POINT:
256                  self.dc.SetBrush(brush)                  self.dc.SetBrush(brush)
257                  self.dc.SetPen(pen)                  self.dc.SetPen(pen)
258                  if shapetype == SHAPETYPE_POINT:                  func = self.draw_point_shape
259                      self.draw_point_shape(layer, index)                  args = ()
260                  else:              else:
261                      raise TypeError(_("Unhandled shape type %s") % shapetype)                  raise TypeError(_("Unhandled shape type %s") % shapetype)
262    
263                for index in self.selected_shapes:
264                    func(layer, index, *args)
265    
266      def layer_ids(self, layer):      def layer_ids(self, layer):
267          """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.416  
changed lines
  Added in v.535

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26