⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gdcmvalidator.cxx

📁 DTMK软件开发包,此为开源软件,是一款很好的医学图像开发资源.
💻 CXX
字号:
/*=========================================================================
                                                                                
  Program:   gdcm
  Module:    $RCSfile: gdcmValidator.cxx,v $
  Language:  C++
  Date:      $Date: 2006-02-20 15:56:58 $
  Version:   $Revision: 1.5 $
                                                                                
  Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
  l'Image). All rights reserved. See Doc/License.txt or
  http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details.
                                                                                
     This software is distributed WITHOUT ANY WARRANTY; without even
     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
     PURPOSE.  See the above copyright notices for more information.
                                                                                
=========================================================================*/

#include "gdcmValidator.h"
#include "gdcmElementSet.h"
#include "gdcmBinEntry.h"
#include "gdcmValEntry.h"
#include "gdcmDebug.h" // hidden way to include sstream

namespace gdcm 
{

Validator::Validator()
{
}

Validator::~Validator()
{
}

// Function to compare the VM found while parsing d->GetValue()
// compare to the one from the dictionary
bool CheckVM(ValEntry *v)
{
  const std::string &s = v->GetValue();
  std::string::size_type n = s.find("\\");
  if ( n == s.npos ) // none found
  {
    n = 0;
  }
  n++; // number of '\' + 1 == Value Multiplicity

  unsigned int m;
  itksys_ios::istringstream is;
  is.str( v->GetVM());
  is >> m;

  return n == m;
}

void Validator::SetInput(ElementSet *input)
{
  // berk for now SetInput do two things at the same time
  gdcm::DocEntry *d=input->GetFirstEntry();
  while(d)
  {
    if ( gdcm::BinEntry *b = dynamic_cast<gdcm::BinEntry*>(d) )
    {
//      copyH->InsertBinEntry( b->GetBinArea(),b->GetLength(),
//        b->GetGroup(),b->GetElement(),
//        b->GetVR() );
        (void)b;
    }
    else if ( gdcm::ValEntry *v = dynamic_cast<gdcm::ValEntry*>(d) )
    {   
      if ( !CheckVM(v) )
      {
        std::cout << "This DICOM contains one wrong tag:" << 
        v->GetValue() << " " <<
        v->GetGroup() << "," << v->GetElement() << "," <<
        v->GetVR() << " " << v->GetVM() << " " << v->GetName() << std::endl;
      }
    }
    else
    {
      // We skip pb of SQ recursive exploration
    }
    d=input->GetNextEntry();
  }
}

} // end namespace gdcm

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -