mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-06 15:13:57 +02:00
Moved out class for colored ministars to separate file.
This commit is contained in:
parent
56cbde93da
commit
65ad8e6ac1
4 changed files with 115 additions and 71 deletions
|
@ -20,7 +20,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#include "settings/settings_premium.h"
|
#include "settings/settings_premium.h"
|
||||||
#include "ui/basic_click_handlers.h" // UrlClickHandler::Open.
|
#include "ui/basic_click_handlers.h" // UrlClickHandler::Open.
|
||||||
#include "ui/effects/premium_graphics.h"
|
#include "ui/effects/premium_graphics.h"
|
||||||
#include "ui/effects/premium_stars.h"
|
#include "ui/effects/premium_stars_colored.h"
|
||||||
#include "ui/layers/generic_box.h"
|
#include "ui/layers/generic_box.h"
|
||||||
#include "ui/special_buttons.h"
|
#include "ui/special_buttons.h"
|
||||||
#include "ui/text/format_values.h"
|
#include "ui/text/format_values.h"
|
||||||
|
@ -90,76 +90,6 @@ GiftOptions GiftOptionFromTL(const MTPDuserFull &data) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
class ColoredMiniStars final {
|
|
||||||
public:
|
|
||||||
ColoredMiniStars(not_null<Ui::RpWidget*> parent);
|
|
||||||
|
|
||||||
void setSize(const QSize &size);
|
|
||||||
void setPosition(QPoint position);
|
|
||||||
void paint(Painter &p);
|
|
||||||
|
|
||||||
private:
|
|
||||||
Ui::Premium::MiniStars _ministars;
|
|
||||||
QRectF _ministarsRect;
|
|
||||||
QImage _frame;
|
|
||||||
QImage _mask;
|
|
||||||
QSize _size;
|
|
||||||
QPoint _position;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
ColoredMiniStars::ColoredMiniStars(not_null<Ui::RpWidget*> parent)
|
|
||||||
: _ministars([=](const QRect &r) {
|
|
||||||
parent->update(r.translated(_position));
|
|
||||||
}, true) {
|
|
||||||
}
|
|
||||||
|
|
||||||
void ColoredMiniStars::setSize(const QSize &size) {
|
|
||||||
_frame = QImage(
|
|
||||||
size * style::DevicePixelRatio(),
|
|
||||||
QImage::Format_ARGB32_Premultiplied);
|
|
||||||
_frame.setDevicePixelRatio(style::DevicePixelRatio());
|
|
||||||
|
|
||||||
_mask = _frame;
|
|
||||||
_mask.fill(Qt::transparent);
|
|
||||||
{
|
|
||||||
Painter p(&_mask);
|
|
||||||
auto gradient = QLinearGradient(0, 0, size.width(), 0);
|
|
||||||
gradient.setStops(Ui::Premium::GiftGradientStops());
|
|
||||||
p.setPen(Qt::NoPen);
|
|
||||||
p.setBrush(gradient);
|
|
||||||
p.drawRect(0, 0, size.width(), size.height());
|
|
||||||
}
|
|
||||||
|
|
||||||
_size = size;
|
|
||||||
|
|
||||||
{
|
|
||||||
const auto s = _size / Ui::Premium::MiniStars::kSizeFactor;
|
|
||||||
const auto margins = QMarginsF(
|
|
||||||
s.width() / 2.,
|
|
||||||
s.height() / 2.,
|
|
||||||
s.width() / 2.,
|
|
||||||
s.height() / 2.);
|
|
||||||
_ministarsRect = QRectF(QPointF(), _size) - margins;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ColoredMiniStars::setPosition(QPoint position) {
|
|
||||||
_position = std::move(position);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ColoredMiniStars::paint(Painter &p) {
|
|
||||||
_frame.fill(Qt::transparent);
|
|
||||||
{
|
|
||||||
Painter q(&_frame);
|
|
||||||
_ministars.paint(q, _ministarsRect);
|
|
||||||
q.setCompositionMode(QPainter::CompositionMode_SourceIn);
|
|
||||||
q.drawImage(0, 0, _mask);
|
|
||||||
}
|
|
||||||
|
|
||||||
p.drawImage(_position, _frame);
|
|
||||||
}
|
|
||||||
|
|
||||||
void GiftBox(
|
void GiftBox(
|
||||||
not_null<Ui::GenericBox*> box,
|
not_null<Ui::GenericBox*> box,
|
||||||
not_null<Window::SessionController*> controller,
|
not_null<Window::SessionController*> controller,
|
||||||
|
@ -182,6 +112,7 @@ void GiftBox(
|
||||||
+ userpicPadding.bottom()
|
+ userpicPadding.bottom()
|
||||||
+ st::defaultUserpicButton.size.height()));
|
+ st::defaultUserpicButton.size.height()));
|
||||||
|
|
||||||
|
using ColoredMiniStars = Ui::Premium::ColoredMiniStars;
|
||||||
const auto stars = box->lifetime().make_state<ColoredMiniStars>(top);
|
const auto stars = box->lifetime().make_state<ColoredMiniStars>(top);
|
||||||
|
|
||||||
const auto userpic = Ui::CreateChild<Ui::UserpicButton>(
|
const auto userpic = Ui::CreateChild<Ui::UserpicButton>(
|
||||||
|
|
73
Telegram/SourceFiles/ui/effects/premium_stars_colored.cpp
Normal file
73
Telegram/SourceFiles/ui/effects/premium_stars_colored.cpp
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
/*
|
||||||
|
This file is part of Telegram Desktop,
|
||||||
|
the official desktop application for the Telegram messaging service.
|
||||||
|
|
||||||
|
For license and copyright information please follow this link:
|
||||||
|
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
|
*/
|
||||||
|
#include "ui/effects/premium_stars_colored.h"
|
||||||
|
|
||||||
|
#include "ui/effects/premium_graphics.h" // GiftGradientStops.
|
||||||
|
#include "ui/rp_widget.h"
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
namespace Premium {
|
||||||
|
|
||||||
|
ColoredMiniStars::ColoredMiniStars(not_null<Ui::RpWidget*> parent)
|
||||||
|
: _ministars([=](const QRect &r) {
|
||||||
|
parent->update(r.translated(_position));
|
||||||
|
}, true) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void ColoredMiniStars::setSize(const QSize &size) {
|
||||||
|
_frame = QImage(
|
||||||
|
size * style::DevicePixelRatio(),
|
||||||
|
QImage::Format_ARGB32_Premultiplied);
|
||||||
|
_frame.setDevicePixelRatio(style::DevicePixelRatio());
|
||||||
|
|
||||||
|
_mask = _frame;
|
||||||
|
_mask.fill(Qt::transparent);
|
||||||
|
{
|
||||||
|
Painter p(&_mask);
|
||||||
|
auto gradient = QLinearGradient(0, 0, size.width(), 0);
|
||||||
|
gradient.setStops(Ui::Premium::GiftGradientStops());
|
||||||
|
p.setPen(Qt::NoPen);
|
||||||
|
p.setBrush(gradient);
|
||||||
|
p.drawRect(0, 0, size.width(), size.height());
|
||||||
|
}
|
||||||
|
|
||||||
|
_size = size;
|
||||||
|
|
||||||
|
{
|
||||||
|
const auto s = _size / Ui::Premium::MiniStars::kSizeFactor;
|
||||||
|
const auto margins = QMarginsF(
|
||||||
|
s.width() / 2.,
|
||||||
|
s.height() / 2.,
|
||||||
|
s.width() / 2.,
|
||||||
|
s.height() / 2.);
|
||||||
|
_ministarsRect = QRectF(QPointF(), _size) - margins;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ColoredMiniStars::setPosition(QPoint position) {
|
||||||
|
_position = std::move(position);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ColoredMiniStars::paint(Painter &p) {
|
||||||
|
_frame.fill(Qt::transparent);
|
||||||
|
{
|
||||||
|
Painter q(&_frame);
|
||||||
|
_ministars.paint(q, _ministarsRect);
|
||||||
|
q.setCompositionMode(QPainter::CompositionMode_SourceIn);
|
||||||
|
q.drawImage(0, 0, _mask);
|
||||||
|
}
|
||||||
|
|
||||||
|
p.drawImage(_position, _frame);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ColoredMiniStars::setPaused(bool paused) {
|
||||||
|
_ministars.setPaused(paused);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace Premium
|
||||||
|
} // namespace Ui
|
38
Telegram/SourceFiles/ui/effects/premium_stars_colored.h
Normal file
38
Telegram/SourceFiles/ui/effects/premium_stars_colored.h
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
This file is part of Telegram Desktop,
|
||||||
|
the official desktop application for the Telegram messaging service.
|
||||||
|
|
||||||
|
For license and copyright information please follow this link:
|
||||||
|
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "ui/effects/premium_stars.h"
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class RpWidget;
|
||||||
|
|
||||||
|
namespace Premium {
|
||||||
|
|
||||||
|
class ColoredMiniStars final {
|
||||||
|
public:
|
||||||
|
ColoredMiniStars(not_null<Ui::RpWidget*> parent);
|
||||||
|
|
||||||
|
void setSize(const QSize &size);
|
||||||
|
void setPosition(QPoint position);
|
||||||
|
void paint(Painter &p);
|
||||||
|
|
||||||
|
void setPaused(bool paused);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::Premium::MiniStars _ministars;
|
||||||
|
QRectF _ministarsRect;
|
||||||
|
QImage _frame;
|
||||||
|
QImage _mask;
|
||||||
|
QSize _size;
|
||||||
|
QPoint _position;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace Premium
|
||||||
|
} // namespace Ui
|
|
@ -234,6 +234,8 @@ PRIVATE
|
||||||
ui/effects/premium_graphics.h
|
ui/effects/premium_graphics.h
|
||||||
ui/effects/premium_stars.cpp
|
ui/effects/premium_stars.cpp
|
||||||
ui/effects/premium_stars.h
|
ui/effects/premium_stars.h
|
||||||
|
ui/effects/premium_stars_colored.cpp
|
||||||
|
ui/effects/premium_stars_colored.h
|
||||||
ui/effects/round_checkbox.cpp
|
ui/effects/round_checkbox.cpp
|
||||||
ui/effects/round_checkbox.h
|
ui/effects/round_checkbox.h
|
||||||
ui/effects/scroll_content_shadow.cpp
|
ui/effects/scroll_content_shadow.cpp
|
||||||
|
|
Loading…
Add table
Reference in a new issue