00001 /**************************************************************************** 00002 00003 This file is part of the GLC-lib library. 00004 Copyright (C) 2005-2008 Laurent Ribon (laumaya@users.sourceforge.net) 00005 http://glc-lib.sourceforge.net 00006 00007 GLC-lib is free software; you can redistribute it and/or modify 00008 it under the terms of the GNU Lesser General Public License as published by 00009 the Free Software Foundation; either version 3 of the License, or 00010 (at your option) any later version. 00011 00012 GLC-lib is distributed in the hope that it will be useful, 00013 but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 GNU Lesser General Public License for more details. 00016 00017 You should have received a copy of the GNU Lesser General Public License 00018 along with GLC-lib; if not, write to the Free Software 00019 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00020 00021 *****************************************************************************/ 00023 00024 #ifndef GLC_REPTRACKBALLMOVER_H_ 00025 #define GLC_REPTRACKBALLMOVER_H_ 00026 00027 #include "glc_repmover.h" 00028 #include "../geometry/glc_circle.h" 00029 #include "../sceneGraph/glc_3dviewinstance.h" 00030 00031 #include "../glc_config.h" 00032 00035 00036 00037 class GLC_LIB_EXPORT GLC_RepTrackBallMover : public GLC_RepMover 00038 { 00039 public: 00041 GLC_RepTrackBallMover(GLC_Viewport*); 00042 00044 GLC_RepTrackBallMover(const GLC_RepTrackBallMover&); 00045 00046 // Destructor 00047 virtual ~GLC_RepTrackBallMover(); 00048 00049 00051 00053 00054 00055 virtual GLC_RepMover* clone() const; 00057 00059 00061 00062 public: 00063 00065 virtual void init(); 00066 00068 virtual void update(); 00069 00071 virtual void setMainColor(const QColor& color); 00072 00074 inline void setRatio(double ratio) 00075 {m_Ratio= ratio;} 00076 00078 00080 00082 00083 public: 00085 virtual void glDraw(); 00086 00088 00090 // Private services Functions 00092 private: 00094 void computeRadius(); 00095 00097 // Private Members 00099 private: 00101 double m_Radius; 00103 GLC_Circle m_MainCircle; 00105 GLC_3DViewInstance m_Arc1; 00107 GLC_Matrix4x4 m_MatArc1; 00109 GLC_3DViewInstance m_Arc2; 00111 GLC_Matrix4x4 m_MatArc2; 00113 double m_Ratio; 00114 00115 }; 00116 00117 #endif /* GLC_REPTRACKBALLMOVER_H_ */