]> Creatis software - creaRigidRegistration.git/blob - PackRecalage/bbs/appli/ViewerMerge2DInteractive.bbs
f9e1e57681509b5f44e4a1721ace047cfcb9dd24
[creaRigidRegistration.git] / PackRecalage / bbs / appli / ViewerMerge2DInteractive.bbs
1 load wx
2 load std
3 load vtk
4 load wxvtk
5 load creaMaracasVisu
6
7 load PackRecalage
8
9 new FileSelector imageSelector1
10   set imageSelector1.Wildcard "*.mhd"
11 new FileSelector imageSelector2
12   set imageSelector2.Wildcard "*.mhd"
13
14 new MetaImageReader image
15   connect imageSelector1.Out image.In
16
17 new MetaImageReader image2 
18   connect imageSelector2.Out image2.In  
19
20 #new Gimmick image
21 #new Gimmick image2
22
23 #Viewer containing image 1
24
25 new LayoutLine v1Layout
26 new ViewerNV viewer1
27   connect image.Out viewer1.In
28   set viewer1.nTypeView "0"
29   connect viewer1.Widget v1Layout.Widget1
30
31 #Viewer containing image 2
32
33 new LayoutLine v2Layout
34 new ViewerNV viewer2
35   connect image2.Out viewer2.In
36   set viewer2.nTypeView "0"
37   connect viewer2.Widget v2Layout.Widget1
38
39 #LayoutSplit were the images will be
40
41 new LayoutSplit initialImages
42   set initialImages.Proportion "50"
43   set initialImages.Orientation H
44   connect v1Layout.Widget initialImages.Widget1
45   connect v2Layout.Widget initialImages.Widget2
46
47 #Layout line that will contain the buttons
48
49 new LayoutLine buttonsLayout
50   set buttonsLayout.Orientation V
51
52 #Slider were the angle will be entered
53
54 new Slider slider
55   set slider.Title "Angle"
56   set slider.In 0
57   set slider.Min 0
58   set slider.Max 360
59   set slider.ReactiveOnTrack "1"
60   connect slider.Widget buttonsLayout.Widget1 
61
62 #Slider were the xScale will be entered
63
64 new Slider sliderX
65   set sliderX.Title "% Scale in X"
66   set sliderX.In 100
67   set sliderX.Min 10
68   set sliderX.Max 500
69   set sliderX.ReactiveOnTrack "1"
70   connect sliderX.Widget buttonsLayout.Widget2 
71
72 #Slider were the yScale will be entered
73
74 new Slider sliderY
75   set sliderY.Title "% Scale in Y"
76   set sliderY.In 100
77   set sliderY.Min 10
78   set sliderY.Max 500
79   set sliderY.ReactiveOnTrack "1"
80   connect sliderY.Widget buttonsLayout.Widget3 
81
82
83 #Box were the transformation will be made
84
85 new Transform2DBox transform
86   connect viewer2.Point transform.CenterPoint
87   connect slider.Out transform.Angle
88   connect sliderX.Out transform.ScaleX
89   connect sliderY.Out transform.ScaleY
90
91 new ReSlicerBox reslice1
92   connect viewer1.Point reslice1.Origin
93   connect transform.Out reslice1.Transform
94   connect image2.Out reslice1.In
95
96 new SliceImage slice1
97    connect reslice1.Out slice1.In
98    set slice1.Z "1"
99
100 new Viewer2D viewer2d
101   connect reslice1.Out viewer2d.In
102   set viewer2d.Slice "1"
103
104 # Create the reslicers
105
106 new SliceImage imgslice1
107 new SliceImage imgslice2
108   connect image.Out imgslice1.In
109   connect reslice1.Out imgslice2.In
110
111 # Create the visulization box for checkerBoard
112 new CheckBoardBox cbb
113   connect imgslice1.Out cbb.In1
114   connect imgslice2.Out cbb.In2
115
116 # Create the slider1
117 new Slider sdr
118   set sdr.ReactiveOnTrack 1
119   set sdr.Max 50
120   set sdr.In 14
121
122 # Create the slider2
123 new Slider sdr2
124   set sdr2.ReactiveOnTrack 1
125   set sdr2.Max 50
126   set sdr2.In 14
127
128 # Create the ZSlider for the slices
129
130 new Slider sdrZ
131   set sdrZ.ReactiveOnTrack 1
132   set sdrZ.Max 50
133   set sdrZ.Title "Z for slice"
134
135   connect sdrZ.Out imgslice1.Z
136   connect sdrZ.Out imgslice2.Z
137   connect sdrZ.BoxChange imgslice1.BoxExecute
138   connect sdrZ.BoxChange imgslice2.BoxExecute
139
140 #Create Sliders for WinLevel and ColorLevel
141
142 new Slider colorLevel
143   set colorLevel.Min "0"
144   set colorLevel.Max "99"
145   set colorLevel.In "50"
146   set colorLevel.ReactiveOnTrack true
147   set colorLevel.Title "Color Level"
148
149 new Slider windowLevel
150   set windowLevel.Min "0"
151   set windowLevel.Max "99"
152   set windowLevel.In "50"
153   set windowLevel.ReactiveOnTrack true
154   set windowLevel.Title "Window Level"
155
156 # Connection to viewers
157
158   connect colorLevel.Out viewer1.ColorLevel
159   connect colorLevel.Out viewer2.ColorLevel
160
161   connect windowLevel.Out viewer1.WindowLevel
162   connect windowLevel.Out viewer2.WindowLevel
163
164 new MultipleInputs multLevels
165   connect colorLevel.BoxChange multLevels.In1
166   connect windowLevel.BoxChange multLevels.In2
167
168   connect multLevels.BoxChange viewer1.BoxExecute
169   connect multLevels.BoxChange viewer2.BoxExecute
170
171 # Create viewer & layout for Checkerboard
172 new LayoutSplit checkerBoard
173 new LayoutLine ly
174 new ViewerNV viewerCH
175   set viewerCH.nTypeView "0"
176   set checkerBoard.Proportion 80
177
178 ////////////////////////
179 #Connecting levels 
180
181   connect colorLevel.Out viewerCH.ColorLevel
182   connect windowLevel.Out viewerCH.WindowLevel
183 //////////////////////
184
185
186 # Graphical pipeline
187   connect sdr.Out cbb.Cols
188   connect sdr2.Out cbb.Rows
189   connect cbb.Out viewerCH.In
190
191   connect sdr.Widget ly.Widget2
192   connect sdr2.Widget ly.Widget3
193
194   connect viewerCH.Widget checkerBoard.Widget1 
195   connect ly.Widget checkerBoard.Widget2
196
197 #Image Transparency view
198
199 new TransparencyV2 trans
200   connect imgslice1.Out trans.In1
201   connect imgslice2.Out trans.In2
202
203 new Slider sdrP
204   set sdrP.Max "100"
205   set sdrP.Min "0"
206   set sdrP.In "50"
207   set sdrP.ReactiveOnTrack true
208
209   connect sdrP.Out trans.Percent
210
211 new ViewerNV transView
212   connect trans.Out transView.In
213   set transView.nTypeView "0"
214
215 new LayoutSplit transparency
216   connect transView.Widget transparency.Widget1
217   connect sdrP.Widget transparency.Widget2
218   set transparency.Proportion 80
219
220   connect colorLevel.Out transView.ColorLevel
221   connect windowLevel.Out transView.WindowLevel
222
223 #Create Substraction View
224
225 new ImageSubstraction imageSub
226   connect imgslice1.Out imageSub.In1
227   connect imgslice2.Out imageSub.In2
228
229 new Slider sdrSub1
230   set sdrSub1.In 51
231   set sdrSub1.Max 255
232   set sdrSub1.Min 0
233   set sdrSub1.Title "Upper Zero Level"
234
235 new Slider sdrSub2
236   set sdrSub2.In 49
237   set sdrSub2.Max 255
238   set sdrSub2.Min 0
239   set sdrSub2.Title "Lower Zero Level"
240
241   connect sdrSub1.Out imageSub.In3
242   connect sdrSub2.Out imageSub.In4
243
244 new ColourSelectorButton colorU
245 new ColourSelectorButton colorM
246 new ColourSelectorButton colorL
247
248   set colorU.WinTitle "Upper Level Colour"
249   set colorM.WinTitle "Middle Level Colour"
250   set colorL.WinTitle "Lower Level Colour"
251
252   set colorU.In "0"
253   set colorM.In "50,50,50"
254   set colorL.In "1"
255
256   connect colorU.Out imageSub.InU
257   connect colorM.Out imageSub.InM
258   connect colorL.Out imageSub.InL
259
260 #Create substraction layout
261
262 new Viewer2D subView
263   connect imageSub.Out subView.In
264
265 new LayoutSplit substraction
266 new LayoutLine lySub
267
268   connect sdrSub1.Widget lySub.Widget1
269   connect sdrSub2.Widget lySub.Widget2
270
271 new LayoutLine lySubColor
272
273   set lySubColor.Orientation H
274   connect colorU.Widget lySubColor.Widget1
275   connect colorM.Widget lySubColor.Widget2
276   connect colorL.Widget lySubColor.Widget3
277
278   connect lySubColor.Widget lySub.Widget3
279
280   set substraction.Proportion "70"
281
282   connect subView.Widget substraction.Widget1
283   connect lySub.Widget substraction.Widget2
284
285 #Image Switch view
286 /*
287 new ImageSwitcherBox swt
288   connect imgslice1.Out swt.In1 
289   connect imgslice2.Out swt.In2
290
291 new Slider sdrT
292   set sdrT.Max "1000"
293   set sdrT.Min "0"
294   set sdrT.In "500"
295
296   connect sdrT.Out swt.Time
297
298 #Image Switch Layout
299
300 new Viewer2D viewerS
301   connect swt.Out viewerS.In
302   //set viewerS.nTypeView "0"  
303
304 new LayoutLine switch
305   connect viewerS.Widget switch.Widget1
306   connect switch.Widget switch.Widget2
307   connect sdrT.Widget switch.Widget3
308
309   //connect colorLevel.Out viewerS.ColorLevel
310   //connect windowLevel.Out viewerS.WindowLevel
311 */
312
313 #Image Convolution View
314
315 new ImageConvolution convol1
316   connect imgslice1.Out convol1.In
317
318 new ImageConvolution convol2
319   connect imgslice2.Out convol2.In
320
321 new Viewer2D viewerConv1
322   connect convol1.Out viewerConv1.In
323   
324 new Viewer2D viewerConv2
325   connect convol2.Out viewerConv2.In
326
327 new Slider sdrC
328   set sdrC.Max "100"
329   set sdrC.Min "0"
330   set sdrC.In "100"
331   set sdrC.ReactiveOnTrack "true"
332
333 #Layout for convolution
334
335 new LayoutSplit lyConvView
336   set lyConvView.Proportion "50"
337   connect viewerConv1.Widget lyConvView.Widget1
338   connect viewerConv2.Widget lyConvView.Widget2
339
340 new LayoutSplit convolution
341   set convolution.Proportion "80"
342   connect lyConvView.Widget convolution.Widget1
343   connect sdrC.Widget convolution.Widget2
344
345
346 #Multiple inputs for managing the interaction
347
348 new MultipleInputs mult
349   connect slider.BoxChange mult.In1
350   connect sliderX.BoxChange mult.In2
351   connect sliderY.BoxChange mult.In3
352   connect viewer1.BoxChange mult.In4
353   connect viewer2.BoxChange mult.In5
354
355 # Execution pipeline for checkboard
356
357 new MultipleInputs mult2
358   connect ly.BoxChange mult2.In1
359   connect mult.BoxChange mult2.In2
360   connect imgslice1.BoxChange mult2.In3
361   connect imgslice2.BoxChange mult2.In4
362   connect multLevels.BoxChange mult2.In5
363
364 connect mult2.BoxChange cbb.BoxExecute
365 connect cbb.BoxChange viewerCH.BoxExecute
366
367 #Execution pipeline for transparency
368
369 new MultipleInputs mult5
370   connect mult2.BoxChange mult5.In1
371   connect sdrP.BoxChange mult5.In2
372
373   connect mult5.BoxChange trans.BoxExecute
374   connect trans.BoxChange transView.BoxExecute
375
376 #Execution pipeline for Substraction
377
378 new MultipleInputs mult3
379   connect sdrSub1.BoxChange mult3.In1
380   connect sdrSub2.BoxChange mult3.In2
381   connect mult2.BoxChange mult3.In3
382
383 new MultipleInputs mult4
384   connect mult3.BoxChange mult4.In1
385   connect colorU.BoxChange mult4.In2
386   connect colorM.BoxChange mult4.In3
387   connect colorL.BoxChange mult4.In4
388
389   connect mult4.BoxChange imageSub.BoxExecute
390   connect imageSub.BoxChange substraction.BoxExecute
391
392 #Execution pipeline for switching
393 /*
394 new MultipleInputs mult6
395   connect sdrT.BoxChange mult6.In1
396   connect mult2.BoxChange mult6.In2
397
398   connect mult6.BoxChange switch.BoxExecute
399   connect switch.BoxChange viewerS.BoxExecute
400 */
401
402 #Execution pipeline for convolution
403
404 new MultipleInputs mult7
405   connect mult2.BoxChange mult7.In1
406   connect sdrC.BoxChange mult7.In2
407
408   connect mult7.BoxChange convol1.BoxExecute
409   connect mult7.BoxChange convol2.BoxExecute
410
411   connect convol1.BoxChange viewerConv1.BoxExecute
412   connect convol2.BoxChange viewerConv2.BoxExecute
413
414 # Button for saving
415
416 new CommandButton saveBut
417   set saveBut.Label "Save Image"
418
419 new FileSelector fileSave
420   set fileSave.OpenSave "Save"
421   set fileSave.Wildcard "*.mhd"
422
423 new MetaImageWriter writSave
424   connect reslice1.Out writSave.In 
425   connect fileSave.Out writSave.Filename
426
427   connect saveBut.BoxChange fileSave.BoxExecute
428   connect fileSave.BoxChange writSave.BoxExecute
429
430 #Layout were the images and the buttones will be displayed
431
432 new LayoutSplit window1
433   set window1.WinWidth "600"
434   set window1.Proportion "80"
435   set window1.Orientation V
436   connect initialImages.Widget window1.Widget1
437   connect buttonsLayout.Widget window1.Widget2
438
439 new LayoutTab tabs
440   connect checkerBoard.Widget tabs.Widget1
441   connect substraction.Widget tabs.Widget2
442   connect transparency.Widget tabs.Widget3
443   connect convolution.Widget tabs.Widget4
444   //connect switch.Widget tabs.Widget4
445
446 new LayoutLine tools
447   connect sdrZ.Widget tools.Widget1
448   connect colorLevel.Widget tools.Widget2
449   connect windowLevel.Widget tools.Widget3
450   connect saveBut.Widget tools.Widget4
451
452 new LayoutSplit window2
453  connect tabs.Widget window2.Widget1
454  connect tools.Widget window2.Widget2
455  set window2.Proportion "90"
456
457 new LayoutSplit main
458   set main.WinWidth "1200"
459   set main.Proportion "50"
460   set main.Orientation H
461   connect window1.Widget main.Widget1
462   connect window2.Widget main.Widget2
463
464 exec main