From e6e296da58762731b5ea8bc019fd2741f375b43e Mon Sep 17 00:00:00 2001 From: David Sarrut Date: Thu, 27 Oct 2011 15:51:52 +0200 Subject: [PATCH] Add New(), GetValueTag and Path (to search for image) --- .../clitkAnatomicalFeatureDatabase.cxx | 27 ++++++++++++++++++- segmentation/clitkAnatomicalFeatureDatabase.h | 25 ++++++++++++++--- 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/segmentation/clitkAnatomicalFeatureDatabase.cxx b/segmentation/clitkAnatomicalFeatureDatabase.cxx index c86b2df..0f5bfdd 100644 --- a/segmentation/clitkAnatomicalFeatureDatabase.cxx +++ b/segmentation/clitkAnatomicalFeatureDatabase.cxx @@ -28,7 +28,19 @@ //-------------------------------------------------------------------- clitk::AnatomicalFeatureDatabase::AnatomicalFeatureDatabase() { - SetFilename("default.afdb"); + SetFilename("default.afdb"); + SetPath("./"); +} +//-------------------------------------------------------------------- + + +//-------------------------------------------------------------------- +clitk::AnatomicalFeatureDatabase::Pointer clitk::AnatomicalFeatureDatabase::New(std::string filename) +{ + Pointer a = AnatomicalFeatureDatabase::New(); + a->SetFilename(filename); + a->Load(); + return a; } //-------------------------------------------------------------------- @@ -115,6 +127,19 @@ double clitk::AnatomicalFeatureDatabase::GetPoint3D(std::string tag, int dim) //-------------------------------------------------------------------- +//-------------------------------------------------------------------- +std::string clitk::AnatomicalFeatureDatabase::GetTagValue(std::string tag) +{ + if (!TagExist(tag)) { + clitkExceptionMacro("Could not find the tag <" << tag << "> in the DB"); + return ""; + } + std::string s = m_MapOfTag[tag]; + return s; +} +//-------------------------------------------------------------------- + + //-------------------------------------------------------------------- void clitk::AnatomicalFeatureDatabase::GetPoint3D(std::string tag, PointType3D & p) { diff --git a/segmentation/clitkAnatomicalFeatureDatabase.h b/segmentation/clitkAnatomicalFeatureDatabase.h index bd574d3..59e8dec 100644 --- a/segmentation/clitkAnatomicalFeatureDatabase.h +++ b/segmentation/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 Pointer; + typedef itk::SmartPointer ConstPointer; + itkNewMacro(Self); + static Pointer New(std::string filename); + // Set/Get filename itkSetMacro(Filename, std::string); itkGetConstMacro(Filename, std::string); @@ -45,6 +52,8 @@ namespace clitk { // Read and write DB void Write(); void Load(); + itkGetConstMacro(Path, std::string); + itkSetMacro(Path, std::string); // Set Get landmarks typedef itk::Point PointType3D; @@ -52,7 +61,8 @@ namespace clitk { 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 @@ -70,16 +80,23 @@ namespace clitk { void RemoveTag(TagType tag); protected: + AnatomicalFeatureDatabase(); + ~AnatomicalFeatureDatabase() {} + std::string m_Filename; + std::string m_Path; typedef itk::ImageBase<3> ImageBaseType; typedef std::map MapTagType; - typedef std::map MapTagImageType; + typedef std::map 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 -- 2.47.1