]> Creatis software - clitk.git/blobdiff - segmentation/clitkAnatomicalFeatureDatabase.h
Debug RTStruct conversion with empty struc
[clitk.git] / segmentation / clitkAnatomicalFeatureDatabase.h
index dcf7efd27c90969208742e4481f5340ba211ad89..c1ed4fd17ea1c4407ac272e71619dcd28fee293c 100644 (file)
@@ -3,7 +3,7 @@
 
   Authors belong to: 
   - University of LYON              http://www.universite-lyon.fr/
-  - Léon Bérard cancer center       http://oncora1.lyon.fnclcc.fr
+  - Léon Bérard cancer center       http://www.centreleonberard.fr
   - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
 
   This software is distributed WITHOUT ANY WARRANTY; without even
@@ -14,7 +14,7 @@
 
   - BSD        See included LICENSE.txt file
   - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-  ======================================================================-====*/
+  ===========================================================================**/
 
 #ifndef CLITKANATOMICALFEATUREDATABASE_H
 #define CLITKANATOMICALFEATUREDATABASE_H
@@ -34,10 +34,17 @@ namespace clitk {
   class AnatomicalFeatureDatabase: public itk::Object
   {
   public:
-    AnatomicalFeatureDatabase();
-
+    // typedef
     typedef std::string TagType;
 
+    // New macro
+    typedef itk::Object                    Superclass;
+    typedef AnatomicalFeatureDatabase      Self;
+    typedef itk::SmartPointer<Self>        Pointer;
+    typedef itk::SmartPointer<const Self>  ConstPointer;
+    itkNewMacro(Self);
+    static Pointer New(std::string filename);
+
     // Set/Get filename 
     itkSetMacro(Filename, std::string);
     itkGetConstMacro(Filename, std::string);
@@ -45,29 +52,57 @@ namespace clitk {
     // Read and write DB
     void Write();
     void Load();
+    itkGetConstMacro(Path, std::string);
+    itkSetMacro(Path, std::string);
     
     // Set Get landmarks
     typedef itk::Point<double,3> PointType3D;
     void SetPoint3D(TagType tag, PointType3D & p);
     void GetPoint3D(TagType tag, PointType3D & p);
-    
+    double GetPoint3D(std::string tag, int dim);
+    bool TagExist(std::string tag);
+    std::string GetTagValue(std::string tag);
+
     // Set Get image
     void SetImageFilename(TagType tag, std::string f);
-    template<class ImageType>
-    typename ImageType::Pointer GetImage(TagType tag);
+    
+    template<class ImageType> 
+    typename ImageType::Pointer GetImage(TagType tag, bool reload=false);
+    
+    template<class ImageType> 
+    bool CheckImage(TagType tag); 
+    
+    template<class ImageType> 
+    void  SetImage(TagType tag, std::string f, typename ImageType::Pointer image, bool write=false);
+    
+    template<class ImageType> 
+    void ReleaseImage(TagType tag);
     
     // Set Get Double
     void SetDouble(TagType tag, double d);
     double GetDouble(TagType tag);
+    
+    // Remove Tag
+    void RemoveTag(TagType tag);
 
   protected:
+    AnatomicalFeatureDatabase();
+    ~AnatomicalFeatureDatabase() {}
+
     std::string m_Filename;
+    std::string m_Path;
+    typedef itk::ImageBase<3> ImageBaseType;
     typedef std::map<TagType, std::string> MapTagType;
+    typedef std::map<TagType, ImageBaseType*> MapTagImageType; 
     MapTagType m_MapOfTag;
+    MapTagImageType m_MapOfImage;
 
   }; // end class
   //--------------------------------------------------------------------
 
+#define NewAFDB(NAME, FILE)                                             \
+  clitk::AnatomicalFeatureDatabase::Pointer NAME = clitk::AnatomicalFeatureDatabase::New(FILE);
+
   #include "clitkAnatomicalFeatureDatabase.txx" 
 
 } // end namespace clitk