KrisLibrary  1.0.0
TransformWidget.h
1 #ifndef GLDRAW_TRANSFORM_WIDGET_H
2 #define GLDRAW_TRANSFORM_WIDGET_H
3 
4 #include "Widget.h"
5 
6 namespace GLDraw {
7 
8 class TransformWidget : public Widget
9 {
10  public:
12  virtual ~TransformWidget() {}
13  virtual bool Hover(int x,int y,Camera::Viewport& viewport,double& distance);
14  virtual bool BeginDrag(int x,int y,Camera::Viewport& viewport,double& distance);
15  virtual void Drag(int dx,int dy,Camera::Viewport& viewport);
16  virtual void EndDrag();
17  virtual void DrawGL(Camera::Viewport& viewport);
18 
19  //settings
21  bool enableRotation,enableTranslation;
22  bool enableOriginTranslation,enableOuterRingRotation;
23  bool enableRotationAxes[3],enableTranslationAxes[3];
24  GLColor originColor,xAxisColor,yAxisColor,zAxisColor;
25  double hoverScale;
26  double originRadius;
27  double axisLength,axisRadius,arrowRadius,arrowHeight;
28  double ringOuterRadius,ringInnerRadius;
29  bool scaleToScreen;
30 
31  //state
32  int hoverItem; // -1 = nothing, 0 = origin, 1,2,3 = x,y,z translation axes, 4,5,6 = x,y,z rotation axes, 7 = outer rotation ring
33  Vector3 hoverPos;
34  RigidTransform clickTransform;
35  int clickX,clickY,dragX,dragY;
36  Vector3 clickPos;
37  Real clickDistance;
38  Vector3 clickAxis;
39 };
40 
41 } //namespace GLDraw
42 
43 #endif
Base class for a visual widget.
Definition: Widget.h:16
A 3D vector class.
Definition: math3d/primitives.h:136
A rigid-body transformation.
Definition: math3d/primitives.h:820
A class containing viewport / camera information. This uses OpenGL coordinate convention in which x i...
Definition: viewport.h:11
Contains all definitions in the GLDraw package.
Definition: AnyGeometry.h:14
An rgba color.
Definition: GLColor.h:9
Definition: TransformWidget.h:8