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++
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
|