/[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 1219 by bh, Mon Jun 16 17:42:54 2003 UTC revision 1419 by bh, Tue Jul 15 09:29:18 2003 UTC
# Line 22  from wxPython.wx import wxMemoryDC, wxEm Line 22  from wxPython.wx import wxMemoryDC, wxEm
22      wxImageFromStream, wxBITMAP_TYPE_BMP      wxImageFromStream, wxBITMAP_TYPE_BMP
23    
24  from wxproj import draw_polygon_shape, draw_polygon_init  from wxproj import draw_polygon_shape, draw_polygon_init
 from gdalwarp import ProjectRasterFile  
25    
26  from Thuban.UI.common import Color2wxColour  from Thuban.UI.common import Color2wxColour
27  from Thuban.UI.classifier import ClassDataPreviewer  from Thuban.UI.classifier import ClassDataPreviewer
# Line 34  from Thuban.Model.label import ALIGN_CEN Line 33  from Thuban.Model.label import ALIGN_CEN
33       ALIGN_LEFT, ALIGN_RIGHT, ALIGN_BASELINE       ALIGN_LEFT, ALIGN_RIGHT, ALIGN_BASELINE
34    
35  from Thuban.Model.classification import Classification  from Thuban.Model.classification import Classification
36  from Thuban.Model.color import Color  from Thuban.Model.color import Transparent
37  import Thuban.Model.resource  import Thuban.Model.resource
38    
39    if Thuban.Model.resource.has_gdal_support():
40        from gdalwarp import ProjectRasterFile
41    
42  class MapRenderer:  class MapRenderer:
43    
44      """Class to render a map onto a wxDC"""      """Class to render a map onto a wxDC"""
# Line 83  class MapRenderer: Line 85  class MapRenderer:
85          # and only begin drawing layers once we have drawn it.          # and only begin drawing layers once we have drawn it.
86          # That way we avoid drawing layers that won't be seen.          # That way we avoid drawing layers that won't be seen.
87          #          #
88          for layer in map.Layers():          if Thuban.Model.resource.has_gdal_support():
89              if isinstance(layer, RasterLayer) and layer.Visible():              for layer in map.Layers():
90                  seenRaster = False                  if isinstance(layer, RasterLayer) and layer.Visible():
91                  break                      seenRaster = False
92                        break
93    
94          for layer in map.Layers():          for layer in map.Layers():
95              # if honor_visibility is true, only draw visible layers,              # if honor_visibility is true, only draw visible layers,
# Line 120  class MapRenderer: Line 123  class MapRenderer:
123          defaultGroup = lc.GetDefaultGroup()          defaultGroup = lc.GetDefaultGroup()
124    
125    
         if shapetype != SHAPETYPE_POINT:  
             polygon_render_param = self.polygon_render_param(layer)  
   
126          if shapetype == SHAPETYPE_POINT:          if shapetype == SHAPETYPE_POINT:
127              draw_func = lambda i: \              draw_func = self.draw_point_shape
128                     self.draw_point_shape(layer, i)              draw_func_param = layer
129          else:          else:
130              draw_func = lambda i: \              draw_func = draw_polygon_shape
131                     self.draw_polygon_shape(polygon_render_param, i, pen, brush)              draw_func_param = self.polygon_render_param(layer)
132    
133          table = layer.ShapeStore().Table()          table = layer.ShapeStore().Table()
134          for i in self.layer_ids(layer):          for i in self.layer_ids(layer):
# Line 155  class MapRenderer: Line 155  class MapRenderer:
155                      old_prop = prop                      old_prop = prop
156    
157                      if shapetype == SHAPETYPE_ARC:                      if shapetype == SHAPETYPE_ARC:
158                          fill = Color.Transparent                          fill = Transparent
159                      else:                      else:
160                          fill = prop.GetFill()                          fill = prop.GetFill()
161    
162    
163                      if fill is Color.Transparent:                      if fill is Transparent:
164                          brush = wxTRANSPARENT_BRUSH                          brush = wxTRANSPARENT_BRUSH
165                      else:                      else:
166                          color = Color2wxColour(fill)                          color = Color2wxColour(fill)
# Line 168  class MapRenderer: Line 168  class MapRenderer:
168    
169                      stroke = prop.GetLineColor()                      stroke = prop.GetLineColor()
170                      stroke_width = prop.GetLineWidth()                      stroke_width = prop.GetLineWidth()
171                      if stroke is Color.Transparent:                      if stroke is Transparent:
172                          pen = wxTRANSPARENT_PEN                          pen = wxTRANSPARENT_PEN
173                      else:                      else:
174                          color = Color2wxColour(stroke)                          color = Color2wxColour(stroke)
175                          pen = wxPen(color, stroke_width, wxSOLID)                          pen = wxPen(color, stroke_width, wxSOLID)
176    
177                      if shapetype == SHAPETYPE_POINT:              draw_func(draw_func_param, i, pen, brush)
                         self.dc.SetBrush(brush)  
                         self.dc.SetPen(pen)  
   
             draw_func(i)  
178    
179      def draw_raster_layer(self, layer):      def draw_raster_layer(self, layer):
180          data = None          data = None
# Line 270  class MapRenderer: Line 266  class MapRenderer:
266          points = self.projected_points(layer, index)          points = self.projected_points(layer, index)
267          self.dc.DrawLines(points)          self.dc.DrawLines(points)
268    
269      def draw_point_shape(self, layer, index):      def draw_point_shape(self, layer, index, pen, brush):
270          pp = self.projected_points(layer, index)          pp = self.projected_points(layer, index)
271    
272          if len(pp) == 0: return # ignore Null Shapes which have no points          if len(pp) == 0: return # ignore Null Shapes which have no points
273    
274          p = pp[0]          p = pp[0]
275          radius = self.resolution * 5          radius = self.resolution * 5
276            self.dc.SetBrush(brush)
277            self.dc.SetPen(pen)
278          self.dc.DrawEllipse(p.x - radius, p.y - radius, 2*radius, 2*radius)          self.dc.DrawEllipse(p.x - radius, p.y - radius, 2*radius, 2*radius)
279    
280      def draw_label_layer(self, layer):      def draw_label_layer(self, layer):
# Line 512  class ExportRenderer(ScreenRenderer): Line 510  class ExportRenderer(ScreenRenderer):
510          # Render the legend          # Render the legend
511          dc.SetTextForeground(wxBLACK)          dc.SetTextForeground(wxBLACK)
512          if map.HasLayers():          if map.HasLayers():
513              for l in map.Layers():              layers = map.Layers()
514                layers.reverse()
515                for l in layers:
516                  if l.Visible():                  if l.Visible():
517                      # Render title                      # Render title
518                      dc.DrawText(l.Title(), posx, posy)                      dc.DrawText(l.Title(), posx, posy)
519                      posy+=stepy                      posy+=stepy
520                      # Render classification                      if l.HasClassification():
521                      clazz = l.GetClassification()                          # Render classification
522                      shapeType = l.ShapeType()                          clazz = l.GetClassification()
523                      for g in clazz:                          shapeType = l.ShapeType()
524                          if g.IsVisible():                          for g in clazz:
525                              previewer.Draw(dc,                              if g.IsVisible():
526                                  wxRect(posx+dx, posy, iconwidth, iconheight),                                  previewer.Draw(dc,
527                                  g.GetProperties(), shapeType)                                      wxRect(posx+dx, posy,
528                              dc.DrawText(g.GetDisplayText(),                                             iconwidth, iconheight),
529                                          posx+2*dx+iconwidth, posy)                                      g.GetProperties(), shapeType)
530                              posy+=stepy                                  dc.DrawText(g.GetDisplayText(),
531                                                posx+2*dx+iconwidth, posy)
532                                    posy+=stepy
533                    
534      def render_scalebar(self, map):      def render_scalebar(self, map):
535          """Render the scalebar."""          """Render the scalebar."""

Legend:
Removed from v.1219  
changed lines
  Added in v.1419

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26