00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef ACTIVECOORDINATEFRAME_H
00032 #define ACTIVECOORDINATEFRAME_H
00033
00034 #include "coordinateframe.h"
00035 #include <wrap/gui/trackball.h>
00036 #include <QGLWidget>
00037
00038 namespace vcg {
00039
00045 class ActiveCoordinateFrame: public MovableCoordinateFrame
00046 {
00047 public:
00054 ActiveCoordinateFrame(float size);
00055
00061 virtual ~ActiveCoordinateFrame();
00062
00068 virtual void Render(QGLWidget* glw);
00069
00076 virtual void Reset(bool reset_position,bool reset_alignment);
00082 virtual void SetPosition(const Point3f new_position);
00083
00089 virtual void SetRotation(const Quaternionf rotation);
00090
00105 virtual void AlignWith(const Point3f primary, const Point3f secondary, const char axis_1, const char axis_2);
00106
00114 void MouseDown(int x, int y, int button);
00115
00122 void MouseMove(int x, int y);
00123
00131 void MouseUp(int x, int y, int button);
00132
00138 void ButtonUp(int button);
00139
00145 void ButtonDown(int button);
00146
00152 void SetSnap(float value);
00153
00155 Trackball *manipulator;
00156
00158 bool drawmoves;
00159
00161 bool drawrotations;
00162 protected:
00163
00164 const int move_button,rotate_button;
00165 const int x_modifier,y_modifier,z_modifier;
00166 Point3f x_axis,y_axis,z_axis;
00167 float rot_snap_rad,mov_snap;
00168
00169 virtual void Move(const Similarityf);
00170 void Update();
00171 private:
00172 int movx,movy,movz,rotx,roty,rotz;
00173 };
00174
00175 }
00176 #endif