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