Commit c64e6b6cf3ce5b3574fd1784d421ddaf5ea6c9d1
1 parent
36379e6d
Exists in
master
and in
68 other branches
FIX: slices of the same size, when more than one.
Showing
1 changed file
with
19 additions
and
16 deletions
Show diff stats
invesalius/data/viewer_slice.py
| ... | ... | @@ -47,7 +47,7 @@ class Viewer(wx.Panel): |
| 47 | 47 | self.slice_data_list = [] |
| 48 | 48 | # The layout from slice_data, the first is number of cols, the second |
| 49 | 49 | # is the number of rows |
| 50 | - self.layout = (1, 1) | |
| 50 | + self.layout = (2, 2) | |
| 51 | 51 | |
| 52 | 52 | self.__init_gui() |
| 53 | 53 | |
| ... | ... | @@ -274,9 +274,13 @@ class Viewer(wx.Panel): |
| 274 | 274 | evt.StartDolly() |
| 275 | 275 | |
| 276 | 276 | def OnUnZoom(self, evt, obj): |
| 277 | - self.ren.ResetCamera() | |
| 278 | - self.ren.ResetCameraClippingRange() | |
| 279 | - self.Reposition() | |
| 277 | + mouse_x, mouse_y = self.interactor.GetLastEventPosition() | |
| 278 | + ren = self.interactor.FindPokedRenderer(mouse_x, mouse_y) | |
| 279 | + slice_data = self.get_slice_data(ren) | |
| 280 | + ren.ResetCamera() | |
| 281 | + ren.ResetCameraClippingRange() | |
| 282 | + self.Reposition(slice_data) | |
| 283 | + self.interactor.Render() | |
| 280 | 284 | |
| 281 | 285 | def OnSpinMove(self, evt, obj): |
| 282 | 286 | if (self.mouse_pressed): |
| ... | ... | @@ -299,23 +303,24 @@ class Viewer(wx.Panel): |
| 299 | 303 | slice_data.cursor.Show(0) |
| 300 | 304 | self.interactor.Render() |
| 301 | 305 | |
| 302 | - def Reposition(self): | |
| 306 | + def Reposition(self, slice_data): | |
| 303 | 307 | """ |
| 304 | 308 | Based on code of method Zoom in the |
| 305 | 309 | vtkInteractorStyleRubberBandZoom, the of |
| 306 | 310 | vtk 5.4.3 |
| 307 | 311 | """ |
| 308 | - size = self.ren.GetSize() | |
| 312 | + ren = slice_data.renderer | |
| 313 | + size = ren.GetSize() | |
| 309 | 314 | |
| 310 | 315 | if (size[0] <= size[1] + 100): |
| 311 | 316 | |
| 312 | - bound = self.actor.GetBounds() | |
| 317 | + bound = slice_data.actor.GetBounds() | |
| 313 | 318 | |
| 314 | 319 | width = abs((bound[3] - bound[2]) * -1) |
| 315 | 320 | height = abs((bound[1] - bound[0]) * -1) |
| 316 | 321 | |
| 317 | - origin = self.ren.GetOrigin() | |
| 318 | - cam = self.ren.GetActiveCamera() | |
| 322 | + origin = ren.GetOrigin() | |
| 323 | + cam = ren.GetActiveCamera() | |
| 319 | 324 | |
| 320 | 325 | min = [] |
| 321 | 326 | min.append(bound[0]) |
| ... | ... | @@ -344,11 +349,11 @@ class Viewer(wx.Panel): |
| 344 | 349 | winCenter.append(origin[1] + 0.5 * size[1]) |
| 345 | 350 | winCenter.append(0) |
| 346 | 351 | |
| 347 | - self.ren.SetDisplayPoint(winCenter) | |
| 348 | - self.ren.DisplayToView() | |
| 349 | - self.ren.ViewToWorld() | |
| 352 | + ren.SetDisplayPoint(winCenter) | |
| 353 | + ren.DisplayToView() | |
| 354 | + ren.ViewToWorld() | |
| 350 | 355 | |
| 351 | - worldWinCenter = list(self.ren.GetWorldPoint()) | |
| 356 | + worldWinCenter = list(ren.GetWorldPoint()) | |
| 352 | 357 | invw = 1.0/worldWinCenter[3] |
| 353 | 358 | worldWinCenter[0] *= invw |
| 354 | 359 | worldWinCenter[1] *= invw |
| ... | ... | @@ -364,7 +369,6 @@ class Viewer(wx.Panel): |
| 364 | 369 | else: |
| 365 | 370 | cam.Zoom(size[1] / height) |
| 366 | 371 | |
| 367 | - self.interactor.Render() | |
| 368 | 372 | |
| 369 | 373 | def ChangeBrushSize(self, pubsub_evt): |
| 370 | 374 | size = pubsub_evt.data |
| ... | ... | @@ -688,6 +692,7 @@ class Viewer(wx.Panel): |
| 688 | 692 | #ren.AddActor(text_actor) |
| 689 | 693 | for slice_data in self.slice_data_list: |
| 690 | 694 | self.__update_camera(slice_data) |
| 695 | + self.Reposition(slice_data) | |
| 691 | 696 | |
| 692 | 697 | number_of_slices = self.layout[0] * self.layout[1] |
| 693 | 698 | max_slice_number = actor.GetSliceNumberMax() / \ |
| ... | ... | @@ -703,8 +708,6 @@ class Viewer(wx.Panel): |
| 703 | 708 | # Insert cursor |
| 704 | 709 | self.append_mode('EDITOR') |
| 705 | 710 | |
| 706 | - self.Reposition() | |
| 707 | - | |
| 708 | 711 | def __update_cursor_position(self, slice_data, position): |
| 709 | 712 | x, y, z = position |
| 710 | 713 | if (slice_data.cursor): | ... | ... |