VTK
dox/IO/vtkMINCImageAttributes.h
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    vtkMINCImageAttributes.h
00005 
00006   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
00007   All rights reserved.
00008   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00009 
00010      This software is distributed WITHOUT ANY WARRANTY; without even
00011      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00012      PURPOSE.  See the above copyright notice for more information.
00013 
00014 =========================================================================*/
00015 /*=========================================================================
00016 
00017 Copyright (c) 2006 Atamai, Inc.
00018 
00019 Use, modification and redistribution of the software, in source or
00020 binary forms, are permitted provided that the following terms and
00021 conditions are met:
00022 
00023 1) Redistribution of the source code, in verbatim or modified
00024    form, must retain the above copyright notice, this license,
00025    the following disclaimer, and any notices that refer to this
00026    license and/or the following disclaimer.
00027 
00028 2) Redistribution in binary form must include the above copyright
00029    notice, a copy of this license and the following disclaimer
00030    in the documentation or with other materials provided with the
00031    distribution.
00032 
00033 3) Modified copies of the source code must be clearly marked as such,
00034    and must not be misrepresented as verbatim copies of the source code.
00035 
00036 THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE SOFTWARE "AS IS"
00037 WITHOUT EXPRESSED OR IMPLIED WARRANTY INCLUDING, BUT NOT LIMITED TO,
00038 THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
00039 PURPOSE.  IN NO EVENT SHALL ANY COPYRIGHT HOLDER OR OTHER PARTY WHO MAY
00040 MODIFY AND/OR REDISTRIBUTE THE SOFTWARE UNDER THE TERMS OF THIS LICENSE
00041 BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES
00042 (INCLUDING, BUT NOT LIMITED TO, LOSS OF DATA OR DATA BECOMING INACCURATE
00043 OR LOSS OF PROFIT OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF
00044 THE USE OR INABILITY TO USE THE SOFTWARE, EVEN IF ADVISED OF THE
00045 POSSIBILITY OF SUCH DAMAGES.
00046 
00047 =========================================================================*/
00070 #ifndef __vtkMINCImageAttributes_h
00071 #define __vtkMINCImageAttributes_h
00072 
00073 #include "vtkObject.h"
00074 
00075 class vtkDataArray;
00076 class vtkStringArray;
00077 class vtkIdTypeArray;
00078 class vtkDoubleArray;
00079 class vtkMatrix4x4;
00080 
00081 // A special class that holds the attributes
00082 class vtkMINCImageAttributeMap;
00083 
00084 class VTK_IO_EXPORT vtkMINCImageAttributes : public vtkObject
00085 {
00086 public:
00087   vtkTypeMacro(vtkMINCImageAttributes,vtkObject);
00088 
00089   static vtkMINCImageAttributes *New();
00090   virtual void PrintSelf(ostream& os, vtkIndent indent);
00091 
00093   virtual void Reset();
00094  
00096 
00099   vtkSetStringMacro(Name);
00100   vtkGetStringMacro(Name);
00102 
00104 
00108   vtkSetMacro(DataType, int);
00109   vtkGetMacro(DataType, int);
00111 
00113 
00117   virtual void AddDimension(const char *dimension) {
00118     this->AddDimension(dimension, 0); };
00119   virtual void AddDimension(const char *dimension, vtkIdType length);
00121 
00123 
00127   virtual vtkStringArray *GetDimensionNames() {
00128     return this->DimensionNames; };
00130 
00132 
00135   virtual vtkIdTypeArray *GetDimensionLengths() {
00136     return this->DimensionLengths; };
00138 
00140 
00141   virtual vtkStringArray *GetVariableNames() {
00142     return this->VariableNames; };
00144 
00147   virtual vtkStringArray *GetAttributeNames(const char *variable);
00148 
00150 
00153   virtual void SetImageMin(vtkDoubleArray *imageMin);
00154   virtual void SetImageMax(vtkDoubleArray *imageMax);
00155   virtual vtkDoubleArray *GetImageMin() { return this->ImageMin; };
00156   virtual vtkDoubleArray *GetImageMax() { return this->ImageMax; };
00158 
00160 
00161   vtkGetMacro(NumberOfImageMinMaxDimensions, int);
00162   vtkSetMacro(NumberOfImageMinMaxDimensions, int);
00164 
00166   virtual int HasAttribute(const char *variable, const char *attribute);
00167 
00169 
00171   virtual void SetAttributeValueAsArray(const char *variable,
00172                                         const char *attribute,
00173                                         vtkDataArray *array);
00174   virtual vtkDataArray *GetAttributeValueAsArray(const char *variable,
00175                                                  const char *attribute);
00177 
00179 
00182   virtual void SetAttributeValueAsString(const char *variable,
00183                                          const char *attribute,
00184                                          const char *value);
00185   virtual const char *GetAttributeValueAsString(const char *variable,
00186                                                 const char *attribute);
00188 
00190 
00193   virtual void SetAttributeValueAsInt(const char *variable,
00194                                       const char *attribute,
00195                                       int value);
00196   virtual int GetAttributeValueAsInt(const char *variable,
00197                                      const char *attribute);
00199 
00201 
00204   virtual void SetAttributeValueAsDouble(const char *variable,
00205                                          const char *attribute,
00206                                          double value);
00207   virtual double GetAttributeValueAsDouble(const char *variable,
00208                                            const char *attribute);
00210 
00211 
00213 
00220   virtual int ValidateAttribute(const char *varname,
00221                                 const char *attname,
00222                                 vtkDataArray *array);
00224 
00226 
00228   vtkSetMacro(ValidateAttributes, int);
00229   vtkBooleanMacro(ValidateAttributes, int);
00230   vtkGetMacro(ValidateAttributes, int);
00232 
00239   virtual void ShallowCopy(vtkMINCImageAttributes *source);
00240 
00243   virtual void FindValidRange(double range[2]);
00244 
00247   virtual void FindImageRange(double range[2]);
00248 
00250 
00252   virtual void PrintFileHeader();
00253   virtual void PrintFileHeader(ostream &os);
00255 
00256 protected:
00257   vtkMINCImageAttributes();
00258   ~vtkMINCImageAttributes();
00259 
00260   const char *ConvertDataArrayToString(vtkDataArray *array);
00261 
00262   virtual int ValidateGlobalAttribute(const char *attrib,
00263                                       vtkDataArray *array);
00264   virtual int ValidateGeneralAttribute(const char *varname,
00265                                        const char *attname,
00266                                        vtkDataArray *array);
00267   virtual int ValidateDimensionAttribute(const char *varname,
00268                                          const char *attname,
00269                                          vtkDataArray *array);
00270   virtual int ValidateImageAttribute(const char *varname,
00271                                      const char *attname,
00272                                      vtkDataArray *array);
00273   virtual int ValidateImageMinMaxAttribute(const char *varname,
00274                                            const char *attname,
00275                                            vtkDataArray *array);
00276   virtual int ValidatePatientAttribute(const char *varname,
00277                                        const char *attname,
00278                                        vtkDataArray *array);
00279   virtual int ValidateStudyAttribute(const char *varname,
00280                                      const char *attname,
00281                                      vtkDataArray *array);
00282   virtual int ValidateAcquisitionAttribute(const char *varname,
00283                                            const char *attname,
00284                                            vtkDataArray *array);
00285 
00286   vtkStringArray *DimensionNames;
00287   vtkIdTypeArray *DimensionLengths;
00288 
00289   vtkStringArray *VariableNames;
00290   vtkMINCImageAttributeMap *AttributeNames;
00291   vtkMINCImageAttributeMap *AttributeValues;
00292 
00293   vtkStringArray *StringStore;
00294   
00295   vtkDoubleArray *ImageMin;
00296   vtkDoubleArray *ImageMax;
00297   int NumberOfImageMinMaxDimensions;
00298 
00299   int DataType;
00300   char *Name;
00301 
00302   int ValidateAttributes;
00303 
00304 private:
00305   vtkMINCImageAttributes(const vtkMINCImageAttributes&); // Not implemented
00306   void operator=(const vtkMINCImageAttributes&);  // Not implemented
00307 
00308 };
00309 
00310 #endif /* __vtkMINCImageAttributes_h */