Commit 519c44b47cf8e1f371458de7518ee262cdaa0f43
1 parent
45c7f6a4
Exists in
get_pixel
Updated editor interactor style to new get position methods
Showing
2 changed files
with
11 additions
and
50 deletions
Show diff stats
invesalius/data/slice_.py
| @@ -434,7 +434,7 @@ class Slice(object): | @@ -434,7 +434,7 @@ class Slice(object): | ||
| 434 | thresh_min, thresh_max = self.current_mask.edition_threshold_range | 434 | thresh_min, thresh_max = self.current_mask.edition_threshold_range |
| 435 | 435 | ||
| 436 | if hasattr(position, '__iter__'): | 436 | if hasattr(position, '__iter__'): |
| 437 | - py, px = position | 437 | + px, py = position |
| 438 | if orientation == 'AXIAL': | 438 | if orientation == 'AXIAL': |
| 439 | sx = self.spacing[0] | 439 | sx = self.spacing[0] |
| 440 | sy = self.spacing[1] | 440 | sy = self.spacing[1] |
invesalius/data/styles.py
| @@ -76,6 +76,7 @@ def get_LUT_value(data, window, level): | @@ -76,6 +76,7 @@ def get_LUT_value(data, window, level): | ||
| 76 | data.shape = shape | 76 | data.shape = shape |
| 77 | return data | 77 | return data |
| 78 | 78 | ||
| 79 | + | ||
| 79 | class BaseImageInteractorStyle(vtk.vtkInteractorStyleImage): | 80 | class BaseImageInteractorStyle(vtk.vtkInteractorStyleImage): |
| 80 | def __init__(self, viewer): | 81 | def __init__(self, viewer): |
| 81 | self.right_pressed = False | 82 | self.right_pressed = False |
| @@ -745,21 +746,13 @@ class EditorInteractorStyle(DefaultInteractorStyle): | @@ -745,21 +746,13 @@ class EditorInteractorStyle(DefaultInteractorStyle): | ||
| 745 | #i.cursor.Show(0) | 746 | #i.cursor.Show(0) |
| 746 | slice_data.cursor.Show() | 747 | slice_data.cursor.Show() |
| 747 | 748 | ||
| 748 | - self.picker.Pick(mouse_x, mouse_y, 0, render) | ||
| 749 | - | ||
| 750 | - coord = self.get_coordinate_cursor() | ||
| 751 | - position = slice_data.actor.GetInput().FindPoint(coord) | ||
| 752 | - | ||
| 753 | - if position != -1: | ||
| 754 | - coord = slice_data.actor.GetInput().GetPoint(position) | 749 | + wx, wy, wz = viewer.get_coordinate_cursor(mouse_x, mouse_y, self.picker) |
| 750 | + position = viewer.get_slice_pixel_coord_by_world_pos(wx, wy, wz) | ||
| 755 | 751 | ||
| 756 | - slice_data.cursor.SetPosition(coord) | ||
| 757 | cursor = slice_data.cursor | 752 | cursor = slice_data.cursor |
| 758 | radius = cursor.radius | 753 | radius = cursor.radius |
| 759 | 754 | ||
| 760 | - if position < 0: | ||
| 761 | - position = viewer.calculate_matrix_position(coord) | ||
| 762 | - | 755 | + slice_data.cursor.SetPosition((wx, wy, wz)) |
| 763 | viewer.slice_.edit_mask_pixel(operation, cursor.GetPixels(), | 756 | viewer.slice_.edit_mask_pixel(operation, cursor.GetPixels(), |
| 764 | position, radius, viewer.orientation) | 757 | position, radius, viewer.orientation) |
| 765 | #viewer._flush_buffer = True | 758 | #viewer._flush_buffer = True |
| @@ -796,39 +789,19 @@ class EditorInteractorStyle(DefaultInteractorStyle): | @@ -796,39 +789,19 @@ class EditorInteractorStyle(DefaultInteractorStyle): | ||
| 796 | elif operation == const.BRUSH_DRAW and iren.GetControlKey(): | 789 | elif operation == const.BRUSH_DRAW and iren.GetControlKey(): |
| 797 | operation = const.BRUSH_ERASE | 790 | operation = const.BRUSH_ERASE |
| 798 | 791 | ||
| 799 | - # TODO: Improve! | ||
| 800 | - #for i in self.slice_data_list: | ||
| 801 | - #i.cursor.Show(0) | ||
| 802 | - | ||
| 803 | - self.picker.Pick(mouse_x, mouse_y, 0, render) | ||
| 804 | - | ||
| 805 | - #if (self.pick.GetViewProp()): | ||
| 806 | - #self.interactor.SetCursor(wx.StockCursor(wx.CURSOR_BLANK)) | ||
| 807 | - #else: | ||
| 808 | - #self.interactor.SetCursor(wx.StockCursor(wx.CURSOR_DEFAULT)) | ||
| 809 | - | ||
| 810 | - coord = self.get_coordinate_cursor() | ||
| 811 | - position = viewer.slice_data.actor.GetInput().FindPoint(coord) | ||
| 812 | - | ||
| 813 | - # when position == -1 the cursos is not over the image, so is not | ||
| 814 | - # necessary to set the cursor position to world coordinate center of | ||
| 815 | - # pixel from slice image. | ||
| 816 | - if position != -1: | ||
| 817 | - coord = slice_data.actor.GetInput().GetPoint(position) | ||
| 818 | - slice_data.cursor.SetPosition(coord) | ||
| 819 | - #self.__update_cursor_position(slice_data, coord) | 792 | + wx, wy, wz = viewer.get_coordinate_cursor(mouse_x, mouse_y, self.picker) |
| 793 | + slice_data.cursor.SetPosition((wx, wy, wz)) | ||
| 820 | 794 | ||
| 821 | if (self.left_pressed): | 795 | if (self.left_pressed): |
| 822 | cursor = slice_data.cursor | 796 | cursor = slice_data.cursor |
| 823 | - position = slice_data.actor.GetInput().FindPoint(coord) | ||
| 824 | radius = cursor.radius | 797 | radius = cursor.radius |
| 825 | 798 | ||
| 826 | - if position < 0: | ||
| 827 | - position = viewer.calculate_matrix_position(coord) | 799 | + position = viewer.get_slice_pixel_coord_by_world_pos(wx, wy, wz) |
| 828 | 800 | ||
| 801 | + slice_data.cursor.SetPosition((wx, wy, wz)) | ||
| 829 | viewer.slice_.edit_mask_pixel(operation, cursor.GetPixels(), | 802 | viewer.slice_.edit_mask_pixel(operation, cursor.GetPixels(), |
| 830 | - position, radius, self.orientation) | ||
| 831 | - # TODO: To create a new function to reload images to viewer. | 803 | + position, radius, viewer.orientation) |
| 804 | + | ||
| 832 | viewer.OnScrollBar(update3D=False) | 805 | viewer.OnScrollBar(update3D=False) |
| 833 | 806 | ||
| 834 | else: | 807 | else: |
| @@ -878,18 +851,6 @@ class EditorInteractorStyle(DefaultInteractorStyle): | @@ -878,18 +851,6 @@ class EditorInteractorStyle(DefaultInteractorStyle): | ||
| 878 | else: | 851 | else: |
| 879 | self.OnScrollBackward(obj, evt) | 852 | self.OnScrollBackward(obj, evt) |
| 880 | 853 | ||
| 881 | - def get_coordinate_cursor(self): | ||
| 882 | - # Find position | ||
| 883 | - x, y, z = self.picker.GetPickPosition() | ||
| 884 | - bounds = self.viewer.slice_data.actor.GetBounds() | ||
| 885 | - if bounds[0] == bounds[1]: | ||
| 886 | - x = bounds[0] | ||
| 887 | - elif bounds[2] == bounds[3]: | ||
| 888 | - y = bounds[2] | ||
| 889 | - elif bounds[4] == bounds[5]: | ||
| 890 | - z = bounds[4] | ||
| 891 | - return x, y, z | ||
| 892 | - | ||
| 893 | 854 | ||
| 894 | class WatershedProgressWindow(object): | 855 | class WatershedProgressWindow(object): |
| 895 | def __init__(self, process): | 856 | def __init__(self, process): |