3
* $Id: widgetsactor.h 3535 2011-03-18 17:57:05Z carlos $
6
* Copyright 2008-10 MetaEmotion S.L. All rights reserved.
7
* http://ginkgo-cadx.com
9
* This file is licensed under LGPL v3 license.
10
* See License.txt for details
20
#include <vtkOpenGLActor.h>
21
#include <vtkOpenGLPolyDataMapper.h>
22
#include <vtkOpenGLTexture.h>
31
class IWidgetsManager;
32
class IWidgetsRenderer;
36
class EXTAPI WidgetRepresentation : public vtkProp
40
// Standard methods for instances of this class.
41
void PrintSelf(ostream& os, vtkIndent indent);
43
static WidgetRepresentation *New();
45
vtkTypeMacro(WidgetRepresentation,vtkProp);
47
virtual void SetRenderer(vtkRenderer *ren);
48
vtkGetObjectMacro(Renderer,vtkRenderer);
49
virtual int GetInteractionState()
50
{return this->InteractionState;}
52
vtkSetClampMacro(HandleSize,double,0.001,1000);
53
vtkGetMacro(HandleSize,double);
55
vtkGetMacro( NeedToRender, int );
56
vtkSetClampMacro( NeedToRender, int, 0, 1 );
57
vtkBooleanMacro( NeedToRender, int );
59
virtual double *GetBounds();
60
virtual void GetActors(vtkPropCollection *);
61
virtual void GetActors2D(vtkPropCollection *);
62
virtual void GetVolumes(vtkPropCollection *);
63
virtual void ReleaseGraphicsResources(vtkWindow *);
64
virtual int RenderOverlay(vtkViewport *vtkNotUsed(viewport));
65
virtual int RenderOpaqueGeometry(vtkViewport *vtkNotUsed(viewport));
66
virtual int RenderTranslucentPolygonalGeometry(vtkViewport *vtkNotUsed(viewport));
67
virtual int RenderVolumetricGeometry(vtkViewport *vtkNotUsed(viewport));
68
virtual int HasTranslucentPolygonalGeometry();
70
void SetWidgetsManager(GNC::GCS::IWidgetsManager* pWidgetsManager);
71
void SetWidgetsRenderer(GNC::GCS::IWidgetsRenderer* pWidgetRenderer);
74
WidgetRepresentation();
75
~WidgetRepresentation();
77
vtkRenderer *Renderer;
81
// These are used to track the beginning of interaction with the representation
82
// It's dimensioned [3] because some events re processed in 3D.
83
double StartEventPosition[3];
85
// Instance variable and members supporting suclasses
86
double PlaceFactor; // Used to control how widget is placed around bounding box
87
int Placed; // Indicate whether widget has been placed
88
void AdjustBounds(double bounds[6], double newBounds[6], double center[3]);
89
double InitialBounds[6]; //initial bounds on place widget (valid after PlaceWidget)
90
double InitialLength; //initial length on place widget
93
int ValidPick; //indicate when valid picks are made
95
double HandleSize; //controlling relative size of widget handles
96
double SizeHandlesRelativeToViewport(double factor, double pos[3]);
97
double SizeHandlesInPixels(double factor,double pos[3]);
101
vtkTimeStamp BuildTime;
103
WidgetsActor* CustomActor;
104
WidgetsMapper* CustomMapper;
107
WidgetRepresentation(const WidgetRepresentation&); //Not implemented
108
void operator=(const WidgetRepresentation&); //Not implemented
111
class EXTAPI WidgetsActor : public vtkOpenGLActor {
113
static WidgetsActor *New();
119
vtkTypeMacro(WidgetsActor,vtkOpenGLActor);
121
void Render(vtkRenderer *ren, vtkMapper *mapper);
122
virtual int GetIsOpaque();
123
virtual int RenderOpaqueGeometry(vtkViewport *viewport);
124
virtual int RenderOverlay(vtkViewport *viewport);
125
virtual int RenderTranslucentPolygonalGeometry(vtkViewport *viewport);
128
// Does this prop have some translucent polygonal geometry?
129
virtual int HasTranslucentPolygonalGeometry();
137
class EXTAPI WidgetsMapper : public vtkPolyDataMapper {
139
static WidgetsMapper *New();
141
vtkTypeMacro(WidgetsMapper,vtkPolyDataMapper);
144
// Implement superclass render method.
145
virtual void RenderPiece(vtkRenderer *ren, vtkActor *a);
146
virtual void Render(vtkRenderer *ren, vtkActor *a);
149
// Release any graphics resources that are being consumed by this mapper.
150
// The parameter window could be used to determine which graphic
151
// resources to release.
152
void ReleaseGraphicsResources(vtkWindow *);
155
// Draw method for OpenGL.
156
virtual int Draw(vtkRenderer *ren, vtkActor *a);
158
void SetWidgetsManager (GNC::GCS::IWidgetsManager* pManager) {
159
m_pWManager = pManager;
162
virtual void SetWidgetsRenderer(GNC::GCS::IWidgetsRenderer* pRenderer) {
163
m_pWRenderer = pRenderer;
171
GNC::GCS::IWidgetsManager* m_pWManager;
172
GNC::GCS::IWidgetsRenderer* m_pWRenderer;
175
WidgetsMapper(const WidgetsMapper&); // Not implemented.
176
void operator=(const WidgetsMapper&); // Not implemented.