Commit 298863b6991b0e66e68f6a466010eefd60d6b8d1
1 parent
334100b0
Exists in
master
and in
68 other branches
ENH: Showing the slice number in each slice_data
Showing
2 changed files
with
34 additions
and
5 deletions
Show diff stats
invesalius/data/slice_data.py
| @@ -16,15 +16,43 @@ | @@ -16,15 +16,43 @@ | ||
| 16 | # PARTICULAR. Consulte a Licenca Publica Geral GNU para obter mais | 16 | # PARTICULAR. Consulte a Licenca Publica Geral GNU para obter mais |
| 17 | # detalhes. | 17 | # detalhes. |
| 18 | #-------------------------------------------------------------------------- | 18 | #-------------------------------------------------------------------------- |
| 19 | +import vtk | ||
| 20 | + | ||
| 19 | class SliceData(object): | 21 | class SliceData(object): |
| 20 | def __init__(self): | 22 | def __init__(self): |
| 21 | self.renderer = None | 23 | self.renderer = None |
| 22 | self.actor = None | 24 | self.actor = None |
| 23 | self.number = 0 | 25 | self.number = 0 |
| 24 | self.cursor = None | 26 | self.cursor = None |
| 27 | + self.__create_text() | ||
| 28 | + | ||
| 29 | + def __create_text(self): | ||
| 30 | + text_property = vtk.vtkTextProperty() | ||
| 31 | + text_property.SetFontSize(16) | ||
| 32 | + text_property.SetFontFamilyToTimes() | ||
| 33 | + text_property.BoldOn() | ||
| 34 | + #text_property.SetColor(colour) | ||
| 35 | + | ||
| 36 | + text_actor = vtk.vtkTextActor() | ||
| 37 | + text_actor.SetInput("%d" % self.number) | ||
| 38 | + text_actor.GetTextProperty().ShallowCopy(text_property) | ||
| 39 | + text_actor.SetPosition(1,1) | ||
| 40 | + self.text_actor = text_actor | ||
| 41 | + | ||
| 42 | + def SetNumber(self, number): | ||
| 43 | + self.number = number | ||
| 44 | + self.text_actor.SetInput("%d" % self.number) | ||
| 25 | 45 | ||
| 26 | def SetCursor(self, cursor): | 46 | def SetCursor(self, cursor): |
| 27 | if self.cursor: | 47 | if self.cursor: |
| 28 | self.renderer.RemoveActor(self.cursor.actor) | 48 | self.renderer.RemoveActor(self.cursor.actor) |
| 29 | self.renderer.AddActor(cursor.actor) | 49 | self.renderer.AddActor(cursor.actor) |
| 30 | self.cursor = cursor | 50 | self.cursor = cursor |
| 51 | + | ||
| 52 | + def Hide(self): | ||
| 53 | + self.renderer.RemoveActor(self.actor) | ||
| 54 | + self.renderer.RemoveActor(self.text_actor) | ||
| 55 | + | ||
| 56 | + def Show(self): | ||
| 57 | + self.renderer.AddActor(self.actor) | ||
| 58 | + self.renderer.AddActor(self.text_actor) |
invesalius/data/viewer_slice.py
| @@ -209,7 +209,7 @@ class Viewer(wx.Panel): | @@ -209,7 +209,7 @@ class Viewer(wx.Panel): | ||
| 209 | def __set_mode_editor(self, pubsub_evt): | 209 | def __set_mode_editor(self, pubsub_evt): |
| 210 | self.append_mode('EDITOR') | 210 | self.append_mode('EDITOR') |
| 211 | self.mouse_pressed = 0 | 211 | self.mouse_pressed = 0 |
| 212 | - #self.interactor.SetCursor(wx.StockCursor(wx.CURSOR_BLANK)) | 212 | + self.interactor.SetCursor(wx.StockCursor(wx.CURSOR_BLANK)) |
| 213 | 213 | ||
| 214 | def __set_mode_spin(self, pubsub_evt): | 214 | def __set_mode_spin(self, pubsub_evt): |
| 215 | self.append_mode('SPIN') | 215 | self.append_mode('SPIN') |
| @@ -1020,10 +1020,11 @@ class Viewer(wx.Panel): | @@ -1020,10 +1020,11 @@ class Viewer(wx.Panel): | ||
| 1020 | self.interactor.GetRenderWindow().AddRenderer(renderer) | 1020 | self.interactor.GetRenderWindow().AddRenderer(renderer) |
| 1021 | actor = vtk.vtkImageActor() | 1021 | actor = vtk.vtkImageActor() |
| 1022 | actor.SetInput(imagedata) | 1022 | actor.SetInput(imagedata) |
| 1023 | - renderer.AddActor(actor) | ||
| 1024 | slice_data = SliceData() | 1023 | slice_data = SliceData() |
| 1025 | slice_data.renderer = renderer | 1024 | slice_data.renderer = renderer |
| 1026 | slice_data.actor = actor | 1025 | slice_data.actor = actor |
| 1026 | + renderer.AddActor(actor) | ||
| 1027 | + renderer.AddActor(slice_data.text_actor) | ||
| 1027 | return slice_data | 1028 | return slice_data |
| 1028 | 1029 | ||
| 1029 | def __update_camera(self, slice_data): | 1030 | def __update_camera(self, slice_data): |
| @@ -1141,11 +1142,11 @@ class Viewer(wx.Panel): | @@ -1141,11 +1142,11 @@ class Viewer(wx.Panel): | ||
| 1141 | pos = self.layout[0] * self.layout[1] * index + n | 1142 | pos = self.layout[0] * self.layout[1] * index + n |
| 1142 | max = actor.GetSliceNumberMax() | 1143 | max = actor.GetSliceNumberMax() |
| 1143 | if pos < max: | 1144 | if pos < max: |
| 1144 | - slice_data.number = pos | 1145 | + slice_data.SetNumber(pos) |
| 1145 | self.__update_display_extent(slice_data) | 1146 | self.__update_display_extent(slice_data) |
| 1146 | - ren.AddActor(actor) | 1147 | + slice_data.Show() |
| 1147 | else: | 1148 | else: |
| 1148 | - ren.RemoveActor(actor) | 1149 | + slice_data.Hide() |
| 1149 | 1150 | ||
| 1150 | position = {"SAGITAL": {0: slice_data.number}, | 1151 | position = {"SAGITAL": {0: slice_data.number}, |
| 1151 | "CORONAL": {1: slice_data.number}, | 1152 | "CORONAL": {1: slice_data.number}, |