Commit b7466f156fd65607c3da51bc4b3f60f274fe71c9
1 parent
83a118b3
Exists in
master
and in
68 other branches
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 | """ |