]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOTreeAttributeDescriptor.cpp
*** empty log message ***
[creaImageIO.git] / src2 / creaImageIOTreeAttributeDescriptor.cpp
index 34647974489a1cb26156579808d0dd5435256f29..231b045e003bc715a518e594e10ab3cbb226be2f 100644 (file)
@@ -100,12 +100,9 @@ namespace creaImageIO
       if ( (key.size()==10) &&
           (key[0] == 'D') &&
           (key[5] == '_') )
-       {
-         std::string g = key.substr(1,4);
-         sscanf(key.c_str(),"D %04x _ %04x ",&group,&elem);  
-         sscanf(g.c_str(),"%04x",&group);
-         GimmickDebugMessage(3,"GetDicomGroupElementFromKey '"<<g<<"' : "
-                        <<group<<"|"<<elem<<std::endl);
+         {
+        sscanf_s(key.c_str(),"D%04hx_%04hx ",&group,&elem);  
+         GimmickDebugMessage(3,"GetDicomGroupElementFromKey '"<<key<<"' : "                     <<group<<"|"<<elem<<std::endl);
        }
       else 
        { 
@@ -115,6 +112,43 @@ namespace creaImageIO
       return;
     }
 
+       //=====================================================================
+       /// test if the type is a date
+       bool AttributeDescriptor::isDateEntry() const
+       {
+                
+               bool btest = false;
+               // Retrieve the name from gdcm dict
+               GDCM_NAME_SPACE::DictEntry* entry =     GDCM_NAME_SPACE::Global::GetDicts()->GetDefaultPubDict()->GetEntry(GetGroup(),GetElement());
+               if(     entry != 0)
+               {
+                       if( entry->GetVR().str() == "DA" )
+                       {
+                               btest = true;
+                       }
+               }
+               return btest;
+       }
+
+       //=====================================================================
+       /// test if the type is a time
+       bool AttributeDescriptor::isTimeEntry() const
+       {
+                
+               bool btest = false;
+               // Retrieve the name from gdcm dict
+               GDCM_NAME_SPACE::DictEntry* entry =     GDCM_NAME_SPACE::Global::GetDicts()->GetDefaultPubDict()->GetEntry(GetGroup(),GetElement());
+               if(     entry != 0)
+               {
+                       if( entry->GetVR().str() == "TM" )
+                       {
+                               btest = true;
+                       }
+               }
+               return btest;
+       }
+
+
     //=====================================================================
        /// Decodes the type of the attribute
      void AttributeDescriptor::DecodeType(unsigned int& typ) const
@@ -126,6 +160,11 @@ namespace creaImageIO
                GDCM_NAME_SPACE::Global::GetDicts()
                ->GetDefaultPubDict()->GetEntry(GetGroup(),GetElement());
 
+               if (entry==0) 
+               {
+                       typ = 2;
+                       return;
+               }
                std::string type = entry->GetVR().str();
                GimmickDebugMessage(3,"VR Value is "<<type<<"!"<<std::endl);
                if(type=="AS" ||
@@ -139,13 +178,13 @@ namespace creaImageIO
                type=="US" ||
                type=="SH")
                {
-                       type="1";
-                        sscanf(type.c_str(),"%u",&typ);
+                       // Numerical 
+                       typ = 1;
                }
                else
                {
-                       type="2";
-                        sscanf(type.c_str(),"%u",&typ);
+                       // String
+                       typ = 2;
                }
                
          }