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_ROTATIONMANIPULATOR_H_ 00025 #define GLC_ROTATIONMANIPULATOR_H_ 00026 00027 #include "../glc_config.h" 00028 #include "glc_abstractmanipulator.h" 00029 #include "../maths/glc_line3d.h" 00030 00031 class GLC_Viewport; 00032 00035 00038 00039 class GLC_LIB_EXPORT GLC_RotationManipulator : public GLC_AbstractManipulator 00040 { 00042 00044 00045 public: 00047 GLC_RotationManipulator(GLC_Viewport* pViewport, const GLC_Line3d& rotationLine); 00048 00050 GLC_RotationManipulator(const GLC_RotationManipulator& rotationmanipulator); 00051 00053 virtual ~GLC_RotationManipulator(); 00054 00056 00058 00060 00061 public: 00063 virtual GLC_AbstractManipulator* clone() const; 00064 00066 inline GLC_Line3d rotationLine() const 00067 {return m_RotationLine;} 00068 00070 00072 00074 00075 public: 00077 void setRotationLine(const GLC_Line3d line) 00078 {m_RotationLine= line;} 00079 00081 00083 // Protected services function 00085 protected: 00087 virtual GLC_Matrix4x4 doManipulate(const GLC_Point3d& newPoint, const GLC_Vector3d& projectionDirection); 00088 00090 // Private Member 00092 private: 00094 GLC_Line3d m_RotationLine; 00095 00096 }; 00097 00098 #endif /* GLC_ROTATIONMANIPULATOR_H_ */