VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkMINCImageAttributes.h,v $ 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 vtkTypeRevisionMacro(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 00231 virtual void ShallowCopy(vtkMINCImageAttributes *source); 00232 00235 virtual void FindValidRange(double range[2]); 00236 00239 virtual void FindImageRange(double range[2]); 00240 00242 00244 virtual void PrintFileHeader(); 00245 virtual void PrintFileHeader(ostream &os); 00247 00248 protected: 00249 vtkMINCImageAttributes(); 00250 ~vtkMINCImageAttributes(); 00251 00252 const char *ConvertDataArrayToString(vtkDataArray *array); 00253 00254 virtual int ValidateGlobalAttribute(const char *attrib, 00255 vtkDataArray *array); 00256 virtual int ValidateGeneralAttribute(const char *varname, 00257 const char *attname, 00258 vtkDataArray *array); 00259 virtual int ValidateDimensionAttribute(const char *varname, 00260 const char *attname, 00261 vtkDataArray *array); 00262 virtual int ValidateImageAttribute(const char *varname, 00263 const char *attname, 00264 vtkDataArray *array); 00265 virtual int ValidateImageMinMaxAttribute(const char *varname, 00266 const char *attname, 00267 vtkDataArray *array); 00268 virtual int ValidatePatientAttribute(const char *varname, 00269 const char *attname, 00270 vtkDataArray *array); 00271 virtual int ValidateStudyAttribute(const char *varname, 00272 const char *attname, 00273 vtkDataArray *array); 00274 virtual int ValidateAcquisitionAttribute(const char *varname, 00275 const char *attname, 00276 vtkDataArray *array); 00277 00278 vtkStringArray *DimensionNames; 00279 vtkIdTypeArray *DimensionLengths; 00280 00281 vtkStringArray *VariableNames; 00282 vtkMINCImageAttributeMap *AttributeNames; 00283 vtkMINCImageAttributeMap *AttributeValues; 00284 00285 vtkStringArray *StringStore; 00286 00287 vtkDoubleArray *ImageMin; 00288 vtkDoubleArray *ImageMax; 00289 int NumberOfImageMinMaxDimensions; 00290 00291 int DataType; 00292 char *Name; 00293 00294 private: 00295 vtkMINCImageAttributes(const vtkMINCImageAttributes&); // Not implemented 00296 void operator=(const vtkMINCImageAttributes&); // Not implemented 00297 00298 }; 00299 00300 #endif /* __vtkMINCImageAttributes_h */