00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00030 #ifndef __vtkOrientedGlyphContourRepresentation_h
00031 #define __vtkOrientedGlyphContourRepresentation_h
00032
00033 #include "vtkContourRepresentation.h"
00034
00035 class vtkProperty;
00036 class vtkActor;
00037 class vtkPolyDataMapper;
00038 class vtkPolyData;
00039 class vtkGlyph3D;
00040 class vtkPoints;
00041
00042 class VTK_WIDGETS_EXPORT vtkOrientedGlyphContourRepresentation : public vtkContourRepresentation
00043 {
00044 public:
00046 static vtkOrientedGlyphContourRepresentation *New();
00047
00049
00050 vtkTypeRevisionMacro(vtkOrientedGlyphContourRepresentation,vtkContourRepresentation);
00051 void PrintSelf(ostream& os, vtkIndent indent);
00053
00055
00058 void SetCursorShape(vtkPolyData *cursorShape);
00059 vtkPolyData *GetCursorShape();
00061
00063
00066 void SetActiveCursorShape(vtkPolyData *activeShape);
00067 vtkPolyData *GetActiveCursorShape();
00069
00071
00073 vtkGetObjectMacro(Property,vtkProperty);
00075
00077
00079 vtkGetObjectMacro(ActiveProperty,vtkProperty);
00081
00083
00084 vtkGetObjectMacro(LinesProperty,vtkProperty);
00086
00088
00091 virtual void SetRenderer(vtkRenderer *ren);
00092 virtual void BuildRepresentation();
00093 virtual void StartWidgetInteraction(double eventPos[2]);
00094 virtual void WidgetInteraction(double eventPos[2]);
00095 virtual int ComputeInteractionState(int X, int Y, int modified=0);
00097
00099
00100 virtual void GetActors(vtkPropCollection *);
00101 virtual void ReleaseGraphicsResources(vtkWindow *);
00102 virtual int RenderOverlay(vtkViewport *viewport);
00103 virtual int RenderOpaqueGeometry(vtkViewport *viewport);
00104 virtual int RenderTranslucentPolygonalGeometry(vtkViewport *viewport);
00105 virtual int HasTranslucentPolygonalGeometry();
00107
00109 virtual vtkPolyData * GetContourRepresentationAsPolyData();
00110
00112
00116 vtkSetMacro( AlwaysOnTop, int );
00117 vtkGetMacro( AlwaysOnTop, int );
00118 vtkBooleanMacro( AlwaysOnTop, int );
00120
00121 protected:
00122 vtkOrientedGlyphContourRepresentation();
00123 ~vtkOrientedGlyphContourRepresentation();
00124
00125
00126 vtkActor *Actor;
00127 vtkPolyDataMapper *Mapper;
00128 vtkGlyph3D *Glypher;
00129 vtkActor *ActiveActor;
00130 vtkPolyDataMapper *ActiveMapper;
00131 vtkGlyph3D *ActiveGlypher;
00132 vtkPolyData *CursorShape;
00133 vtkPolyData *ActiveCursorShape;
00134 vtkPolyData *FocalData;
00135 vtkPoints *FocalPoint;
00136 vtkPolyData *ActiveFocalData;
00137 vtkPoints *ActiveFocalPoint;
00138
00139 vtkPolyData *Lines;
00140 vtkPolyDataMapper *LinesMapper;
00141 vtkActor *LinesActor;
00142
00143
00144 double LastPickPosition[3];
00145 double LastEventPosition[2];
00146
00147
00148 void Translate(double eventPos[2]);
00149 void Scale(double eventPos[2]);
00150 void ShiftContour(double eventPos[2]);
00151 void ScaleContour(double eventPos[2]);
00152
00153 void ComputeCentroid(double* ioCentroid);
00154
00155
00156
00157 vtkProperty *Property;
00158 vtkProperty *ActiveProperty;
00159 vtkProperty *LinesProperty;
00160 void CreateDefaultProperties();
00161
00162
00163
00164
00165 double InteractionOffset[2];
00166
00167 int AlwaysOnTop;
00168
00169 void BuildLines();
00170
00171 private:
00172 vtkOrientedGlyphContourRepresentation(const vtkOrientedGlyphContourRepresentation&);
00173 void operator=(const vtkOrientedGlyphContourRepresentation&);
00174 };
00175
00176 #endif