1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
|
/*=========================================================================
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 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 "vtkFiltersTextureModule.h" // For export macro
#include "vtkDataSetAlgorithm.h"
class VTKFILTERSTEXTURE_EXPORT vtkTransformTextureCoords : public vtkDataSetAlgorithm
{
public:
vtkTypeMacro(vtkTransformTextureCoords,vtkDataSetAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent);
/**
* 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,int);
vtkGetMacro(FlipR,int);
vtkBooleanMacro(FlipR,int);
//@}
//@{
/**
* Boolean indicates whether the texture map should be flipped around the
* s-axis. Note that the flips occur around the texture origin.
*/
vtkSetMacro(FlipS,int);
vtkGetMacro(FlipS,int);
vtkBooleanMacro(FlipS,int);
//@}
//@{
/**
* Boolean indicates whether the texture map should be flipped around the
* t-axis. Note that the flips occur around the texture origin.
*/
vtkSetMacro(FlipT,int);
vtkGetMacro(FlipT,int);
vtkBooleanMacro(FlipT,int);
//@}
protected:
vtkTransformTextureCoords();
~vtkTransformTextureCoords() {}
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
double Origin[3]; //point around which map rotates
double Position[3]; //controls translation of map
double Scale[3]; //scales the texture map
int FlipR; //boolean indicates whether to flip texture around r-axis
int FlipS; //boolean indicates whether to flip texture around s-axis
int FlipT; //boolean indicates whether to flip texture around t-axis
private:
vtkTransformTextureCoords(const vtkTransformTextureCoords&) VTK_DELETE_FUNCTION;
void operator=(const vtkTransformTextureCoords&) VTK_DELETE_FUNCTION;
};
#endif
|