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.

139 lines
4.6 KiB
C

/*=========================================================================
Program: Visualization Toolkit
Module: vtkTransformTextureCoords.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 vtkTransformTextureCoords
* @brief transform (scale, rotate, translate) texture coordinates
*
* vtkTransformTextureCoords is a filter that operates on texture
* coordinates. It ingests any type of dataset, and outputs a dataset of the
* same type. The filter lets you scale, translate, and rotate texture
* coordinates. For example, by using the Scale ivar, you can shift
* texture coordinates that range from (0->1) to range from (0->10) (useful
* for repeated patterns).
*
* The filter operates on texture coordinates of dimension 1->3. The texture
* coordinates are referred to as r-s-t. If the texture map is two dimensional,
* the t-coordinate (and operations on the t-coordinate) are ignored.
*
* @sa
* vtkTextureMapToPlane vtkTextureMapToCylinder
* vtkTextureMapToSphere vtkThresholdTextureCoords vtkTexture
*/
#ifndef vtkTransformTextureCoords_h
#define vtkTransformTextureCoords_h
#include "vtkDataSetAlgorithm.h"
#include "vtkFiltersTextureModule.h" // For export macro
class VTKFILTERSTEXTURE_EXPORT vtkTransformTextureCoords : public vtkDataSetAlgorithm
{
public:
vtkTypeMacro(vtkTransformTextureCoords, vtkDataSetAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent) override;
/**
* Create instance with Origin (0.5,0.5,0.5); Position (0,0,0); and Scale
* set to (1,1,1). Rotation of the texture coordinates is turned off.
*/
static vtkTransformTextureCoords* New();
//@{
/**
* Set/Get the position of the texture map. Setting the position translates
* the texture map by the amount specified.
*/
vtkSetVector3Macro(Position, double);
vtkGetVectorMacro(Position, double, 3);
//@}
//@{
/**
* Incrementally change the position of the texture map (i.e., does a
* translate or shift of the texture coordinates).
*/
void AddPosition(double deltaR, double deltaS, double deltaT);
void AddPosition(double deltaPosition[3]);
//@}
//@{
/**
* Set/Get the scale of the texture map. Scaling in performed independently
* on the r, s and t axes.
*/
vtkSetVector3Macro(Scale, double);
vtkGetVectorMacro(Scale, double, 3);
//@}
//@{
/**
* Set/Get the origin of the texture map. This is the point about which the
* texture map is flipped (e.g., rotated). Since a typical texture map ranges
* from (0,1) in the r-s-t coordinates, the default origin is set at
* (0.5,0.5,0.5).
*/
vtkSetVector3Macro(Origin, double);
vtkGetVectorMacro(Origin, double, 3);
//@}
//@{
/**
* Boolean indicates whether the texture map should be flipped around the
* s-axis. Note that the flips occur around the texture origin.
*/
vtkSetMacro(FlipR, vtkTypeBool);
vtkGetMacro(FlipR, vtkTypeBool);
vtkBooleanMacro(FlipR, vtkTypeBool);
//@}
//@{
/**
* Boolean indicates whether the texture map should be flipped around the
* s-axis. Note that the flips occur around the texture origin.
*/
vtkSetMacro(FlipS, vtkTypeBool);
vtkGetMacro(FlipS, vtkTypeBool);
vtkBooleanMacro(FlipS, vtkTypeBool);
//@}
//@{
/**
* Boolean indicates whether the texture map should be flipped around the
* t-axis. Note that the flips occur around the texture origin.
*/
vtkSetMacro(FlipT, vtkTypeBool);
vtkGetMacro(FlipT, vtkTypeBool);
vtkBooleanMacro(FlipT, vtkTypeBool);
//@}
protected:
vtkTransformTextureCoords();
~vtkTransformTextureCoords() override {}
int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
double Origin[3]; // point around which map rotates
double Position[3]; // controls translation of map
double Scale[3]; // scales the texture map
vtkTypeBool FlipR; // boolean indicates whether to flip texture around r-axis
vtkTypeBool FlipS; // boolean indicates whether to flip texture around s-axis
vtkTypeBool FlipT; // boolean indicates whether to flip texture around t-axis
private:
vtkTransformTextureCoords(const vtkTransformTextureCoords&) = delete;
void operator=(const vtkTransformTextureCoords&) = delete;
};
#endif