Files
tdesktop/Telegram/lib_ui/ui/paint/blobs_linear.h
allhaileris afb81b8278
Some checks failed
Docker. / Ubuntu (push) Has been cancelled
User-agent updater. / User-agent (push) Failing after 15s
Lock Threads / lock (push) Failing after 10s
Waiting for answer. / waiting-for-answer (push) Failing after 22s
Close stale issues and PRs / stale (push) Successful in 13s
Needs user action. / needs-user-action (push) Failing after 8s
Can't reproduce. / cant-reproduce (push) Failing after 8s
init
2026-02-16 15:50:16 +03:00

64 lines
1.3 KiB
C++

// This file is part of Desktop App Toolkit,
// a set of libraries for developing nice desktop applications.
//
// For license and copyright information please follow this link:
// https://github.com/desktop-app/legal/blob/master/LEGAL
//
#pragma once
#include "ui/effects/animation_value.h"
#include "ui/paint/blob.h"
namespace Ui::Paint {
class LinearBlobs final {
public:
struct BlobData {
int segmentsCount = 0;
float minRadius = 0;
float maxRadius = 0;
float idleRadius = 0;
float speedScale = 0;
float alpha = 0;
float minSpeed = 0;
float maxSpeed = 0;
};
LinearBlobs(
std::vector<BlobData> blobDatas,
float levelDuration,
float maxLevel,
LinearBlob::Direction direction);
void setRadiusesAt(
rpl::producer<Blob::Radiuses> &&radiuses,
int index);
Blob::Radiuses radiusesAt(int index);
void setLevel(float value);
void paint(QPainter &p, const QBrush &brush, int width);
void updateLevel(crl::time dt);
[[nodiscard]] float maxRadius() const;
[[nodiscard]] int size() const;
[[nodiscard]] float64 currentLevel() const;
static constexpr auto kHideBlobsDuration = 2000;
private:
void init();
const float _maxLevel;
const LinearBlob::Direction _direction;
std::vector<BlobData> _blobDatas;
std::vector<LinearBlob> _blobs;
anim::continuous_value _levelValue;
rpl::lifetime _lifetime;
};
} // namespace Ui::Paint