]> Creatis software - creaImageIO.git/blob - src/doxygen/Architecture.htm
57cc83aaf386ee914e1e7bcc729f2ef3512954b0
[creaImageIO.git] / src / doxygen / Architecture.htm
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
3
4 <head>
5 <meta http-equiv="Content-Language" content="es-co" />
6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7 <title>Architecture</title>
8 </head>
9
10 <body>
11
12 <h1 id="head-854b062d360d04ce4f5012114afa9ff5f11f21ba">Architecture</h1>
13 <span class="anchor" id="line-6"></span><span class="anchor" id="line-7"></span>
14 <p class="line867"></p>
15 <h2 id="head-230b785b2112730d4f8aaffcda83ccd28c9c8d83">Generalities</h2>
16 <span class="anchor" id="line-8"></span><span class="anchor" id="line-9"></span>
17 <ul>
18         <li>cvs : creatis/creaImageIO <span class="anchor" id="line-10"></span>
19         <ul>
20                 <li style="list-style-type: none;">
21                 <p class="line862">cvs co -D 
22                 :PROTOCOL:USERNAME@cvs.creatis.insa-lyon.fr:/cvs/creatis creaImageIO
23                 <span class="anchor" id="line-11"></span></p>
24                 </li>
25         </ul>
26         </li>
27         <li>09/02/09 : <span class="anchor" id="line-12"></span>
28         <ul>
29                 <li>new sources in src : create a lib called creaImageIO
30                 <span class="anchor" id="line-13"></span></li>
31                 <li>command line app : appli/gimmick <span class="anchor" id="line-14">
32                 </span></li>
33                 <li>cmake option : BUILD_V2 to build the new version
34                 <span class="anchor" id="line-15"></span></li>
35         </ul>
36         </li>
37         <li>All C++ files begin with creaImageIO <span class="anchor" id="line-16">
38         </span></li>
39         <li>All creaImageIO classes are in a namespace creaImageIO
40         <span class="anchor" id="line-17"></span><span class="anchor" id="line-18">
41         </span></li>
42 </ul>
43 <p class="line867"></p>
44 <h2 id="head-fd2930d25892babc425be6c8bf5e10dd28f776bb">General stucture</h2>
45 <span class="anchor" id="line-19"></span><span class="anchor" id="line-20">
46 </span>
47 <ul>
48         <li>The main data structure : attributed tree
49         <span class="anchor" id="line-21"></span>
50         <ul>
51                 <li>all related files are of the form : creaImageIOTree
52                 <span class="anchor" id="line-22"></span></li>
53                 <li>all related classes are in a namespace : creaImageIO::tree
54                 <span class="anchor" id="line-23"></span></li>
55         </ul>
56         </li>
57         <li>
58         <p class="line862">The abstract &#39;Model&#39; : <a class="nonexistent">TreeHandler</a> 
59         = manages a data source (read-only; read/write)
60         <span class="anchor" id="line-24"></span></p>
61         <ul>
62                 <li>
63                 <p class="line862">Concrete models : now SQLiteTreeHandler; future 
64                 IRodsTreeHandler, <a class="nonexistent">FavoritesTreeHandler</a>?
65                 <span class="anchor" id="line-25"></span></p>
66                 </li>
67         </ul>
68         </li>
69         <li>
70         <p class="line862">The controller &#39;Gimmick&#39; : controls different
71         <a class="nonexistent">TreeHandlers</a>: <span class="anchor" id="line-26">
72         </span></p>
73         <ul>
74                 <li>Local database handler <span class="anchor" id="line-27"></span>
75                 </li>
76                 <li>Favorites handler <span class="anchor" id="line-28"></span></li>
77                 <li>Other which are open on user demand
78                 <span class="anchor" id="line-29"></span></li>
79         </ul>
80         </li>
81         <li>The Views: <span class="anchor" id="line-30"></span>
82         <ul>
83                 <li>
84                 <p class="line862">Abstract <a class="nonexistent">GimmickView</a> : 
85                 Dialog <span class="anchor" id="line-31"></span></p>
86                 </li>
87                 <li>
88                 <p class="line862">Concrete <a class="nonexistent">GimmickView</a> : now
89                 <a class="nonexistent">WxGimmickView</a>; future QGimmickView ?
90                 <span class="anchor" id="line-32"></span></p>
91                 </li>
92                 <li>
93                 <p class="line862">Do we need to have abstract classes for
94                 <a class="nonexistent">GimmickView</a> components ?
95                 <span class="anchor" id="line-33"></span></p>
96                 <ul>
97                         <li>
98                         <p class="line891"><a class="nonexistent">TreeView</a> : is 
99                         associated with a <a class="nonexistent">TreeHandler</a> to 
100                         visualize its Tree <span class="anchor" id="line-34"></span></p>
101                         </li>
102                         <li>
103                         <p class="line891"><a class="nonexistent">AttributeView</a> : 
104                         visualizes a set of attributes (only one for a
105                         <a class="nonexistent">GimmickView</a>)
106                         <span class="anchor" id="line-35"></span></p>
107                         </li>
108                         <li>
109                         <p class="line891"><a class="nonexistent">ImageView</a> : preview of 
110                         images <span class="anchor" id="line-36"></span>
111                         <span class="anchor" id="line-37"></span>
112                         <span class="anchor" id="line-38"></span></p>
113                         </li>
114                 </ul>
115                 </li>
116         </ul>
117         </li>
118 </ul>
119 <p class="line867"></p>
120 <h2 id="head-b16e3563d729255863452b289e971da6a51d945b">Classes</h2>
121 <span class="anchor" id="line-39"></span><span class="anchor" id="line-40">
122 </span>
123 <p class="line867"></p>
124 <h3 id="head-4b6a5f3be677d7dfd21607ab2394efda67858131">Data structure: 
125 Attributed tree</h3>
126 <span class="anchor" id="line-41"></span><span class="anchor" id="line-42">
127 </span>
128 <p class="line874">in namespace creaImageIO::tree
129 <span class="anchor" id="line-43"></span><span class="anchor" id="line-44">
130 </span></p>
131 <ul>
132         <li>Tree <span class="anchor" id="line-45"></span>
133         <ul>
134                 <li>Attributed tree structure <span class="anchor" id="line-46"></span>
135                 </li>
136                 <li>inherits Node <span class="anchor" id="line-47"></span></li>
137                 <li>
138                 <p class="line862">holds a vector of root <a class="nonexistent">
139                 TreeNode</a> <span class="anchor" id="line-48"></span></p>
140                 </li>
141         </ul>
142         </li>
143         <li>
144         <p class="line891"><a class="nonexistent">TreeData</a>
145         <span class="anchor" id="line-49"></span></p>
146         <ul>
147                 <li>Abstract class to store user data on a tree
148                 <span class="anchor" id="line-50"></span></li>
149         </ul>
150         </li>
151         <li>Node <span class="anchor" id="line-51"></span>
152         <ul>
153                 <li>belong to a Tree, <span class="anchor" id="line-52"></span></li>
154                 <li>holds a pointer on parent Node, <span class="anchor" id="line-53">
155                 </span></li>
156                 <li>holds a vector of children Node <span class="anchor" id="line-54">
157                 </span></li>
158         </ul>
159         </li>
160         <li>
161         <p class="line891"><a class="nonexistent">NodeData</a>
162         <span class="anchor" id="line-55"></span></p>
163         <ul>
164                 <li>Abstract class to store user data on a tree node
165                 <span class="anchor" id="line-56"></span></li>
166         </ul>
167         </li>
168         <li>Descriptor <span class="anchor" id="line-57"></span>
169         <ul>
170                 <li>Descriptor of the structure a tree (number of levels, descriptors of 
171                 each level, ...) <span class="anchor" id="line-58"></span></li>
172                 <li>
173                 <p class="line862">holds a vector of <a class="nonexistent">
174                 LevelDescriptor</a> <span class="anchor" id="line-59"></span></p>
175                 </li>
176         </ul>
177         </li>
178         <li>
179         <p class="line891"><a class="nonexistent">LevelDescriptor</a>
180         <span class="anchor" id="line-60"></span></p>
181         <ul>
182                 <li>
183                 <p class="line862">holds a vector of <a class="nonexistent">
184                 TreeAttributeDescriptor</a> <span class="anchor" id="line-61"></span>
185                 </p>
186                 </li>
187         </ul>
188         </li>
189         <li>
190         <p class="line891"><a class="nonexistent">AttributeDescriptor</a>
191         <span class="anchor" id="line-62"></span></p>
192         <ul>
193                 <li>stores name, dicom group/elem, flags
194                 <span class="anchor" id="line-63"></span></li>
195         </ul>
196         </li>
197         <li>Comparator <span class="anchor" id="line-64"></span>
198         <ul>
199                 <li>Abstract definition of a comparator of Node
200                 <span class="anchor" id="line-65"></span></li>
201                 <li>
202                 <p class="line862">Comparison is done by operator()(Node* const &amp;, Node* 
203                 const &amp;) <span class="anchor" id="line-66"></span></p>
204                 </li>
205         </ul>
206         </li>
207         <li>
208         <p class="line891"><a class="nonexistent">ComparatorWithOrder</a>
209         <span class="anchor" id="line-67"></span></p>
210         <ul>
211                 <li>Abstract Comparator whose order can be reversed
212                 <span class="anchor" id="line-68"></span></li>
213                 <li>
214                 <p class="line862">Concrete comparison is done by method compare(Node* 
215                 const &amp;, Node* const &amp;) <span class="anchor" id="line-69"></span></p>
216                 </li>
217         </ul>
218         </li>
219         <li>
220         <p class="line891"><a class="nonexistent">LexicographicalComparator</a>
221         <span class="anchor" id="line-70"></span></p>
222         <ul>
223                 <li>A Comparator which stores a vector of Comparators and which performs 
224                 lexicographical comparison <span class="anchor" id="line-71"></span>
225                 </li>
226         </ul>
227         </li>
228         <li>
229         <p class="line891"><a class="nonexistent">IntComparator</a> : Compares the 
230         values of a given Attribute of the Nodes which is decoded as an int value
231         <span class="anchor" id="line-72"></span></p>
232         </li>
233         <li>
234         <p class="line891"><a class="nonexistent">FloatComparator</a> : Compares the 
235         values of a given Attribute of the Nodes which is decoded as a float value
236         <span class="anchor" id="line-73"></span></p>
237         </li>
238         <li>
239         <p class="line891"><a class="nonexistent">StringComparator</a> : Compares 
240         the values of a given Attribute of the Nodes which is decoded as a string 
241         value <span class="anchor" id="line-74"></span>
242         <span class="anchor" id="line-75"></span><span class="anchor" id="line-76">
243         </span></p>
244         </li>
245 </ul>
246 <p class="line867"></p>
247 <h3 id="head-df11fea98849928d47fd0fca777300beeb1de441">Models : TreeHandler and 
248 descendants</h3>
249 <span class="anchor" id="line-77"></span><span class="anchor" id="line-78">
250 </span>
251 <ul>
252         <li>
253         <p class="line891"><a class="nonexistent">TreeHandler</a> : Abstract class 
254         which &#39;handles&#39; a Tree structure. <span class="anchor" id="line-79"></span>
255         </p>
256         <ul>
257                 <li style="list-style-type: none;">Can:
258                 <span class="anchor" id="line-80"></span>Load the children of a given 
259                 Node <span class="anchor" id="line-81"></span>
260                 <span class="anchor" id="line-82"></span></li>
261         </ul>
262         </li>
263         <li class="gap">
264         <p class="line862">SQLiteTreeHandler : Concrete <a class="nonexistent">
265         TreeHandler</a> which manages a tree stored in a sqlite database
266         <span class="anchor" id="line-83"></span></p>
267         </li>
268         <li>CppSQLite3.h / CppSQLite3.cpp : C++ interface to sqlite db
269         <span class="anchor" id="line-84"></span></li>
270 </ul>
271 <p class="line874">... <span class="anchor" id="line-85"></span>
272 <span class="anchor" id="line-86"></span></p>
273 <ul>
274         <li>
275         <p class="line891"><a class="nonexistent">ImageFinder</a> : Parses (recursively) 
276         a part of a filesystem to look for known images and load their attributes in 
277         order to add the images to a Tree (submission via a <a class="nonexistent">
278         TreeHandler</a>::<a class="nonexistent">AddBranch</a>)
279         <span class="anchor" id="line-87"></span><span class="anchor" id="line-88">
280         </span><span class="anchor" id="line-89"></span></p>
281         </li>
282 </ul>
283 <p class="line867"></p>
284 <h3 id="head-5d6e60823befe28469fe2d44ec8a889c06ea3b72">Image handling</h3>
285 <span class="anchor" id="line-90"></span><span class="anchor" id="line-91">
286 </span>
287 <ul>
288         <li>creaImageIOImageReader.h/cpp : <span class="anchor" id="line-92"></span>
289         <ul>
290                 <li>
291                 <p class="line891"><a class="nonexistent">SpecificImageReader</a>
292                 <span class="anchor" id="line-93"></span></p>
293                 </li>
294                 <li>
295                 <p class="line891"><a class="nonexistent">ImageReader</a>
296                 <span class="anchor" id="line-94"></span></p>
297                 </li>
298         </ul>
299         </li>
300         <li>creaImageIOMultiThreadImageReader.h/cpp
301         <span class="anchor" id="line-95"></span></li>
302         <li>creaImageIOIndexedHeap.h/txx <span class="anchor" id="line-96"></span>
303         <span class="anchor" id="line-97"></span></li>
304 </ul>
305 <p class="line867"></p>
306 <h3 id="head-6b69e886af29f9ef5bb7eb8b646980dd2963c2cf">Controller</h3>
307 <span class="anchor" id="line-98"></span><span class="anchor" id="line-99">
308 </span>
309 <ul>
310         <li>Gimmick <span class="anchor" id="line-100"></span>
311         <span class="anchor" id="line-101"></span></li>
312 </ul>
313 <p class="line867"></p>
314 <h3 id="head-4e100fce838267c2c7182a13a0137ed08ed1c75a">Views</h3>
315 <span class="anchor" id="line-102"></span><span class="anchor" id="line-103">
316 </span>
317 <ul>
318         <li>
319         <p class="line891"><a class="nonexistent">GimmickView</a> : Abstract
320         <span class="anchor" id="line-104"></span></p>
321         </li>
322         <li>
323         <p class="line891"><a class="nonexistent">WxGimmickView</a>
324         <span class="anchor" id="line-105"></span></p>
325         <ul>
326                 <li>
327                 <p class="line891"><a class="nonexistent">WxTreeVie</a>w</p>
328                 </li>
329                 <li>
330                 <p class="line891"><a class="nonexistent">WxAttributeView</a>
331                 <span class="anchor" id="line-107"></span></p>
332                 </li>
333                 <li>
334                 <p class="line891"><a class="nonexistent">WxImageView</a>
335                 <span class="anchor" id="line-108"></span></p>
336                 </li>
337         </ul>
338         </li>
339         <li>QGimmickView <span class="anchor" id="line-109"></span>
340         <ul>
341                 <li>... </li>
342         </ul>
343         </li>
344 </ul>
345
346 </body>
347
348 </html>