| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- /*
- 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/animations.h"
- namespace style {
- struct RoundCheckbox;
- struct RoundImageCheckbox;
- } // namespace style
- class Painter;
- enum class ImageRoundRadius;
- namespace Ui {
- struct OutlineSegment;
- class RoundCheckbox {
- public:
- RoundCheckbox(const style::RoundCheckbox &st, Fn<void()> updateCallback);
- void paint(QPainter &p, int x, int y, int outerWidth, float64 masterScale = 1.) const;
- void setDisplayInactive(bool displayInactive);
- bool checked() const {
- return _checked;
- }
- void setChecked(
- bool newChecked,
- anim::type animated = anim::type::normal);
- void invalidateCache();
- private:
- void prepareInactiveCache();
- const style::RoundCheckbox &_st;
- Fn<void()> _updateCallback;
- bool _checked = false;
- Ui::Animations::Simple _checkedProgress;
- bool _displayInactive = false;
- QPixmap _inactiveCacheBg, _inactiveCacheFg;
- };
- class RoundImageCheckbox {
- public:
- using PaintRoundImage = Fn<void(Painter &p, int x, int y, int outerWidth, int size)>;
- RoundImageCheckbox(
- const style::RoundImageCheckbox &st,
- Fn<void()> updateCallback,
- PaintRoundImage &&paintRoundImage,
- Fn<std::optional<int>(int size)> roundingRadius = nullptr);
- RoundImageCheckbox(RoundImageCheckbox&&);
- ~RoundImageCheckbox();
- void paint(Painter &p, int x, int y, int outerWidth) const;
- float64 checkedAnimationRatio() const;
- void setColorOverride(std::optional<QBrush> fg);
- void setCustomizedSegments(std::vector<OutlineSegment> segments);
- bool checked() const {
- return _check.checked();
- }
- void setChecked(
- bool newChecked,
- anim::type animated = anim::type::normal);
- void invalidateCache() {
- _check.invalidateCache();
- }
- private:
- void prepareWideCache();
- const style::RoundImageCheckbox &_st;
- Fn<void()> _updateCallback;
- PaintRoundImage _paintRoundImage;
- Fn<std::optional<int>(int size)> _roundingRadius;
- QPixmap _wideCache;
- Ui::Animations::Simple _selection;
- RoundCheckbox _check;
- //std::optional<QBrush> _fgOverride;
- std::vector<OutlineSegment> _segments;
- };
- } // namespace Ui
|