]> Creatis software - creaImageIO.git/commitdiff
*** empty log message ***
authorguigues <guigues>
Tue, 24 Feb 2009 14:47:07 +0000 (14:47 +0000)
committerguigues <guigues>
Tue, 24 Feb 2009 14:47:07 +0000 (14:47 +0000)
12 files changed:
appli/CMakeLists.txt
appli/TestGimmickReaderDialog/CMakeLists.txt [new file with mode: 0644]
appli/TestGimmickReaderDialog/main.cxx [new file with mode: 0644]
src2/BlockScopeWxApp.cpp [new file with mode: 0644]
src2/BlockScopeWxApp.h [new file with mode: 0644]
src2/CMakeLists.txt
src2/creaImageIOSQLiteTreeHandler.cpp
src2/creaImageIOTree.h
src2/creaImageIOTreeDescriptor.cpp
src2/creaImageIOTreeDescriptor.h
src2/creaImageIOTreeLevelDescriptor.cpp
src2/creaImageIOTreeLevelDescriptor.h

index 2c2bcd19bb707da1ff7f8637fefc4c2047ee47e7..79f376bc6976506af77202fe6221a7b74ef461c6 100644 (file)
@@ -2,6 +2,7 @@ IF (BUILD_V2)
   SUBDIRS(gimmick)
   SUBDIRS(wxGimmick)
   SUBDIRS(TestWxGimmickReaderDialog)
+  SUBDIRS(TestGimmickReaderDialog)
 ELSE (BUILD_V2)
   SUBDIRS(TestWxGimmickDialog)
 ENDIF (BUILD_V2)
diff --git a/appli/TestGimmickReaderDialog/CMakeLists.txt b/appli/TestGimmickReaderDialog/CMakeLists.txt
new file mode 100644 (file)
index 0000000..ec9dbb0
--- /dev/null
@@ -0,0 +1,11 @@
+
+IF(WIN32)
+  ADD_EXECUTABLE(TestGimmickReaderDialog WIN32 main)  
+  SET_TARGET_PROPERTIES(TestGimmickReaderDialog PROPERTIES LINK_FLAGS /subsystem:console )
+ELSE(WIN32)
+  ADD_EXECUTABLE(TestGimmickReaderDialog main)
+ENDIF(WIN32)
+
+TARGET_LINK_LIBRARIES( TestGimmickReaderDialog creaImageIO2)
+
+INSTALL_TARGETS(/bin/ TestGimmickReaderDialog )
diff --git a/appli/TestGimmickReaderDialog/main.cxx b/appli/TestGimmickReaderDialog/main.cxx
new file mode 100644 (file)
index 0000000..fc35ca8
--- /dev/null
@@ -0,0 +1,24 @@
+#include <creaImageIOGimmickReaderDialog.h>
+
+#include <creaVtkBasicSlicer.h>
+
+#include <iostream>
+
+int main(int argc, char* argv[])
+{      
+  std::vector<vtkImageData*> images;
+  bool r = creaImageIO::GimmickReaderDialog(images,
+                                           "GimmickReaderDialog test",
+                                           0,0,800,800,2,3,3,1);
+  
+  if (r)
+    {
+      std::cout << "$$$$ main : user clicked 'OK' $$$$"<<std::endl;
+      crea::VtkBasicSlicer(images.front());
+      images.front()->Delete();
+     }
+  else 
+    {
+      std::cout << "$$$$ main : user clicked 'CANCEL' $$$$"<<std::endl;
+     }
+}
diff --git a/src2/BlockScopeWxApp.cpp b/src2/BlockScopeWxApp.cpp
new file mode 100644 (file)
index 0000000..c8c361c
--- /dev/null
@@ -0,0 +1,45 @@
+#include <BlockScopeWxApp.h>
+#include <wx/wx.h>
+
+
+class DummyWxApp : public wxApp
+{
+public:
+  bool OnInit( );
+  int  OnExit() { return true; }
+};
+
+IMPLEMENT_APP_NO_MAIN(DummyWxApp);
+
+
+bool DummyWxApp::OnInit( )
+{       
+//  std::cout << "OnInit()"<<std::endl;
+  wxApp::OnInit();
+#ifdef __WXGTK__
+  //See http://www.wxwindows.org/faqgtk.htm#locale
+  setlocale(LC_NUMERIC, "C");
+#endif
+  return true;
+}
+
+
+BlockScopeWxApp::BlockScopeWxApp()
+{
+  mNeedToUninitialize = false;
+  if (wxApp::GetInstance()==0)
+    {
+      wxApp::SetInstance(new DummyWxApp);
+      wxInitialize();
+      mNeedToUninitialize = true;
+    }
+}
+
+BlockScopeWxApp::~BlockScopeWxApp()
+{
+  if (mNeedToUninitialize) wxUninitialize();
+}
+
+
+
diff --git a/src2/BlockScopeWxApp.h b/src2/BlockScopeWxApp.h
new file mode 100644 (file)
index 0000000..c550b4f
--- /dev/null
@@ -0,0 +1,15 @@
+#ifndef __wxAppNoMain_h__
+#define __wxAppNoMain_h__
+
+
+class BlockScopeWxApp
+{
+public:
+  BlockScopeWxApp();
+  ~BlockScopeWxApp();
+private:
+  bool mNeedToUninitialize;
+};
+
+
+#endif
index 777742b48e458be1f5f9f636dc59605c2e5785c0..e8e9aaea75530e418679d078bca0649af69f06f3 100644 (file)
@@ -44,6 +44,10 @@ SET( SRCS
   creaImageIOWxGimmickReaderDialog
   creaImageIOWxGimmickFrame
 
+  # 
+  BlockScopeWxApp
+  creaImageIOGimmickReaderDialog
+
 
 )
 
index f3595c9f156caa9fed39e9e5ff173f163f8cf33f..7d9f7ef4587ffeffbfb42abac854f05dff4666ff 100644 (file)
@@ -330,22 +330,22 @@ namespace creaImageIO
            
            
            // Add Attribute 'ID' to Description
-           GetTree().GetLevelDescriptor(l).Add
+           GetTree().GetDescriptor().Add
              (AttributeDescriptor( "ID",
                                    "Database Identifier",
                                    0,0,
                                    AttributeDescriptor::PRIVATE
-                                   ));
+                                   ),l);
            
            if (l>1) 
              {
                // Add Attribute 'PARENT_ID' to Description
-               GetTree().GetLevelDescriptor(l).Add
+               GetTree().GetDescriptor().Add
                  (AttributeDescriptor( "PARENT_ID",
                                        "Database Parent Identifier",
                                        0,0,
                                        AttributeDescriptor::PRIVATE
-                                       ));
+                                       ),l);
              }
            
          }
@@ -434,7 +434,7 @@ namespace creaImageIO
 
     tree::Descriptor& desc = GetTree().GetDescriptor();
     // clears the existing one
-    desc.GetLevelDescriptorList().clear();
+    desc.Clear();
      
     int nblevel = 0;
     std::string query = "SELECT * FROM LEVELS";
@@ -445,7 +445,7 @@ namespace creaImageIO
       {
        std::string name = q.getStringField(0);
        GimmickMessage(2," * Importing level '"<<name<<"'"<<std::endl);
-       desc.GetLevelDescriptorList().push_back(LevelDescriptor(name));
+       desc.Add(LevelDescriptor(name));
        nblevel++;
        q.nextRow();
       }   
@@ -483,13 +483,13 @@ namespace creaImageIO
            std::string name(q.getStringField(1));
            GimmickMessage(2,"  - Importing attribute '"<<key<<"' '"<<name
                           <<"'"<<std::endl);
-           desc.GetLevelDescriptor(level).Add
+           desc.Add
              (AttributeDescriptor( key, // Key
                                    name, // Name
                                    q.getIntField(2), // Group
                                    q.getIntField(3), // Element 
                                    q.getIntField(4) // Flags
-                                   ));
+                                   ),level);
            if ( key == "ID" ) 
              {
                ID_found = true;
index 21afae5dc777f28888e0caf6f27f0e04b019632d..de5b94a062c84b57a4b42f913e71ff6dcfbf44df 100644 (file)
@@ -50,21 +50,14 @@ namespace creaImageIO
       unsigned int GetNumberOfLevels() 
       { return GetDescriptor().GetNumberOfLevels(); }
 
-    /// Returns the LevelDescriptor of a given level (const ref)
+      /// Returns the LevelDescriptor of a given level (const ref)
       const LevelDescriptor& GetLevelDescriptor(int level) const
       { return GetDescriptor().GetLevelDescriptor(level); }
-      /// Returns the LevelDescriptor of a given level (ref)
-      LevelDescriptor& GetLevelDescriptor(int level) 
-      { return GetDescriptor().GetLevelDescriptor(level); }
 
       /// Returns the AttributeDescriptorList of a given level (const ref)
       const LevelDescriptor::AttributeDescriptorListType& 
       GetAttributeDescriptorList(int level) const
       { return GetDescriptor().GetAttributeDescriptorList(level); }
-      /// Returns the AttributeDescriptorList of a given level (ref)
-      //LevelDescriptor::AttributeDescriptorListType& 
-      //GetAttributeDescriptorList(int level) 
-      //{ return GetDescriptor().GetAttributeDescriptorList(level); }
   
       virtual void Print() const;
 
index 03cfa41289ee328d6f590e0cafb3e12d75c469f7..8ba499e2e675c3011c31d6645c9fb426adaf41a9 100644 (file)
@@ -31,7 +31,7 @@ namespace creaImageIO
     //==================================================================
     void Descriptor::CreateLevel0Descriptor()
     {
-      GetLevelDescriptorList().push_back(LevelDescriptor("Root"));
+      Add(LevelDescriptor("Root"));
     }
     //==================================================================
     
@@ -40,98 +40,123 @@ namespace creaImageIO
     void Descriptor::CreateDefault()
     {
       // clears the existing one
-      GetLevelDescriptorList().clear();
+      Clear();
       
       // Creates the level 0 descriptor 
       CreateLevel0Descriptor();
       // Creates the attribute "Name"
-      GetLevelDescriptor(0).Add(AttributeDescriptor("Name","Name",
-                                                   AttributeDescriptor::LABEL));
+      Add(AttributeDescriptor("Name","Name",
+                             AttributeDescriptor::LABEL),0);
       
       // Patient level
-      GetLevelDescriptorList().push_back(LevelDescriptor("Patient"));
-      GetLevelDescriptor(1).Add(AttributeDescriptor(0x0010,0x0010,   // Patient name
-                                                                  AttributeDescriptor::LABEL));
-      GetLevelDescriptor(1).Add(AttributeDescriptor(0x0010,0x0040)); // Patient sex
-      GetLevelDescriptor(1).Add(AttributeDescriptor(0x0010,0x0030)); // Patient birthday
-      GetLevelDescriptor(1).Add(AttributeDescriptor(0x0010,0x0020,   // Patient ID
-                                                                 AttributeDescriptor::IDENTIFIER));
+      Add(LevelDescriptor("Patient"));
+      Add(AttributeDescriptor(0x0010,0x0010,   // Patient name
+                             AttributeDescriptor::LABEL),1);
+      Add(AttributeDescriptor(0x0010,0x0040),1); // Patient sex
+      Add(AttributeDescriptor(0x0010,0x0030),1); // Patient birthday
+      Add(AttributeDescriptor(0x0010,0x0020,   // Patient ID
+                             AttributeDescriptor::IDENTIFIER),1);
  
       // Study-series level
-      GetLevelDescriptorList().push_back(LevelDescriptor("Series"));
-      GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x0060,    // Modality
-                                                   AttributeDescriptor::LABEL));
-      GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x1030)); // Study Description
-      GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x103E)); // Description
-      GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x0080)); // Institution Name
-      GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x0081)); // Institution Adress
-      GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x1010)); // Station Name
-      GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x1048)); // Physician of Record
-      GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x1050)); // Performing Physician's Name
-      GetLevelDescriptor(2).Add(AttributeDescriptor(0x0018,0x1030)); // Protocol Name
-
-      GetLevelDescriptor(2).Add(AttributeDescriptor(0x0020,0x0010)); // Study ID
-      GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x0020)); // Study Date
-      GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x0030)); // Study Time
-      GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x0050)); // Study Accession Number
-      GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x0005)); // Specific character set
-      GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x0021)); // Series Date
-      GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x0031)); // Series time
-
-      GetLevelDescriptor(2).Add(AttributeDescriptor(0x0020,0x000D   // Study Instance UID  
-                                                   ));//AttributeDescriptor::IDENTIFIER));
-      GetLevelDescriptor(2).Add(AttributeDescriptor(0x0020,0x000E,   // Series Instance UID  
-                                                   AttributeDescriptor::IDENTIFIER));
+      Add(LevelDescriptor("Series"));
+      Add(AttributeDescriptor(0x0008,0x0060,    // Modality
+                             AttributeDescriptor::LABEL),2);
+      Add(AttributeDescriptor(0x0008,0x1030),2); // Study Description
+      Add(AttributeDescriptor(0x0008,0x103E),2); // Description
+      Add(AttributeDescriptor(0x0008,0x0080),2); // Institution Name
+      Add(AttributeDescriptor(0x0008,0x0081),2); // Institution Adress
+      Add(AttributeDescriptor(0x0008,0x1010),2); // Station Name
+      Add(AttributeDescriptor(0x0008,0x1048),2); // Physician of Record
+      Add(AttributeDescriptor(0x0008,0x1050),2); // Performing Physician's Name
+      Add(AttributeDescriptor(0x0018,0x1030),2); // Protocol Name
+
+      Add(AttributeDescriptor(0x0020,0x0010),2); // Study ID
+      Add(AttributeDescriptor(0x0008,0x0020),2); // Study Date
+      Add(AttributeDescriptor(0x0008,0x0030),2); // Study Time
+      Add(AttributeDescriptor(0x0008,0x0050),2); // Study Accession Number
+      Add(AttributeDescriptor(0x0008,0x0005),2); // Specific character set
+      Add(AttributeDescriptor(0x0008,0x0021),2); // Series Date
+      Add(AttributeDescriptor(0x0008,0x0031),2); // Series time
+
+      Add(AttributeDescriptor(0x0020,0x000D   // Study Instance UID  
+                                                   ),2);//AttributeDescriptor::IDENTIFIER),2);
+      Add(AttributeDescriptor(0x0020,0x000E,   // Series Instance UID  
+                                                   AttributeDescriptor::IDENTIFIER),2);
       // |
-      //                                                   AttributeDescriptor::LABEL));
+      //                                                   AttributeDescriptor::LABEL),2);
      
 
       // Image level
-      GetLevelDescriptorList().push_back(LevelDescriptor("Image"));
+      Add(LevelDescriptor("Image"));
 
-      GetLevelDescriptor(3).Add(AttributeDescriptor(0x0020,0x0013)); // Image Number
+      Add(AttributeDescriptor(0x0020,0x0013),3); // Image Number
 
-      GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0010)); // Rows
-      GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0011)); // Columns
-      GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0012)); // Planes
-      GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0002)); // Sample per pixels
-      GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0008)); // Number of Frames 
-      GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0004)); // Photometric Interpretation
-      GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0103)); // Pixel Representation
+      Add(AttributeDescriptor(0x0028,0x0010),3); // Rows
+      Add(AttributeDescriptor(0x0028,0x0011),3); // Columns
+      Add(AttributeDescriptor(0x0028,0x0012),3); // Planes
+      Add(AttributeDescriptor(0x0028,0x0002),3); // Sample per pixels
+      Add(AttributeDescriptor(0x0028,0x0008),3); // Number of Frames 
+      Add(AttributeDescriptor(0x0028,0x0004),3); // Photometric Interpretation
+      Add(AttributeDescriptor(0x0028,0x0103),3); // Pixel Representation
 
-      GetLevelDescriptor(3).Add(AttributeDescriptor(0x0020,0x0032)); // Image Position Patient
-      GetLevelDescriptor(3).Add(AttributeDescriptor(0x0020,0x0037)); // Image Orientation Patient
-      GetLevelDescriptor(3).Add(AttributeDescriptor(0x0020,0x1041)); // Slice Location
-      GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0006)); // Planar Configuration
+      Add(AttributeDescriptor(0x0020,0x0032),3); // Image Position Patient
+      Add(AttributeDescriptor(0x0020,0x0037),3); // Image Orientation Patient
+      Add(AttributeDescriptor(0x0020,0x1041),3); // Slice Location
+      Add(AttributeDescriptor(0x0028,0x0006),3); // Planar Configuration
 
-      GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0030)); // Pixel Spacing
-      GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0100)); // AlocatedBits
-      GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0101)); // StoredBits
+      Add(AttributeDescriptor(0x0028,0x0030),3); // Pixel Spacing
+      Add(AttributeDescriptor(0x0028,0x0100),3); // AlocatedBits
+      Add(AttributeDescriptor(0x0028,0x0101),3); // StoredBits
 
-      GetLevelDescriptor(3).Add(AttributeDescriptor(0x0008,0x0008)); // Image Type
-      GetLevelDescriptor(3).Add(AttributeDescriptor(0x0008,0x0023)); // Content Date
-      GetLevelDescriptor(3).Add(AttributeDescriptor(0x0008,0x0033)); // Content Time
+      Add(AttributeDescriptor(0x0008,0x0008),3); // Image Type
+      Add(AttributeDescriptor(0x0008,0x0023),3); // Content Date
+      Add(AttributeDescriptor(0x0008,0x0033),3); // Content Time
 
-      GetLevelDescriptor(3).Add(AttributeDescriptor(0x0020,0x4000)); // Image Comments
+      Add(AttributeDescriptor(0x0020,0x4000),3); // Image Comments
 
-      GetLevelDescriptor(3).Add(AttributeDescriptor(0x0004,0x1500,   // File Name
-                                                   AttributeDescriptor::LABEL));
-      GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x1052)); // Rescale Intercept
-      GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x1053)); // Rescale Slope
+      Add(AttributeDescriptor(0x0004,0x1500,   // File Name
+                                                   AttributeDescriptor::LABEL),3);
+      Add(AttributeDescriptor(0x0028,0x1052),3); // Rescale Intercept
+      Add(AttributeDescriptor(0x0028,0x1053),3); // Rescale Slope
 
-      GetLevelDescriptor(3).Add(AttributeDescriptor(0x0050,0x0004)); // Calibration Image
+      Add(AttributeDescriptor(0x0050,0x0004),3); // Calibration Image
 
-      GetLevelDescriptor(3).Add(AttributeDescriptor(0x0020,0x0052   // Frame Reference UID
-                                                   ));
-      GetLevelDescriptor(3).Add(AttributeDescriptor(0x0008,0x0016)); // SOP Class UID
-      GetLevelDescriptor(3).Add(AttributeDescriptor("FullFileName",  // Full file name
+      Add(AttributeDescriptor(0x0020,0x0052   // Frame Reference UID
+                                                   ),3);
+      Add(AttributeDescriptor(0x0008,0x0016),3); // SOP Class UID
+      Add(AttributeDescriptor("FullFileName",  // Full file name
                                                    "Full file name",
-                                                   AttributeDescriptor::IDENTIFIER)); 
+                                                   AttributeDescriptor::IDENTIFIER),3); 
                                                                  
      
     }
     //==================================================================
 
+    //==================================================================
+    /// Adds a LevelDescriptor at the end of the list
+    void Descriptor::Add(const LevelDescriptor& d)
+    {
+      mLevelDescriptorList.push_back(d);
+    }
+    //==================================================================
+    
+    //==================================================================  
+    /// Adds an AttributeDescriptor to level l
+    void Descriptor::Add(const AttributeDescriptor& d, int l)
+    {
+      mLevelDescriptorList[l].Add(d);
+      // TO DO : update DicomTagToName and NameToDicomTag map
+    }
+    //==================================================================
+
+    //==================================================================
+    /// Clears the Descriptor
+    void Descriptor::Clear()
+    {
+      mLevelDescriptorList.clear();
+    }
+    //==================================================================
+
     //==================================================================
     /// Builds the key to value map of all the attributes of the tree
     void Descriptor::BuildAttributeMap( std::map<std::string,std::string>& map ) const
index 765b73f1ae61cc8e03a4c43ac1e07c4b847720af..26bbc5edbd7d5679d5f65f1760de9e47ba1018ac 100644 (file)
@@ -38,29 +38,30 @@ namespace creaImageIO
       /// Returns the LevelDescriptor of a given level (const ref)
       const LevelDescriptor& GetLevelDescriptor(int level) const
       { return mLevelDescriptorList[level]; }
-      /// Returns the LevelDescriptor of a given level (ref)
-      LevelDescriptor& GetLevelDescriptor(int level) 
-      { return mLevelDescriptorList[level]; }
 
       /// Returns the AttributeDescriptorList of a given level (const ref)
       const LevelDescriptor::AttributeDescriptorListType& 
       GetAttributeDescriptorList(int level) const
       { return mLevelDescriptorList[level].GetAttributeDescriptorList(); }
-      /// Returns the AttributeDescriptorList of a given level (ref)
-      //LevelDescriptor::AttributeDescriptorListType& 
-      //GetAttributeDescriptorList(int level) 
-      //{ return mLevelDescriptorList[level].GetAttributeDescriptorList(); }
   
-
+      /// Adds a LevelDescriptor at the end of the list
+      void Add(const LevelDescriptor&);
+      
+      /// Adds an AttributeDescriptor to level l
+      void Add(const AttributeDescriptor&, int l);
+      
+      
       /// Builds the key to value map of all the attributes of the tree
-      void BuildAttributeMap( AttributeMapType& ) const;
+       void BuildAttributeMap( AttributeMapType& ) const;
 
       /// The type of LevelDescriptor container
-      typedef std::vector<LevelDescriptor> LevelDescriptorListType;
-      /// Returns the list of LevelDescriptor
-      LevelDescriptorListType& GetLevelDescriptorList() { return mLevelDescriptorList; }
+       typedef std::vector<LevelDescriptor> LevelDescriptorListType;
       /// Returns the list of tree levels (const)
-      const LevelDescriptorListType& GetLevelDescriptorList() const { return mLevelDescriptorList; }
+       const LevelDescriptorListType& GetLevelDescriptorList() const { return mLevelDescriptorList; }
+
+      /// Clears the Descriptor
+      void Clear();
 
     private:
       LevelDescriptorListType mLevelDescriptorList;
index bd0feca7d9c612b0e16f26fb496e53f55e9a30a6..ebb3c2c770bb6a73a0fa3abf3f548be7b97e1d1f 100644 (file)
@@ -5,24 +5,24 @@ namespace creaImageIO
 {
   namespace tree
   {
-      /// Adds the AttributeDescriptor to the list
-      void LevelDescriptor::Add(AttributeDescriptor a)
-      {
-       GimmickMessage(5,"Adding Attribute Descriptor '"<<a.GetKey()
-                      <<"' to LevelDescriptor"
-                      <<std::endl);
-       mAttributeDescriptorList.push_back(a);
-       if ( a.GetFlags() & AttributeDescriptor::IDENTIFIER )
-         {
-           GimmickMessage(6,"Is an IDENTIFIER"<<std::endl);
-           mIdentifierList.push_back(a.GetKey());
-         }
-       if ( a.GetFlags() & AttributeDescriptor::LABEL )
-         {
-           GimmickMessage(6,"Is a LABEL"<<std::endl);
-           mLabelList.push_back(a.GetKey());
-         }
-      }
+    /// Adds the AttributeDescriptor to the list
+    void LevelDescriptor::Add(const AttributeDescriptor& a)
+    {
+      GimmickMessage(5,"Adding Attribute Descriptor '"<<a.GetKey()
+                    <<"' to LevelDescriptor"
+                    <<std::endl);
+      mAttributeDescriptorList.push_back(a);
+      if ( a.GetFlags() & AttributeDescriptor::IDENTIFIER )
+       {
+         GimmickMessage(6,"Is an IDENTIFIER"<<std::endl);
+         mIdentifierList.push_back(a.GetKey());
+       }
+      if ( a.GetFlags() & AttributeDescriptor::LABEL )
+       {
+         GimmickMessage(6,"Is a LABEL"<<std::endl);
+         mLabelList.push_back(a.GetKey());
+       }
+    }
 
   }
 }
index b73c249d787e577e321e6e29b30993843f04a920..4f35b0d8fb46842b2f699135c74a798cdac22070 100644 (file)
@@ -23,28 +23,24 @@ namespace creaImageIO
       ~LevelDescriptor() {} 
 
       /// Returns the name of the level
-      const std::string& GetName() { return mName; }
+      const std::string& GetName() const { return mName; }
 
       /// Returns the number of attributes of the level
-      unsigned int GetNumberOfAttributes() 
+      unsigned int GetNumberOfAttributes() const
       { return mAttributeDescriptorList.size(); }
 
       /// Adds the AttributeDescriptor to the list
-      /// WARNING : You MUST use this method and NOT push_back directly in list
-      /// ad IdentifierList and LabelList are also updated
-      void Add(AttributeDescriptor);
+      void Add(const AttributeDescriptor&);
 
       /// The type of attribute container
       typedef std::vector<AttributeDescriptor> AttributeDescriptorListType;
-      /// Returns the list of AttributeDescriptor
-      //AttributeDescriptorListType& GetAttributeDescriptorList() 
-      //{ return mAttributeDescriptorList; }
       /// Returns the list of AttributeDescriptor (const)
       const AttributeDescriptorListType& GetAttributeDescriptorList() const 
       { return mAttributeDescriptorList; }
 
-     /// \return The list of attributes with flag IDENTIFIER set
-     const std::vector<std::string>& GetIdentifierList() const 
+      /// \return The list of attributes with flag IDENTIFIER set
+      const std::vector<std::string>& GetIdentifierList() const 
       { return mIdentifierList; }
       /// \return The list of attributes with flag LABEL set
       const std::vector<std::string>& GetLabelList() const