Commit 2cbdd0509190e3f8c5543c2755f75b66223aff36

Authored by Paulo Henrique Junqueira Amorim
1 parent 9b63f379

ADD: Brush in case's with different orientation. (TODO: FIX Bud in CursorCircle and CursorRectangle)

Showing 1 changed file with 64 additions and 16 deletions   Show diff stats
invesalius/data/cursor_actors.py
... ... @@ -2,7 +2,8 @@ from math import *
2 2  
3 3 import vtk
4 4 import wx.lib.pubsub as ps
5   -
  5 +from project import Project
  6 +import constants as const
6 7 import utils
7 8  
8 9 class CursorCircle:
... ... @@ -59,9 +60,27 @@ class CursorCircle:
59 60 yc = 0.0
60 61 z = 0.0
61 62 xs, ys, zs = self.spacing
62   - orientation_based_spacing = {"AXIAL" : (xs, ys),
63   - "SAGITAL" : (ys, zs),
64   - "CORONAL" : (xs, zs)}
  63 +
  64 + proj = Project()
  65 + orig_orien = proj.original_orientation
  66 +
  67 + xy = (xs, ys)
  68 + yz = (ys, zs)
  69 + xz = (xs, zs)
  70 +
  71 + if (orig_orien == const.SAGITAL):
  72 + orientation_based_spacing = {"SAGITAL" : xy,
  73 + "AXIAL" : yz,
  74 + "CORONAL" : xz}
  75 + elif(orig_orien == const.CORONAL):
  76 + orientation_based_spacing = {"CORONAL" : xy,
  77 + "AXIAL" : xz,
  78 + "SAGITAL" : yz}
  79 + else:
  80 + orientation_based_spacing = {"AXIAL" : xy,
  81 + "SAGITAL" : yz,
  82 + "CORONAL" : xz}
  83 +
65 84 xs, ys = orientation_based_spacing[self.orientation]
66 85 self.pixel_list = []
67 86 radius = self.radius
... ... @@ -90,12 +109,24 @@ class CursorCircle:
90 109  
91 110 def SetOrientation(self, orientation):
92 111 self.orientation = orientation
93   -
94   - if orientation == "CORONAL":
95   - self.actor.RotateX(90)
96   -
97   - if orientation == "SAGITAL":
98   - self.actor.RotateY(90)
  112 + proj = Project()
  113 +
  114 + orig_orien = proj.original_orientation
  115 + if (orig_orien == const.SAGITAL):
  116 + if orientation == "CORONAL":
  117 + self.actor.RotateY(90)
  118 + if orientation == "AXIAL":
  119 + self.actor.RotateX(90)
  120 + elif(orig_orien == const.CORONAL):
  121 + if orientation == "AXIAL":
  122 + self.actor.RotateX(270)
  123 + if orientation == "SAGITAL":
  124 + self.actor.RotateY(90)
  125 + else:
  126 + if orientation == "CORONAL":
  127 + self.actor.RotateX(90)
  128 + if orientation == "SAGITAL":
  129 + self.actor.RotateY(90)
99 130  
100 131 def SetPosition(self, position):
101 132 self.position = position
... ... @@ -112,12 +143,28 @@ class CursorCircle:
112 143 px, py, pz = self.edition_position
113 144 orient = self.orientation
114 145 xs, ys, zs = self.spacing
115   - abs_pixel = {"AXIAL": lambda x,y: (px + x / xs, py+(y/ys), pz),
116   - "CORONAL": lambda x,y: (px+(x/xs), py,
117   - pz+(y/zs)),
118   - "SAGITAL": lambda x,y: (px, py+(x/ys),
119   - pz+(y/zs))}
  146 + proj = Project()
  147 + orig_orien = proj.original_orientation
  148 +
  149 + xy1 = lambda x,y: (px + x / xs, py+(y/ys), pz)
  150 + xy2 = lambda x,y: (px+(x/xs), py, pz+(y/zs))
  151 + xy3 = lambda x,y: (px, py+(x/ys), pz+(y/zs))
  152 +
  153 + if (orig_orien == const.SAGITAL):
  154 + abs_pixel = {"SAGITAL": xy1,
  155 + "AXIAL": xy2,
  156 + "CORONAL": xy3}
  157 + elif(orig_orien == const.CORONAL):
  158 + abs_pixel = {"CORONAL": xy1,
  159 + "SAGITAL": xy3,
  160 + "AXIAL": xy2}
  161 + else:
  162 + abs_pixel = {"AXIAL": xy1,
  163 + "CORONAL": xy2,
  164 + "SAGITAL": xy3}
  165 +
120 166 function_orientation = abs_pixel[orient]
  167 +
121 168 for pixel_0,pixel_1 in self.pixel_list:
122 169 # The position of the pixels in this list is relative (based only on
123 170 # the area, and not the cursor position).
... ... @@ -131,7 +178,8 @@ class CursorCircle:
131 178 #-------------------------------------------------------------------------------
132 179 #-------------------------------------------------------------------------------
133 180 #-------------------------------------------------------------------------------
134   -#-------------------------------------------------------------------------------#-------------------------------------------------------------------------------
  181 +#-------------------------------------------------------------------------------
  182 +#-------------------------------------------------------------------------------
135 183 #-------------------------------------------------------------------------------
136 184 #-------------------------------------------------------------------------------
137 185 #-------------------------------------------------------------------------------
... ...