Commit b7466f156fd65607c3da51bc4b3f60f274fe71c9

Authored by tfmoraes
1 parent 83a118b3

ENH: Moved the responsability to resize the images from DicomInfo to DicomPaintPanel

Showing 1 changed file with 20 additions and 9 deletions   Show diff stats
invesalius/gui/dicom_preview_panel.py
@@ -74,10 +74,6 @@ class DicomInfo(object): @@ -74,10 +74,6 @@ class DicomInfo(object):
74 @property 74 @property
75 def preview(self): 75 def preview(self):
76 if self._preview: 76 if self._preview:
77 - if self.resized:  
78 - self.resized = False  
79 - s_img = self.img.Scale(*self._size).Mirror(False)  
80 - self._preview = wx.BitmapFromImage(s_img)  
81 return self._preview 77 return self._preview
82 else: 78 else:
83 colorer = vtk.vtkImageMapToWindowLevelColors() 79 colorer = vtk.vtkImageMapToWindowLevelColors()
@@ -92,8 +88,7 @@ class DicomInfo(object): @@ -92,8 +88,7 @@ class DicomInfo(object):
92 r = colorer.GetOutput().GetPointData().GetScalars() 88 r = colorer.GetOutput().GetPointData().GetScalars()
93 ni = numpy_support.vtk_to_numpy(r) 89 ni = numpy_support.vtk_to_numpy(r)
94 self.img = wx.ImageFromBuffer(width, height, ni) 90 self.img = wx.ImageFromBuffer(width, height, ni)
95 - s_img = self.img.Scale(*self._size).Mirror(False)  
96 - self._preview = wx.BitmapFromImage(s_img) 91 + self._preview = self.img.Mirror(False)
97 return self._preview 92 return self._preview
98 93
99 94
@@ -105,16 +100,32 @@ class DicomPaintPanel(wx.Panel): @@ -105,16 +100,32 @@ class DicomPaintPanel(wx.Panel):
105 100
106 def _bind_events(self): 101 def _bind_events(self):
107 self.Bind(wx.EVT_PAINT, self.OnPaint) 102 self.Bind(wx.EVT_PAINT, self.OnPaint)
  103 + self.Bind(wx.EVT_SIZE, self.OnSize)
  104 +
  105 + def _build_bitmap(self, image):
  106 + bmp = wx.BitmapFromImage(image)
  107 + return bmp
  108 +
  109 + def _image_resize(self, image):
  110 + return image.Scale(*self.GetSize())
108 111
109 def SetImage(self, image): 112 def SetImage(self, image):
110 self.image = image 113 self.image = image
  114 + r_img = self._image_resize(image)
  115 + self.bmp = self._build_bitmap(r_img)
  116 + self.Refresh()
111 117
112 def OnPaint(self, evt): 118 def OnPaint(self, evt):
113 if self.image: 119 if self.image:
114 dc = wx.AutoBufferedPaintDC(self) 120 dc = wx.AutoBufferedPaintDC(self)
115 dc.Clear() 121 dc.Clear()
116 - dc.DrawBitmap(self.image, 0, 0)  
117 - 122 + dc.DrawBitmap(self.bmp, 0, 0)
  123 +
  124 + def OnSize(self, evt):
  125 + if self.image:
  126 + self.bmp = self._build_bitmap(self._image_resize(self.image))
  127 + self.Refresh()
  128 + evt.Skip()
118 129
119 130
120 class Preview(wx.Panel): 131 class Preview(wx.Panel):
@@ -177,7 +188,7 @@ class Preview(wx.Panel): @@ -177,7 +188,7 @@ class Preview(wx.Panel):
177 #self.title.Bind(wx.EVT_LEFT_DOWN, self.OnSelect) 188 #self.title.Bind(wx.EVT_LEFT_DOWN, self.OnSelect)
178 #self.subtitle.Bind(wx.EVT_LEFT_DOWN, self.OnSelect) 189 #self.subtitle.Bind(wx.EVT_LEFT_DOWN, self.OnSelect)
179 190
180 - self.Bind(wx.EVT_SIZE, self.OnSize) 191 + #self.Bind(wx.EVT_SIZE, self.OnSize)
181 192
182 def SetDicomToPreview(self, dicom_info): 193 def SetDicomToPreview(self, dicom_info):
183 """ 194 """