Commit 847232db6b9830ed4577317b7c12c7310c457209
1 parent
93a8d517
Exists in
master
and in
67 other branches
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: | ... | ... |