Use simple QPainter in CrossFadeAnimation.

This commit is contained in:
John Preston 2019-09-23 16:55:18 +03:00
parent 00393b7b3b
commit 71adf272c5
2 changed files with 24 additions and 6 deletions

View file

@ -45,12 +45,16 @@ void CrossFadeAnimation::addLine(Part was, Part now) {
_lines.push_back(Line(std::move(was), std::move(now))); _lines.push_back(Line(std::move(was), std::move(now)));
} }
void CrossFadeAnimation::paintFrame(Painter &p, float64 dt) { void CrossFadeAnimation::paintFrame(QPainter &p, float64 dt) {
auto progress = anim::linear(1., dt); auto progress = anim::linear(1., dt);
paintFrame(p, progress, 1. - progress, progress); paintFrame(p, progress, 1. - progress, progress);
} }
void CrossFadeAnimation::paintFrame(Painter &p, float64 positionReady, float64 alphaWas, float64 alphaNow) { void CrossFadeAnimation::paintFrame(
QPainter &p,
float64 positionReady,
float64 alphaWas,
float64 alphaNow) {
if (_lines.isEmpty()) return; if (_lines.isEmpty()) return;
for (const auto &line : std::as_const(_lines)) { for (const auto &line : std::as_const(_lines)) {
@ -58,7 +62,12 @@ void CrossFadeAnimation::paintFrame(Painter &p, float64 positionReady, float64 a
} }
} }
void CrossFadeAnimation::paintLine(Painter &p, const Line &line, float64 positionReady, float64 alphaWas, float64 alphaNow) { void CrossFadeAnimation::paintLine(
QPainter &p,
const Line &line,
float64 positionReady,
float64 alphaWas,
float64 alphaNow) {
auto &snapshotWas = line.was.snapshot; auto &snapshotWas = line.was.snapshot;
auto &snapshotNow = line.now.snapshot; auto &snapshotNow = line.now.snapshot;
if (snapshotWas.isNull() && snapshotNow.isNull()) { if (snapshotWas.isNull() && snapshotNow.isNull()) {

View file

@ -32,8 +32,12 @@ public:
}; };
void addLine(Part was, Part now); void addLine(Part was, Part now);
void paintFrame(Painter &p, float64 dt); void paintFrame(QPainter &p, float64 dt);
void paintFrame(Painter &p, float64 positionReady, float64 alphaWas, float64 alphaNow); void paintFrame(
QPainter &p,
float64 positionReady,
float64 alphaWas,
float64 alphaNow);
private: private:
struct Line { struct Line {
@ -42,7 +46,12 @@ private:
Part was; Part was;
Part now; Part now;
}; };
void paintLine(Painter &p, const Line &line, float64 positionReady, float64 alphaWas, float64 alphaNow); void paintLine(
QPainter &p,
const Line &line,
float64 positionReady,
float64 alphaWas,
float64 alphaNow);
style::color _bg; style::color _bg;
QList<Line> _lines; QList<Line> _lines;