]> Creatis software - creaRigidRegistration.git/blob - PackRecalage/bbs/appli/ViewerMerge2DInteractive.bbs
Changed to version3
[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.Title "Color Level"
147
148 new Slider windowLevel
149   set windowLevel.Min "0"
150   set windowLevel.Max "99"
151   set windowLevel.In "50"
152   set windowLevel.Title "Window Level"
153
154 # Connection to viewers
155
156   connect colorLevel.Out viewer1.ColorLevel
157   connect colorLevel.Out viewer2.ColorLevel
158
159   connect windowLevel.Out viewer1.WindowLevel
160   connect windowLevel.Out viewer2.WindowLevel
161
162 new MultipleInputs multLevels
163   connect colorLevel.BoxChange multLevels.In1
164   connect windowLevel.BoxChange multLevels.In2
165
166   connect multLevels.BoxChange viewer1.BoxExecute
167   connect multLevels.BoxChange viewer2.BoxExecute
168
169 # Create viewer & layout for Checkerboard
170 new LayoutSplit checkerBoard
171 new LayoutLine ly
172 new ViewerNV viewerCH
173   set viewerCH.nTypeView "0"
174   set checkerBoard.Proportion 80
175
176 ////////////////////////
177 #Connecting levels 
178
179   connect colorLevel.Out viewerCH.ColorLevel
180   connect windowLevel.Out viewerCH.WindowLevel
181 //////////////////////
182
183
184 # Graphical pipeline
185   connect sdr.Out cbb.Cols
186   connect sdr2.Out cbb.Rows
187   connect cbb.Out viewerCH.In
188
189   connect sdr.Widget ly.Widget2
190   connect sdr2.Widget ly.Widget3
191
192   connect viewerCH.Widget checkerBoard.Widget1 
193   connect ly.Widget checkerBoard.Widget2
194
195 #Image Transparency view
196
197 new TransparencyV2 trans
198   connect imgslice1.Out trans.In1
199   connect imgslice2.Out trans.In2
200
201 new Slider sdrP
202   set sdrP.Max "100"
203   set sdrP.Min "0"
204   set sdrP.In "50"
205
206   connect sdrP.Out trans.Percent
207
208 new ViewerNV transView
209   connect trans.Out transView.In
210   set transView.nTypeView "0"
211
212 new LayoutSplit transparency
213   connect transView.Widget transparency.Widget1
214   connect sdrP.Widget transparency.Widget2
215   set transparency.Proportion 80
216
217   connect colorLevel.Out transView.ColorLevel
218   connect windowLevel.Out transView.WindowLevel
219
220 #Create Substraction View
221
222 new ImageSubstraction imageSub
223   connect imgslice1.Out imageSub.In1
224   connect imgslice2.Out imageSub.In2
225
226 new Slider sdrSub1
227   set sdrSub1.In 51
228   set sdrSub1.Max 255
229   set sdrSub1.Min 0
230   set sdrSub1.Title "Upper Zero Level"
231
232 new Slider sdrSub2
233   set sdrSub2.In 49
234   set sdrSub2.Max 255
235   set sdrSub2.Min 0
236   set sdrSub2.Title "Lower Zero Level"
237
238   connect sdrSub1.Out imageSub.In3
239   connect sdrSub2.Out imageSub.In4
240
241 new ColourSelectorButton colorU
242 new ColourSelectorButton colorM
243 new ColourSelectorButton colorL
244
245   set colorU.WinTitle "Upper Level Colour"
246   set colorM.WinTitle "Middle Level Colour"
247   set colorL.WinTitle "Lower Level Colour"
248
249   set colorU.In "0"
250   set colorM.In "50,50,50"
251   set colorL.In "1"
252
253   connect colorU.Out imageSub.InU
254   connect colorM.Out imageSub.InM
255   connect colorL.Out imageSub.InL
256
257 #Create substraction layout
258
259 new Viewer2D subView
260   connect imageSub.Out subView.In
261
262 new LayoutSplit substraction
263 new LayoutLine lySub
264
265   connect sdrSub1.Widget lySub.Widget1
266   connect sdrSub2.Widget lySub.Widget2
267
268 new LayoutLine lySubColor
269
270   set lySubColor.Orientation H
271   connect colorU.Widget lySubColor.Widget1
272   connect colorM.Widget lySubColor.Widget2
273   connect colorL.Widget lySubColor.Widget3
274
275   connect lySubColor.Widget lySub.Widget3
276
277   set substraction.Proportion "70"
278
279   connect subView.Widget substraction.Widget1
280   connect lySub.Widget substraction.Widget2
281
282 #Multiple inputs for managing the interaction
283
284 new MultipleInputs mult
285   connect slider.BoxChange mult.In1
286   connect sliderX.BoxChange mult.In2
287   connect sliderY.BoxChange mult.In3
288   connect viewer1.BoxChange mult.In4
289   connect viewer2.BoxChange mult.In5
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   connect multLevels.BoxChange mult2.In5
299
300 connect mult2.BoxChange cbb.BoxExecute
301 connect cbb.BoxChange viewerCH.BoxExecute
302
303 #Execution pipeline for trqnsparency
304
305 new MultipleInputs mult5
306   connect mult2.BoxChange mult5.In1
307   connect sdrP.BoxChange mult5.In2
308
309   connect mult5.BoxChange trans.BoxExecute
310   connect trans.BoxChange transView.BoxExecute
311
312 #Execution pipeline for Substraction
313
314 new MultipleInputs mult3
315   connect sdrSub1.BoxChange mult3.In1
316   connect sdrSub2.BoxChange mult3.In2
317   connect mult2.BoxChange mult3.In3
318
319 new MultipleInputs mult4
320   connect mult3.BoxChange mult4.In1
321   connect colorU.BoxChange mult4.In2
322   connect colorM.BoxChange mult4.In3
323   connect colorL.BoxChange mult4.In4
324
325   connect mult4.BoxChange imageSub.BoxExecute
326   connect imageSub.BoxChange substraction.BoxExecute
327
328 # Button for saving
329
330 new CommandButton saveBut
331   set saveBut.Label "Save Image"
332
333 new FileSelector fileSave
334   set fileSave.OpenSave "Save"
335   set fileSave.Wildcard "*.mhd"
336
337 new MetaImageWriter writSave
338   connect reslice1.Out writSave.In 
339   connect fileSave.Out writSave.Filename
340
341   connect saveBut.BoxChange fileSave.BoxExecute
342   connect fileSave.BoxChange writSave.BoxExecute
343
344 #Layout were the images and the buttones will be displayed
345
346 new LayoutSplit window1
347   set window1.WinWidth "600"
348   set window1.Proportion "80"
349   set window1.Orientation V
350   connect initialImages.Widget window1.Widget1
351   connect buttonsLayout.Widget window1.Widget2
352
353 new LayoutTab tabs
354   connect checkerBoard.Widget tabs.Widget1
355   connect substraction.Widget tabs.Widget2
356   connect transparency.Widget tabs.Widget3
357
358 new LayoutLine tools
359   connect sdrZ.Widget tools.Widget1
360   connect colorLevel.Widget tools.Widget2
361   connect windowLevel.Widget tools.Widget3
362   connect saveBut.Widget tools.Widget4
363
364 new LayoutSplit window2
365  connect tabs.Widget window2.Widget1
366  connect tools.Widget window2.Widget2
367  set window2.Proportion "90"
368
369 new LayoutSplit main
370   set main.WinWidth "1200"
371   set main.Proportion "50"
372   set main.Orientation H
373   connect window1.Widget main.Widget1
374   connect window2.Widget main.Widget2
375
376 exec main