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