Added ability to pass additional scale to RadialBlob.

This commit is contained in:
23rd 2020-12-17 11:35:50 +03:00
parent 526a816b7e
commit c0e1dfcc8d
4 changed files with 6 additions and 6 deletions

View file

@ -81,12 +81,12 @@ RadialBlob::RadialBlob(int n, float minScale, float minSpeed, float maxSpeed)
, _segments(n) { , _segments(n) {
} }
void RadialBlob::paint(Painter &p, const QBrush &brush) { void RadialBlob::paint(Painter &p, const QBrush &brush, float outerScale) {
auto path = QPainterPath(); auto path = QPainterPath();
auto m = QMatrix(); auto m = QMatrix();
p.save(); p.save();
const auto scale = _minScale + _scale * (1. - _minScale); const auto scale = (_minScale + (1. - _minScale) * _scale) * outerScale;
if (scale != 1.) { if (scale != 1.) {
p.scale(scale, scale); p.scale(scale, scale);
} }

View file

@ -58,7 +58,7 @@ class RadialBlob final : public Blob {
public: public:
RadialBlob(int n, float minScale, float minSpeed = 0, float maxSpeed = 0); 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); void update(float level, float speedScale);
private: private:

View file

@ -65,7 +65,7 @@ void Blobs::setLevel(float value) {
_levelValue.start(to); _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(); const auto opacity = p.opacity();
for (auto i = 0; i < _blobs.size(); i++) { for (auto i = 0; i < _blobs.size(); i++) {
_blobs[i].update(_levelValue.current(), _blobDatas[i].speedScale); _blobs[i].update(_levelValue.current(), _blobDatas[i].speedScale);
@ -73,7 +73,7 @@ void Blobs::paint(Painter &p, const QBrush &brush) {
if (alpha != 1.) { if (alpha != 1.) {
p.setOpacity(opacity * alpha); p.setOpacity(opacity * alpha);
} }
_blobs[i].paint(p, brush); _blobs[i].paint(p, brush, outerScale);
if (alpha != 1.) { if (alpha != 1.) {
p.setOpacity(opacity); p.setOpacity(opacity);
} }

View file

@ -35,7 +35,7 @@ public:
Blob::Radiuses radiusesAt(int index); Blob::Radiuses radiusesAt(int index);
void setLevel(float value); 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); void updateLevel(crl::time dt);
[[nodiscard]] float maxRadius() const; [[nodiscard]] float maxRadius() const;