Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 #ifndef __cmtkStudy_h_included_
00034 #define __cmtkStudy_h_included_
00035 
00036 #include <cmtkconfig.h>
00037 
00038 #include <Base/cmtkMacros.h>
00039 #include <Base/cmtkVolume.h>
00040 #include <Base/cmtkUniformVolume.h>
00041 #include <Base/cmtkAffineXform.h>
00042 #include <Base/cmtkWarpXform.h>
00043 #include <Base/cmtkLandmarkList.h>
00044 #include <Base/cmtkSegmentationLabel.h>
00045 
00046 #include <IO/cmtkFileFormat.h>
00047 
00048 namespace
00049 cmtk
00050 {
00051 
00054 
00057 enum
00058 {
00060   PALETTE_GRAY = 0,
00062   PALETTE_RED = 1,
00064   PALETTE_GREEN = 2,
00066   PALETTE_BLUE = 3,
00068   PALETTE_RAINBOW = 4,
00070   PALETTE_LABELS = 5
00071 };
00072 
00075 class Study
00076 {
00078   cmtkGetSetMacroString(FileSystemPath);
00079 
00081   cmtkGetSetMacroString(Name);
00082 
00084   cmtkGetSetMacroString(Description);
00085 
00087   cmtkGetSetMacroString(Modality);
00088 
00090   cmtkGetSetMacro(UniformVolume::SmartPtr,Volume);
00091 
00093   cmtkGetSetMacro(LandmarkList::SmartPtr,LandmarkList);
00094 
00096   DataGrid::IndexType m_Dims;
00097 
00099   cmtkGetSetMacro3Array(Types::Coordinate,Calibration);
00100 
00102   cmtkGetSetMacro(Types::DataItem,MinimumValue);
00103 
00105   cmtkGetSetMacro(Types::DataItem,MaximumValue);
00106 
00108   cmtkGetSetMacro(bool,Padding);
00109 
00111   cmtkGetSetMacro(Types::DataItem,PaddingValue);
00112 
00114   cmtkGetSetMacro(bool,HaveUserColorMap);
00115 
00117   cmtkGetSetMacro(char,StandardColormap);
00118 
00120   cmtkGetSetMacro(bool,ReverseColormap);
00121 
00123   cmtkGetSetMacro(Types::DataItem,Black);
00124 
00126   cmtkGetSetMacro(Types::DataItem,White);
00127 
00129   cmtkGetSetMacro(double,Gamma);
00130 
00132   cmtkGetSetMacro(unsigned int,DisplayedImageIndex);
00133 
00135   cmtkGetSetMacro(unsigned int,ZoomFactor);
00136 
00138   cmtkGetSetMacro(int,SliceNormal);
00139 
00140 public:
00142   typedef SmartPointer<Study> SmartPtr;
00143 
00145   Study();
00146 
00148   Study( const char* fileSystemPath, const char* name = NULL );
00149 
00151   virtual ~Study();
00152 
00154   virtual void UpdateFromVolume();
00155 
00163   virtual bool ReadVolume( const bool reRead = false, const char* orientation = NULL );
00164 
00170   const char* SetMakeName( const char* name = NULL , const int suffix = 0  );
00171 
00173   static Study* Read( const char* path );
00174 
00177   virtual void CopyColormap( const Study* other );
00178 
00181   void SetFromLabelMap( const SegmentationLabelMap& lblMap ) 
00182   {
00183     this->m_HaveUserColorMap = true;
00184     UserLabelMap = lblMap;
00185   }
00186 
00188   const SegmentationLabelMap& GetUserLabelMap() const 
00189   {
00190     return UserLabelMap; 
00191   }
00192   
00193 private:
00195   SegmentationLabelMap UserLabelMap;
00196 };
00197 
00199 
00200 } 
00201 
00202 #endif // #ifndef __cmtkStudy_h_included_
00203