📄 animrect.cpp
字号:
#include "animrect.h"#include <assert.h>#include <stdio.h>AnimRect::AnimRect() : m_frames(1) , m_actframe(1) {}void AnimRect::set(const QRect &a, const QRect &b, int frames) { m_a= a; m_b= b; m_frames= frames; m_actframe= 0; assert(m_frames > 0);}QRect AnimRect::currentFrame() const { return calcFrame(m_actframe);}QRect AnimRect::nextFrame() { if(!framesLeft()) { return m_b; } else { return calcFrame(m_actframe++); }}QRect AnimRect::lastFrame() const { return m_b;}QRect AnimRect::nextHull() const { if(m_actframe <= 0) { return m_a;// } else if(!framesLeft()) {// return m_b; } else { return calcFrame(m_actframe - 1) | calcFrame(m_actframe); }}QRect AnimRect::calcFrame(int frame) const {//printf("a AnimRect::calcFrame(%i) of %i\n", frame, m_frames); if(frame >= m_frames || m_frames == 1) return m_b; int x1, y1, w1, h1; int x2, y2, w2, h2; m_a.rect(&x1, &y1, &w1, &h1); m_b.rect(&x2, &y2, &w2, &h2); int a= m_frames - frame - 1; int b= frame; int x= (a* x1 + b* x2)/ (m_frames - 1); int y= (a* y1 + b* y2)/ (m_frames - 1); int w= (a* w1 + b* w2)/ (m_frames - 1); int h= (a* h1 + b* h2)/ (m_frames - 1);//printf("b AnimRect::calcFrame %i\n", QRect(x, y, w, h) == m_a); return QRect(x, y, w, h);}bool AnimRect::framesLeft() const { return m_actframe < m_frames;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -