]> Creatis software - creaRigidRegistration.git/blob - PackRecalage/bbs/appli/ViewerMerge2DInteractive.bbs
Made Recalage for Fabian's demo.
[creaRigidRegistration.git] / PackRecalage / bbs / appli / ViewerMerge2DInteractive.bbs
1 load wx
2 load std
3 load vtk
4 load wxvtk
5 load creaMaracasVisu
6 load PackVisuImages
7 //load creaImageIO
8
9 load PackRecalage
10
11 //include vtk/boxes/bbLoadHola 
12 //new LoadHola image
13
14 new MetaImageReader image
15   set image.In "C:\Documents and Settings\trillos\Bureau\Nicolas\Stage\CreaRecalage\PackRecalage\data\ImagesFabienRecalage\adc-j0.mhd" 
16   
17
18 #new Gimmick image
19 #new Gimmick image2
20
21 #Viewer containing image 1
22
23 new LayoutLine v1Layout
24 new ViewerNV viewer1
25 connect image.Out viewer1.In
26 set viewer1.nTypeView "0"
27 connect viewer1.Widget v1Layout.Widget1
28
29
30 #Viewer containing image 2
31
32 new LayoutLine v2Layout
33 new ViewerNV viewer2
34 connect image.Out viewer2.In
35 set viewer2.nTypeView "0"
36 connect viewer2.Widget v2Layout.Widget1
37
38 #LayoutSplit were the images will be
39
40 new LayoutSplit initialImages
41 set initialImages.Proportion "50"
42 set initialImages.Orientation H
43 connect v1Layout.Widget initialImages.Widget1
44 connect v2Layout.Widget initialImages.Widget2
45
46 #Layout line that will contain the buttons
47
48 new LayoutLine buttonsLayout
49   set buttonsLayout.Orientation V
50
51 #Slider were the angle will be entered
52
53 new Slider slider
54   set slider.Title "Angle"
55   set slider.In 0
56   set slider.Min 0
57   set slider.Max 360
58   set slider.ReactiveOnTrack "1"
59   connect slider.Widget buttonsLayout.Widget1 
60
61
62
63 #Slider were the xScale will be entered
64
65 new Slider sliderX
66   set sliderX.Title "% Scale in X"
67   set sliderX.In 100
68   set sliderX.Min 10
69   set sliderX.Max 500
70   set sliderX.ReactiveOnTrack "1"
71   connect sliderX.Widget buttonsLayout.Widget2 
72
73
74
75 #Slider were the yScale will be entered
76
77 new Slider sliderY
78   set sliderY.Title "% Scale in Y"
79   set sliderY.In 100
80   set sliderY.Min 10
81   set sliderY.Max 500
82   set sliderY.ReactiveOnTrack "1"
83   connect sliderY.Widget buttonsLayout.Widget3 
84
85
86 #Box were the transformation will be made
87
88 new Transform2DBox transform
89   connect viewer2.Point transform.CenterPoint
90   connect slider.Out transform.Angle
91   connect sliderX.Out transform.ScaleX
92   connect sliderY.Out transform.ScaleY
93
94
95
96 new ReSlicerBox reslice1
97   connect viewer1.Point reslice1.Origin
98   connect transform.Out reslice1.Transform
99   connect image.Out reslice1.In
100
101 new SliceImage slice1
102    connect reslice1.Out slice1.In
103    set slice1.Z "1"
104
105 new Viewer2D viewer2d
106   connect reslice1.Out viewer2d.In
107   set viewer2d.Slice "1"
108
109 #new ViewerNV viewer3
110   #connect reslice1.Out viewer3.In
111   #set viewer3.nTypeView "5"
112   #set viewer3.WinWidth "600"
113
114 # Create the reslicers
115
116 new SliceImage imgslice1
117 new SliceImage imgslice2
118   connect image.Out imgslice1.In
119  connect reslice1.Out imgslice2.In
120
121 # Create the visulization box
122 new CheckBoardBox cbb
123  connect imgslice1.Out cbb.In1
124  connect imgslice2.Out cbb.In2
125
126 # Create the slider1
127 new Slider sdr
128  set sdr.ReactiveOnTrack 1
129  set sdr.Max 50
130  set sdr.In 14
131
132 # Create the slider2
133 new Slider sdr2
134  set sdr2.ReactiveOnTrack 1
135  set sdr2.Max 50
136  set sdr2.In 14
137
138 # Create the ZSlider for the slices
139
140 new Slider sdrZ
141  set sdrZ.ReactiveOnTrack 1
142  set sdrZ.Max 50
143  set sdrZ.Title "Z for slice"
144
145 connect sdrZ.Out imgslice1.Z
146 connect sdrZ.Out imgslice2.Z
147 connect sdrZ.BoxChange imgslice1.BoxExecute
148 connect sdrZ.BoxChange imgslice2.BoxExecute
149
150 # Create viewer & layout
151 new LayoutSplit checkerBoard
152 new LayoutLine ly
153 new Viewer2D viewerCH
154  set checkerBoard.Proportion 80
155
156 # Graphical pipeline
157  connect sdr.Out cbb.Cols
158  connect sdr2.Out cbb.Rows
159  connect cbb.Out viewerCH.In
160
161  #connect sdrZ.Widget ly.Widget1
162  connect sdr.Widget ly.Widget2
163  connect sdr2.Widget ly.Widget3
164
165  connect viewerCH.Widget checkerBoard.Widget1 
166  connect ly.Widget checkerBoard.Widget2
167
168 # Create Surface View
169
170 new SurfaceCreator surf
171   set surf.Color1 RED
172   set surf.Color2 BLUE
173
174   connect imgslice1.Out surf.Image1
175   connect imgslice2.Out surf.Image2
176
177 new Slider sdrSurf1
178  set sdrSurf1.Min -500
179  set sdrSurf1.Max 500
180  set sdrSurf1.In 100
181
182 new Slider sdrSurf2
183  set sdrSurf2.Min -500
184  set sdrSurf2.Max 500
185  set sdrSurf2.In 300
186
187   connect sdrSurf1.Out surf.Height1
188   connect sdrSurf2.Out surf.Height2
189
190 # Create Surface Layouts
191
192 new LayoutSplit surface
193 new LayoutLine lySurf
194 new Viewer3D viewerSurf
195  set surface.Proportion 80
196  connect sdrSurf1.Widget lySurf.Widget1
197  connect sdrSurf2.Widget lySurf.Widget2
198  connect viewerSurf.Renderer surf.Renderer
199  #connect lySurf.BoxChange viewerSurf.BoxExecute
200
201  connect surf.Out1 viewerSurf.In1
202  connect surf.Out2 viewerSurf.In2
203
204  connect viewerSurf.Widget surface.Widget1
205  connect lySurf.Widget surface.Widget2
206
207 #Create Substraction View
208
209 new ImageSubstraction imageSub
210   connect imgslice1.Out imageSub.In1
211   connect imgslice2.Out imageSub.In2
212
213 new Slider sdrSub1
214   set sdrSub1.In 51
215   set sdrSub1.Max 255
216   set sdrSub1.Min 0
217   set sdrSub1.Title "Upper Zero Level"
218
219 new Slider sdrSub2
220   set sdrSub2.In 49
221   set sdrSub2.Max 255
222   set sdrSub2.Min 0
223   set sdrSub2.Title "Lower Zero Level"
224
225   connect sdrSub1.Out imageSub.In3
226   connect sdrSub2.Out imageSub.In4
227
228 new ColourSelectorButton colorU
229 new ColourSelectorButton colorM
230 new ColourSelectorButton colorL
231
232   set colorU.WinTitle "Upper Level Colour"
233   set colorM.WinTitle "Middle Level Colour"
234   set colorL.WinTitle "Lower Level Colour"
235
236   set colorU.In "0"
237   set colorM.In "50,50,50"
238   set colorL.In "1"
239
240   connect colorU.Out imageSub.InU
241   connect colorM.Out imageSub.InM
242   connect colorL.Out imageSub.InL
243
244 #Create substraction layout
245
246 new Viewer2D subView
247   connect imageSub.Out subView.In
248
249 new LayoutSplit substraction
250 new LayoutLine lySub
251
252   connect sdrSub1.Widget lySub.Widget1
253   connect sdrSub2.Widget lySub.Widget2
254
255 new LayoutLine lySubColor
256
257   set lySubColor.Orientation H
258   connect colorU.Widget lySubColor.Widget1
259   connect colorM.Widget lySubColor.Widget2
260   connect colorL.Widget lySubColor.Widget3
261
262   connect lySubColor.Widget lySub.Widget3
263
264   set substraction.Proportion "70"
265
266   connect subView.Widget substraction.Widget1
267   connect lySub.Widget substraction.Widget2
268
269 # Create the transparency box
270 new Transparency tb
271  connect imgslice1.Out tb.Image1
272  connect imgslice2.Out tb.Image2
273
274 # Create viewer and add actors
275 new Viewer3D transparency
276  connect tb.Actor1 transparency.In1
277  connect tb.Actor2 transparency.In2
278
279 #Multiple inputs for managing the interaction
280
281 new MultipleInputs mult
282   connect slider.BoxChange mult.In1
283   connect sliderX.BoxChange mult.In2
284   connect sliderY.BoxChange mult.In3
285   connect viewer1.BoxChange mult.In4
286   connect viewer2.BoxChange mult.In5
287   #connect mult.BoxChange viewer3.BoxExecute
288   #connect mult.BoxChange viewer2d.BoxExecute
289
290
291 # Execution pipeline for checkboard
292
293 new MultipleInputs mult2
294   connect ly.BoxChange mult2.In1
295   connect mult.BoxChange mult2.In2
296   connect imgslice1.BoxChange mult2.In3
297   connect imgslice2.BoxChange mult2.In4
298
299 connect mult2.BoxChange cbb.BoxExecute
300 connect cbb.BoxChange viewerCH.BoxExecute
301
302 # Execution pipeline for Surface
303
304 new MultipleInputs mult3
305  connect mult2.BoxChange mult3.In1
306  connect sdrSurf1.BoxChange mult3.In2
307  connect sdrSurf2.BoxChange mult3.In3
308
309  connect mult3.BoxChange surf.BoxExecute
310  connect surf.BoxChange viewerSurf.BoxExecute
311
312 #Execution pipeline for Substraction
313
314 new MultipleInputs mult4
315   connect sdrSub1.BoxChange mult4.In1
316   connect sdrSub2.BoxChange mult4.In2
317   connect mult2.BoxChange mult4.In3
318
319 new MultipleInputs mult5
320   connect mult4.BoxChange mult5.In1
321   connect colorU.BoxChange mult5.In2
322   connect colorM.BoxChange mult5.In3
323   connect colorL.BoxChange mult5.In4
324
325   connect mult5.BoxChange imageSub.BoxExecute
326   connect imageSub.BoxChange substraction.BoxExecute
327
328 #Execution pipeline for Transparency
329
330 connect mult2.BoxChange tb.BoxExecute
331 connect tb.BoxChange transparency.BoxExecute
332
333 # Button for saving
334
335 new CommandButton saveBut
336   set saveBut.Label "Save Image"
337
338 new FileSelector fileSave
339   set fileSave.OpenSave "Save"
340   set fileSave.Wildcard "*.mhd"
341
342 new MetaImageWriter writSave
343   connect reslice1.Out writSave.In 
344   connect fileSave.Out writSave.Filename
345
346   connect saveBut.BoxChange fileSave.BoxExecute
347   connect fileSave.BoxChange writSave.BoxExecute
348
349 #Layout were the images and the buttones will be displayed
350
351 new LayoutSplit window1
352   set window1.WinWidth "600"
353   set window1.Proportion "80"
354   set window1.Orientation V
355   connect initialImages.Widget window1.Widget1
356   connect buttonsLayout.Widget window1.Widget2
357
358 #new LayoutSplit checkBoard
359   #set window1.WinWidth "600"
360   #set window1.Proportion "80"
361   #set window1.Orientation V
362   #connect viewer3.Widget checkBoard.Widget1  
363   #connect checkView.Widget checkBoard.Widget1
364
365 new LayoutTab tabs
366   connect checkerBoard.Widget tabs.Widget1
367   connect surface.Widget tabs.Widget2
368   connect substraction.Widget tabs.Widget3
369   connect transparency.Widget tabs.Widget4
370
371 new LayoutLine tools
372   connect sdrZ.Widget tools.Widget1
373   connect saveBut.Widget tools.Widget2
374
375 new LayoutSplit window2
376  connect tabs.Widget window2.Widget1
377  connect tools.Widget window2.Widget2
378  set window2.Proportion "90"
379
380 new LayoutSplit main
381   set main.WinWidth "1200"
382   set main.Proportion "50"
383   set main.Orientation H
384   connect window1.Widget main.Widget1
385   connect window2.Widget main.Widget2
386
387 #exec image
388 #exec image2
389 exec main