Commit 233d55c0d8981d6105b53090e691b6c7ed9f5777

Authored by tatiana
1 parent e64f9318

FIX: Raycasting startup (show WW/WL, bkg colour)

invesalius/data/viewer_volume.py
@@ -60,15 +60,20 @@ class Viewer(wx.Panel): @@ -60,15 +60,20 @@ class Viewer(wx.Panel):
60 self.interactor = interactor 60 self.interactor = interactor
61 self.ren = ren 61 self.ren = ren
62 62
  63 + self.raycasting_volume = False
  64 +
63 self.onclick = False 65 self.onclick = False
64 66
  67 + self.text = vtku.Text()
  68 +
  69 + self.view_angle = None
  70 +
65 self.__bind_events() 71 self.__bind_events()
66 self.__bind_events_wx() 72 self.__bind_events_wx()
67 73
68 - self.view_angle = None  
69 - 74 +
70 def OnMove(self, obj, evt): 75 def OnMove(self, obj, evt):
71 - if self.onclick: 76 + if self.onclick and self.raycasting_volume:
72 mouse_x, mouse_y = self.interactor.GetEventPosition() 77 mouse_x, mouse_y = self.interactor.GetEventPosition()
73 diff_x = mouse_x - self.last_x 78 diff_x = mouse_x - self.last_x
74 diff_y = mouse_y - self.last_y 79 diff_y = mouse_y - self.last_y
@@ -92,15 +97,22 @@ class Viewer(wx.Panel): @@ -92,15 +97,22 @@ class Viewer(wx.Panel):
92 'Render volume viewer') 97 'Render volume viewer')
93 ps.Publisher().subscribe(self.ChangeBackgroundColour, 98 ps.Publisher().subscribe(self.ChangeBackgroundColour,
94 'Change volume viewer background colour') 99 'Change volume viewer background colour')
  100 + # Raycating - related
95 ps.Publisher().subscribe(self.LoadVolume, 101 ps.Publisher().subscribe(self.LoadVolume,
96 'Load volume into viewer') 102 'Load volume into viewer')
  103 + ps.Publisher().subscribe(self.OnSetWindowLevelText,
  104 + 'Set volume window and level text')
  105 + ps.Publisher().subscribe(self.OnHideRaycasting,
  106 + 'Hide raycasting volume')
  107 + ps.Publisher().subscribe(self.OnShowRaycasting,
  108 + 'Update raycasting preset')
  109 + ###
97 ps.Publisher().subscribe(self.AppendActor,'AppendActor') 110 ps.Publisher().subscribe(self.AppendActor,'AppendActor')
98 ps.Publisher().subscribe(self.SetWidgetInteractor, 111 ps.Publisher().subscribe(self.SetWidgetInteractor,
99 'Set Widget Interactor') 112 'Set Widget Interactor')
100 ps.Publisher().subscribe(self.OnSetViewAngle, 113 ps.Publisher().subscribe(self.OnSetViewAngle,
101 'Set volume view angle') 114 'Set volume view angle')
102 - ps.Publisher().subscribe(self.OnSetWindowLevelText,  
103 - 'Set volume window and level text') 115 +
104 ps.Publisher().subscribe(self.OnEnableBrightContrast, 116 ps.Publisher().subscribe(self.OnEnableBrightContrast,
105 ('Set interaction mode', const.MODE_WW_WL)) 117 ('Set interaction mode', const.MODE_WW_WL))
106 ps.Publisher().subscribe(self.OnDisableBrightContrast, 118 ps.Publisher().subscribe(self.OnDisableBrightContrast,
@@ -133,19 +145,33 @@ class Viewer(wx.Panel): @@ -133,19 +145,33 @@ class Viewer(wx.Panel):
133 evt.Skip() 145 evt.Skip()
134 146
135 def OnSetWindowLevelText(self, pubsub_evt): 147 def OnSetWindowLevelText(self, pubsub_evt):
136 - ww, wl = pubsub_evt.data  
137 - self.text.SetValue("WL: %d WW: %d"%(wl, ww)) 148 + if self.raycasting_volume:
  149 + ww, wl = pubsub_evt.data
  150 + self.text.SetValue("WL: %d WW: %d"%(wl, ww))
  151 +
  152 + def OnShowRaycasting(self, pubsub_evt):
  153 + self.raycasting_volume = True
  154 + self.text.Show()
  155 +
  156 + def OnHideRaycasting(self, pubsub_evt):
  157 + self.raycasting_volume = False
  158 + self.text.Hide()
138 159
139 def LoadVolume(self, pubsub_evt): 160 def LoadVolume(self, pubsub_evt):
  161 + self.raycasting_volume = True
  162 +
140 volume = pubsub_evt.data[0] 163 volume = pubsub_evt.data[0]
  164 + colour = pubsub_evt.data[1]
  165 + ww, wl = pubsub_evt.data[2]
  166 +
141 self.light = self.ren.GetLights().GetNextItem() 167 self.light = self.ren.GetLights().GetNextItem()
142 168
143 - text = vtku.Text()  
144 - self.text = text  
145 -  
146 self.ren.AddVolume(volume) 169 self.ren.AddVolume(volume)
147 - self.ren.AddActor(text.actor)  
148 - 170 + self.text.SetValue("WL: %d WW: %d"%(wl, ww))
  171 + self.ren.AddActor(self.text.actor)
  172 + self.ren.SetBackground(colour)
  173 +
  174 +
149 if not (self.view_angle): 175 if not (self.view_angle):
150 self.SetViewAngle(const.VOL_FRONT) 176 self.SetViewAngle(const.VOL_FRONT)
151 else: 177 else:
invesalius/data/volume.py
@@ -100,10 +100,8 @@ class Volume(): @@ -100,10 +100,8 @@ class Volume():
100 self.LoadVolume() 100 self.LoadVolume()
101 101
102 def OnHideVolume(self, pubsub_evt): 102 def OnHideVolume(self, pubsub_evt):
103 - print "Hide", self.plane, self.plane_on  
104 self.volume.SetVisibility(0) 103 self.volume.SetVisibility(0)
105 if (self.plane and self.plane_on): 104 if (self.plane and self.plane_on):
106 - print "--- Hide Plane"  
107 self.plane.Disable() 105 self.plane.Disable()
108 ps.Publisher().sendMessage('Render volume viewer') 106 ps.Publisher().sendMessage('Render volume viewer')
109 107
@@ -111,7 +109,6 @@ class Volume(): @@ -111,7 +109,6 @@ class Volume():
111 if self.exist: 109 if self.exist:
112 self.volume.SetVisibility(1) 110 self.volume.SetVisibility(1)
113 if (self.plane and self.plane_on): 111 if (self.plane and self.plane_on):
114 - print "----- Show Plane"  
115 self.plane.Enable() 112 self.plane.Enable()
116 ps.Publisher().sendMessage('Render volume viewer') 113 ps.Publisher().sendMessage('Render volume viewer')
117 else: 114 else:
@@ -162,7 +159,6 @@ class Volume(): @@ -162,7 +159,6 @@ class Volume():
162 159
163 def OnSetRelativeWindowLevel(self, pubsub_evt): 160 def OnSetRelativeWindowLevel(self, pubsub_evt):
164 diff_ww, diff_wl = pubsub_evt.data 161 diff_ww, diff_wl = pubsub_evt.data
165 - print diff_ww  
166 ww = self.ww + diff_ww 162 ww = self.ww + diff_ww
167 wl = self.wl + diff_wl 163 wl = self.wl + diff_wl
168 ps.Publisher().sendMessage('Set volume window and level text', 164 ps.Publisher().sendMessage('Set volume window and level text',
@@ -365,7 +361,6 @@ class Volume(): @@ -365,7 +361,6 @@ class Volume():
365 def ApplyConvolution(self, imagedata): 361 def ApplyConvolution(self, imagedata):
366 number_filters = len(self.config['convolutionFilters']) 362 number_filters = len(self.config['convolutionFilters'])
367 for filter in self.config['convolutionFilters']: 363 for filter in self.config['convolutionFilters']:
368 - print "convolving", filter  
369 convolve = vtk.vtkImageConvolve() 364 convolve = vtk.vtkImageConvolve()
370 convolve.SetInput(imagedata) 365 convolve.SetInput(imagedata)
371 convolve.SetKernel5x5([i/60.0 for i in Kernels[filter]]) 366 convolve.SetKernel5x5([i/60.0 for i in Kernels[filter]])
@@ -471,7 +466,9 @@ class Volume(): @@ -471,7 +466,9 @@ class Volume():
471 self.volume = volume 466 self.volume = volume
472 467
473 colour = self.GetBackgroundColour() 468 colour = self.GetBackgroundColour()
474 - ps.Publisher().sendMessage('Load volume into viewer', (volume, colour)) 469 +
  470 + ps.Publisher().sendMessage('Load volume into viewer',
  471 + (volume, colour, (self.ww, self.wl)))
475 472
476 def OnEnableTool(self, pubsub_evt): 473 def OnEnableTool(self, pubsub_evt):
477 tool_name, enable = pubsub_evt.data 474 tool_name, enable = pubsub_evt.data
invesalius/data/vtk_utils.py
@@ -88,3 +88,6 @@ class Text(object): @@ -88,3 +88,6 @@ class Text(object):
88 self.actor.VisibilityOn() 88 self.actor.VisibilityOn()
89 else: 89 else:
90 self.actor.VisibilityOff() 90 self.actor.VisibilityOff()
  91 +
  92 + def Hide(self):
  93 + self.actor.VisibilityOff()