Commit 847232db6b9830ed4577317b7c12c7310c457209

Authored by tfmoraes
1 parent 93a8d517

FIX: Measures and slice number ares working again. NOTE: the code is a mess

Showing 1 changed file with 44 additions and 33 deletions   Show diff stats
invesalius/data/viewer_slice.py
... ... @@ -65,6 +65,7 @@ class Viewer(wx.Panel):
65 65  
66 66 # All renderers and image actors in this viewer
67 67 self.slice_data_list = []
  68 + self.slice_data = None
68 69 # The layout from slice_data, the first is number of cols, the second
69 70 # is the number of rows
70 71 self.layout = (1, 1)
... ... @@ -163,15 +164,10 @@ class Viewer(wx.Panel):
163 164 self.SetLayout(layout)
164 165  
165 166 def __config_interactor(self):
166   - ren = vtk.vtkRenderer()
167 167 style = vtk.vtkInteractorStyleImage()
168 168  
169 169 interactor = self.interactor
170 170 interactor.SetInteractorStyle(style)
171   - interactor.GetRenderWindow().AddRenderer(ren)
172   -
173   - self.cam = ren.GetActiveCamera()
174   - self.ren = ren
175 171  
176 172 def SetInteractorStyle(self, state):
177 173 self.state = state
... ... @@ -362,7 +358,7 @@ class Viewer(wx.Panel):
362 358 def OnChangeSliceMove(self, evt, obj):
363 359 if (self.left_pressed):
364 360 min = 0
365   - max = self.actor.GetSliceNumberMax()
  361 + max = self.slice_.GetMaxSliceNumber(self.orientation)
366 362  
367 363 if (self.left_pressed):
368 364 position = self.interactor.GetLastEventPosition()
... ... @@ -484,11 +480,11 @@ class Viewer(wx.Panel):
484 480 down_text]
485 481  
486 482  
487   - self.ren.AddActor(self.wl_text.actor)
488   - self.ren.AddActor(left_text.actor)
489   - self.ren.AddActor(right_text.actor)
490   - self.ren.AddActor(up_text.actor)
491   - self.ren.AddActor(down_text.actor)
  483 + self.slice_data.renderer.AddActor(self.wl_text.actor)
  484 + self.slice_data.renderer.AddActor(left_text.actor)
  485 + self.slice_data.renderer.AddActor(right_text.actor)
  486 + self.slice_data.renderer.AddActor(up_text.actor)
  487 + self.slice_data.renderer.AddActor(down_text.actor)
492 488  
493 489 def Reposition(self, slice_data):
494 490 """
... ... @@ -747,9 +743,11 @@ class Viewer(wx.Panel):
747 743 evt.StartDolly()
748 744  
749 745 def get_slice_data(self, render):
750   - for slice_data in self.slice_data_list:
751   - if slice_data.renderer is render:
752   - return slice_data
  746 + #for slice_data in self.slice_data_list:
  747 + #if slice_data.renderer is render:
  748 + #return slice_data
  749 + # WARN: Return the only slice_data used in this slice_viewer.
  750 + return self.slice_data
753 751  
754 752 def CalcultateScrollPosition(self, coord):
755 753 # Based in the given coord (x, y, z), returns a list with the scroll positions for each
... ... @@ -1060,11 +1058,13 @@ class Viewer(wx.Panel):
1060 1058 self.scroll.SetScrollbar(wx.SB_VERTICAL, 1, max_slice_number,
1061 1059 max_slice_number)
1062 1060  
1063   - self.actor = vtk.vtkImageActor()
1064   - self.ren.AddActor(self.actor)
  1061 + self.slice_data = self.create_slice_window()
  1062 + self.slice_data.actor.SetInput(imagedata)
  1063 + self.cam = self.slice_data.renderer.GetActiveCamera()
1065 1064 self.set_slice_number(0)
1066 1065 self.__update_camera()
1067   - self.ren.ResetCamera()
  1066 + self.slice_data.renderer.ResetCamera()
  1067 + self.interactor.GetRenderWindow().AddRenderer(self.slice_data.renderer)
1068 1068 #if slice_.imagedata is None:
1069 1069 #slice_.SetInput(imagedata, mask_dict)
1070 1070  
... ... @@ -1249,16 +1249,15 @@ class Viewer(wx.Panel):
1249 1249 for slice_data in self.slice_data_list:
1250 1250 self.__update_camera(slice_data)
1251 1251  
1252   - def create_slice_window(self, imagedata):
  1252 + def create_slice_window(self):
1253 1253 renderer = vtk.vtkRenderer()
1254 1254 self.interactor.GetRenderWindow().AddRenderer(renderer)
1255 1255 actor = vtk.vtkImageActor()
1256   - actor.SetInput(imagedata)
1257 1256 slice_data = sd.SliceData()
1258 1257 slice_data.SetOrientation(self.orientation)
1259 1258 slice_data.renderer = renderer
1260 1259 slice_data.actor = actor
1261   - slice_data.SetBorderStyle(sd.BORDER_UP | sd.BORDER_DOWN)
  1260 + slice_data.SetBorderStyle(sd.BORDER_ALL)
1262 1261 renderer.AddActor(actor)
1263 1262 renderer.AddActor(slice_data.text.actor)
1264 1263 renderer.AddViewProp(slice_data.box_actor)
... ... @@ -1279,10 +1278,11 @@ class Viewer(wx.Panel):
1279 1278 #slice_data.renderer.Render()
1280 1279  
1281 1280 def __update_display_extent(self, image):
1282   - self.actor.SetDisplayExtent(image.GetExtent())
1283   - self.ren.ResetCameraClippingRange()
  1281 + self.slice_data.actor.SetDisplayExtent(image.GetExtent())
  1282 + self.slice_data.renderer.ResetCameraClippingRange()
1284 1283  
1285 1284 def UpdateRender(self, evt):
  1285 + print "Updating viewer", self.orientation
1286 1286 self.interactor.Render()
1287 1287  
1288 1288 def __configure_scroll(self):
... ... @@ -1370,15 +1370,21 @@ class Viewer(wx.Panel):
1370 1370  
1371 1371 def OnSize(self, evt):
1372 1372 w, h = evt.GetSize()
1373   - w = float(w) / self.layout[0]
1374   - h = float(h) / self.layout[1]
1375   - for slice_data in self.slice_data_list:
1376   - slice_data.SetSize((w, h))
  1373 + w = float(w)
  1374 + h = float(h)
  1375 + if self.slice_data:
  1376 + self.slice_data.SetSize((w, h))
1377 1377 evt.Skip()
1378 1378  
1379 1379 def set_slice_number(self, index):
1380 1380 image = self.slice_.GetSlices(self.orientation, index)
1381   - self.actor.SetInput(image)
  1381 + self.slice_data.actor.SetInput(image)
  1382 + for actor in self.actors_by_slice_number.get(self.slice_data.number, []):
  1383 + self.slice_data.renderer.RemoveActor(actor)
  1384 + for actor in self.actors_by_slice_number.get(index, []):
  1385 + self.slice_data.renderer.AddActor(actor)
  1386 +
  1387 + self.slice_data.SetNumber(index)
1382 1388 self.__update_display_extent(image)
1383 1389 #self.interactor.Render()
1384 1390  
... ... @@ -1419,6 +1425,7 @@ class Viewer(wx.Panel):
1419 1425 slice_number = slice_data.number
1420 1426 self.pick.Pick(x, y, 0, render)
1421 1427 x, y, z = self.pick.GetPickPosition()
  1428 + print x, y, z
1422 1429 if self.pick.GetViewProp():
1423 1430 self.render_to_add = slice_data.renderer
1424 1431 ps.Publisher().sendMessage("Add measurement point",
... ... @@ -1446,12 +1453,16 @@ class Viewer(wx.Panel):
1446 1453 def AddActors(self, pubsub_evt):
1447 1454 "Inserting actors"
1448 1455 actors, n = pubsub_evt.data
1449   - try:
1450   - renderer = self.renderers_by_slice_number[n]
1451   - for actor in actors:
1452   - renderer.AddActor(actor)
1453   - except KeyError:
1454   - pass
  1456 + print actors
  1457 + #try:
  1458 + #renderer = self.renderers_by_slice_number[n]
  1459 + #for actor in actors:
  1460 + #renderer.AddActor(actor)
  1461 + #except KeyError:
  1462 + #pass
  1463 + for actor in actors:
  1464 + self.slice_data.renderer.AddActor(actor)
  1465 +
1455 1466 try:
1456 1467 self.actors_by_slice_number[n].extend(actors)
1457 1468 except KeyError:
... ...