Commit 0bd1e163f383c855b7caa83fa9d7760d11b0fa77

Authored by Paulo Henrique Junqueira Amorim
1 parent 4cea1d31

ADD: Synchronize with the 3D plane slices

Showing 1 changed file with 52 additions and 1 deletions   Show diff stats
invesalius/data/viewer_volume.py
@@ -321,11 +321,56 @@ class SlicePlane: @@ -321,11 +321,56 @@ class SlicePlane:
321 self.original_orientation = project.original_orientation 321 self.original_orientation = project.original_orientation
322 self.Create() 322 self.Create()
323 self.__bind_evt() 323 self.__bind_evt()
324 - 324 + self.__bind_vtk_evt()
  325 +
325 def __bind_evt(self): 326 def __bind_evt(self):
326 ps.Publisher().subscribe(self.Enable, 'Enable plane') 327 ps.Publisher().subscribe(self.Enable, 'Enable plane')
327 ps.Publisher().subscribe(self.Disable, 'Disable plane') 328 ps.Publisher().subscribe(self.Disable, 'Disable plane')
328 ps.Publisher().subscribe(self.ChangeSlice, 'Change slice from slice plane') 329 ps.Publisher().subscribe(self.ChangeSlice, 'Change slice from slice plane')
  330 +
  331 + def __bind_vtk_evt(self):
  332 + self.plane_x.AddObserver("InteractionEvent", self.PlaneEvent)
  333 + self.plane_y.AddObserver("InteractionEvent", self.PlaneEvent)
  334 + self.plane_z.AddObserver("InteractionEvent", self.PlaneEvent)
  335 +
  336 + def PlaneEvent(self, obj, evt):
  337 +
  338 + number = obj.GetSliceIndex()
  339 + plane_axis = obj.GetPlaneOrientation()
  340 +
  341 + if (self.original_orientation == const.AXIAL):
  342 + if (plane_axis == 0):
  343 + orientation = "SAGITAL"
  344 + elif(plane_axis == 1):
  345 + orientation = "CORONAL"
  346 + dimen = obj.GetInput().GetDimensions()
  347 + number = abs(dimen[0] - number)
  348 + else:
  349 + orientation = "AXIAL"
  350 +
  351 + elif(self.original_orientation == const.SAGITAL):
  352 + if (plane_axis == 0):
  353 + orientation = "CORONAL"
  354 + elif(plane_axis == 1):
  355 + orientation = "AXIAL"
  356 + dimen = obj.GetInput().GetDimensions()
  357 + number = abs(dimen[0] - number)
  358 + else:
  359 + orientation = "SAGITAL"
  360 + else:
  361 + if (plane_axis == 0):
  362 + orientation = "SAGITAL"
  363 + elif(plane_axis == 1):
  364 + orientation = "AXIAL"
  365 + dimen = obj.GetInput().GetDimensions()
  366 + number = abs(dimen[0] - number)
  367 + else:
  368 + orientation = "CORONAL"
  369 +
  370 +
  371 + if (obj.GetSlicePosition() != 0.0):
  372 + ps.Publisher().sendMessage(('Set scroll position', \
  373 + orientation), number)
329 374
330 def Create(self): 375 def Create(self):
331 376
@@ -414,6 +459,12 @@ class SlicePlane: @@ -414,6 +459,12 @@ class SlicePlane:
414 self.plane_y.On() 459 self.plane_y.On()
415 elif(label == "Sagital"): 460 elif(label == "Sagital"):
416 self.plane_x.On() 461 self.plane_x.On()
  462 + a = self.plane_x.GetTexturePlaneProperty()
  463 + a.SetBackfaceCulling(0)
  464 + c = self.plane_x.GetTexture()
  465 + c.SetRestrictPowerOf2ImageSmaller(1)
  466 + #print dir(a)
  467 +
417 elif(self.original_orientation == const.SAGITAL): 468 elif(self.original_orientation == const.SAGITAL):
418 if(label == "Axial"): 469 if(label == "Axial"):
419 self.plane_y.On() 470 self.plane_y.On()