00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00030 #ifndef __vtkPolygonalHandleRepresentation3D_h
00031 #define __vtkPolygonalHandleRepresentation3D_h
00032
00033 #include "vtkHandleRepresentation.h"
00034
00035 class vtkProperty;
00036 class vtkActor;
00037 class vtkPolyDataMapper;
00038 class vtkCellPicker;
00039 class vtkTransformPolyDataFilter;
00040 class vtkMatrixToLinearTransform;
00041 class vtkMatrix4x4;
00042 class vtkPolyData;
00043
00044 class VTK_WIDGETS_EXPORT vtkPolygonalHandleRepresentation3D
00045 : public vtkHandleRepresentation
00046 {
00047 public:
00049 static vtkPolygonalHandleRepresentation3D *New();
00050
00052
00053 vtkTypeRevisionMacro(vtkPolygonalHandleRepresentation3D,vtkHandleRepresentation);
00054 void PrintSelf(ostream& os, vtkIndent indent);
00056
00058
00063 virtual void SetWorldPosition(double p[3]);
00064 virtual void SetDisplayPosition(double p[3]);
00066
00068
00069 void SetHandle( vtkPolyData * );
00070 vtkPolyData * GetHandle();
00072
00074
00076 vtkSetVector3Macro( Offset, double );
00077 vtkGetVector3Macro( Offset, double );
00079
00081
00082 void SetProperty(vtkProperty*);
00083 void SetSelectedProperty(vtkProperty*);
00084 vtkGetObjectMacro(Property,vtkProperty);
00085 vtkGetObjectMacro(SelectedProperty,vtkProperty);
00087
00089
00091 virtual void BuildRepresentation();
00092 virtual void StartWidgetInteraction(double eventPos[2]);
00093 virtual void WidgetInteraction(double eventPos[2]);
00094 virtual int ComputeInteractionState(int X, int Y, int modify=0);
00096
00098
00099 virtual void ShallowCopy(vtkProp *prop);
00100 virtual void GetActors(vtkPropCollection *);
00101 virtual void ReleaseGraphicsResources(vtkWindow *);
00102 virtual int RenderOpaqueGeometry(vtkViewport *viewport);
00103 virtual int RenderTranslucentPolygonalGeometry(vtkViewport *viewport);
00104 virtual int HasTranslucentPolygonalGeometry();
00105 virtual double *GetBounds();
00107
00108
00109 protected:
00110 vtkPolygonalHandleRepresentation3D();
00111 ~vtkPolygonalHandleRepresentation3D();
00112
00113 vtkActor * Actor;
00114 vtkPolyDataMapper * Mapper;
00115 vtkTransformPolyDataFilter * HandleTransformFilter;
00116 vtkMatrixToLinearTransform * HandleTransform;
00117 vtkMatrix4x4 * HandleTransformMatrix;
00118 vtkCellPicker * HandlePicker;
00119 double LastPickPosition[3];
00120 double LastEventPosition[2];
00121 double Offset[3];
00122 int ConstraintAxis;
00123 vtkProperty * Property;
00124 vtkProperty * SelectedProperty;
00125 int WaitingForMotion;
00126 int WaitCount;
00127
00128 void Highlight(int highlight);
00129
00130
00131 void Translate(double *p1, double *p2);
00132 void Scale(double *p1, double *p2, double eventPos[2]);
00133 void MoveFocus(double *p1, double *p2);
00134
00135 void CreateDefaultProperties();
00136
00137
00138
00139
00140
00141
00142
00143 void MoveFocusRequest(
00144 double *p1, double *p2, double requestedDisplayPos[3] );
00145
00146 int DetermineConstraintAxis(int constraint, double *x, double *startPickPos);
00147
00148 private:
00149 vtkPolygonalHandleRepresentation3D(const vtkPolygonalHandleRepresentation3D&);
00150 void operator=(const vtkPolygonalHandleRepresentation3D&);
00151 };
00152
00153 #endif