]> Creatis software - bbtk.git/blob - packages/demo/bbs/appli/demoViewing1.bbs
Add example for the chooser
[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
35 # Don't forget to comment out the following 2 lines
36 # If you want to check someting else.
37
38 include vtk/boxes/bbLoadHola
39 new LoadHola reader
40
41 # uncomment next lines to have a file selector
42 # --------------------------------------------
43 /*
44 new FileSelector openFileDialog
45 new ImageReader reader
46   connect openFileDialog.Out reader.In
47 */
48
49 # uncomment next lines to use a vtkgdcmReader
50 # -------------------------------------
51 /*
52 new FileSelector openFileDialog
53 new GetInfoGdcmReader reader
54   connect openFileDialog.Out reader.In
55 */
56
57 # uncomment next lines to use Gimmick
58 # -----------------------------------
59 /*
60 load creaImageIO
61 new Gimmick reader
62 */
63
64 # uncomment next lines to Read a MHD file (and nothing else !)
65 # ------------------------------------------------------------
66 /*
67 new FileSelector openFileDialog
68  set openFileDialog.Wildcard  "(*.mhd)|*.mhd"
69 new MetaImageReader reader
70    connect openFileDialog.Out reader.In
71 */
72
73 # uncomment the following lines to read a 3D images stack
74 # (only if file name order is meaningfull)
75 # -------------------------------------------------------
76 /*
77 // To choose the directory
78 new DirectorySelector ds
79 // To get the image names into a vector
80 new FilesFromDirectory fd
81 // To read all the files, as a bbitk::ImagePointer
82 new ImageSeriesReader reader
83 // user choosen directory as input
84 connect ds.Out fd.In
85 set fd.Recursive false
86 // list of files as input
87 #print "Files found in $ds.Out$\n
88 connect fd.Out reader.FileNames
89 */
90
91 # uncomment the following lines to read a 3D images stack
92 # (if the directory contains a 'XCoherent" Serie)
93 # -------------------------------------------------------
94 /*
95 // To choose the directory
96 new DirectorySelector ds
97 // To get the image names into a vector
98 new FilesFromDirectory fd
99 // user choosen directory as input
100 connect ds.Out fd.In 
101 // order the files, computes an accurate ZSpacing
102 new GetXCoherentInfoGdcmReader reader
103 connect fd.Out reader.In
104 */
105
106 # uncomment the following lines to read a 3D images stack
107 # (with DICOMDirReader)
108 # -------------------------------------------------------
109 /*
110 include itk/boxes/bbDICOMDirReader
111 // To choose the directory
112 new DirectorySelector ds
113 new DICOMDirReader reader
114    connect ds.Out reader.In
115 */
116
117 // We need that to set Sliders sizes
118
119 #Get image dimensions, ...
120 new ImageProperties mc
121    connect reader.Out mc.In
122
123 #Get number of column (X)
124 new GetVectorIntElement gveX
125    connect mc.Size gveX.In
126    set gveX.I 0
127
128 #Get number of rows (Y)
129 new GetVectorIntElement gveY
130    connect mc.Size gveY.In
131    set gveY.I 1
132
133 #Get number of planes  (Z)
134 new GetVectorIntElement gveZ
135    connect mc.Size gveZ.In
136    set gveZ.I 2
137 //print "Dim Z $gveZ.Out"
138
139 #Compute the number of the 'middle' slice on X axis
140 new Div div0
141   connect   gveX.Out div0.In1
142   set div0.In2 2
143
144 #Compute the number of the 'middle' slice on Y axis
145 new Div div1
146   connect   gveY.Out div1.In1
147   set div1.In2 2
148
149 #Compute the number of the 'middle' slice on Z axis
150 new Div div2
151   connect   gveZ.Out div2.In1
152   set div2.In2 2
153
154 // For X axis
155 new SimpleSlicer viewerUL
156   connect reader.Out viewerUL.In
157   connect viewerUL.Widget upleft.Widget1
158   #initial slice is the middle one
159   connect div0.Out viewerUL.Slice
160   #Slider size is the number of planes
161   connect  gveX.Out viewerUL.SliderSize
162   set viewerUL.SliderReactiveOnTrack 1
163   set viewerUL.Orientation 0
164   set viewerUL.SliderOrientation H
165   set viewerUL.SliderTitle "Planes YZ"
166
167 // For Y axis
168 new SimpleSlicer viewerUR
169   connect reader.Out viewerUR.In
170   connect viewerUR.Widget upright.Widget1
171   #initial slice is the middle one
172   connect div1.Out viewerUR.Slice
173   #Slider size is the number of planes
174   connect  gveY.Out viewerUR.SliderSize
175   set viewerUR.SliderReactiveOnTrack 1
176   set viewerUR.SliderOrientation H
177   set viewerUR.Orientation 1
178   set viewerUR.SliderTitle "Planes XZ"
179
180 // For Z axis
181 new SimpleSlicer viewerTD
182   connect reader.Out viewerTD.In
183   connect viewerTD.Widget downleft.Widget1
184   #initial slice is the middle one
185   connect div2.Out viewerTD.Slice
186   #Slider size is the number of planes
187   connect  gveZ.Out viewerTD.SliderSize
188   set viewerTD.SliderReactiveOnTrack 1
189   set viewerTD.SliderOrientation H
190   set viewerTD.Orientation 2
191   set viewerTD.SliderTitle "Planes XY"
192
193 //For 3D Viewer
194
195 new ImagePlanes planes
196   connect reader.Out planes.In
197
198 new Viewer3D viewer
199   connect planes.PlaneX viewer.Obs1
200   connect planes.PlaneY viewer.Obs2
201   connect planes.PlaneZ viewer.Obs3
202
203 new CheckBox   chkbox
204   set chkbox.Title "Interpolate Pixels (in '2D' images)"
205   set chkbox.In 1
206   connect chkbox.BoxChange   viewerUL.BoxExecute
207   connect chkbox.BoxChange   viewerUR.BoxExecute
208   connect chkbox.BoxChange   viewerTD.BoxExecute
209
210   connect viewer.Widget downright.Widget1
211   connect chkbox.Widget downright.Widget2
212
213   connect chkbox.Out viewerUL.Interpolate
214   connect chkbox.Out viewerUR.Interpolate
215   connect chkbox.Out viewerTD.Interpolate
216
217 set main.WinTitle "demoViewing1"
218 exec main
219 exec viewerTD
220