]> Creatis software - bbtk.git/blob - packages/demo/bbs/appli/demoViewing1.bbs
Interpolate On/Off has now immediate effect
[bbtk.git] / packages / demo / bbs / appli / demoViewing1.bbs
1 description "3 slicers and a 3D view"
2 author "jpr@creatis.insa-lyon.fr"
3 category "demo"
4
5 // To show how easy it is to add smthing
6 // =====================================
7
8 load vtk
9 include wxvtk
10 load std
11 load itk
12 include vtk
13 include wx
14 load itkvtk
15 load gdcmvtk
16
17 include wxvtk/boxes/bbSimpleSlicer
18
19 new LayoutX4 main
20
21 new LayoutLine  upright
22 new LayoutLine  upleft
23 new LayoutLine  downleft
24 new LayoutSplit downright
25    set downright.Proportion 85
26
27 connect upright.Widget   main.Widget1
28 connect upleft.Widget    main.Widget2
29 connect downleft.Widget  main.Widget3
30 connect downright.Widget main.Widget4
31
32 # Here loads hola.mhd
33 # -------------------
34 include vtk/boxes/bbLoadHola
35 new LoadHola reader
36
37 # uncomment next lines to have a file selector
38 # --------------------------------------------
39 /*
40 new FileSelector openFileDialog
41 new ImageReader reader
42   connect openFileDialog.Out reader.In
43 */
44
45 # uncomment next lines to use Gimmick
46 # -----------------------------------
47 /*
48 load creaImageIO
49 new Gimmick reader
50 */
51
52 # uncomment next lines to Read a MHD file (and nothing else !)
53 # ------------------------------------------------------------
54 /*
55 new FileSelector openFileDialog
56  set openFileDialog.Wildcard  "(*.mhd)|*.mhd"
57 new MetaImageReader reader
58    connect openFileDialog.Out reader.In
59 */
60
61 # uncomment the following lines to read a 3D images stack
62 # (only if file name order is meaningfull)
63 # -------------------------------------------------------
64 /*
65 // To choose the directory
66 new DirectorySelector ds
67 // To get the image names into a vector
68 new FilesFromDirectory fd
69 // To read all the files, as a bbitk::ImagePointer
70 new ImageSeriesReader reader
71 // user choosen directory as input
72 connect ds.Out fd.In
73 set fd.Recursive false
74 // list of files as input
75 #print "Files found in $ds.Out$\n
76 connect fd.Out reader.FileNames
77 */
78
79 # uncomment the following lines to read a 3D images stack
80 # (if the directory contains a 'XCoherent" Serie)
81 # -------------------------------------------------------
82 /*
83 // To choose the directory
84 new DirectorySelector ds
85 // To get the image names into a vector
86 new FilesFromDirectory fd
87 // user choosen directory as input
88 connect ds.Out fd.In 
89 // order the files, computes an accurate ZSpacing
90 new GetXCoherentInfoGdcmReader reader
91 connect fd.Out reader.In
92 */
93
94 # uncomment the following lines to read a 3D images stack
95 # (with DICOMDirReader)
96 # -------------------------------------------------------
97 /*
98 include itk/boxes/bbDICOMDirReader
99 // To choose the directory
100 new DirectorySelector ds
101 new DICOMDirReader reader
102    connect ds.Out reader.In
103 */
104
105 // We need that to set Sliders sizes
106
107 #Get image dimensions, ...
108 new ImageProperties mc
109    connect reader.Out mc.In
110
111 #print "Image properties : $reader.Out"
112
113 #Get number of column (X)
114 new GetVectorIntElement gveX
115    connect mc.Size gveX.In
116    set gveX.I 0
117
118 #Get number of rows (Y)
119 new GetVectorIntElement gveY
120    connect mc.Size gveY.In
121    set gveY.I 1
122
123 #Get number of planes  (Z)
124 new GetVectorIntElement gveZ
125    connect mc.Size gveZ.In
126    set gveZ.I 2
127 //print "Dim Z $gveZ.Out"
128
129 #Compute the number of the 'middle' slice on X axis
130 new Div div0
131   connect   gveX.Out div0.In1
132   set div0.In2 2
133
134 #Compute the number of the 'middle' slice on Y axis
135 new Div div1
136   connect   gveY.Out div1.In1
137   set div1.In2 2
138
139 #Compute the number of the 'middle' slice on Z axis
140 new Div div2
141   connect   gveZ.Out div2.In1
142   set div2.In2 2
143
144 // For X axis
145 new SimpleSlicer viewerUL
146   connect reader.Out viewerUL.In
147   connect viewerUL.Widget upleft.Widget1
148   #initial slice is the middle one
149   connect div0.Out viewerUL.Slice
150   #Slider size is the number of planes
151   connect  gveX.Out viewerUL.SliderSize
152   set viewerUL.SliderReactiveOnTrack 1
153   set viewerUL.Orientation 0
154   set viewerUL.SliderOrientation H
155   set viewerUL.SliderTitle "Planes YZ"
156
157 // For Y axis
158 new SimpleSlicer viewerUR
159   connect reader.Out viewerUR.In
160   connect viewerUR.Widget upright.Widget1
161   #initial slice is the middle one
162   connect div1.Out viewerUR.Slice
163   #Slider size is the number of planes
164   connect  gveY.Out viewerUR.SliderSize
165   set viewerUR.SliderReactiveOnTrack 1
166   set viewerUR.SliderOrientation H
167   set viewerUR.Orientation 1
168   set viewerUR.SliderTitle "Planes XZ"
169
170 // For Z axis
171 new SimpleSlicer viewerTD
172   connect reader.Out viewerTD.In
173   connect viewerTD.Widget downleft.Widget1
174   #initial slice is the middle one
175   connect div2.Out viewerTD.Slice
176   #Slider size is the number of planes
177   connect  gveZ.Out viewerTD.SliderSize
178   set viewerTD.SliderReactiveOnTrack 1
179   set viewerTD.SliderOrientation H
180   set viewerTD.Orientation 2
181   set viewerTD.SliderTitle "Planes XY"
182
183 //For 3D Viewer
184
185 new ImagePlanes planes
186   connect reader.Out planes.In
187
188 new Viewer3D viewer
189   connect planes.PlaneX viewer.Obs1
190   connect planes.PlaneY viewer.Obs2
191   connect planes.PlaneZ viewer.Obs3
192
193 new CheckBox   chkbox
194   set chkbox.Title "Interpolate Pixels (in '2D' images)"
195   set chkbox.In 1
196   connect chkbox.BoxChange   viewerUL.BoxExecute
197   connect chkbox.BoxChange   viewerUR.BoxExecute
198   connect chkbox.BoxChange   viewerTD.BoxExecute
199
200   connect viewer.Widget downright.Widget1
201   connect chkbox.Widget downright.Widget2
202
203   connect chkbox.Out viewerUL.Interpolate
204   connect chkbox.Out viewerUR.Interpolate
205   connect chkbox.Out viewerTD.Interpolate
206
207 set main.WinTitle "demoViewing1"
208 exec main
209 exec viewerTD
210