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 "vtkIOMINCModule.h" // For export macro 00074 #include "vtkObject.h" 00075 00076 class vtkDataArray; 00077 class vtkStringArray; 00078 class vtkIdTypeArray; 00079 class vtkDoubleArray; 00080 class vtkMatrix4x4; 00081 00082 // A special class that holds the attributes 00083 class vtkMINCImageAttributeMap; 00084 00085 class VTKIOMINC_EXPORT vtkMINCImageAttributes : public vtkObject 00086 { 00087 public: 00088 vtkTypeMacro(vtkMINCImageAttributes,vtkObject); 00089 00090 static vtkMINCImageAttributes *New(); 00091 virtual void PrintSelf(ostream& os, vtkIndent indent); 00092 00094 virtual void Reset(); 00095 00097 00100 vtkSetStringMacro(Name); 00101 vtkGetStringMacro(Name); 00103 00105 00109 vtkSetMacro(DataType, int); 00110 vtkGetMacro(DataType, int); 00112 00114 00118 virtual void AddDimension(const char *dimension) { 00119 this->AddDimension(dimension, 0); }; 00120 virtual void AddDimension(const char *dimension, vtkIdType length); 00122 00124 00128 virtual vtkStringArray *GetDimensionNames() { 00129 return this->DimensionNames; }; 00131 00133 00136 virtual vtkIdTypeArray *GetDimensionLengths() { 00137 return this->DimensionLengths; }; 00139 00141 00142 virtual vtkStringArray *GetVariableNames() { 00143 return this->VariableNames; }; 00145 00148 virtual vtkStringArray *GetAttributeNames(const char *variable); 00149 00151 00154 virtual void SetImageMin(vtkDoubleArray *imageMin); 00155 virtual void SetImageMax(vtkDoubleArray *imageMax); 00156 virtual vtkDoubleArray *GetImageMin() { return this->ImageMin; }; 00157 virtual vtkDoubleArray *GetImageMax() { return this->ImageMax; }; 00159 00161 00162 vtkGetMacro(NumberOfImageMinMaxDimensions, int); 00163 vtkSetMacro(NumberOfImageMinMaxDimensions, int); 00165 00167 virtual int HasAttribute(const char *variable, const char *attribute); 00168 00170 00172 virtual void SetAttributeValueAsArray(const char *variable, 00173 const char *attribute, 00174 vtkDataArray *array); 00175 virtual vtkDataArray *GetAttributeValueAsArray(const char *variable, 00176 const char *attribute); 00178 00180 00183 virtual void SetAttributeValueAsString(const char *variable, 00184 const char *attribute, 00185 const char *value); 00186 virtual const char *GetAttributeValueAsString(const char *variable, 00187 const char *attribute); 00189 00191 00194 virtual void SetAttributeValueAsInt(const char *variable, 00195 const char *attribute, 00196 int value); 00197 virtual int GetAttributeValueAsInt(const char *variable, 00198 const char *attribute); 00200 00202 00205 virtual void SetAttributeValueAsDouble(const char *variable, 00206 const char *attribute, 00207 double value); 00208 virtual double GetAttributeValueAsDouble(const char *variable, 00209 const char *attribute); 00211 00212 00214 00221 virtual int ValidateAttribute(const char *varname, 00222 const char *attname, 00223 vtkDataArray *array); 00225 00227 00229 vtkSetMacro(ValidateAttributes, int); 00230 vtkBooleanMacro(ValidateAttributes, int); 00231 vtkGetMacro(ValidateAttributes, int); 00233 00240 virtual void ShallowCopy(vtkMINCImageAttributes *source); 00241 00244 virtual void FindValidRange(double range[2]); 00245 00248 virtual void FindImageRange(double range[2]); 00249 00251 00253 virtual void PrintFileHeader(); 00254 virtual void PrintFileHeader(ostream &os); 00256 00257 protected: 00258 vtkMINCImageAttributes(); 00259 ~vtkMINCImageAttributes(); 00260 00261 const char *ConvertDataArrayToString(vtkDataArray *array); 00262 00263 virtual int ValidateGlobalAttribute(const char *attrib, 00264 vtkDataArray *array); 00265 virtual int ValidateGeneralAttribute(const char *varname, 00266 const char *attname, 00267 vtkDataArray *array); 00268 virtual int ValidateDimensionAttribute(const char *varname, 00269 const char *attname, 00270 vtkDataArray *array); 00271 virtual int ValidateImageAttribute(const char *varname, 00272 const char *attname, 00273 vtkDataArray *array); 00274 virtual int ValidateImageMinMaxAttribute(const char *varname, 00275 const char *attname, 00276 vtkDataArray *array); 00277 virtual int ValidatePatientAttribute(const char *varname, 00278 const char *attname, 00279 vtkDataArray *array); 00280 virtual int ValidateStudyAttribute(const char *varname, 00281 const char *attname, 00282 vtkDataArray *array); 00283 virtual int ValidateAcquisitionAttribute(const char *varname, 00284 const char *attname, 00285 vtkDataArray *array); 00286 00287 vtkStringArray *DimensionNames; 00288 vtkIdTypeArray *DimensionLengths; 00289 00290 vtkStringArray *VariableNames; 00291 vtkMINCImageAttributeMap *AttributeNames; 00292 vtkMINCImageAttributeMap *AttributeValues; 00293 00294 vtkStringArray *StringStore; 00295 00296 vtkDoubleArray *ImageMin; 00297 vtkDoubleArray *ImageMax; 00298 int NumberOfImageMinMaxDimensions; 00299 00300 int DataType; 00301 char *Name; 00302 00303 int ValidateAttributes; 00304 00305 private: 00306 vtkMINCImageAttributes(const vtkMINCImageAttributes&); // Not implemented 00307 void operator=(const vtkMINCImageAttributes&); // Not implemented 00308 00309 }; 00310 00311 #endif /* __vtkMINCImageAttributes_h */