2009-12-27 23:16:11 +01:00
|
|
|
/*
|
|
|
|
Copyright (C) 2009 Igor Trindade Oliveira <igor.oliveira@indt.org.br>
|
|
|
|
Copyright (C) 2009 Adenilson Cavalcanti <adenilson.silva@idnt.org.br>
|
|
|
|
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
|
|
modify it under the terms of the GNU Lesser General Public
|
|
|
|
License as published by the Free Software Foundation; either
|
|
|
|
version 2.1 of the License, or (at your option) any later version.
|
|
|
|
|
|
|
|
This library is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
Lesser General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU Lesser General Public
|
|
|
|
License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
*/
|
|
|
|
|
2009-12-09 19:40:02 +01:00
|
|
|
/**
|
|
|
|
* @file This file contains the definition for the 2D Rotation effect.
|
|
|
|
*/
|
2009-10-15 21:53:49 +02:00
|
|
|
|
2009-12-09 19:40:02 +01:00
|
|
|
#ifndef PLASMA_ROTATION_P_H
|
|
|
|
#define PLASMA_ROTATION_P_H
|
2009-11-17 02:36:37 +01:00
|
|
|
|
2010-04-08 19:07:33 +02:00
|
|
|
#include <plasma/animations/easinganimation_p.h>
|
2009-10-15 21:53:49 +02:00
|
|
|
|
2009-12-09 15:35:27 +01:00
|
|
|
class QGraphicsRotation;
|
2009-10-15 21:53:49 +02:00
|
|
|
|
2009-12-09 15:35:27 +01:00
|
|
|
namespace Plasma {
|
2009-12-09 19:40:02 +01:00
|
|
|
/**
|
|
|
|
* @class RotationAnimation plasma/animations/rotation_p.h
|
2010-04-07 17:56:21 +02:00
|
|
|
* @short 2D rotation animation.
|
2009-12-09 19:40:02 +01:00
|
|
|
*
|
2010-04-07 17:56:21 +02:00
|
|
|
* This animation rotates a QGraphicsWidget in a axis (reference and
|
|
|
|
* axis can be defined using properties). See also
|
2009-12-09 19:40:02 +01:00
|
|
|
* \ref StackedRotationAnimation.
|
|
|
|
*/
|
2010-04-08 19:07:33 +02:00
|
|
|
class RotationAnimation : public EasingAnimation
|
2009-10-15 21:53:49 +02:00
|
|
|
{
|
|
|
|
|
2009-10-22 17:35:08 +02:00
|
|
|
Q_OBJECT
|
|
|
|
Q_PROPERTY(Qt::Axis axis READ axis WRITE setAxis)
|
|
|
|
Q_PROPERTY(qint8 reference READ reference WRITE setReference)
|
|
|
|
Q_PROPERTY(qreal angle READ angle WRITE setAngle)
|
|
|
|
|
|
|
|
public:
|
2010-04-23 15:39:34 +02:00
|
|
|
/**
|
|
|
|
* Default constructor
|
2009-12-09 19:40:02 +01:00
|
|
|
*
|
|
|
|
* @param parent Animation object parent.
|
|
|
|
* @param reference See \ref Animation::Reference.
|
|
|
|
* @param axis Which axis to rotate (XAxis, YAxis, ZAxis).
|
|
|
|
* @param angle Rotation angle (0 to 360)
|
|
|
|
*
|
|
|
|
*/
|
2010-01-12 23:24:58 +01:00
|
|
|
explicit RotationAnimation(QObject *parent = 0,
|
|
|
|
qint8 reference = Center,
|
|
|
|
Qt::Axis axis = Qt::ZAxis,
|
|
|
|
qreal angle = 180);
|
2009-10-22 17:35:08 +02:00
|
|
|
|
2009-12-09 19:40:02 +01:00
|
|
|
/** Destructor */
|
2009-10-22 17:35:08 +02:00
|
|
|
~RotationAnimation();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* get animation rotation axis (e.g. YAxis, ZAxis, XAxis)
|
|
|
|
*/
|
|
|
|
Qt::Axis axis() const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Rotation reference (e.g. Center, Up, Down, Left, Right) can
|
|
|
|
* be combined (i.e. Center|Up)
|
|
|
|
*/
|
|
|
|
qint8 reference() const;
|
|
|
|
|
2010-04-23 15:39:34 +02:00
|
|
|
/**
|
|
|
|
* Animation rotation angle (e.g. 45, 180, etc)
|
|
|
|
*/
|
|
|
|
qreal angle() const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Reimplemented from Plasma::Animation
|
2011-06-13 14:47:29 +02:00
|
|
|
* @param curve Easing curve
|
2010-04-23 15:39:34 +02:00
|
|
|
*/
|
|
|
|
void setEasingCurve(const QEasingCurve &curve);
|
|
|
|
|
|
|
|
public slots:
|
|
|
|
/**
|
|
|
|
* set animation rotation axis
|
2011-06-13 14:47:29 +02:00
|
|
|
* @param axis Rotation (e.g. YAxis, ZAxis, XAxis)
|
2010-04-23 15:39:34 +02:00
|
|
|
*/
|
|
|
|
void setAxis(const Qt::Axis &axis);
|
|
|
|
|
2009-10-22 17:35:08 +02:00
|
|
|
/**
|
|
|
|
* Set rotation reference (e.g. Center, Up, Down, Left, Right) can
|
|
|
|
* be combined (i.e. Center|Up)
|
2011-06-13 14:47:29 +02:00
|
|
|
* @param reference The reference
|
2009-10-22 17:35:08 +02:00
|
|
|
*/
|
|
|
|
void setReference(const qint8 &reference);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Set animation rotation angle (e.g. 45, 180, etc)
|
2011-06-13 14:47:29 +02:00
|
|
|
* @param angle The angle
|
2009-10-22 17:35:08 +02:00
|
|
|
*/
|
|
|
|
void setAngle(const qreal &angle);
|
|
|
|
|
2009-12-04 21:49:09 +01:00
|
|
|
protected:
|
|
|
|
void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState);
|
2010-04-08 19:07:33 +02:00
|
|
|
void updateEffectiveTime(int currentTime);
|
2009-12-04 21:49:09 +01:00
|
|
|
|
2009-12-03 20:30:02 +01:00
|
|
|
private:
|
2009-12-09 19:40:02 +01:00
|
|
|
/** Rotation transform object */
|
2009-12-09 15:35:27 +01:00
|
|
|
QGraphicsRotation *m_rotation;
|
2009-12-09 19:40:02 +01:00
|
|
|
/** Rotation angle */
|
2009-12-09 15:35:27 +01:00
|
|
|
qreal m_angle;
|
2009-12-09 19:40:02 +01:00
|
|
|
/** Axis where to perform the rotation */
|
2009-12-09 15:35:27 +01:00
|
|
|
Qt::Axis m_axis;
|
2009-12-09 19:40:02 +01:00
|
|
|
/** Reference, the default is Up (see \ref Animation::Reference) */
|
2009-12-09 15:35:27 +01:00
|
|
|
qint8 m_reference;
|
2009-10-15 21:53:49 +02:00
|
|
|
};
|
|
|
|
} // Plasma
|
2009-11-17 02:36:37 +01:00
|
|
|
|
|
|
|
#endif
|