/* # --------------------------------------------------------------------- # # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image # pour la Santé) # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton # Previous Authors : Laurent Guigues, Jean-Pierre Roux # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil # # This software is governed by the CeCILL-B license under French law and # abiding by the rules of distribution of free software. You can use, # modify and/ or redistribute the software under the terms of the CeCILL-B # license as circulated by CEA, CNRS and INRIA at the following URL # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html # or in the file LICENSE.txt. # # As a counterpart to the access to the source code and rights to copy, # modify and redistribute granted by the license, users are provided only # with a limited warranty and the software's author, the holder of the # economic rights, and the successive licensors have only limited # liability. # # The fact that you are presently reading this means that you have had # knowledge of the CeCILL-B license and that you accept its terms. # ------------------------------------------------------------------------ */ New architecture created on 04/02/09 following a MVC approach Elements of the architecture: * Data structure: Attributed tree -------------------------------------- in namespace creaImageIO::tree Tree : Attributed tree structure inherits Node holds a vector of root TreeNode TreeData : Abstract class to store user data on a tree Node : belong to a Tree, holds a pointer on parent Node, holds a vector of children Node NodeData : Abstract class to store user data on a tree node Descriptor : Descriptor of the structure a tree (number of levels, descriptors of each level, ...) holds a vector of LevelDescriptor LevelDescriptor : holds a vector of TreeAttributeDescriptor AttributeDescriptor : stores name, dicom group/elem, flags Comparator: Abstract definition of a comparator of Node Comparison is done by operator()(Node* const &, Node* const &) ComparatorWithOrder : Abstract Comparator whose order can be reversed Concrete comparison is done by method compare(Node* const &, Node* const &) LexicographicalComparator : A Comparator which stores a vector of Comparators and which performs lexicographical comparison IntComparator : Compares the values of a given Attribute of the Nodes which is decoded as an int value FloatComparator : Compares the values of a given Attribute of the Nodes which is decoded as a float value StringComparator : Compares the values of a given Attribute of the Nodes which is decoded as a string value * Models : TreeHandler and descendants -------------------------------------- TreeHandler : Abstract class which 'handles' a Tree structure. Can: Load the children of a given Node SQLiteTreeHandler : Concrete TreeHandler which manages a tree stored in a sqlite database CppSQLite3.h / CppSQLite3.cpp : C++ interface to sqlite db ... ImageFinder : Parses (recursively) a part of a filesystem to look for known images and load their attributes in order to add the images to a Tree (submission via a TreeHandler::AddBranch) * Image handling ---------------- creaImageIOImageReader.h/cpp : SpecificImageReader ImageReader creaImageIOMultiThreadImageReader.h/cpp creaImageIOIndexedHeap.h/cpp * Views : --------- TreeView WxTreeView WxGimmickView QTreeView QGimmickView ... * Controller : -------------- Gimmick ...