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