From c0e1dfcc8d99433e7fff815107b564eddf919e7c Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Thu, 17 Dec 2020 11:35:50 +0300 Subject: [PATCH] Added ability to pass additional scale to RadialBlob. --- ui/paint/blob.cpp | 4 ++-- ui/paint/blob.h | 2 +- ui/paint/blobs.cpp | 4 ++-- ui/paint/blobs.h | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ui/paint/blob.cpp b/ui/paint/blob.cpp index 669dd37..d962c58 100644 --- a/ui/paint/blob.cpp +++ b/ui/paint/blob.cpp @@ -81,12 +81,12 @@ RadialBlob::RadialBlob(int n, float minScale, float minSpeed, float maxSpeed) , _segments(n) { } -void RadialBlob::paint(Painter &p, const QBrush &brush) { +void RadialBlob::paint(Painter &p, const QBrush &brush, float outerScale) { auto path = QPainterPath(); auto m = QMatrix(); p.save(); - const auto scale = _minScale + _scale * (1. - _minScale); + const auto scale = (_minScale + (1. - _minScale) * _scale) * outerScale; if (scale != 1.) { p.scale(scale, scale); } diff --git a/ui/paint/blob.h b/ui/paint/blob.h index f37e808..e48e621 100644 --- a/ui/paint/blob.h +++ b/ui/paint/blob.h @@ -58,7 +58,7 @@ class RadialBlob final : public Blob { public: RadialBlob(int n, float minScale, float minSpeed = 0, float maxSpeed = 0); - void paint(Painter &p, const QBrush &brush); + void paint(Painter &p, const QBrush &brush, float outerScale = 1.); void update(float level, float speedScale); private: diff --git a/ui/paint/blobs.cpp b/ui/paint/blobs.cpp index 700260e..2c84f86 100644 --- a/ui/paint/blobs.cpp +++ b/ui/paint/blobs.cpp @@ -65,7 +65,7 @@ void Blobs::setLevel(float value) { _levelValue.start(to); } -void Blobs::paint(Painter &p, const QBrush &brush) { +void Blobs::paint(Painter &p, const QBrush &brush, float outerScale) { const auto opacity = p.opacity(); for (auto i = 0; i < _blobs.size(); i++) { _blobs[i].update(_levelValue.current(), _blobDatas[i].speedScale); @@ -73,7 +73,7 @@ void Blobs::paint(Painter &p, const QBrush &brush) { if (alpha != 1.) { p.setOpacity(opacity * alpha); } - _blobs[i].paint(p, brush); + _blobs[i].paint(p, brush, outerScale); if (alpha != 1.) { p.setOpacity(opacity); } diff --git a/ui/paint/blobs.h b/ui/paint/blobs.h index a7d5d3d..f3c5c52 100644 --- a/ui/paint/blobs.h +++ b/ui/paint/blobs.h @@ -35,7 +35,7 @@ public: Blob::Radiuses radiusesAt(int index); void setLevel(float value); - void paint(Painter &p, const QBrush &brush); + void paint(Painter &p, const QBrush &brush, float outerScale = 1.); void updateLevel(crl::time dt); [[nodiscard]] float maxRadius() const;