VTK
|
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 */