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 *,
75                   vtkInformationVector **,
76                   vtkInformationVector *) override;
77 
78 private:
79   vtkSynchronizedTemplatesCutter3D(const vtkSynchronizedTemplatesCutter3D&) = delete;
80   void operator=(const vtkSynchronizedTemplatesCutter3D&) = delete;
81 };
82 
83 #endif
84 
85