Commit a0f3adda58285a40e315f4b2330cb06d6661fbe3

Authored by Paulo Henrique Junqueira Amorim
1 parent 364c8cf6

ADD: Tool to Reposition Actor

invesalius/constants.py
... ... @@ -15,7 +15,7 @@ CAM_POSITION = {"AXIAL":(0, 0, 1), "CORONAL":(0, -1, 0), "SAGITAL":(1, 0, 0)}
15 15 CAM_VIEW_UP = {"AXIAL":(0, 1, 0), "CORONAL":(0, 0, 1), "SAGITAL":(0, 0, 1)}
16 16  
17 17 # Camera according to volume's orientation
18   -AXIAL_VOLUME_CAM_VIEW_UP = {"FRONT":(-1,0,1), "BACK":(0,0,1), "RIGHT":(0,0,1),\
  18 +AXIAL_VOLUME_CAM_VIEW_UP = {"FRONT":(0,0,1), "BACK":(0,0,1), "RIGHT":(0,0,1),\
19 19 "LEFT":(0,0,1), "TOP":(0,1,0), "BOTTOM":(0,-1,0)}
20 20 AXIAL_VOLUME_CAM_POSITION = {"FRONT":(0,-1,0), "BACK":(0,1,0), "RIGHT":(-1,0,0),\
21 21 "LEFT":(1,0,0), "TOP":(0,0,1), "BOTTOM":(0,0,-1)}
... ...
invesalius/data/viewer_volume.py
... ... @@ -22,8 +22,8 @@ import sys
22 22 import wx
23 23 import vtk
24 24 from vtk.wx.wxVTKRenderWindowInteractor import wxVTKRenderWindowInteractor
25   -
26 25 import wx.lib.pubsub as ps
  26 +import constants as const
27 27  
28 28 class Viewer(wx.Panel):
29 29 def __init__(self, parent):
... ... @@ -67,6 +67,7 @@ class Viewer(wx.Panel):
67 67 ps.Publisher().subscribe(self.LoadVolume, 'Load volume into viewer')
68 68 ps.Publisher().subscribe(self.AppendActor,'AppendActor')
69 69 ps.Publisher().subscribe(self.SetWidgetInteractor, 'Set Widget Interactor')
  70 + ps.Publisher().subscribe(self.RepositionActor, 'Reposition Actor')
70 71  
71 72  
72 73 def __bind_events_wx(self):
... ... @@ -86,9 +87,7 @@ class Viewer(wx.Panel):
86 87 volume, colour = pubsub_evt.data
87 88 self.light = self.ren.GetLights().GetNextItem()
88 89 self.ren.AddVolume(volume)
89   - #self.ren.SetBackground(colour)
90   - self.ren.ResetCamera()
91   - self.ren.ResetCameraClippingRange()
  90 + self.RepositionActor()
92 91 self.UpdateRender()
93 92  
94 93 def ChangeBackgroundColour(self, pubsub_evt):
... ... @@ -106,6 +105,26 @@ class Viewer(wx.Panel):
106 105  
107 106 self.iren.Render()
108 107  
  108 + def RepositionActor(self, evt_pubsub=None):
  109 +
  110 + if (evt_pubsub):
  111 + position = evt_pubsub.data
  112 + else:
  113 + position = "FRONT"
  114 +
  115 + cam = self.ren.GetActiveCamera()
  116 + cam.SetFocalPoint(0,0,0)
  117 +
  118 + xv,yv,zv = const.AXIAL_VOLUME_CAM_VIEW_UP[position]
  119 + xp,yp,zp = const.AXIAL_VOLUME_CAM_POSITION[position]
  120 +
  121 + cam.SetViewUp(xv,yv,zv)
  122 + cam.SetPosition(xp,yp,zp)
  123 +
  124 + self.ren.ResetCameraClippingRange()
  125 + self.ren.ResetCamera()
  126 + self.iren.Render()
  127 +
109 128 def UpdateRender(self, evt_pubsub=None):
110 129 self.iren.Render()
111 130  
... ...
invesalius/gui/default_viewers.py
... ... @@ -173,7 +173,7 @@ class VolumeViewerCover(wx.Panel):
173 173 self.SetSizer(sizer)
174 174 sizer.Fit(self)
175 175  
176   -#import wx.lib.platebtn as pbtn
  176 +import wx.lib.platebtn as pbtn
177 177 import wx.lib.buttons as btn
178 178 import wx.lib.pubsub as ps
179 179 import wx.lib.colourselect as csel
... ... @@ -186,10 +186,55 @@ class VolumeToolPanel(wx.Panel):
186 186 BMP_RAYCASTING.SetWidth(22)
187 187 BMP_RAYCASTING.SetHeight(22)
188 188  
  189 + BMP_POSITION = wx.Bitmap("../icons/brush_square.jpg", wx.BITMAP_TYPE_JPEG)
  190 + BMP_POSITION.SetWidth(22)
  191 + BMP_POSITION.SetHeight(22)
  192 +
189 193 button_raycasting=btn.GenBitmapToggleButton(self, 1, BMP_RAYCASTING, size=(24,24))
190 194 button_raycasting.Bind(wx.EVT_BUTTON, self.OnToggleRaycasting)
191 195 self.button_raycasting = button_raycasting
192 196  
  197 + menu = wx.Menu()
  198 +
  199 + FRONT_BMP = wx.Bitmap("../icons/brush_circle.jpg", wx.BITMAP_TYPE_JPEG)
  200 + item = wx.MenuItem(menu, 0, "Front")
  201 + item.SetBitmap(FRONT_BMP)
  202 +
  203 + BACK_BMP = wx.Bitmap("../icons/brush_square.jpg", wx.BITMAP_TYPE_JPEG)
  204 + item2 = wx.MenuItem(menu, 1, "Back")
  205 + item2.SetBitmap(BACK_BMP)
  206 +
  207 + TOP_BMP = wx.Bitmap("../icons/brush_square.jpg", wx.BITMAP_TYPE_JPEG)
  208 + item3 = wx.MenuItem(menu, 2, "Top")
  209 + item3.SetBitmap(TOP_BMP)
  210 +
  211 + BOTTOM_BMP = wx.Bitmap("../icons/brush_square.jpg", wx.BITMAP_TYPE_JPEG)
  212 + item4 = wx.MenuItem(menu, 3, "Bottom")
  213 + item4.SetBitmap(BOTTOM_BMP)
  214 +
  215 + RIGHT_BMP = wx.Bitmap("../icons/brush_square.jpg", wx.BITMAP_TYPE_JPEG)
  216 + item5 = wx.MenuItem(menu, 4, "Right")
  217 + item5.SetBitmap(RIGHT_BMP)
  218 +
  219 + LEFT_BMP = wx.Bitmap("../icons/brush_square.jpg", wx.BITMAP_TYPE_JPEG)
  220 + item6 = wx.MenuItem(menu, 5, "Left")
  221 + item6.SetBitmap(LEFT_BMP)
  222 +
  223 + self.Bind(wx.EVT_MENU, self.OnMenu)
  224 +
  225 + menu.AppendItem(item)
  226 + menu.AppendItem(item2)
  227 + menu.AppendItem(item3)
  228 + menu.AppendItem(item4)
  229 + menu.AppendItem(item5)
  230 + menu.AppendItem(item6)
  231 +
  232 + button_position = pbtn.PlateButton(self, wx.ID_ANY,"", BMP_POSITION,
  233 + style=pbtn.PB_STYLE_SQUARE, size=(24,24))
  234 +
  235 + button_position.SetMenu(menu)
  236 + self.button_position = button_position
  237 +
193 238 button_colour= csel.ColourSelect(self, 111,colour=(0,0,0),size=(24,24))
194 239 button_colour.Bind(csel.EVT_COLOURSELECT, self.OnSelectColour)
195 240 self.button_colour = button_colour
... ... @@ -197,8 +242,15 @@ class VolumeToolPanel(wx.Panel):
197 242 sizer = wx.BoxSizer(wx.VERTICAL)
198 243 sizer.Add(button_colour, 0, wx.ALL, 1)
199 244 sizer.Add(button_raycasting, 0, wx.ALL, 1)
  245 + sizer.Add(button_position, 0, wx.ALL, 1)
200 246 self.SetSizer(sizer)
201 247 sizer.Fit(self)
  248 +
  249 + def OnMenu(self, evt):
  250 + values = {0:"FRONT", 1:"BACK", 2:"TOP",\
  251 + 3:"BOTTOM", 4:"RIGHT", 5:"LEFT"}
  252 + ps.Publisher().sendMessage('Reposition Actor',\
  253 + values[evt.GetId()])
202 254  
203 255 def OnSelectColour(self, evt):
204 256 colour = c = [i/255.0 for i in evt.GetValue()]
... ...
invesalius/reader/dicom_reader.py
... ... @@ -109,7 +109,7 @@ def LoadImages(dir_):
109 109 read.Update()
110 110  
111 111 #Resample image in x,y dimension
112   - img = ResampleImage2D(read.GetOutput(), 256)
  112 + img = ResampleImage2D(read.GetOutput(), 200)
113 113  
114 114 #Stack images in Z axes
115 115 img_app.AddInput(img)
... ...