vtk-dicom  0.8.14
vtkDICOMAlgorithm.h
1 /*=========================================================================
2 
3  Program: DICOM for VTK
4 
5  Copyright (c) 2012-2022 David Gobbi
6  All rights reserved.
7  See Copyright.txt or http://dgobbi.github.io/bsd3.txt for details.
8 
9  This software is distributed WITHOUT ANY WARRANTY; without even
10  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11  PURPOSE. See the above copyright notice for more information.
12 
13 =========================================================================*/
24 #ifndef vtkDICOMAlgorithm_h
25 #define vtkDICOMAlgorithm_h
26 
27 #include "vtkThreadedImageAlgorithm.h"
28 #include "vtkDICOMModule.h" // For export macro
29 #include "vtkDICOMConfig.h" // For configuration details
30 
31 // Declare VTK classes within VTK's optional namespace
32 #if defined(VTK_ABI_NAMESPACE_BEGIN)
33 VTK_ABI_NAMESPACE_BEGIN
34 #endif
35 
36 class vtkLookupTable;
37 class vtkInformationDataObjectKey;
38 class vtkInformationDoubleVectorKey;
39 
40 #if defined(VTK_ABI_NAMESPACE_BEGIN)
41 VTK_ABI_NAMESPACE_END
42 #endif
43 
44 class vtkDICOMMetaData;
45 class vtkDICOMPerFilePalette;
46 
47 //----------------------------------------------------------------------------
48 class VTKDICOM_EXPORT vtkDICOMAlgorithm : public vtkThreadedImageAlgorithm
49 {
50 public:
52 
54  static vtkDICOMAlgorithm *New();
56 
58  void PrintSelf(ostream& os, vtkIndent indent) VTK_DICOM_OVERRIDE;
60 
62  static vtkInformationDataObjectKey *META_DATA();
64 
66  static vtkInformationDoubleVectorKey *PATIENT_MATRIX();
68 
69 protected:
71  ~vtkDICOMAlgorithm() VTK_DICOM_OVERRIDE;
72 
74  vtkInformation *GetMetaDataInformation(
76  vtkInformationVector** inputVector, int inputPort, int inputConnection);
77 
79 
83  virtual void CopyMetaDataToOutputInformation(
84  vtkInformationVector** inputVector, int inputPort, int inputConnection,
85  vtkInformationVector* outputVector, int outputPort);
86 
88 
91  virtual void CopyMetaDataToOutputData(
92  vtkInformation *outInfo, vtkDataObject *outData);
94 
95  int RequestInformation(
96  vtkInformation* request, vtkInformationVector** inputVector,
97  vtkInformationVector* outputVector) VTK_DICOM_OVERRIDE;
98 
99  int RequestData(
100  vtkInformation* request, vtkInformationVector** inputVector,
101  vtkInformationVector* outputVector) VTK_DICOM_OVERRIDE;
102 
103  void ThreadedRequestData(
104  vtkInformation *request, vtkInformationVector **inputVector,
105  vtkInformationVector *outputVector, vtkImageData ***inData,
106  vtkImageData **outData, int ext[6], int id) VTK_DICOM_OVERRIDE;
107 
108 private:
109 #ifdef VTK_DICOM_DELETE
110  vtkDICOMAlgorithm(const vtkDICOMAlgorithm&) VTK_DICOM_DELETE;
111  void operator=(const vtkDICOMAlgorithm&) VTK_DICOM_DELETE;
112 #else
113  vtkDICOMAlgorithm(const vtkDICOMAlgorithm&) = delete;
114  void operator=(const vtkDICOMAlgorithm&) = delete;
115 #endif
116 };
117 
118 #endif // vtkDICOMAlgorithm_h
Superclass for DICOM image filters.
Definition: vtkDICOMAlgorithm.h:49
void PrintSelf(ostream &os, vtkIndent indent) VTK_DICOM_OVERRIDE
Print information about this object.
static vtkInformationDoubleVectorKey * PATIENT_MATRIX()
A key to get the patient matrix from the VTK pipeline.
A container class for DICOM metadata.
Definition: vtkDICOMMetaData.h:44
map scalar values into colors via a lookup table
Definition: vtkLookupTable.h:69
Generic filter that has one input..
Definition: vtkThreadedImageAlgorithm.h:38