/[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 2394 by jan, Wed Nov 17 22:02:29 2004 UTC revision 2562 by jonathan, Wed Feb 16 21:14:47 2005 UTC
# Line 21  from Thuban import _ Line 21  from Thuban import _
21  from wxPython.wx import wxPoint, wxRect, wxPen, wxBrush, wxFont, \  from wxPython.wx import wxPoint, wxRect, wxPen, wxBrush, wxFont, \
22      wxTRANSPARENT_PEN, wxTRANSPARENT_BRUSH, \      wxTRANSPARENT_PEN, wxTRANSPARENT_BRUSH, \
23      wxBLACK_PEN, wxBLACK, wxSOLID, wxCROSS_HATCH, wxSWISS, wxNORMAL, \      wxBLACK_PEN, wxBLACK, wxSOLID, wxCROSS_HATCH, wxSWISS, wxNORMAL, \
24      wxBitmapFromImage, wxImageFromStream, wxBITMAP_TYPE_BMP, wxBITMAP_TYPE_JPEG      wxBitmapFromImage, wxImageFromStream, wxBITMAP_TYPE_BMP, \
25        wxBITMAP_TYPE_JPEG, wxBITMAP_TYPE_PNG, wxBITMAP_TYPE_TIF, \
26        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 37  import Thuban.Model.resource Line 39  import Thuban.Model.resource
39    
40  from baserenderer import BaseRenderer  from baserenderer import BaseRenderer
41    
42    from math import floor
43    
44    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
51  raster_format_map = {  raster_format_map = {
52      "BMP": wxBITMAP_TYPE_BMP,      "BMP": wxBITMAP_TYPE_BMP,
53      "JPEG": wxBITMAP_TYPE_JPEG,      "JPEG": wxBITMAP_TYPE_JPEG,
54        "PNG": wxBITMAP_TYPE_PNG,
55        "TIFF": wxBITMAP_TYPE_TIF,
56        "GIF": wxBITMAP_TYPE_GIF,
57      }      }
58    
59  class MapRenderer(BaseRenderer):  class MapRenderer(BaseRenderer):
# Line 83  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 95  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, data, format = 'BMP'):      def draw_raster_data(self, x,y, data, format = 'BMP'):
112          stream = cStringIO.StringIO(data)  
113          image = wxImageFromStream(stream, raster_format_map[format])          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':
122                image = wxEmptyImage(width, height)
123                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:
130                stream = cStringIO.StringIO(image_data)
131                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          self.dc.DrawBitmap(bitmap, 0, 0)          bitmap.SetMask(mask)
143    
144            self.dc.DrawBitmap(bitmap, int(round(x)), int(round(y)), True)
145    
146    
147  class ScreenRenderer(MapRenderer):  class ScreenRenderer(MapRenderer):
# Line 162  class ScreenRenderer(MapRenderer): Line 204  class ScreenRenderer(MapRenderer):
204    
205              # Get the size of the specific property for this              # Get the size of the specific property for this
206              # point              # point
207              if shapetype == SHAPETYPE_POINT:              if shapetype == SHAPETYPE_POINT and field is not None:
208                  value = table.ReadValue(shape.ShapeID(), field)                  value = table.ReadValue(shape.ShapeID(), field)
209                  group = lc.FindGroup(value)                  group = lc.FindGroup(value)
210                  size = group.GetProperties().GetSize()                  size = group.GetProperties().GetSize()
# Line 264  class ExportRenderer(ScreenRenderer): Line 306  class ExportRenderer(ScreenRenderer):
306          self.shifty = (mmaxy - mminy)*0.5 - (ury - lly)*0.5          self.shifty = (mmaxy - mminy)*0.5 - (ury - lly)*0.5
307    
308          self.offset = (offx+self.shiftx, offy+self.shifty)          self.offset = (offx+self.shiftx, offy+self.shifty)
309            self.region = (llx + self.shiftx, lly + self.shifty, urx, ury)
310    
311          # Draw the map          # Draw the map
312          self.dc.BeginDrawing()          self.dc.BeginDrawing()

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26