VTK  9.0.1
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 =========================================================================*/
68 #ifndef vtkMINCImageAttributes_h
69 #define vtkMINCImageAttributes_h
70 
71 #include "vtkIOMINCModule.h" // For export macro
72 #include "vtkObject.h"
73 
74 class vtkDataArray;
75 class vtkStringArray;
76 class vtkIdTypeArray;
77 class vtkDoubleArray;
78 class vtkMatrix4x4;
79 
80 // A special class that holds the attributes
81 class vtkMINCImageAttributeMap;
82 
83 class VTKIOMINC_EXPORT vtkMINCImageAttributes : public vtkObject
84 {
85 public:
87 
88  static vtkMINCImageAttributes* New();
89  void PrintSelf(ostream& os, vtkIndent indent) override;
90 
95  virtual void Reset();
96 
98 
103  vtkSetStringMacro(Name);
104  vtkGetStringMacro(Name);
106 
108 
114  vtkSetMacro(DataType, int);
115  vtkGetMacro(DataType, int);
117 
119 
125  virtual void AddDimension(const char* dimension) { this->AddDimension(dimension, 0); }
126  virtual void AddDimension(const char* dimension, vtkIdType length);
128 
136  virtual vtkStringArray* GetDimensionNames() { return this->DimensionNames; }
137 
143  virtual vtkIdTypeArray* GetDimensionLengths() { return this->DimensionLengths; }
144 
148  virtual vtkStringArray* GetVariableNames() { return this->VariableNames; }
149 
154  virtual vtkStringArray* GetAttributeNames(const char* variable);
155 
157 
162  virtual void SetImageMin(vtkDoubleArray* imageMin);
163  virtual void SetImageMax(vtkDoubleArray* imageMax);
164  virtual vtkDoubleArray* GetImageMin() { return this->ImageMin; }
165  virtual vtkDoubleArray* GetImageMax() { return this->ImageMax; }
167 
169 
172  vtkGetMacro(NumberOfImageMinMaxDimensions, int);
173  vtkSetMacro(NumberOfImageMinMaxDimensions, int);
175 
179  virtual int HasAttribute(const char* variable, const char* attribute);
180 
182 
186  virtual void SetAttributeValueAsArray(
187  const char* variable, const char* attribute, vtkDataArray* array);
188  virtual vtkDataArray* GetAttributeValueAsArray(const char* variable, const char* attribute);
190 
192 
198  virtual void SetAttributeValueAsString(
199  const char* variable, const char* attribute, const char* value);
200  virtual const char* GetAttributeValueAsString(const char* variable, const char* attribute);
202 
204 
210  virtual void SetAttributeValueAsInt(const char* variable, const char* attribute, int value);
211  virtual int GetAttributeValueAsInt(const char* variable, const char* attribute);
213 
215 
221  virtual void SetAttributeValueAsDouble(const char* variable, const char* attribute, double value);
222  virtual double GetAttributeValueAsDouble(const char* variable, const char* attribute);
224 
234  virtual int ValidateAttribute(const char* varname, const char* attname, vtkDataArray* array);
235 
237 
241  vtkSetMacro(ValidateAttributes, vtkTypeBool);
242  vtkBooleanMacro(ValidateAttributes, vtkTypeBool);
243  vtkGetMacro(ValidateAttributes, vtkTypeBool);
245 
254  virtual void ShallowCopy(vtkMINCImageAttributes* source);
255 
260  virtual void FindValidRange(double range[2]);
261 
266  virtual void FindImageRange(double range[2]);
267 
269 
273  virtual void PrintFileHeader();
274  virtual void PrintFileHeader(ostream& os);
276 
277 protected:
279  ~vtkMINCImageAttributes() override;
280 
281  const char* ConvertDataArrayToString(vtkDataArray* array);
282 
283  virtual int ValidateGlobalAttribute(const char* attrib, vtkDataArray* array);
284  virtual int ValidateGeneralAttribute(
285  const char* varname, const char* attname, vtkDataArray* array);
286  virtual int ValidateDimensionAttribute(
287  const char* varname, const char* attname, vtkDataArray* array);
288  virtual int ValidateImageAttribute(const char* varname, const char* attname, vtkDataArray* array);
289  virtual int ValidateImageMinMaxAttribute(
290  const char* varname, const char* attname, vtkDataArray* array);
291  virtual int ValidatePatientAttribute(
292  const char* varname, const char* attname, vtkDataArray* array);
293  virtual int ValidateStudyAttribute(const char* varname, const char* attname, vtkDataArray* array);
294  virtual int ValidateAcquisitionAttribute(
295  const char* varname, const char* attname, vtkDataArray* array);
296 
299 
301  vtkMINCImageAttributeMap* AttributeNames;
302  vtkMINCImageAttributeMap* AttributeValues;
303 
305 
309 
310  int DataType;
311  char* Name;
312 
314 
315 private:
317  void operator=(const vtkMINCImageAttributes&) = delete;
318 };
319 
320 #endif /* vtkMINCImageAttributes_h */
vtkMINCImageAttributes::GetDimensionLengths
virtual vtkIdTypeArray * GetDimensionLengths()
Get the lengths of all the dimensions.
Definition: vtkMINCImageAttributes.h:143
vtkMINCImageAttributes::DimensionLengths
vtkIdTypeArray * DimensionLengths
Definition: vtkMINCImageAttributes.h:298
vtkMINCImageAttributes::Name
char * Name
Definition: vtkMINCImageAttributes.h:311
vtkX3D::value
@ value
Definition: vtkX3D.h:226
vtkIdType
int vtkIdType
Definition: vtkType.h:338
vtkObject::New
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
vtkMINCImageAttributes::ImageMax
vtkDoubleArray * ImageMax
Definition: vtkMINCImageAttributes.h:307
vtkX3D::range
@ range
Definition: vtkX3D.h:244
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:62
vtkMINCImageAttributes::GetVariableNames
virtual vtkStringArray * GetVariableNames()
Get the names of all the variables.
Definition: vtkMINCImageAttributes.h:148
vtkX3D::length
@ length
Definition: vtkX3D.h:399
vtkDataArray
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:49
vtkMINCImageAttributes::ImageMin
vtkDoubleArray * ImageMin
Definition: vtkMINCImageAttributes.h:306
vtkMINCImageAttributes::ValidateAttributes
vtkTypeBool ValidateAttributes
Definition: vtkMINCImageAttributes.h:313
vtkMINCImageAttributes::StringStore
vtkStringArray * StringStore
Definition: vtkMINCImageAttributes.h:304
vtkMINCImageAttributes::NumberOfImageMinMaxDimensions
int NumberOfImageMinMaxDimensions
Definition: vtkMINCImageAttributes.h:308
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkMatrix4x4
represent and manipulate 4x4 transformation matrices
Definition: vtkMatrix4x4.h:35
vtkMINCImageAttributes::DimensionNames
vtkStringArray * DimensionNames
Definition: vtkMINCImageAttributes.h:297
vtkObject::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkMINCImageAttributes::AttributeNames
vtkMINCImageAttributeMap * AttributeNames
Definition: vtkMINCImageAttributes.h:301
vtkMINCImageAttributes::AttributeValues
vtkMINCImageAttributeMap * AttributeValues
Definition: vtkMINCImageAttributes.h:302
vtkObject.h
vtkMINCImageAttributes::VariableNames
vtkStringArray * VariableNames
Definition: vtkMINCImageAttributes.h:300
vtkMINCImageAttributes::GetDimensionNames
virtual vtkStringArray * GetDimensionNames()
Get the dimension names.
Definition: vtkMINCImageAttributes.h:136
vtkMINCImageAttributes::AddDimension
virtual void AddDimension(const char *dimension)
Add the names of up to five dimensions.
Definition: vtkMINCImageAttributes.h:125
vtkIdTypeArray
dynamic, self-adjusting array of vtkIdType
Definition: vtkIdTypeArray.h:35
vtkMINCImageAttributes::GetImageMax
virtual vtkDoubleArray * GetImageMax()
Definition: vtkMINCImageAttributes.h:165
vtkStringArray
a vtkAbstractArray subclass for strings
Definition: vtkStringArray.h:36
vtkDoubleArray
dynamic, self-adjusting array of double
Definition: vtkDoubleArray.h:35
source
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
Definition: vtkBoostGraphAdapter.h:959
vtkMINCImageAttributes
A container for a MINC image header.
Definition: vtkMINCImageAttributes.h:83
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkMINCImageAttributes::DataType
int DataType
Definition: vtkMINCImageAttributes.h:310
vtkMINCImageAttributes::GetImageMin
virtual vtkDoubleArray * GetImageMin()
Definition: vtkMINCImageAttributes.h:164