#include "AnimationMove.h" #include ARGB AM_MoveLinear(const Animation* anim, u32 frameIndex, ARGB pixel, i32 r, i32 c, void* priv) { struct AM_MoveLinear ml = *(struct AM_MoveLinear*)priv; r = (r - ml.startRow - (i32)(frameIndex * ml.dRow)); c = (c - ml.startCol - (i32)(frameIndex * ml.dCol)); if (ml.wrapCoordinates == true) { r %= anim->width; c %= anim->height; } return ml.callback(anim, frameIndex, pixel, r, c, ml.priv); } ARGB AM_MoveSpin(const Animation* anim, u32 frameIndex, ARGB pixel, i32 r, i32 c, void* priv) { struct AM_MoveSpin ms = *(struct AM_MoveSpin*)priv; double radius = sqrt(r * r + c * c); double phi = atan2(c, r); phi += ms.theta * frameIndex; r = (ms.centerRow + (i32)(radius * cos(phi))); c = (ms.centerCol + (i32)(radius * sin(phi))); return ms.callback(anim, frameIndex, pixel, r, c, ms.priv); }