mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-16 14:17:12 +02:00
Added ability to provide custom gradient to colored premium stars.
This commit is contained in:
parent
2a224c839e
commit
53d97b4146
3 changed files with 14 additions and 9 deletions
|
@ -35,11 +35,14 @@ void ColoredMiniStars::setSize(const QSize &size) {
|
|||
_mask.fill(Qt::transparent);
|
||||
{
|
||||
auto p = QPainter(&_mask);
|
||||
if (_colorOverride) {
|
||||
p.fillRect(0, 0, size.width(), size.height(), *_colorOverride);
|
||||
if (_stopsOverride && _stopsOverride->size() == 1) {
|
||||
const auto &color = _stopsOverride->front().second;
|
||||
p.fillRect(0, 0, size.width(), size.height(), color);
|
||||
} else {
|
||||
auto gradient = QLinearGradient(0, 0, size.width(), 0);
|
||||
gradient.setStops(Ui::Premium::GiftGradientStops());
|
||||
gradient.setStops((_stopsOverride && _stopsOverride->size() > 1)
|
||||
? (*_stopsOverride)
|
||||
: Ui::Premium::GiftGradientStops());
|
||||
p.setPen(Qt::NoPen);
|
||||
p.setBrush(gradient);
|
||||
p.drawRect(0, 0, size.width(), size.height());
|
||||
|
@ -63,8 +66,8 @@ void ColoredMiniStars::setPosition(QPoint position) {
|
|||
_position = std::move(position);
|
||||
}
|
||||
|
||||
void ColoredMiniStars::setColorOverride(std::optional<QColor> color) {
|
||||
_colorOverride = color;
|
||||
void ColoredMiniStars::setColorOverride(std::optional<QGradientStops> stops) {
|
||||
_stopsOverride = stops;
|
||||
}
|
||||
|
||||
void ColoredMiniStars::paint(QPainter &p) {
|
||||
|
|
|
@ -21,7 +21,7 @@ public:
|
|||
|
||||
void setSize(const QSize &size);
|
||||
void setPosition(QPoint position);
|
||||
void setColorOverride(std::optional<QColor> color);
|
||||
void setColorOverride(std::optional<QGradientStops> stops);
|
||||
void setCenter(const QRect &rect);
|
||||
void paint(QPainter &p);
|
||||
|
||||
|
@ -34,7 +34,7 @@ private:
|
|||
QImage _mask;
|
||||
QSize _size;
|
||||
QPoint _position;
|
||||
std::optional<QColor> _colorOverride;
|
||||
std::optional<QGradientStops> _stopsOverride;
|
||||
|
||||
};
|
||||
|
||||
|
|
|
@ -202,10 +202,12 @@ TopBar::TopBar(
|
|||
|
||||
if (_logo == u"dollar"_q) {
|
||||
_dollar = ScaleTo(QImage(u":/gui/art/business_logo.png"_q));
|
||||
_ministars.setColorOverride(st::premiumButtonFg->c);
|
||||
_ministars.setColorOverride(
|
||||
QGradientStops{{ 0, st::premiumButtonFg->c }});
|
||||
} else if (!_light && !TopBarAbstract::isDark()) {
|
||||
_star.load(Svg());
|
||||
_ministars.setColorOverride(st::premiumButtonFg->c);
|
||||
_ministars.setColorOverride(
|
||||
QGradientStops{{ 0, st::premiumButtonFg->c }});
|
||||
} else {
|
||||
_star.load(ColorizedSvg());
|
||||
_ministars.setColorOverride(std::nullopt);
|
||||
|
|
Loading…
Add table
Reference in a new issue