00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00039
#ifndef __vtkButtonSource_h
00040
#define __vtkButtonSource_h
00041
00042
#include "vtkPolyDataSource.h"
00043
00044
class vtkCellArray;
00045
class vtkFloatArray;
00046
class vtkPoints;
00047
00048 #define VTK_TEXTURE_STYLE_FIT_IMAGE 0
00049 #define VTK_TEXTURE_STYLE_PROPORTIONAL 1
00050
00051 class VTK_GRAPHICS_EXPORT vtkButtonSource :
public vtkPolyDataSource
00052 {
00053
public:
00054
void PrintSelf(ostream& os,
vtkIndent indent);
00055 vtkTypeRevisionMacro(vtkButtonSource,
vtkPolyDataSource);
00056
00058
static vtkButtonSource *
New();
00059
00061
00062 vtkSetClampMacro(Width,
double,0.0,VTK_DOUBLE_MAX);
00063 vtkGetMacro(Width,
double);
00065
00067
00068 vtkSetClampMacro(Height,
double,0.0,VTK_DOUBLE_MAX);
00069 vtkGetMacro(Height,
double);
00071
00073
00074 vtkSetClampMacro(Depth,
double,0.0,VTK_DOUBLE_MAX);
00075 vtkGetMacro(Depth,
double);
00077
00079
00086 vtkSetClampMacro(RadialRatio,
double,1.0,VTK_DOUBLE_MAX);
00087 vtkGetMacro(RadialRatio,
double);
00089
00091
00093 vtkSetClampMacro(CircumferentialResolution,
int,4,VTK_LARGE_INTEGER);
00094 vtkGetMacro(CircumferentialResolution,
int);
00096
00098
00100 vtkSetClampMacro(TextureResolution,
int,1,VTK_LARGE_INTEGER);
00101 vtkGetMacro(TextureResolution,
int);
00103
00105
00107 vtkSetClampMacro(ShoulderResolution,
int,1,VTK_LARGE_INTEGER);
00108 vtkGetMacro(ShoulderResolution,
int);
00110
00112
00113 vtkSetVector3Macro(Origin,
double);
00114 vtkGetVectorMacro(Origin,
double,3);
00116
00118
00124 vtkSetClampMacro(TextureStyle,
int,VTK_TEXTURE_STYLE_FIT_IMAGE,
00125 VTK_TEXTURE_STYLE_PROPORTIONAL);
00126 vtkGetMacro(TextureStyle,
int);
00127 void SetTextureStyleToFitImage()
00128 {this->SetTextureStyle(
VTK_TEXTURE_STYLE_FIT_IMAGE);}
00129 void SetTextureStyleToProportional()
00130 {this->SetTextureStyle(
VTK_TEXTURE_STYLE_PROPORTIONAL);}
00132
00134
00136 vtkSetVector2Macro(TextureDimensions,
int);
00137 vtkGetVector2Macro(TextureDimensions,
int);
00139
00141
00142 vtkSetVector2Macro(ShoulderTextureCoordinate,
double);
00143 vtkGetVector2Macro(ShoulderTextureCoordinate,
double);
00145
00147
00151 vtkSetMacro(TwoSided,
int);
00152 vtkGetMacro(TwoSided,
int);
00153 vtkBooleanMacro(TwoSided,
int);
00155
00156
protected:
00157 vtkButtonSource();
00158 ~vtkButtonSource() {}
00159
00160
void Execute();
00161
00162 double Width;
00163 double Height;
00164 double Depth;
00165
00166 int CircumferentialResolution;
00167 int TextureResolution;
00168 int ShoulderResolution;
00169
00170 double Origin[3];
00171 double ShoulderTextureCoordinate[2];
00172
00173 double RadialRatio;
00174 int TextureStyle;
00175 int TextureDimensions[2];
00176 int TwoSided;
00177
00178
private:
00179 vtkButtonSource(
const vtkButtonSource&);
00180
void operator=(
const vtkButtonSource&);
00181
00182
00183
double A;
00184
double A2;
00185
double B;
00186
double B2;
00187
double C;
00188
double C2;
00189
00190
double ComputeDepth(
int inTextureRegion,
double x,
double y,
double n[3]);
00191
void InterpolateCurve(
int inTextureRegion,
vtkPoints *newPts,
int numPts,
00192
vtkFloatArray *normals,
vtkFloatArray *tcoords,
00193
int res,
int c1StartPoint,
int c1Incr,
00194
int c2StartPoint,
int s2Incr,
int startPoint,
int incr);
00195
void CreatePolygons(
vtkCellArray *newPolys,
int num,
int res,
int startIdx);
00196
void IntersectEllipseWithLine(
double a2,
double b2,
double dX,
double dY,
00197
double& xe,
double& ye);
00198
00199
00200 };
00201
00202
#endif
00203
00204