insilmaril@461: #include "animpoint.h" insilmaril@461: insilmaril@688: #include insilmaril@688: insilmaril@461: AnimPoint::AnimPoint() insilmaril@461: { insilmaril@461: init(); insilmaril@461: } insilmaril@461: insilmaril@461: void AnimPoint::operator= ( const AnimPoint & other ) insilmaril@461: { insilmaril@461: copy (other); insilmaril@461: } insilmaril@461: insilmaril@461: void AnimPoint::operator= ( const QPointF & other ) insilmaril@461: { insilmaril@461: init(); insilmaril@461: setX (other.x() ); insilmaril@461: setY (other.x() ); insilmaril@461: } insilmaril@461: insilmaril@461: bool AnimPoint::operator== ( const QPointF& other ) insilmaril@461: { insilmaril@461: QPointF p( x(),y()); insilmaril@461: return p == other; insilmaril@461: } insilmaril@461: insilmaril@461: bool AnimPoint::operator== ( AnimPoint other ) insilmaril@461: { insilmaril@461: if (rx() != other.rx() ) return false; insilmaril@461: if (ry() != other.ry() ) return false; insilmaril@688: if (startPos != other.startPos) return false; insilmaril@688: if (destPos != other.destPos) return false; insilmaril@461: if (animated != other.animated ) return false; insilmaril@461: insilmaril@461: return true; insilmaril@461: } insilmaril@461: insilmaril@461: void AnimPoint::init () insilmaril@461: { insilmaril@461: animated=false; insilmaril@688: n=0; insilmaril@688: startPos=QPointF(0,0); insilmaril@688: destPos=QPointF(0,0); insilmaril@688: vector=QPointF(0,0); insilmaril@688: animTicks=10; insilmaril@461: } insilmaril@461: insilmaril@461: void AnimPoint::copy (AnimPoint other) insilmaril@461: { insilmaril@461: setX (other.x() ); insilmaril@461: setY (other.x() ); insilmaril@688: startPos=other.startPos; insilmaril@688: destPos=other.destPos; insilmaril@688: vector=other.vector; insilmaril@461: animated=other.animated; insilmaril@688: n=other.n; insilmaril@688: animTicks=other.animTicks; insilmaril@688: } insilmaril@688: insilmaril@688: void AnimPoint::setStart(const QPointF &p) insilmaril@688: { insilmaril@688: startPos=p; insilmaril@688: initVector(); insilmaril@688: } insilmaril@688: insilmaril@688: QPointF AnimPoint::getStart() insilmaril@688: { insilmaril@688: return startPos; insilmaril@461: } insilmaril@461: insilmaril@461: insilmaril@461: void AnimPoint::setDest(const QPointF &p) insilmaril@461: { insilmaril@461: destPos=p; insilmaril@688: initVector(); insilmaril@688: } insilmaril@688: insilmaril@688: QPointF AnimPoint::getDest() insilmaril@688: { insilmaril@688: return destPos; insilmaril@688: } insilmaril@688: insilmaril@688: void AnimPoint::setTicks (const uint &t) insilmaril@688: { insilmaril@688: animTicks=t; insilmaril@688: } insilmaril@688: insilmaril@688: uint AnimPoint::getTicks() insilmaril@688: { insilmaril@721: return (uint) animTicks; insilmaril@461: } insilmaril@461: insilmaril@461: void AnimPoint::setAnimated(bool b) insilmaril@461: { insilmaril@461: animated=b; insilmaril@688: if (b) n=0; insilmaril@461: } insilmaril@461: insilmaril@461: bool AnimPoint::isAnimated() insilmaril@461: { insilmaril@461: return animated; insilmaril@461: } insilmaril@461: insilmaril@688: bool AnimPoint::animate() insilmaril@461: { insilmaril@688: if (!animated) return animated; insilmaril@688: n++; insilmaril@688: if (n>animTicks) insilmaril@688: { insilmaril@688: vector=QPointF(0,0); insilmaril@688: animated=false; insilmaril@721: setX (destPos.x() ); insilmaril@721: setY (destPos.y() ); insilmaril@688: return animated; insilmaril@688: } insilmaril@688: setX (startPos.x() + vector.x()*sqrt(n/animTicks) ); insilmaril@688: setY (startPos.y() + vector.y()*sqrt(n/animTicks) ); insilmaril@721: insilmaril@688: return animated; insilmaril@461: } insilmaril@461: insilmaril@688: void AnimPoint::initVector() insilmaril@688: { insilmaril@688: vector.setX (destPos.x()-startPos.x() ); insilmaril@688: vector.setY (destPos.y()-startPos.y() ); insilmaril@688: } insilmaril@461: insilmaril@461: