00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00040 #ifndef __vtkLineRepresentation_h
00041 #define __vtkLineRepresentation_h
00042
00043 #include "vtkWidgetRepresentation.h"
00044
00045 class vtkActor;
00046 class vtkPolyDataMapper;
00047 class vtkLineSource;
00048 class vtkSphereSource;
00049 class vtkProperty;
00050 class vtkPolyData;
00051 class vtkPolyDataAlgorithm;
00052 class vtkPointHandleRepresentation3D;
00053 class vtkBox;
00054 class vtkFollower;
00055 class vtkVectorText;
00056 class vtkPolyDataMapper;
00057 class vtkCellPicker;
00058
00059 class VTK_WIDGETS_EXPORT vtkLineRepresentation : public vtkWidgetRepresentation
00060 {
00061 public:
00063 static vtkLineRepresentation *New();
00064
00066
00067 vtkTypeMacro(vtkLineRepresentation,vtkWidgetRepresentation);
00068 void PrintSelf(ostream& os, vtkIndent indent);
00070
00072
00075 void GetPoint1WorldPosition(double pos[3]);
00076 double* GetPoint1WorldPosition();
00077 void GetPoint1DisplayPosition(double pos[3]);
00078 double* GetPoint1DisplayPosition();
00079 void SetPoint1WorldPosition(double pos[3]);
00080 void SetPoint1DisplayPosition(double pos[3]);
00081 void GetPoint2DisplayPosition(double pos[3]);
00082 double* GetPoint2DisplayPosition();
00083 void GetPoint2WorldPosition(double pos[3]);
00084 double* GetPoint2WorldPosition();
00085 void SetPoint2WorldPosition(double pos[3]);
00086 void SetPoint2DisplayPosition(double pos[3]);
00088
00090
00098 void SetHandleRepresentation(vtkPointHandleRepresentation3D *handle);
00099 void InstantiateHandleRepresentation();
00101
00103
00104 vtkGetObjectMacro(Point1Representation,vtkPointHandleRepresentation3D);
00105 vtkGetObjectMacro(Point2Representation,vtkPointHandleRepresentation3D);
00106 vtkGetObjectMacro(LineHandleRepresentation,vtkPointHandleRepresentation3D);
00108
00110
00112 vtkGetObjectMacro(EndPointProperty,vtkProperty);
00113 vtkGetObjectMacro(SelectedEndPointProperty,vtkProperty);
00115
00117
00119 vtkGetObjectMacro(EndPoint2Property,vtkProperty);
00120 vtkGetObjectMacro(SelectedEndPoint2Property,vtkProperty);
00122
00124
00126 vtkGetObjectMacro(LineProperty,vtkProperty);
00127 vtkGetObjectMacro(SelectedLineProperty,vtkProperty);
00129
00131
00134 vtkSetClampMacro(Tolerance,int,1,100);
00135 vtkGetMacro(Tolerance,int);
00137
00139
00142 void SetResolution(int res);
00143 int GetResolution();
00145
00152 void GetPolyData(vtkPolyData *pd);
00153
00155
00156 virtual void PlaceWidget(double bounds[6]);
00157 virtual void BuildRepresentation();
00158 virtual int ComputeInteractionState(int X, int Y, int modify=0);
00159 virtual void StartWidgetInteraction(double e[2]);
00160 virtual void WidgetInteraction(double e[2]);
00161 virtual double *GetBounds();
00163
00165
00166 virtual void GetActors(vtkPropCollection *pc);
00167 virtual void ReleaseGraphicsResources(vtkWindow*);
00168 virtual int RenderOpaqueGeometry(vtkViewport*);
00169 virtual int RenderTranslucentPolygonalGeometry(vtkViewport*);
00170 virtual int HasTranslucentPolygonalGeometry();
00172
00173
00174 enum {Outside=0,OnP1,OnP2,TranslatingP1,TranslatingP2,OnLine,Scaling};
00175
00176
00178
00185 vtkSetClampMacro(InteractionState,int,Outside,Scaling);
00187
00189
00191 virtual void SetRepresentationState(int);
00192 vtkGetMacro(RepresentationState, int);
00194
00197 virtual unsigned long GetMTime();
00198
00200 virtual void SetRenderer(vtkRenderer *ren);
00201
00203
00204 vtkSetMacro( DistanceAnnotationVisibility, int );
00205 vtkGetMacro( DistanceAnnotationVisibility, int );
00206 vtkBooleanMacro( DistanceAnnotationVisibility, int );
00208
00210
00213 vtkSetStringMacro(DistanceAnnotationFormat);
00214 vtkGetStringMacro(DistanceAnnotationFormat);
00216
00218
00219 virtual void SetDistanceAnnotationScale( double scale[3] );
00220 virtual double * GetDistanceAnnotationScale();
00222
00224 double GetDistance();
00225
00226
00229 void SetLineColor(double r, double g, double b);
00230
00232 virtual vtkProperty *GetDistanceAnnotationProperty();
00233
00235
00236 vtkGetObjectMacro(TextActor, vtkFollower);
00238
00239 protected:
00240 vtkLineRepresentation();
00241 ~vtkLineRepresentation();
00242
00243
00244 vtkPointHandleRepresentation3D *HandleRepresentation;
00245 vtkPointHandleRepresentation3D *Point1Representation;
00246 vtkPointHandleRepresentation3D *Point2Representation;
00247 vtkPointHandleRepresentation3D *LineHandleRepresentation;
00248
00249
00250 int RepresentationState;
00251
00252
00253 vtkActor *LineActor;
00254 vtkPolyDataMapper *LineMapper;
00255 vtkLineSource *LineSource;
00256
00257
00258 vtkActor **Handle;
00259 vtkPolyDataMapper **HandleMapper;
00260 vtkSphereSource **HandleGeometry;
00261
00262
00263
00264 vtkProperty *EndPointProperty;
00265 vtkProperty *SelectedEndPointProperty;
00266 vtkProperty *EndPoint2Property;
00267 vtkProperty *SelectedEndPoint2Property;
00268 vtkProperty *LineProperty;
00269 vtkProperty *SelectedLineProperty;
00270 void CreateDefaultProperties();
00271
00272
00273 int Tolerance;
00274
00275
00276 int ClampToBounds;
00277 void ClampPosition(double x[3]);
00278 void HighlightPoint(int ptId, int highlight);
00279 void HighlightLine(int highlight);
00280 int InBounds(double x[3]);
00281 void SizeHandles();
00282
00283
00284 double StartP1[3];
00285 double StartP2[3];
00286 double StartLineHandle[3];
00287 double Length;
00288 double LastEventPosition[3];
00289
00290
00291 vtkBox *BoundingBox;
00292
00293
00294
00295
00296
00297 int InitializedDisplayPosition;
00298
00299
00300 int DistanceAnnotationVisibility;
00301 char *DistanceAnnotationFormat;
00302
00303 vtkFollower *TextActor;
00304 vtkPolyDataMapper *TextMapper;
00305 vtkVectorText *TextInput;
00306 double Distance;
00307 bool AnnotationTextScaleInitialized;
00308
00309 vtkCellPicker *LinePicker;
00310
00311 private:
00312 vtkLineRepresentation(const vtkLineRepresentation&);
00313 void operator=(const vtkLineRepresentation&);
00314 };
00315
00316 #endif