1 /*=========================================================================
2 
3   Program:   Visualization Toolkit
4   Module:    vtkSynchronizedTemplatesCutter3D.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  * @class   vtkSynchronizedTemplatesCutter3D
17  * @brief   generate cut surface from structured points
18  *
19  *
20  * vtkSynchronizedTemplatesCutter3D is an implementation of the synchronized
21  * template algorithm. Note that vtkCutFilter will automatically
22  * use this class when appropriate.
23  *
24  * @sa
25  * vtkContourFilter vtkSynchronizedTemplates3D
26  */
27 
28 #ifndef vtkSynchronizedTemplatesCutter3D_h
29 #define vtkSynchronizedTemplatesCutter3D_h
30 
31 #include "vtkFiltersCoreModule.h" // For export macro
32 #include "vtkSynchronizedTemplates3D.h"
33 
34 class vtkImplicitFunction;
35 
36 class VTKFILTERSCORE_EXPORT vtkSynchronizedTemplatesCutter3D : public vtkSynchronizedTemplates3D
37 {
38 public:
39   static vtkSynchronizedTemplatesCutter3D* New();
40 
41   vtkTypeMacro(vtkSynchronizedTemplatesCutter3D, vtkSynchronizedTemplates3D);
42   void PrintSelf(ostream& os, vtkIndent indent) override;
43 
44   /**
45    * Needed by templated functions.
46    */
47   void ThreadedExecute(vtkImageData* data, vtkInformation* outInfo, int);
48 
49   ///@{
50   /**
51    * Specify the implicit function to perform the cutting.
52    */
53   virtual void SetCutFunction(vtkImplicitFunction*);
54   vtkGetObjectMacro(CutFunction, vtkImplicitFunction);
55   ///@}
56 
57   ///@{
58   /**
59    * Set/get the desired precision for the output types. See the documentation
60    * for the vtkAlgorithm::DesiredOutputPrecision enum for an explanation of
61    * the available precision settings.
62    */
63   vtkSetClampMacro(OutputPointsPrecision, int, SINGLE_PRECISION, DEFAULT_PRECISION);
64   vtkGetMacro(OutputPointsPrecision, int);
65   ///@}
66 
67 protected:
68   vtkSynchronizedTemplatesCutter3D();
69   ~vtkSynchronizedTemplatesCutter3D() override;
70 
71   vtkImplicitFunction* CutFunction;
72   int OutputPointsPrecision;
73 
74   int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
75 
76 private:
77   vtkSynchronizedTemplatesCutter3D(const vtkSynchronizedTemplatesCutter3D&) = delete;
78   void operator=(const vtkSynchronizedTemplatesCutter3D&) = delete;
79 };
80 
81 #endif
82