VTK
vtkMINCImageAttributes.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkMINCImageAttributes.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
15 /*=========================================================================
16 
17 Copyright (c) 2006 Atamai, Inc.
18 
19 Use, modification and redistribution of the software, in source or
20 binary forms, are permitted provided that the following terms and
21 conditions are met:
22 
23 1) Redistribution of the source code, in verbatim or modified
24  form, must retain the above copyright notice, this license,
25  the following disclaimer, and any notices that refer to this
26  license and/or the following disclaimer.
27 
28 2) Redistribution in binary form must include the above copyright
29  notice, a copy of this license and the following disclaimer
30  in the documentation or with other materials provided with the
31  distribution.
32 
33 3) Modified copies of the source code must be clearly marked as such,
34  and must not be misrepresented as verbatim copies of the source code.
35 
36 THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE SOFTWARE "AS IS"
37 WITHOUT EXPRESSED OR IMPLIED WARRANTY INCLUDING, BUT NOT LIMITED TO,
38 THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
39 PURPOSE. IN NO EVENT SHALL ANY COPYRIGHT HOLDER OR OTHER PARTY WHO MAY
40 MODIFY AND/OR REDISTRIBUTE THE SOFTWARE UNDER THE TERMS OF THIS LICENSE
41 BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES
42 (INCLUDING, BUT NOT LIMITED TO, LOSS OF DATA OR DATA BECOMING INACCURATE
43 OR LOSS OF PROFIT OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF
44 THE USE OR INABILITY TO USE THE SOFTWARE, EVEN IF ADVISED OF THE
45 POSSIBILITY OF SUCH DAMAGES.
46 
47 =========================================================================*/
71 #ifndef vtkMINCImageAttributes_h
72 #define vtkMINCImageAttributes_h
73 
74 #include "vtkIOMINCModule.h" // For export macro
75 #include "vtkObject.h"
76 
77 class vtkDataArray;
78 class vtkStringArray;
79 class vtkIdTypeArray;
80 class vtkDoubleArray;
81 class vtkMatrix4x4;
82 
83 // A special class that holds the attributes
84 class vtkMINCImageAttributeMap;
85 
86 class VTKIOMINC_EXPORT vtkMINCImageAttributes : public vtkObject
87 {
88 public:
90 
91  static vtkMINCImageAttributes *New();
92  void PrintSelf(ostream& os, vtkIndent indent) override;
93 
98  virtual void Reset();
99 
101 
106  vtkSetStringMacro(Name);
107  vtkGetStringMacro(Name);
109 
111 
117  vtkSetMacro(DataType, int);
118  vtkGetMacro(DataType, int);
120 
122 
128  virtual void AddDimension(const char *dimension) {
129  this->AddDimension(dimension, 0); };
130  virtual void AddDimension(const char *dimension, vtkIdType length);
132 
141  return this->DimensionNames; };
142 
149  return this->DimensionLengths; };
150 
155  return this->VariableNames; };
156 
161  virtual vtkStringArray *GetAttributeNames(const char *variable);
162 
164 
169  virtual void SetImageMin(vtkDoubleArray *imageMin);
170  virtual void SetImageMax(vtkDoubleArray *imageMax);
171  virtual vtkDoubleArray *GetImageMin() { return this->ImageMin; };
172  virtual vtkDoubleArray *GetImageMax() { return this->ImageMax; };
174 
176 
179  vtkGetMacro(NumberOfImageMinMaxDimensions, int);
180  vtkSetMacro(NumberOfImageMinMaxDimensions, int);
182 
186  virtual int HasAttribute(const char *variable, const char *attribute);
187 
189 
193  virtual void SetAttributeValueAsArray(const char *variable,
194  const char *attribute,
195  vtkDataArray *array);
196  virtual vtkDataArray *GetAttributeValueAsArray(const char *variable,
197  const char *attribute);
199 
201 
207  virtual void SetAttributeValueAsString(const char *variable,
208  const char *attribute,
209  const char *value);
210  virtual const char *GetAttributeValueAsString(const char *variable,
211  const char *attribute);
213 
215 
221  virtual void SetAttributeValueAsInt(const char *variable,
222  const char *attribute,
223  int value);
224  virtual int GetAttributeValueAsInt(const char *variable,
225  const char *attribute);
227 
229 
235  virtual void SetAttributeValueAsDouble(const char *variable,
236  const char *attribute,
237  double value);
238  virtual double GetAttributeValueAsDouble(const char *variable,
239  const char *attribute);
241 
242 
252  virtual int ValidateAttribute(const char *varname,
253  const char *attname,
254  vtkDataArray *array);
255 
257 
261  vtkSetMacro(ValidateAttributes, vtkTypeBool);
262  vtkBooleanMacro(ValidateAttributes, vtkTypeBool);
263  vtkGetMacro(ValidateAttributes, vtkTypeBool);
265 
274  virtual void ShallowCopy(vtkMINCImageAttributes *source);
275 
280  virtual void FindValidRange(double range[2]);
281 
286  virtual void FindImageRange(double range[2]);
287 
289 
293  virtual void PrintFileHeader();
294  virtual void PrintFileHeader(ostream &os);
296 
297 protected:
299  ~vtkMINCImageAttributes() override;
300 
301  const char *ConvertDataArrayToString(vtkDataArray *array);
302 
303  virtual int ValidateGlobalAttribute(const char *attrib,
304  vtkDataArray *array);
305  virtual int ValidateGeneralAttribute(const char *varname,
306  const char *attname,
307  vtkDataArray *array);
308  virtual int ValidateDimensionAttribute(const char *varname,
309  const char *attname,
310  vtkDataArray *array);
311  virtual int ValidateImageAttribute(const char *varname,
312  const char *attname,
313  vtkDataArray *array);
314  virtual int ValidateImageMinMaxAttribute(const char *varname,
315  const char *attname,
316  vtkDataArray *array);
317  virtual int ValidatePatientAttribute(const char *varname,
318  const char *attname,
319  vtkDataArray *array);
320  virtual int ValidateStudyAttribute(const char *varname,
321  const char *attname,
322  vtkDataArray *array);
323  virtual int ValidateAcquisitionAttribute(const char *varname,
324  const char *attname,
325  vtkDataArray *array);
326 
329 
331  vtkMINCImageAttributeMap *AttributeNames;
332  vtkMINCImageAttributeMap *AttributeValues;
333 
335 
339 
340  int DataType;
341  char *Name;
342 
344 
345 private:
347  void operator=(const vtkMINCImageAttributes&) = delete;
348 
349 };
350 
351 #endif /* vtkMINCImageAttributes_h */
vtkMINCImageAttributeMap * AttributeValues
abstract base class for most VTK objects
Definition: vtkObject.h:59
represent and manipulate 4x4 transformation matrices
Definition: vtkMatrix4x4.h:41
virtual vtkDoubleArray * GetImageMax()
Get the image min and max arrays.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
a vtkAbstractArray subclass for strings
vtkMINCImageAttributeMap * AttributeNames
dynamic, self-adjusting array of vtkIdType
int vtkIdType
Definition: vtkType.h:347
virtual vtkDoubleArray * GetImageMin()
Get the image min and max arrays.
virtual vtkStringArray * GetDimensionNames()
Get the dimension names.
dynamic, self-adjusting array of double
int vtkTypeBool
Definition: vtkABI.h:69
virtual vtkIdTypeArray * GetDimensionLengths()
Get the lengths of all the dimensions.
A container for a MINC image header.
virtual void AddDimension(const char *dimension)
Add the names of up to five dimensions.
a simple class to control print indentation
Definition: vtkIndent.h:39
virtual vtkStringArray * GetVariableNames()
Get the names of all the variables.
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:54
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...