/*========================================================================= Program: Visualization Toolkit Module: $RCSfile: vtkAngleRepresentation3D.h,v $ 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. =========================================================================*/ // .NAME vtkAngleRepresentation3D - represent the vtkAngleWidget // .SECTION Description // The vtkAngleRepresentation3D is a representation for the // vtkAngleWidget. This representation consists of two rays and three // vtkHandleRepresentations to place and manipulate the three points defining // the angle representation. (Note: the three points are referred to as Point1, // Center, and Point2, at the two end points (Point1 and Point2) and Center // (around which the angle is measured). This particular implementation is a // 3D representation, meaning that it draws in the overlay plane. // .SECTION See Also // vtkAngleWidget vtkHandleRepresentation #ifndef __vtkAngleRepresentation3D_h #define __vtkAngleRepresentation3D_h #include "vtkAngleRepresentation.h" class vtkActor; class vtkProperty; class vtkPolyDataMapper; class vtkLineSource; class vtkArcSource; class vtkFollower; class vtkVectorText; class vtkPolyDataMapper; class vtkTextProperty; class VTK_WIDGETS_EXPORT vtkAngleRepresentation3D : public vtkAngleRepresentation { public: // Description: // Instantiate class. static vtkAngleRepresentation3D *New(); // Description: // Standard VTK methods. vtkTypeRevisionMacro(vtkAngleRepresentation3D,vtkAngleRepresentation); void PrintSelf(ostream& os, vtkIndent indent); // Description: // Satisfy the superclasses API. Angle returned is in radians. virtual double GetAngle(); // Description: // Methods to Set/Get the coordinates of the two points defining // this representation. Note that methods are available for both // display and world coordinates. virtual void GetPoint1WorldPosition(double pos[3]); virtual void GetCenterWorldPosition(double pos[3]); virtual void GetPoint2WorldPosition(double pos[3]); virtual void SetPoint1WorldPosition(double pos[3]); virtual void SetPoint1DisplayPosition(double pos[3]); virtual void SetCenterWorldPosition(double pos[3]); virtual void SetCenterDisplayPosition(double pos[3]); virtual void SetPoint2WorldPosition(double pos[3]); virtual void SetPoint2DisplayPosition(double pos[3]); virtual void GetPoint1DisplayPosition(double pos[3]); virtual void GetCenterDisplayPosition(double pos[3]); virtual void GetPoint2DisplayPosition(double pos[3]); // Description: // Set/Get the three leaders used to create this representation. // By obtaining these leaders the user can set the appropriate // properties, etc. vtkGetObjectMacro(Ray1,vtkActor); vtkGetObjectMacro(Ray2,vtkActor); vtkGetObjectMacro(Arc,vtkActor); vtkGetObjectMacro(TextActor,vtkFollower); // Description: // Scale text. virtual void SetTextActorScale( double scale[3] ); virtual double * GetTextActorScale(); // Description: // Method defined by vtkWidgetRepresentation superclass and // needed here. void BuildRepresentation(); // Description: // Methods required by vtkProp superclass. virtual void ReleaseGraphicsResources(vtkWindow *w); virtual int RenderOpaqueGeometry(vtkViewport*); virtual int RenderTranslucentPolygonalGeometry(vtkViewport*); virtual int HasTranslucentPolygonalGeometry(); protected: vtkAngleRepresentation3D(); ~vtkAngleRepresentation3D(); // The pieces that make up the angle representations vtkLineSource *Line1Source; vtkLineSource *Line2Source; vtkArcSource *ArcSource; vtkPolyDataMapper *Line1Mapper; vtkPolyDataMapper *Line2Mapper; vtkPolyDataMapper *ArcMapper; vtkActor *Ray1; vtkActor *Ray2; vtkActor *Arc; vtkFollower *TextActor; vtkPolyDataMapper *TextMapper; vtkVectorText *TextInput; double Angle; bool ScaleInitialized; double TextPosition[3]; private: vtkAngleRepresentation3D(const vtkAngleRepresentation3D&); //Not implemented void operator=(const vtkAngleRepresentation3D&); //Not implemented }; #endif