/*========================================================================= Program: Visualization Toolkit Module: vtkImageStencilSource.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 vtkImageStencilSource * @brief generate an image stencil * * vtkImageStencilSource is a superclass for filters that generate image * stencils. Given a clipping object such as a vtkImplicitFunction, it * will set up a list of clipping extents for each x-row through the * image data. The extents for each x-row can be retrieved via the * GetNextExtent() method after the extent lists have been built * with the BuildExtents() method. For large images, using clipping * extents is much more memory efficient (and slightly more time-efficient) * than building a mask. This class can be subclassed to allow clipping * with objects other than vtkImplicitFunction. * @sa * vtkImplicitFunction vtkImageStencil vtkPolyDataToImageStencil */ #ifndef vtkImageStencilSource_h #define vtkImageStencilSource_h #include "vtkImageStencilAlgorithm.h" #include "vtkImagingCoreModule.h" // For export macro class vtkImageStencilData; class vtkImageData; class VTKIMAGINGCORE_EXPORT vtkImageStencilSource : public vtkImageStencilAlgorithm { public: static vtkImageStencilSource* New(); vtkTypeMacro(vtkImageStencilSource, vtkImageStencilAlgorithm); void PrintSelf(ostream& os, vtkIndent indent) override; //@{ /** * Set a vtkImageData that has the Spacing, Origin, and * WholeExtent that will be used for the stencil. This * input should be set to the image that you wish to * apply the stencil to. If you use this method, then * any values set with the SetOutputSpacing, SetOutputOrigin, * and SetOutputWholeExtent methods will be ignored. */ virtual void SetInformationInput(vtkImageData*); vtkGetObjectMacro(InformationInput, vtkImageData); //@} //@{ /** * Set the Origin to be used for the stencil. It should be * set to the Origin of the image you intend to apply the * stencil to. The default value is (0,0,0). */ vtkSetVector3Macro(OutputOrigin, double); vtkGetVector3Macro(OutputOrigin, double); //@} //@{ /** * Set the Spacing to be used for the stencil. It should be * set to the Spacing of the image you intend to apply the * stencil to. The default value is (1,1,1) */ vtkSetVector3Macro(OutputSpacing, double); vtkGetVector3Macro(OutputSpacing, double); //@} //@{ /** * Set the whole extent for the stencil (anything outside * this extent will be considered to be "outside" the stencil). */ vtkSetVector6Macro(OutputWholeExtent, int); vtkGetVector6Macro(OutputWholeExtent, int); //@} /** * Report object referenced by instances of this class. */ void ReportReferences(vtkGarbageCollector*) override; protected: vtkImageStencilSource(); ~vtkImageStencilSource() override; int RequestInformation(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override; vtkImageData* InformationInput; int OutputWholeExtent[6]; double OutputOrigin[3]; double OutputSpacing[3]; private: vtkImageStencilSource(const vtkImageStencilSource&) = delete; void operator=(const vtkImageStencilSource&) = delete; }; #endif