VTK  9.3.1
vtkMINCImageAttributes.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-FileCopyrightText: Copyright (c) 2006 Atamai, Inc.
3 // SPDX-License-Identifier: BSD-3-Clause
27 #ifndef vtkMINCImageAttributes_h
28 #define vtkMINCImageAttributes_h
29 
30 #include "vtkIOMINCModule.h" // For export macro
31 #include "vtkObject.h"
32 
33 VTK_ABI_NAMESPACE_BEGIN
34 class vtkDataArray;
35 class vtkStringArray;
36 class vtkIdTypeArray;
37 class vtkDoubleArray;
38 class vtkMatrix4x4;
39 
40 // A special class that holds the attributes
41 class vtkMINCImageAttributeMap;
42 
43 class VTKIOMINC_EXPORT vtkMINCImageAttributes : public vtkObject
44 {
45 public:
47 
48  static vtkMINCImageAttributes* New();
49  void PrintSelf(ostream& os, vtkIndent indent) override;
50 
55  virtual void Reset();
56 
58 
63  vtkSetStringMacro(Name);
64  vtkGetStringMacro(Name);
66 
68 
74  vtkSetMacro(DataType, int);
75  vtkGetMacro(DataType, int);
77 
79 
85  virtual void AddDimension(const char* dimension) { this->AddDimension(dimension, 0); }
86  virtual void AddDimension(const char* dimension, vtkIdType length);
88 
96  virtual vtkStringArray* GetDimensionNames() { return this->DimensionNames; }
97 
103  virtual vtkIdTypeArray* GetDimensionLengths() { return this->DimensionLengths; }
104 
108  virtual vtkStringArray* GetVariableNames() { return this->VariableNames; }
109 
114  virtual vtkStringArray* GetAttributeNames(const char* variable);
115 
117 
122  virtual void SetImageMin(vtkDoubleArray* imageMin);
123  virtual void SetImageMax(vtkDoubleArray* imageMax);
124  virtual vtkDoubleArray* GetImageMin() { return this->ImageMin; }
125  virtual vtkDoubleArray* GetImageMax() { return this->ImageMax; }
127 
129 
132  vtkGetMacro(NumberOfImageMinMaxDimensions, int);
133  vtkSetMacro(NumberOfImageMinMaxDimensions, int);
135 
139  virtual vtkTypeBool HasAttribute(const char* variable, const char* attribute);
140 
142 
146  virtual void SetAttributeValueAsArray(
147  const char* variable, const char* attribute, vtkDataArray* array);
148  virtual vtkDataArray* GetAttributeValueAsArray(const char* variable, const char* attribute);
150 
152 
158  virtual void SetAttributeValueAsString(
159  const char* variable, const char* attribute, const char* value);
160  virtual const char* GetAttributeValueAsString(const char* variable, const char* attribute);
162 
164 
170  virtual void SetAttributeValueAsInt(const char* variable, const char* attribute, int value);
171  virtual int GetAttributeValueAsInt(const char* variable, const char* attribute);
173 
175 
181  virtual void SetAttributeValueAsDouble(const char* variable, const char* attribute, double value);
182  virtual double GetAttributeValueAsDouble(const char* variable, const char* attribute);
184 
194  virtual int ValidateAttribute(const char* varname, const char* attname, vtkDataArray* array);
195 
197 
201  vtkSetMacro(ValidateAttributes, vtkTypeBool);
202  vtkBooleanMacro(ValidateAttributes, vtkTypeBool);
203  vtkGetMacro(ValidateAttributes, vtkTypeBool);
205 
214  virtual void ShallowCopy(vtkMINCImageAttributes* source);
215 
220  virtual void FindValidRange(double range[2]);
221 
226  virtual void FindImageRange(double range[2]);
227 
229 
233  virtual void PrintFileHeader();
234  virtual void PrintFileHeader(ostream& os);
236 
237 protected:
239  ~vtkMINCImageAttributes() override;
240 
241  const char* ConvertDataArrayToString(vtkDataArray* array);
242 
243  virtual int ValidateGlobalAttribute(const char* attrib, vtkDataArray* array);
244  virtual int ValidateGeneralAttribute(
245  const char* varname, const char* attname, vtkDataArray* array);
246  virtual int ValidateDimensionAttribute(
247  const char* varname, const char* attname, vtkDataArray* array);
248  virtual int ValidateImageAttribute(const char* varname, const char* attname, vtkDataArray* array);
249  virtual int ValidateImageMinMaxAttribute(
250  const char* varname, const char* attname, vtkDataArray* array);
251  virtual int ValidatePatientAttribute(
252  const char* varname, const char* attname, vtkDataArray* array);
253  virtual int ValidateStudyAttribute(const char* varname, const char* attname, vtkDataArray* array);
254  virtual int ValidateAcquisitionAttribute(
255  const char* varname, const char* attname, vtkDataArray* array);
256 
259 
261  vtkMINCImageAttributeMap* AttributeNames;
262  vtkMINCImageAttributeMap* AttributeValues;
263 
265 
269 
270  int DataType;
271  char* Name;
272 
274 
275 private:
277  void operator=(const vtkMINCImageAttributes&) = delete;
278 };
279 
280 VTK_ABI_NAMESPACE_END
281 #endif /* vtkMINCImageAttributes_h */
vtkMINCImageAttributeMap * AttributeValues
abstract base class for most VTK objects
Definition: vtkObject.h:51
represent and manipulate 4x4 transformation matrices
Definition: vtkMatrix4x4.h:30
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:315
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:64
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:28
virtual vtkStringArray * GetVariableNames()
Get the names of all the variables.
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:44
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...