File: vtkImageReader.h

package info (click to toggle)
paraview 5.11.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 497,236 kB
  • sloc: cpp: 3,171,290; ansic: 1,315,072; python: 134,290; xml: 103,324; sql: 65,887; sh: 5,286; javascript: 4,901; yacc: 4,383; java: 3,977; perl: 2,363; lex: 1,909; f90: 1,255; objc: 143; makefile: 119; tcl: 59; pascal: 50; fortran: 29
file content (131 lines) | stat: -rw-r--r-- 4,091 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/*=========================================================================

  Program:   Visualization Toolkit
  Module:    vtkImageReader.h

  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
  All rights reserved.
  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.

     This software is distributed WITHOUT ANY WARRANTY; without even
     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
     PURPOSE.  See the above copyright notice for more information.

=========================================================================*/
/**
 * @class   vtkImageReader
 * @brief   Superclass of transformable binary file readers.
 *
 * vtkImageReader provides methods needed to read a region from a file.
 * It supports both transforms and masks on the input data, but as a result
 * is more complicated and slower than its parent class vtkImageReader2.
 *
 * @sa
 * vtkBMPReader vtkPNMReader vtkTIFFReader
 */

#ifndef vtkImageReader_h
#define vtkImageReader_h

#include "vtkIOImageModule.h" // For export macro
#include "vtkImageReader2.h"

VTK_ABI_NAMESPACE_BEGIN
class vtkTransform;

#define VTK_FILE_BYTE_ORDER_BIG_ENDIAN 0
#define VTK_FILE_BYTE_ORDER_LITTLE_ENDIAN 1

class VTKIOIMAGE_EXPORT vtkImageReader : public vtkImageReader2
{
public:
  static vtkImageReader* New();
  vtkTypeMacro(vtkImageReader, vtkImageReader2);
  void PrintSelf(ostream& os, vtkIndent indent) override;

  ///@{
  /**
   * Set/get the data VOI. You can limit the reader to only
   * read a subset of the data.
   */
  vtkSetVector6Macro(DataVOI, int);
  vtkGetVector6Macro(DataVOI, int);
  ///@}

  ///@{
  /**
   * Set/Get the Data mask.  The data mask is a simply integer whose bits are
   * treated as a mask to the bits read from disk.  That is, the data mask is
   * bitwise-and'ed to the numbers read from disk.  This ivar is stored as 64
   * bits, the largest mask you will need.  The mask will be truncated to the
   * data size required to be read (using the least significant bits).
   */
  vtkGetMacro(DataMask, vtkTypeUInt64);
  vtkSetMacro(DataMask, vtkTypeUInt64);
  ///@}

  ///@{
  /**
   * Set/Get transformation matrix to transform the data from slice space
   * into world space. This matrix must be a permutation matrix. To qualify,
   * the sums of the rows must be + or - 1.
   */
  virtual void SetTransform(vtkTransform*);
  vtkGetObjectMacro(Transform, vtkTransform);
  ///@}

  // Warning !!!
  // following should only be used by methods or template helpers, not users
  void ComputeInverseTransformedExtent(int inExtent[6], int outExtent[6]);
  void ComputeInverseTransformedIncrements(vtkIdType inIncr[3], vtkIdType outIncr[3]);

  int OpenAndSeekFile(int extent[6], int slice);

  ///@{
  /**
   * Set/get the scalar array name for this data set.
   */
  vtkSetStringMacro(ScalarArrayName);
  vtkGetStringMacro(ScalarArrayName);
  ///@}

  /**
   * vtkImageReader itself can read raw binary files. That being the case,
   * we need to implement `CanReadFile` to return success for any file.
   * Subclasses that read specific file format should override and implement
   * appropriate checks for file format.
   */
  int CanReadFile(VTK_FILEPATH const char*) override
  {
    return 1; // I think I can read the file but I cannot prove it
  }

protected:
  vtkImageReader();
  ~vtkImageReader() override;

  vtkTypeUInt64 DataMask;

  vtkTransform* Transform;

  void ComputeTransformedSpacing(double Spacing[3]);
  void ComputeTransformedOrigin(double origin[3]);
  void ComputeTransformedExtent(int inExtent[6], int outExtent[6]);
  void ComputeTransformedIncrements(vtkIdType inIncr[3], vtkIdType outIncr[3]);

  int DataVOI[6];

  char* ScalarArrayName;

  int RequestInformation(vtkInformation* request, vtkInformationVector** inputVector,
    vtkInformationVector* outputVector) override;

  void ExecuteDataWithInformation(vtkDataObject* data, vtkInformation* outInfo) override;

private:
  vtkImageReader(const vtkImageReader&) = delete;
  void operator=(const vtkImageReader&) = delete;
};

VTK_ABI_NAMESPACE_END
#endif