Commit 12e311c6c0e1598bb612e521c08267f3294d29b9
1 parent
a460a443
Exists in
master
and in
68 other branches
ADD: Zoom initial size of the screen.
Showing
1 changed file
with
77 additions
and
5 deletions
Show diff stats
invesalius/data/viewer_slice.py
@@ -65,6 +65,7 @@ class Viewer(wx.Panel): | @@ -65,6 +65,7 @@ class Viewer(wx.Panel): | ||
65 | 65 | ||
66 | self.__bind_events() | 66 | self.__bind_events() |
67 | self.__bind_events_wx() | 67 | self.__bind_events_wx() |
68 | + | ||
68 | 69 | ||
69 | def __init_gui(self): | 70 | def __init_gui(self): |
70 | 71 | ||
@@ -155,7 +156,76 @@ class Viewer(wx.Panel): | @@ -155,7 +156,76 @@ class Viewer(wx.Panel): | ||
155 | action[mode][event]) | 156 | action[mode][event]) |
156 | self.style = style | 157 | self.style = style |
157 | self.interactor.SetInteractorStyle(style) | 158 | self.interactor.SetInteractorStyle(style) |
158 | - | 159 | + |
160 | + | ||
161 | + def Reposition(self): | ||
162 | + """ | ||
163 | + Based on code of method Zoom in the | ||
164 | + vtkInteractorStyleRubberBandZoom, the of | ||
165 | + vtk 5.4.3 | ||
166 | + """ | ||
167 | + size = self.ren.GetSize() | ||
168 | + | ||
169 | + if (size[0] <= size[1] + 100): | ||
170 | + | ||
171 | + bound = self.actor.GetBounds() | ||
172 | + | ||
173 | + width = abs((bound[3] - bound[2]) * -1) | ||
174 | + height = abs((bound[1] - bound[0]) * -1) | ||
175 | + | ||
176 | + origin = self.ren.GetOrigin() | ||
177 | + cam = self.ren.GetActiveCamera() | ||
178 | + | ||
179 | + min = [] | ||
180 | + min.append(bound[0]) | ||
181 | + min.append(bound[2]) | ||
182 | + | ||
183 | + rbcenter = [] | ||
184 | + rbcenter.append(min[0] + 0.5 * width) | ||
185 | + rbcenter.append(min[1] + 0.5 * height) | ||
186 | + rbcenter.append(0) | ||
187 | + | ||
188 | + self.ren.SetDisplayPoint(rbcenter) | ||
189 | + self.ren.DisplayToView() | ||
190 | + self.ren.ViewToWorld() | ||
191 | + | ||
192 | + worldRBCenter = self.ren.GetWorldPoint() | ||
193 | + worldRBCenter = list(worldRBCenter) | ||
194 | + | ||
195 | + invw = 1.0/worldRBCenter[3] | ||
196 | + | ||
197 | + worldRBCenter[0] *= invw | ||
198 | + worldRBCenter[1] *= invw | ||
199 | + worldRBCenter[2] *= invw | ||
200 | + | ||
201 | + winCenter = [] | ||
202 | + winCenter.append(origin[0] + 0.5 * size[0]) | ||
203 | + winCenter.append(origin[1] + 0.5 * size[1]) | ||
204 | + winCenter.append(0) | ||
205 | + | ||
206 | + self.ren.SetDisplayPoint(winCenter) | ||
207 | + self.ren.DisplayToView() | ||
208 | + self.ren.ViewToWorld() | ||
209 | + | ||
210 | + worldWinCenter = list(self.ren.GetWorldPoint()) | ||
211 | + invw = 1.0/worldWinCenter[3] | ||
212 | + worldWinCenter[0] *= invw | ||
213 | + worldWinCenter[1] *= invw | ||
214 | + worldWinCenter[2] *= invw | ||
215 | + | ||
216 | + translation = [] | ||
217 | + translation.append(worldRBCenter[0] - worldWinCenter[0]) | ||
218 | + translation.append(worldRBCenter[1] - worldWinCenter[1]) | ||
219 | + translation.append(worldRBCenter[2] - worldWinCenter[2]) | ||
220 | + | ||
221 | + if (width > height): | ||
222 | + cam.Zoom(size[0] / width) | ||
223 | + else: | ||
224 | + cam.Zoom(size[1] / height) | ||
225 | + | ||
226 | + self.interactor.Render() | ||
227 | + | ||
228 | + | ||
159 | def ChangeEditorMode(self, pubsub_evt): | 229 | def ChangeEditorMode(self, pubsub_evt): |
160 | self.append_mode('EDITOR') | 230 | self.append_mode('EDITOR') |
161 | self.mouse_pressed = 0 | 231 | self.mouse_pressed = 0 |
@@ -165,7 +235,7 @@ class Viewer(wx.Panel): | @@ -165,7 +235,7 @@ class Viewer(wx.Panel): | ||
165 | self.append_mode('SPIN') | 235 | self.append_mode('SPIN') |
166 | self.mouse_pressed = 0 | 236 | self.mouse_pressed = 0 |
167 | self.interactor.SetCursor(wx.StockCursor(wx.CURSOR_SIZING)) | 237 | self.interactor.SetCursor(wx.StockCursor(wx.CURSOR_SIZING)) |
168 | - | 238 | + |
169 | def ChangeZoomMode(self, pubsub_evt): | 239 | def ChangeZoomMode(self, pubsub_evt): |
170 | self.append_mode('ZOOM') | 240 | self.append_mode('ZOOM') |
171 | self.mouse_pressed = 0 | 241 | self.mouse_pressed = 0 |
@@ -203,7 +273,7 @@ class Viewer(wx.Panel): | @@ -203,7 +273,7 @@ class Viewer(wx.Panel): | ||
203 | def OnUnZoom(self, evt, obj): | 273 | def OnUnZoom(self, evt, obj): |
204 | self.ren.ResetCamera() | 274 | self.ren.ResetCamera() |
205 | self.ren.ResetCameraClippingRange() | 275 | self.ren.ResetCameraClippingRange() |
206 | - self.interactor.Render() | 276 | + self.Reposition() |
207 | 277 | ||
208 | def OnSpinMove(self, evt, obj): | 278 | def OnSpinMove(self, evt, obj): |
209 | if (self.mouse_pressed): | 279 | if (self.mouse_pressed): |
@@ -496,6 +566,7 @@ class Viewer(wx.Panel): | @@ -496,6 +566,7 @@ class Viewer(wx.Panel): | ||
496 | cursor.SetColour(self._brush_cursor_colour) | 566 | cursor.SetColour(self._brush_cursor_colour) |
497 | cursor.SetSpacing(self.imagedata.GetSpacing()) | 567 | cursor.SetSpacing(self.imagedata.GetSpacing()) |
498 | cursor.Show(0) | 568 | cursor.Show(0) |
569 | + self.cursor_ = cursor | ||
499 | return cursor | 570 | return cursor |
500 | 571 | ||
501 | def SetInput(self, imagedata): | 572 | def SetInput(self, imagedata): |
@@ -550,10 +621,10 @@ class Viewer(wx.Panel): | @@ -550,10 +621,10 @@ class Viewer(wx.Panel): | ||
550 | actor_bound = actor.GetBounds() | 621 | actor_bound = actor.GetBounds() |
551 | 622 | ||
552 | # Insert cursor | 623 | # Insert cursor |
553 | - | ||
554 | - | ||
555 | self.append_mode('EDITOR') | 624 | self.append_mode('EDITOR') |
556 | 625 | ||
626 | + self.Reposition() | ||
627 | + | ||
557 | def __update_cursor_position(self, slice_data, position): | 628 | def __update_cursor_position(self, slice_data, position): |
558 | x, y, z = position | 629 | x, y, z = position |
559 | if (slice_data.cursor): | 630 | if (slice_data.cursor): |
@@ -640,6 +711,7 @@ class Viewer(wx.Panel): | @@ -640,6 +711,7 @@ class Viewer(wx.Panel): | ||
640 | def OnScrollBar(self, evt=None): | 711 | def OnScrollBar(self, evt=None): |
641 | pos = self.scroll.GetThumbPosition() | 712 | pos = self.scroll.GetThumbPosition() |
642 | self.set_slice_number(pos) | 713 | self.set_slice_number(pos) |
714 | + self.cursor_.Show(1) | ||
643 | self.interactor.Render() | 715 | self.interactor.Render() |
644 | if evt: | 716 | if evt: |
645 | evt.Skip() | 717 | evt.Skip() |