Commit 068c9bbab43d43492384f10529a2b8ad71327d29

Authored by Thiago Franco de Moraes
1 parent 49f5b7b7

Testings

Showing 1 changed file with 58 additions and 14 deletions   Show diff stats
invesalius/data/viewer_slice.py
... ... @@ -33,6 +33,8 @@ import styles
33 33 import wx
34 34 from wx.lib.pubsub import pub as Publisher
35 35  
  36 +import Image, ImageDraw
  37 +
36 38 try:
37 39 from agw import floatspin as FS
38 40 except ImportError: # if it's not there locally, try the wxPython lib.
... ... @@ -152,7 +154,7 @@ class CanvasRendererCTX:
152 154 self.canvas_renderer = viewer.slice_data.canvas_renderer
153 155 self._size = self.canvas_renderer.GetSize()
154 156 self._init_canvas()
155   - viewer.slice_data.renderer.AddObserver("EndEvent", self.OnPaint)
  157 + viewer.slice_data.renderer.AddObserver("StartEvent", self.OnPaint2)
156 158  
157 159 def _init_canvas(self):
158 160 w, h = self._size
... ... @@ -172,14 +174,40 @@ class CanvasRendererCTX:
172 174  
173 175 self.canvas_renderer.AddActor2D(self.actor)
174 176  
  177 + rgb = np.zeros((h, w, 3), dtype=np.uint8)
  178 + alpha = np.zeros((h, w, 1), dtype=np.uint8)
  179 +
175 180 self.bitmap = wx.EmptyBitmapRGBA(w, h)
  181 + self.image = wx.ImageFromBuffer(w, h, rgb, alpha)
  182 +
  183 + self._im = Image.frombuffer('RGBA', (h, w), self._array, "raw", "RGBA", 0, 1)
176 184  
177 185 def _resize_canvas(self, w, h):
178 186 self._array = np.zeros((h, w, 4), dtype=np.uint8)
179 187 self._cv_image = converters.np_rgba_to_vtk(self._array)
180 188 self.mapper.SetInputData(self._cv_image)
181 189 self.mapper.Update()
  190 +
  191 + rgb = np.zeros((h, w, 3), dtype=np.uint8)
  192 + alpha = np.zeros((h, w, 1), dtype=np.uint8)
  193 +
182 194 self.bitmap = wx.EmptyBitmapRGBA(w, h)
  195 + self.image = wx.ImageFromBuffer(w, h, rgb, alpha)
  196 +
  197 + self._im = Image.frombuffer('RGBA', (h, w), self._array, "raw", "RGBA", 0, 1)
  198 +
  199 + def OnPaint2(self, evt, obj):
  200 + size = self.canvas_renderer.GetSize()
  201 + w, h = size
  202 + if self._size != size:
  203 + self._size = size
  204 + self._resize_canvas(w, h)
  205 +
  206 + draw = ImageDraw.Draw(self._im)
  207 + draw.rectangle((30, 30, 500, 500), fill=(0, 255, 0, 255))
  208 +
  209 + print ">>", self._array.max()
  210 + self._cv_image.Modified()
183 211  
184 212 def OnPaint(self, evt, obj):
185 213 size = self.canvas_renderer.GetSize()
... ... @@ -188,26 +216,42 @@ class CanvasRendererCTX:
188 216 self._size = size
189 217 self._resize_canvas(w, h)
190 218  
191   - pen = wx.Pen(wx.Colour(255, 0, 0, 255), 10, wx.SOLID)
192   - memorydc = wx.MemoryDC(self.bitmap)
  219 +
  220 + self.image.Clear()
  221 + gc = wx.GraphicsContext.Create(self.image)
  222 + gc.SetAntialiasMode(0)
  223 + # memorydc = wx.MemoryDC(self.bitmap)
193 224 # memorydc.SelectObject(self.bitmap)
194   - memorydc.SetPen(pen)
195   - memorydc.SetBrush(wx.Brush(wx.Colour(255, 255, 0, 255)))
  225 +
  226 + pen = wx.Pen(wx.Colour(255, 0, 0, 128), 1, wx.SOLID)
  227 + brush = wx.Brush(wx.Colour(0, 255, 0, 128))
  228 + gc.SetPen(pen)
  229 + gc.SetBrush(brush)
  230 +
  231 +
  232 + path = gc.CreatePath()
  233 + path.AddArc(w/2.0, h/2.0, self.viewer.slice_data.number, 0, np.pi * 2)
  234 + gc.StrokePath(path)
  235 + gc.FillPath(path)
196 236 # self.memorydc.Clear()
197 237 # self.memorydc.BeginDrawing()
198   - memorydc.DrawCircle(100, 100, self.viewer.slice_data.number * 5)
199   - memorydc.DrawCircle(500, 500, 500)
200   - memorydc.DrawRectangle(0, 0, w, h)
201   - # self.memorydc.EndDrawing()
202   - memorydc.SelectObject(wx.NullBitmap)
203   - # self.bitmap.CopyToBuffer(self._array, wx.BitmapBufferFormat_RGBA)
  238 + # gc.DrawCircle(100, 100, self.viewer.slice_data.number * 5)
  239 + # memorydc.DrawCircle(500, 500, 500)
  240 + # memorydc.DrawRectangle(0, 0, w, h)
  241 + # # self.memorydc.EndDrawing()
  242 + # memorydc.SelectObject(wx.NullBitmap)
  243 + # # self.bitmap.CopyToBuffer(self._array, wx.BitmapBufferFormat_RGBA)
  244 + gc.Destroy()
  245 +
  246 + self.bitmap = self.image.ConvertToBitmap()
  247 + self.bitmap.CopyToBuffer(self._array, wx.BitmapBufferFormat_RGBA)
204 248  
205 249 self._cv_image.Modified()
206 250  
207   - self.canvas_renderer.Render()
  251 + # self.canvas_renderer.Render()
208 252  
209   - img = self.bitmap.ConvertToImage()
210   - img.SaveFile('/tmp/manolo.png', wx.BITMAP_TYPE_PNG)
  253 + # img = self.bitmap.ConvertToImage()
  254 + # img.SaveFile('/tmp/manolo.png', wx.BITMAP_TYPE_PNG)
211 255  
212 256 class Viewer(wx.Panel):
213 257  
... ...