00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00031 #ifndef __vtkAxesTransformRepresentation_h
00032 #define __vtkAxesTransformRepresentation_h
00033
00034 #include "vtkWidgetRepresentation.h"
00035
00036 class vtkHandleRepresentation;
00037 class vtkPoints;
00038 class vtkPolyData;
00039 class vtkPolyDataMapper;
00040 class vtkActor;
00041 class vtkVectorText;
00042 class vtkFollower;
00043 class vtkBox;
00044 class vtkCylinderSource;
00045 class vtkGlyph3D;
00046 class vtkDoubleArray;
00047 class vtkTransformPolyDataFilter;
00048 class vtkProperty;
00049
00050
00051 class VTK_WIDGETS_EXPORT vtkAxesTransformRepresentation : public vtkWidgetRepresentation
00052 {
00053 public:
00055 static vtkAxesTransformRepresentation *New();
00056
00058
00059 vtkTypeMacro(vtkAxesTransformRepresentation,vtkWidgetRepresentation);
00060 void PrintSelf(ostream& os, vtkIndent indent);
00062
00064
00067 vtkGetObjectMacro(OriginRepresentation,vtkHandleRepresentation);
00068 vtkGetObjectMacro(SelectionRepresentation,vtkHandleRepresentation);
00070
00072
00075 double* GetOriginWorldPosition();
00076 void GetOriginWorldPosition(double pos[3]);
00077 void SetOriginWorldPosition(double pos[3]);
00078 void SetOriginDisplayPosition(double pos[3]);
00079 void GetOriginDisplayPosition(double pos[3]);
00081
00089 vtkSetClampMacro(Tolerance,int,1,100);
00090 vtkGetMacro(Tolerance,int);
00092
00094
00097 vtkSetStringMacro(LabelFormat);
00098 vtkGetStringMacro(LabelFormat);
00100
00102 enum {Outside=0,OnOrigin,OnX,OnY,OnZ,OnXEnd,OnYEnd,OnZEnd};
00103
00105
00112 vtkSetClampMacro(InteractionState,int,Outside,OnZEnd);
00114
00116
00117 virtual void BuildRepresentation();
00118 virtual int ComputeInteractionState(int X, int Y, int modify=0);
00119 virtual void StartWidgetInteraction(double e[2]);
00120 virtual void WidgetInteraction(double e[2]);
00121 virtual double *GetBounds();
00123
00125
00126 virtual void ReleaseGraphicsResources(vtkWindow *w);
00127 virtual int RenderOpaqueGeometry(vtkViewport *viewport);
00128 virtual int RenderTranslucentPolygonalGeometry(vtkViewport *viewport);
00130
00132
00134 void SetLabelScale(double x, double y, double z)
00135 {
00136 double scale[3];
00137 scale[0] = x;
00138 scale[1] = y;
00139 scale[2] = z;
00140 this->SetLabelScale(scale);
00141 }
00142 virtual void SetLabelScale( double scale[3] );
00143 virtual double * GetLabelScale();
00145
00147 virtual vtkProperty *GetLabelProperty();
00148
00149 protected:
00150 vtkAxesTransformRepresentation();
00151 ~vtkAxesTransformRepresentation();
00152
00153
00154 vtkHandleRepresentation *OriginRepresentation;
00155 vtkHandleRepresentation *SelectionRepresentation;
00156
00157
00158 int Tolerance;
00159
00160
00161 char *LabelFormat;
00162
00163
00164 vtkPoints *LinePoints;
00165 vtkPolyData *LinePolyData;
00166 vtkPolyDataMapper *LineMapper;
00167 vtkActor *LineActor;
00168
00169
00170 vtkVectorText *LabelText;
00171 vtkPolyDataMapper *LabelMapper;
00172 vtkFollower *LabelActor;
00173
00174
00175 vtkPoints *GlyphPoints;
00176 vtkDoubleArray *GlyphVectors;
00177 vtkPolyData *GlyphPolyData;
00178 vtkCylinderSource *GlyphCylinder;
00179 vtkTransformPolyDataFilter *GlyphXForm;
00180 vtkGlyph3D *Glyph3D;
00181 vtkPolyDataMapper *GlyphMapper;
00182 vtkActor *GlyphActor;
00183
00184
00185 vtkBox *BoundingBox;
00186
00187 double LastEventPosition[3];
00188
00189 private:
00190 vtkAxesTransformRepresentation(const vtkAxesTransformRepresentation&);
00191 void operator=(const vtkAxesTransformRepresentation&);
00192 };
00193
00194 #endif