/[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 2537 by jonathan, Fri Jan 21 14:01:25 2005 UTC revision 2562 by jonathan, Wed Feb 16 21:14:47 2005 UTC
# Line 23  from wxPython.wx import wxPoint, wxRect, Line 23  from wxPython.wx import wxPoint, wxRect,
23      wxBLACK_PEN, wxBLACK, wxSOLID, wxCROSS_HATCH, wxSWISS, wxNORMAL, \      wxBLACK_PEN, wxBLACK, wxSOLID, wxCROSS_HATCH, wxSWISS, wxNORMAL, \
24      wxBitmapFromImage, wxImageFromStream, wxBITMAP_TYPE_BMP, \      wxBitmapFromImage, wxImageFromStream, wxBITMAP_TYPE_BMP, \
25      wxBITMAP_TYPE_JPEG, wxBITMAP_TYPE_PNG, wxBITMAP_TYPE_TIF, \      wxBITMAP_TYPE_JPEG, wxBITMAP_TYPE_PNG, wxBITMAP_TYPE_TIF, \
26      wxBITMAP_TYPE_GIF, wxEmptyImage      wxBITMAP_TYPE_GIF, wxEmptyImage, wxMask, wxBitmapFromBits
27    
28  from wxproj import draw_polygon_shape, draw_polygon_init  from wxproj import draw_polygon_shape, draw_polygon_init
29    
# Line 43  from math import floor Line 43  from math import floor
43    
44  from types import StringType  from types import StringType
45    
46    from Thuban.version import versions
47    
48    
49  # 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
50  # method to the appropriate wxWindows constants  # method to the appropriate wxWindows constants
# Line 92  class MapRenderer(BaseRenderer): Line 94  class MapRenderer(BaseRenderer):
94          if (layer.ShapeStore().RawShapeFormat() == RAW_SHAPEFILE          if (layer.ShapeStore().RawShapeFormat() == RAW_SHAPEFILE
95              and layer.ShapeType() in (SHAPETYPE_ARC, SHAPETYPE_POLYGON)):              and layer.ShapeType() in (SHAPETYPE_ARC, SHAPETYPE_POLYGON)):
96              offx, offy = self.offset              offx, offy = self.offset
97                x = lambda a, b, c, d: None
98                #return (True, x, None)
99              return (True, draw_polygon_shape,              return (True, draw_polygon_shape,
100                      draw_polygon_init(layer.ShapeStore().Shapefile(),                      draw_polygon_init(layer.ShapeStore().Shapefile(),
101                                        self.dc, self.map.projection,                                        self.dc, self.map.projection,
# Line 104  class MapRenderer(BaseRenderer): Line 108  class MapRenderer(BaseRenderer):
108          return wxFont(int(round(self.resolution * 10)), wxSWISS, wxNORMAL,          return wxFont(int(round(self.resolution * 10)), wxSWISS, wxNORMAL,
109                        wxNORMAL)                        wxNORMAL)
110    
111      def draw_raster_data(self, x,y, data, format = 'BMP', mask = None):      def draw_raster_data(self, x,y, data, format = 'BMP'):
112    
113            mask = None
114            width = data[0]
115            height = data[1]
116            image_data, mask_data, alpha_data = data[2]
117    
118            if versions['wxPython-tuple'] < (2,5,3):
119                alpha_data = None
120    
121          if format == 'RAW':          if format == 'RAW':
122              image = wxEmptyImage(data[0], data[1])              image = wxEmptyImage(width, height)
123              image.SetData(data[2])              image.SetData(image_data)
124                if mask_data is not None:
125                    mask = wxBitmapFromBits(mask_data, width, height, 1)
126                    mask = wxMask(mask)
127                elif alpha_data is not None:
128                    image.SetAlphaData(alpha_data)
129          else:          else:
130              stream = cStringIO.StringIO(data[2])              stream = cStringIO.StringIO(image_data)
131              image = wxImageFromStream(stream, raster_format_map[format])              image = wxImageFromStream(stream, raster_format_map[format])
132                if mask_data is not None:
133                    stream = cStringIO.StringIO(mask_data)
134                    mask = wxImageFromStream(stream, raster_format_map[format])
135                    mask = wxMask(wxBitmapFromImage(mask, 1))
136                elif alpha_data is not None:
137                    stream = cStringIO.StringIO(alpha_data)
138                    alpha = wxImageFromStream(stream, raster_format_map[format])
139                    image.SetAlpha(alpha.GetData()[:])
140    
141          bitmap = wxBitmapFromImage(image)          bitmap = wxBitmapFromImage(image)
142            bitmap.SetMask(mask)
143    
144          if mask is None:          self.dc.DrawBitmap(bitmap, int(round(x)), int(round(y)), True)
             self.dc.DrawBitmap(bitmap, int(round(x)), int(round(y)), False)  
         else:  
             # if we are given a mask object, try to pass it to SetMaskColour,  
             # otherwise assume it's a mask image  
             try:  
                 bitmap.SetMaskColour(mask);  
                 self.dc.DrawBitmap(bitmap, int(round(x)), int(round(y)), True)  
             except (TypeError):  
                 # implement using a mask image  
                 raise NotImplementedError  
145    
146    
147  class ScreenRenderer(MapRenderer):  class ScreenRenderer(MapRenderer):

Legend:
Removed from v.2537  
changed lines
  Added in v.2562

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26