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 | 434 | thresh_min, thresh_max = self.current_mask.edition_threshold_range |
| 435 | 435 | |
| 436 | 436 | if hasattr(position, '__iter__'): |
| 437 | - py, px = position | |
| 437 | + px, py = position | |
| 438 | 438 | if orientation == 'AXIAL': |
| 439 | 439 | sx = self.spacing[0] |
| 440 | 440 | sy = self.spacing[1] | ... | ... |
invesalius/data/styles.py
| ... | ... | @@ -76,6 +76,7 @@ def get_LUT_value(data, window, level): |
| 76 | 76 | data.shape = shape |
| 77 | 77 | return data |
| 78 | 78 | |
| 79 | + | |
| 79 | 80 | class BaseImageInteractorStyle(vtk.vtkInteractorStyleImage): |
| 80 | 81 | def __init__(self, viewer): |
| 81 | 82 | self.right_pressed = False |
| ... | ... | @@ -745,21 +746,13 @@ class EditorInteractorStyle(DefaultInteractorStyle): |
| 745 | 746 | #i.cursor.Show(0) |
| 746 | 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 | 752 | cursor = slice_data.cursor |
| 758 | 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 | 756 | viewer.slice_.edit_mask_pixel(operation, cursor.GetPixels(), |
| 764 | 757 | position, radius, viewer.orientation) |
| 765 | 758 | #viewer._flush_buffer = True |
| ... | ... | @@ -796,39 +789,19 @@ class EditorInteractorStyle(DefaultInteractorStyle): |
| 796 | 789 | elif operation == const.BRUSH_DRAW and iren.GetControlKey(): |
| 797 | 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 | 795 | if (self.left_pressed): |
| 822 | 796 | cursor = slice_data.cursor |
| 823 | - position = slice_data.actor.GetInput().FindPoint(coord) | |
| 824 | 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 | 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 | 805 | viewer.OnScrollBar(update3D=False) |
| 833 | 806 | |
| 834 | 807 | else: |
| ... | ... | @@ -878,18 +851,6 @@ class EditorInteractorStyle(DefaultInteractorStyle): |
| 878 | 851 | else: |
| 879 | 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 | 855 | class WatershedProgressWindow(object): |
| 895 | 856 | def __init__(self, process): | ... | ... |