You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

181 lines
4.8 KiB
C++

/*=========================================================================
Program: Visualization Toolkit
Module: vtkBooleanTexture.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 vtkBooleanTexture
* @brief generate 2D texture map based on combinations of inside, outside, and on region boundary
*
*
* vtkBooleanTexture is a filter to generate a 2D texture map based on
* combinations of inside, outside, and on region boundary. The "region" is
* implicitly represented via 2D texture coordinates. These texture
* coordinates are normally generated using a filter like
* vtkImplicitTextureCoords, which generates the texture coordinates for
* any implicit function.
*
* vtkBooleanTexture generates the map according to the s-t texture
* coordinates plus the notion of being in, on, or outside of a
* region. An in region is when the texture coordinate is between
* (0,0.5-thickness/2). An out region is where the texture coordinate
* is (0.5+thickness/2). An on region is between
* (0.5-thickness/2,0.5+thickness/2). The combination in, on, and out
* for each of the s-t texture coordinates results in 16 possible
* combinations (see text). For each combination, a different value of
* intensity and transparency can be assigned. To assign maximum intensity
* and/or opacity use the value 255. A minimum value of 0 results in
* a black region (for intensity) and a fully transparent region (for
* transparency).
*
* @sa
* vtkImplicitTextureCoords vtkThresholdTextureCoords
*/
#ifndef vtkBooleanTexture_h
#define vtkBooleanTexture_h
#include "vtkImageAlgorithm.h"
#include "vtkImagingHybridModule.h" // For export macro
class VTKIMAGINGHYBRID_EXPORT vtkBooleanTexture : public vtkImageAlgorithm
{
public:
static vtkBooleanTexture* New();
vtkTypeMacro(vtkBooleanTexture, vtkImageAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent) override;
//@{
/**
* Set the X texture map dimension.
*/
vtkSetMacro(XSize, int);
vtkGetMacro(XSize, int);
//@}
//@{
/**
* Set the Y texture map dimension.
*/
vtkSetMacro(YSize, int);
vtkGetMacro(YSize, int);
//@}
//@{
/**
* Set the thickness of the "on" region.
*/
vtkSetMacro(Thickness, int);
vtkGetMacro(Thickness, int);
//@}
//@{
/**
* Specify intensity/transparency for "in/in" region.
*/
vtkSetVector2Macro(InIn, unsigned char);
vtkGetVectorMacro(InIn, unsigned char, 2);
//@}
//@{
/**
* Specify intensity/transparency for "in/out" region.
*/
vtkSetVector2Macro(InOut, unsigned char);
vtkGetVectorMacro(InOut, unsigned char, 2);
//@}
//@{
/**
* Specify intensity/transparency for "out/in" region.
*/
vtkSetVector2Macro(OutIn, unsigned char);
vtkGetVectorMacro(OutIn, unsigned char, 2);
//@}
//@{
/**
* Specify intensity/transparency for "out/out" region.
*/
vtkSetVector2Macro(OutOut, unsigned char);
vtkGetVectorMacro(OutOut, unsigned char, 2);
//@}
//@{
/**
* Specify intensity/transparency for "on/on" region.
*/
vtkSetVector2Macro(OnOn, unsigned char);
vtkGetVectorMacro(OnOn, unsigned char, 2);
//@}
//@{
/**
* Specify intensity/transparency for "on/in" region.
*/
vtkSetVector2Macro(OnIn, unsigned char);
vtkGetVectorMacro(OnIn, unsigned char, 2);
//@}
//@{
/**
* Specify intensity/transparency for "on/out" region.
*/
vtkSetVector2Macro(OnOut, unsigned char);
vtkGetVectorMacro(OnOut, unsigned char, 2);
//@}
//@{
/**
* Specify intensity/transparency for "in/on" region.
*/
vtkSetVector2Macro(InOn, unsigned char);
vtkGetVectorMacro(InOn, unsigned char, 2);
//@}
//@{
/**
* Specify intensity/transparency for "out/on" region.
*/
vtkSetVector2Macro(OutOn, unsigned char);
vtkGetVectorMacro(OutOn, unsigned char, 2);
//@}
protected:
vtkBooleanTexture();
~vtkBooleanTexture() override {}
int RequestInformation(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
void ExecuteDataWithInformation(vtkDataObject* data, vtkInformation* outInfo) override;
int XSize;
int YSize;
int Thickness;
unsigned char InIn[2];
unsigned char InOut[2];
unsigned char OutIn[2];
unsigned char OutOut[2];
unsigned char OnOn[2];
unsigned char OnIn[2];
unsigned char OnOut[2];
unsigned char InOn[2];
unsigned char OutOn[2];
private:
vtkBooleanTexture(const vtkBooleanTexture&) = delete;
void operator=(const vtkBooleanTexture&) = delete;
};
#endif