/[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 2699 by jan, Thu Aug 18 21:54:25 2005 UTC revision 2700 by dpinte, Mon Sep 18 14:27:02 2006 UTC
# Line 22  import traceback Line 22  import traceback
22    
23  from Thuban import _  from Thuban import _
24    
25  from wxPython.wx import wxPoint, wxRect, wxPen, wxBrush, wxFont, \  import wx
     wxTRANSPARENT_PEN, wxTRANSPARENT_BRUSH, \  
     wxBLACK_PEN, wxBLACK, wxSOLID, wxCROSS_HATCH, wxSWISS, wxNORMAL, \  
     wxBitmapFromImage, wxImageFromStream, wxBITMAP_TYPE_BMP, \  
     wxBITMAP_TYPE_JPEG, wxBITMAP_TYPE_PNG, wxBITMAP_TYPE_TIF, \  
     wxBITMAP_TYPE_GIF, wxEmptyImage, wxMask, wxBitmapFromBits  
26    
27  from wxproj import draw_polygon_shape, draw_polygon_init  from wxproj import draw_polygon_shape, draw_polygon_init
28    
# Line 56  if Thuban.Model.resource.has_gdal_suppor Line 51  if Thuban.Model.resource.has_gdal_suppor
51  # Map the strings used for the format parameter of the draw_raster_data  # Map the strings used for the format parameter of the draw_raster_data
52  # method to the appropriate wxWindows constants  # method to the appropriate wxWindows constants
53  raster_format_map = {  raster_format_map = {
54      "BMP": wxBITMAP_TYPE_BMP,      "BMP": wx.BITMAP_TYPE_BMP,
55      "JPEG": wxBITMAP_TYPE_JPEG,      "JPEG": wx.BITMAP_TYPE_JPEG,
56      "PNG": wxBITMAP_TYPE_PNG,      "PNG": wx.BITMAP_TYPE_PNG,
57      "TIFF": wxBITMAP_TYPE_TIF,      "TIFF": wx.BITMAP_TYPE_TIF,
58      "GIF": wxBITMAP_TYPE_GIF,      "GIF": wx.BITMAP_TYPE_GIF,
59      }      }
60    
61  class MapRenderer(BaseRenderer):  class MapRenderer(BaseRenderer):
62    
63      """Class to render a map onto a wxDC"""      """Class to render a map onto a wxDC"""
64    
65      TRANSPARENT_PEN = wxTRANSPARENT_PEN      TRANSPARENT_PEN = wx.TRANSPARENT_PEN
66      TRANSPARENT_BRUSH = wxTRANSPARENT_BRUSH      TRANSPARENT_BRUSH = wx.TRANSPARENT_BRUSH
67    
68      def make_point(self, x, y):      def make_point(self, x, y):
69          return wxPoint(int(round(x)), int(round(y)))          return wx.Point(int(round(x)), int(round(y)))
70    
71      def tools_for_property(self, prop):      def tools_for_property(self, prop):
72          fill = prop.GetFill()          fill = prop.GetFill()
73          if fill is Transparent:          if fill is Transparent:
74              brush = self.TRANSPARENT_BRUSH              brush = self.TRANSPARENT_BRUSH
75          else:          else:
76              brush = wxBrush(Color2wxColour(fill), wxSOLID)              brush = wx.Brush(Color2wxColour(fill), wx.SOLID)
77    
78          stroke = prop.GetLineColor()          stroke = prop.GetLineColor()
79          if stroke is Transparent:          if stroke is Transparent:
80              pen = self.TRANSPARENT_PEN              pen = self.TRANSPARENT_PEN
81          else:          else:
82              pen = wxPen(Color2wxColour(stroke), prop.GetLineWidth(), wxSOLID)              pen = wx.Pen(Color2wxColour(stroke), prop.GetLineWidth(), wx.SOLID)
83          return pen, brush          return pen, brush
84    
85      def low_level_renderer(self, layer):      def low_level_renderer(self, layer):
# Line 112  class MapRenderer(BaseRenderer): Line 107  class MapRenderer(BaseRenderer):
107              return BaseRenderer.low_level_renderer(self, layer)              return BaseRenderer.low_level_renderer(self, layer)
108    
109      def label_font(self):      def label_font(self):
110          return wxFont(int(round(self.resolution * 10)), wxSWISS, wxNORMAL,          return wx.Font(int(round(self.resolution * 10)), wx.SWISS, wx.NORMAL,
111                        wxNORMAL)                        wx.NORMAL)
112    
113      def projected_raster_layer(self, layer, srcProj, dstProj, extents,      def projected_raster_layer(self, layer, srcProj, dstProj, extents,
114                                 resolution, dimensions, options):                                 resolution, dimensions, options):
# Line 132  class MapRenderer(BaseRenderer): Line 127  class MapRenderer(BaseRenderer):
127                  options = options & ~2 # ALPHA_MASK not supported                  options = options & ~2 # ALPHA_MASK not supported
128    
129              try:              try:
130                  ret = ProjectRasterFile(layer.GetImageFilename(),                  ret = ProjectRasterFile(layer.GetImageFilename(),
131                                          srcProj, dstProj,                                          srcProj, dstProj,
132                                          extents, resolution, dimensions,                                          extents, resolution, dimensions,
133                                          options)                                          options)
134              except (MemoryError, IOError, AttributeError, ValueError):              except (MemoryError, IOError, AttributeError, ValueError):
135                  # Why does this catch AttributeError and ValueError?                  # Why does this catch AttributeError and ValueError?
# Line 156  class MapRenderer(BaseRenderer): Line 151  class MapRenderer(BaseRenderer):
151              alpha_data = None              alpha_data = None
152    
153          if format == 'RAW':          if format == 'RAW':
154              image = wxEmptyImage(width, height)              image = wx.EmptyImage(width, height)
155              image.SetData(image_data)              image.SetData(image_data)
156              if mask_data is not None:              if mask_data is not None:
157                  mask = wxBitmapFromBits(mask_data, width, height, 1)                  mask = wx.BitmapFromBits(mask_data, width, height, 1)
158                  mask = wxMask(mask)                  mask = wx.Mask(mask)
159              elif alpha_data is not None:              elif alpha_data is not None:
160                  # alpha_data is already in the right format                  # alpha_data is already in the right format
161                  alpha = alpha_data                  alpha = alpha_data
162    
163          else:          else:
164              stream = cStringIO.StringIO(image_data)              stream = cStringIO.StringIO(image_data)
165              image = wxImageFromStream(stream, raster_format_map[format])              image = wx.ImageFromStream(stream, raster_format_map[format])
166    
167              if mask_data is not None:              if mask_data is not None:
168                  stream = cStringIO.StringIO(mask_data)                  stream = cStringIO.StringIO(mask_data)
169                  mask = wxImageFromStream(stream, raster_format_map[format])                  mask = wx.ImageFromStream(stream, raster_format_map[format])
170                  mask = wxMask(wxBitmapFromImage(mask, 1))                  mask = wx.Mask(wx.BitmapFromImage(mask, 1))
171              elif alpha_data is not None:              elif alpha_data is not None:
172                  stream = cStringIO.StringIO(alpha_data)                  stream = cStringIO.StringIO(alpha_data)
173                  alpha = wxImageFromStream(stream, raster_format_map[format])                  alpha = wx.ImageFromStream(stream, raster_format_map[format])
174                  alpha = alpha.GetData() #[:] # XXX: do we need to copy this?                  alpha = alpha.GetData() #[:] # XXX: do we need to copy this?
175              elif image.HasAlpha():              elif image.HasAlpha():
176                  alpha = image.GetAlphaData()                  alpha = image.GetAlphaData()
# Line 196  class MapRenderer(BaseRenderer): Line 191  class MapRenderer(BaseRenderer):
191    
192              image.SetAlphaData(a)              image.SetAlphaData(a)
193    
194          bitmap = wxBitmapFromImage(image)          bitmap = wx.BitmapFromImage(image)
195    
196          if mask is not None:          if mask is not None:
197              bitmap.SetMask(mask)              bitmap.SetMask(mask)
# Line 242  class ScreenRenderer(MapRenderer): Line 237  class ScreenRenderer(MapRenderer):
237          selected_shapes -- a list of the shape-ids representing the          selected_shapes -- a list of the shape-ids representing the
238                             selected shapes for the given layer.                             selected shapes for the given layer.
239          """          """
240          pen = wxPen(wxBLACK, 3, wxSOLID)          pen = wx.Pen(wx.BLACK, 3, wx.SOLID)
241          brush = wxBrush(wxBLACK, wxCROSS_HATCH)          brush = wx.Brush(wx.BLACK, wx.CROSS_HATCH)
242    
243          shapetype = layer.ShapeType()          shapetype = layer.ShapeType()
244          useraw, func, param = self.low_level_renderer(layer)          useraw, func, param = self.low_level_renderer(layer)
# Line 384  class ExportRenderer(ScreenRenderer): Line 379  class ExportRenderer(ScreenRenderer):
379          self.dc.DestroyClippingRegion()          self.dc.DestroyClippingRegion()
380    
381          # Force the font for Legend drawing          # Force the font for Legend drawing
382          font = wxFont(self.resolution * 10, wxSWISS, wxNORMAL, wxNORMAL)          font = wx.Font(self.resolution * 10, wx.SWISS, wx.NORMAL, wx.NORMAL)
383          self.dc.SetFont(font)          self.dc.SetFont(font)
384    
385          self.render_frame()          self.render_frame()
# Line 396  class ExportRenderer(ScreenRenderer): Line 391  class ExportRenderer(ScreenRenderer):
391          """Render the frames for map and legend/scalebar."""          """Render the frames for map and legend/scalebar."""
392    
393          dc = self.dc          dc = self.dc
394          dc.SetPen(wxBLACK_PEN)          dc.SetPen(wx.BLACK_PEN)
395          dc.SetBrush(wxTRANSPARENT_BRUSH)          dc.SetBrush(wx.TRANSPARENT_BRUSH)
396    
397          # Dimension stuff          # Dimension stuff
398          width, height = dc.GetSizeTuple()          width, height = dc.GetSizeTuple()
# Line 422  class ExportRenderer(ScreenRenderer): Line 417  class ExportRenderer(ScreenRenderer):
417    
418          previewer = ClassDataPreviewer()          previewer = ClassDataPreviewer()
419          dc = self.dc          dc = self.dc
420          dc.SetPen(wxBLACK_PEN)          dc.SetPen(wx.BLACK_PEN)
421          dc.SetBrush(wxTRANSPARENT_BRUSH)          dc.SetBrush(wx.TRANSPARENT_BRUSH)
422    
423          # Dimension stuff          # Dimension stuff
424          width, height = dc.GetSizeTuple()          width, height = dc.GetSizeTuple()
# Line 438  class ExportRenderer(ScreenRenderer): Line 433  class ExportRenderer(ScreenRenderer):
433          posy = mminy + 5        # 5 pix inside legend frame          posy = mminy + 5        # 5 pix inside legend frame
434    
435          # Render the legend          # Render the legend
436          dc.SetTextForeground(wxBLACK)          dc.SetTextForeground(wx.BLACK)
437          if self.map.HasLayers():          if self.map.HasLayers():
438              layers = self.map.Layers()[:]              layers = self.map.Layers()[:]
439              layers.reverse()              layers.reverse()
# Line 454  class ExportRenderer(ScreenRenderer): Line 449  class ExportRenderer(ScreenRenderer):
449                          for g in clazz:                          for g in clazz:
450                              if g.IsVisible():                              if g.IsVisible():
451                                  previewer.Draw(dc,                                  previewer.Draw(dc,
452                                      wxRect(posx+dx, posy,                                      wx.Rect(posx+dx, posy,
453                                             iconwidth, iconheight),                                             iconwidth, iconheight),
454                                      g.GetProperties(), shapeType)                                      g.GetProperties(), shapeType)
455                                  dc.DrawText(g.GetDisplayText(),                                  dc.DrawText(g.GetDisplayText(),

Legend:
Removed from v.2699  
changed lines
  Added in v.2700

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26