00001 /*************************************************************************** 00002 ** 00003 ** This file is part of GeopsyCore. 00004 ** 00005 ** This library is free software; you can redistribute it and/or 00006 ** modify it under the terms of the GNU Lesser General Public 00007 ** License as published by the Free Software Foundation; either 00008 ** version 2.1 of the License, or (at your option) any later version. 00009 ** 00010 ** This file is distributed in the hope that it will be useful, but WITHOUT 00011 ** ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00012 ** FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 00013 ** License for more details. 00014 ** 00015 ** You should have received a copy of the GNU Lesser General Public 00016 ** License along with this library; if not, write to the Free Software 00017 ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00018 ** 00019 ** See http://www.geopsy.org for more information. 00020 ** 00021 ** Created : 2009-03-29 00022 ** Authors : 00023 ** Marc Wathelet 00024 ** Marc Wathelet (LGIT, Grenoble, France) 00025 ** 00026 ***************************************************************************/ 00027 00028 #ifndef ROTATEPARAMETERS_H 00029 #define ROTATEPARAMETERS_H 00030 00031 #include <QGpCoreTools.h> 00032 00033 #include "GeopsyCoreDLLExport.h" 00034 00035 namespace GeopsyCore { 00036 00037 class GEOPSYCORE_EXPORT RotateParameters : public AbstractParameters 00038 { 00039 public: 00040 RotateParameters(); 00041 RotateParameters(const RotateParameters& o); 00042 00043 enum Axis {Vertical=0x01, North=0x02, East=0x04}; 00044 Q_DECLARE_FLAGS(Axes, Axis) 00045 00046 Axes axes() const {return _axes;} 00047 void setAxes(Axes a) {_axes=a;} 00048 00049 double angleAroundVertical() const {return _angleAroundVertical;} 00050 void setAngleAroundVertical(double a) {_angleAroundVertical=a;} 00051 00052 double angleAroundNorth() const {return _angleAroundNorth;} 00053 void setAngleAroundNorth(double a) {_angleAroundNorth=a;} 00054 00055 double angleAroundEast() const {return _angleAroundEast;} 00056 void setAngleAroundEast(double a) {_angleAroundEast=a;} 00057 00058 Matrix3x3 matrix() const; 00059 private: 00060 Axes _axes; 00061 double _angleAroundVertical; 00062 double _angleAroundNorth; 00063 double _angleAroundEast; 00064 }; 00065 00066 } // namespace GeopsyCore 00067 00068 Q_DECLARE_OPERATORS_FOR_FLAGS(GeopsyCore::RotateParameters::Axes) 00069 00070 #endif // ROTATEPARAMETERS_H