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.

103 lines
2.8 KiB
C++

/*=========================================================================
Program: Visualization Toolkit
Module: vtkTriangularTexture.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 vtkTriangularTexture
* @brief generate 2D triangular texture map
*
* vtkTriangularTexture is a filter that generates a 2D texture map based on
* the paper "Opacity-modulating Triangular Textures for Irregular Surfaces,"
* by Penny Rheingans, IEEE Visualization '96, pp. 219-225.
* The textures assume texture coordinates of (0,0), (1.0) and
* (.5, sqrt(3)/2). The sequence of texture values is the same along each
* edge of the triangular texture map. So, the assignment order of texture
* coordinates is arbitrary.
*
* @sa
* vtkTriangularTCoords
*/
#ifndef vtkTriangularTexture_h
#define vtkTriangularTexture_h
#include "vtkImageAlgorithm.h"
#include "vtkImagingHybridModule.h" // For export macro
class VTKIMAGINGHYBRID_EXPORT vtkTriangularTexture : public vtkImageAlgorithm
{
public:
vtkTypeMacro(vtkTriangularTexture, vtkImageAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent) override;
/**
* Instantiate object with XSize and YSize = 64; the texture pattern =1
* (opaque at centroid); and the scale factor set to 1.0.
*/
static vtkTriangularTexture* New();
//@{
/**
* Set a Scale Factor.
*/
vtkSetMacro(ScaleFactor, double);
vtkGetMacro(ScaleFactor, double);
//@}
//@{
/**
* Set the X texture map dimension. Default is 64.
*/
vtkSetMacro(XSize, int);
vtkGetMacro(XSize, int);
//@}
//@{
/**
* Set the Y texture map dimension. Default is 64.
*/
vtkSetMacro(YSize, int);
vtkGetMacro(YSize, int);
//@}
//@{
/**
* Set the texture pattern.
* 1 = opaque at centroid (default)
* 2 = opaque at vertices
* 3 = opaque in rings around vertices
*/
vtkSetClampMacro(TexturePattern, int, 1, 3);
vtkGetMacro(TexturePattern, int);
//@}
protected:
vtkTriangularTexture();
~vtkTriangularTexture() override {}
int RequestInformation(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
void ExecuteDataWithInformation(vtkDataObject* data, vtkInformation* outInfo) override;
int XSize;
int YSize;
double ScaleFactor;
int TexturePattern;
private:
vtkTriangularTexture(const vtkTriangularTexture&) = delete;
void operator=(const vtkTriangularTexture&) = delete;
};
#endif