diff --git a/Telegram/SourceFiles/api/api_chat_invite.cpp b/Telegram/SourceFiles/api/api_chat_invite.cpp index 3e96bf20f..3f954c6c6 100644 --- a/Telegram/SourceFiles/api/api_chat_invite.cpp +++ b/Telegram/SourceFiles/api/api_chat_invite.cpp @@ -12,6 +12,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "lang/lang_keys.h" #include "main/main_session.h" #include "ui/empty_userpic.h" +#include "ui/painter.h" #include "core/application.h" #include "data/data_session.h" #include "data/data_photo.h" diff --git a/Telegram/SourceFiles/boxes/add_contact_box.cpp b/Telegram/SourceFiles/boxes/add_contact_box.cpp index 4b9f93d16..f7b5d47ec 100644 --- a/Telegram/SourceFiles/boxes/add_contact_box.cpp +++ b/Telegram/SourceFiles/boxes/add_contact_box.cpp @@ -31,6 +31,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/text/text_utilities.h" #include "ui/unread_badge.h" #include "ui/ui_utility.h" +#include "ui/painter.h" #include "data/data_channel.h" #include "data/data_chat.h" #include "data/data_user.h" @@ -269,7 +270,7 @@ void AddContactBox::setInnerFocus() { void AddContactBox::paintEvent(QPaintEvent *e) { BoxContent::paintEvent(e); - Painter p(this); + auto p = QPainter(this); if (_retrying) { p.setPen(st::boxTextFg); p.setFont(st::boxTextFont); diff --git a/Telegram/SourceFiles/boxes/background_box.cpp b/Telegram/SourceFiles/boxes/background_box.cpp index e5c749b1f..a90f5a6ac 100644 --- a/Telegram/SourceFiles/boxes/background_box.cpp +++ b/Telegram/SourceFiles/boxes/background_box.cpp @@ -111,7 +111,7 @@ private: void requestPapers(); void sortPapers(); void paintPaper( - Painter &p, + QPainter &p, const Paper &paper, int column, int row) const; @@ -289,7 +289,7 @@ void BackgroundBox::Inner::resizeToContentAndPreload() { void BackgroundBox::Inner::paintEvent(QPaintEvent *e) { QRect r(e->rect()); - Painter p(this); + auto p = QPainter(this); if (_papers.empty()) { p.setFont(st::noContactsFont); @@ -361,7 +361,7 @@ void BackgroundBox::Inner::validatePaperThumbnail( } void BackgroundBox::Inner::paintPaper( - Painter &p, + QPainter &p, const Paper &paper, int column, int row) const { diff --git a/Telegram/SourceFiles/boxes/background_preview_box.cpp b/Telegram/SourceFiles/boxes/background_preview_box.cpp index 07f883b86..7e0be1f36 100644 --- a/Telegram/SourceFiles/boxes/background_preview_box.cpp +++ b/Telegram/SourceFiles/boxes/background_preview_box.cpp @@ -17,6 +17,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/toast/toast.h" #include "ui/image/image.h" #include "ui/widgets/checkbox.h" +#include "ui/painter.h" #include "ui/ui_utility.h" #include "history/history.h" #include "history/history_message.h" diff --git a/Telegram/SourceFiles/boxes/connection_box.cpp b/Telegram/SourceFiles/boxes/connection_box.cpp index ab8dd8ee4..7b4f14783 100644 --- a/Telegram/SourceFiles/boxes/connection_box.cpp +++ b/Telegram/SourceFiles/boxes/connection_box.cpp @@ -29,6 +29,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/text/text_options.h" #include "ui/text/text_utilities.h" #include "ui/basic_click_handlers.h" +#include "ui/painter.h" #include "boxes/abstract_box.h" // Ui::show(). #include "styles/style_layers.h" #include "styles/style_boxes.h" diff --git a/Telegram/SourceFiles/boxes/edit_caption_box.cpp b/Telegram/SourceFiles/boxes/edit_caption_box.cpp index 82dc9dc39..bbc185802 100644 --- a/Telegram/SourceFiles/boxes/edit_caption_box.cpp +++ b/Telegram/SourceFiles/boxes/edit_caption_box.cpp @@ -48,6 +48,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/effects/scroll_content_shadow.h" #include "ui/image/image.h" #include "ui/toast/toast.h" +#include "ui/painter.h" #include "ui/ui_utility.h" #include "ui/widgets/checkbox.h" #include "ui/widgets/input_fields.h" diff --git a/Telegram/SourceFiles/boxes/edit_color_box.cpp b/Telegram/SourceFiles/boxes/edit_color_box.cpp index cb87b2704..7d87d0943 100644 --- a/Telegram/SourceFiles/boxes/edit_color_box.cpp +++ b/Telegram/SourceFiles/boxes/edit_color_box.cpp @@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "lang/lang_keys.h" #include "ui/widgets/shadow.h" #include "ui/widgets/input_fields.h" +#include "ui/painter.h" #include "ui/ui_utility.h" #include "base/platform/base_platform_info.h" #include "styles/style_boxes.h" @@ -72,7 +73,7 @@ QCursor EditColorBox::Picker::generateCursor() { cursor.setDevicePixelRatio(cRetinaFactor()); cursor.fill(Qt::transparent); { - Painter p(&cursor); + auto p = QPainter(&cursor); PainterHighQualityEnabler hq(p); p.setBrush(Qt::NoBrush); @@ -102,7 +103,7 @@ EditColorBox::Picker::Picker(QWidget *parent, Mode mode, QColor color) } void EditColorBox::Picker::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); preparePalette(); @@ -360,7 +361,7 @@ void EditColorBox::Slider::prepareMinSize() { } void EditColorBox::Slider::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); auto to = rect().marginsRemoved(QMargins(st::colorSliderSkip, st::colorSliderSkip, st::colorSliderSkip, st::colorSliderSkip)); Ui::Shadow::paint(p, to, width(), st::defaultRoundShadow); if (_type == Type::Opacity) { @@ -573,7 +574,7 @@ public: protected: void correctValue(const QString &was, int wasCursor, QString &now, int &nowCursor) override; - void paintAdditionalPlaceholder(Painter &p) override; + void paintAdditionalPlaceholder(QPainter &p) override; void wheelEvent(QWheelEvent *e) override; void keyPressEvent(QKeyEvent *e) override; @@ -632,7 +633,7 @@ void EditColorBox::Field::correctValue(const QString &was, int wasCursor, QStrin } } -void EditColorBox::Field::paintAdditionalPlaceholder(Painter &p) { +void EditColorBox::Field::paintAdditionalPlaceholder(QPainter &p) { p.setFont(_st.font); p.setPen(_st.placeholderFg); auto inner = QRect(_st.textMargins.right(), _st.textMargins.top(), width() - 2 * _st.textMargins.right(), height() - _st.textMargins.top() - _st.textMargins.bottom()); @@ -696,7 +697,7 @@ public: protected: void correctValue(const QString &was, int wasCursor, QString &now, int &nowCursor) override; - void paintAdditionalPlaceholder(Painter &p) override; + void paintAdditionalPlaceholder(QPainter &p) override; }; @@ -737,7 +738,7 @@ void EditColorBox::ResultField::correctValue(const QString &was, int wasCursor, } } -void EditColorBox::ResultField::paintAdditionalPlaceholder(Painter &p) { +void EditColorBox::ResultField::paintAdditionalPlaceholder(QPainter &p) { p.setFont(_st.font); p.setPen(_st.placeholderFg); p.drawText(QRect(_st.textMargins.right(), _st.textMargins.top(), width(), height() - _st.textMargins.top() - _st.textMargins.bottom()), "#", style::al_topleft); diff --git a/Telegram/SourceFiles/boxes/filters/edit_filter_box.cpp b/Telegram/SourceFiles/boxes/filters/edit_filter_box.cpp index 175dbeb08..8a173ec7e 100644 --- a/Telegram/SourceFiles/boxes/filters/edit_filter_box.cpp +++ b/Telegram/SourceFiles/boxes/filters/edit_filter_box.cpp @@ -17,6 +17,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/effects/panel_animation.h" #include "ui/filter_icons.h" #include "ui/filter_icon_panel.h" +#include "ui/painter.h" #include "data/data_chat_filters.h" #include "data/data_peer.h" #include "data/data_peer_values.h" // Data::AmPremiumValue. diff --git a/Telegram/SourceFiles/boxes/filters/edit_filter_chats_list.cpp b/Telegram/SourceFiles/boxes/filters/edit_filter_chats_list.cpp index 7642c050a..54dd7898d 100644 --- a/Telegram/SourceFiles/boxes/filters/edit_filter_chats_list.cpp +++ b/Telegram/SourceFiles/boxes/filters/edit_filter_chats_list.cpp @@ -13,6 +13,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "lang/lang_keys.h" #include "ui/widgets/labels.h" #include "ui/wrap/vertical_layout.h" +#include "ui/painter.h" #include "main/main_app_config.h" #include "main/main_account.h" #include "main/main_session.h" @@ -125,7 +126,7 @@ QString TypeRow::generateShortName() { PaintRoundImageCallback TypeRow::generatePaintUserpicCallback() { const auto flag = this->flag(); - return [=](Painter &p, int x, int y, int outerWidth, int size) { + return [=](QPainter &p, int x, int y, int outerWidth, int size) { PaintFilterChatsTypeIcon(p, flag, x, y, outerWidth, size); }; } @@ -241,7 +242,7 @@ auto TypeController::rowSelectionChanges() const } void PaintFilterChatsTypeIcon( - Painter &p, + QPainter &p, Data::ChatFilter::Flag flag, int x, int y, diff --git a/Telegram/SourceFiles/boxes/filters/edit_filter_chats_list.h b/Telegram/SourceFiles/boxes/filters/edit_filter_chats_list.h index 5302480c3..f6a658672 100644 --- a/Telegram/SourceFiles/boxes/filters/edit_filter_chats_list.h +++ b/Telegram/SourceFiles/boxes/filters/edit_filter_chats_list.h @@ -28,7 +28,7 @@ class Painter; [[nodiscard]] QString FilterChatsTypeName(Data::ChatFilter::Flag flag); void PaintFilterChatsTypeIcon( - Painter &p, + QPainter &p, Data::ChatFilter::Flag flag, int x, int y, diff --git a/Telegram/SourceFiles/boxes/gift_premium_box.cpp b/Telegram/SourceFiles/boxes/gift_premium_box.cpp index 8c644b3b1..557717cbb 100644 --- a/Telegram/SourceFiles/boxes/gift_premium_box.cpp +++ b/Telegram/SourceFiles/boxes/gift_premium_box.cpp @@ -108,7 +108,7 @@ void GiftBox( top->paintRequest( ) | rpl::start_with_next([=](const QRect &r) { - Painter p(top); + auto p = QPainter(top); p.fillRect(r, Qt::transparent); stars->paint(p); diff --git a/Telegram/SourceFiles/boxes/language_box.cpp b/Telegram/SourceFiles/boxes/language_box.cpp index 43517b7bd..a02667ad2 100644 --- a/Telegram/SourceFiles/boxes/language_box.cpp +++ b/Telegram/SourceFiles/boxes/language_box.cpp @@ -21,6 +21,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/effects/ripple_animation.h" #include "ui/toast/toast.h" #include "ui/text/text_options.h" +#include "ui/painter.h" #include "storage/localstorage.h" #include "ui/boxes/confirm_box.h" #include "mainwidget.h" diff --git a/Telegram/SourceFiles/boxes/local_storage_box.cpp b/Telegram/SourceFiles/boxes/local_storage_box.cpp index 0662da271..bb38cf475 100644 --- a/Telegram/SourceFiles/boxes/local_storage_box.cpp +++ b/Telegram/SourceFiles/boxes/local_storage_box.cpp @@ -242,7 +242,7 @@ void LocalStorageBox::Row::paintEvent(QPaintEvent *e) { if (!_progress || true) { return; } - Painter p(this); + auto p = QPainter(this); const auto padding = st::localStorageRowPadding; const auto height = st::localStorageRowHeight; const auto bottom = height - padding.bottom() - _description->height(); @@ -595,12 +595,3 @@ void LocalStorageBox::save() { _session->data().cache().updateSettings(update); closeBox(); } - -void LocalStorageBox::paintEvent(QPaintEvent *e) { - BoxContent::paintEvent(e); - - Painter p(this); - - p.setFont(st::boxTextFont); - p.setPen(st::windowFg); -} diff --git a/Telegram/SourceFiles/boxes/local_storage_box.h b/Telegram/SourceFiles/boxes/local_storage_box.h index 8f1d2401f..61394f513 100644 --- a/Telegram/SourceFiles/boxes/local_storage_box.h +++ b/Telegram/SourceFiles/boxes/local_storage_box.h @@ -45,8 +45,6 @@ public: protected: void prepare() override; - void paintEvent(QPaintEvent *e) override; - private: class Row; diff --git a/Telegram/SourceFiles/boxes/max_invite_box.cpp b/Telegram/SourceFiles/boxes/max_invite_box.cpp index c9408aaec..7c8f29092 100644 --- a/Telegram/SourceFiles/boxes/max_invite_box.cpp +++ b/Telegram/SourceFiles/boxes/max_invite_box.cpp @@ -17,6 +17,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/layers/generic_box.h" #include "ui/text/text_utilities.h" #include "ui/toast/toast.h" +#include "ui/painter.h" #include "styles/style_layers.h" #include "styles/style_boxes.h" diff --git a/Telegram/SourceFiles/boxes/passcode_box.cpp b/Telegram/SourceFiles/boxes/passcode_box.cpp index 9e0de4239..dc71155f3 100644 --- a/Telegram/SourceFiles/boxes/passcode_box.cpp +++ b/Telegram/SourceFiles/boxes/passcode_box.cpp @@ -26,6 +26,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/sent_code_field.h" #include "ui/wrap/vertical_layout.h" #include "ui/wrap/fade_wrap.h" +#include "ui/painter.h" #include "passport/passport_encryption.h" #include "passport/passport_panel_edit_contact.h" #include "settings/settings_privacy_security.h" diff --git a/Telegram/SourceFiles/boxes/peer_list_box.cpp b/Telegram/SourceFiles/boxes/peer_list_box.cpp index 8a16ba1a7..caf058bbb 100644 --- a/Telegram/SourceFiles/boxes/peer_list_box.cpp +++ b/Telegram/SourceFiles/boxes/peer_list_box.cpp @@ -18,6 +18,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/empty_userpic.h" #include "ui/wrap/slide_wrap.h" #include "ui/text/text_options.h" +#include "ui/painter.h" #include "lang/lang_keys.h" #include "storage/file_download.h" #include "data/data_peer_values.h" @@ -37,11 +38,11 @@ PaintRoundImageCallback PaintUserpicCallback( bool respectSavedMessagesChat) { if (respectSavedMessagesChat) { if (peer->isSelf()) { - return [](Painter &p, int x, int y, int outerWidth, int size) { + return [](QPainter &p, int x, int y, int outerWidth, int size) { Ui::EmptyUserpic::PaintSavedMessages(p, x, y, outerWidth, size); }; } else if (peer->isRepliesChat()) { - return [](Painter &p, int x, int y, int outerWidth, int size) { + return [](QPainter &p, int x, int y, int outerWidth, int size) { Ui::EmptyUserpic::PaintRepliesMessages(p, x, y, outerWidth, size); }; } @@ -206,7 +207,7 @@ void PeerListBox::resizeEvent(QResizeEvent *e) { } void PeerListBox::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); const auto &bg = (_controller->listSt() ? *_controller->listSt() diff --git a/Telegram/SourceFiles/boxes/peer_list_controllers.cpp b/Telegram/SourceFiles/boxes/peer_list_controllers.cpp index d17c6bac1..9fac46ddc 100644 --- a/Telegram/SourceFiles/boxes/peer_list_controllers.cpp +++ b/Telegram/SourceFiles/boxes/peer_list_controllers.cpp @@ -11,6 +11,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "base/random.h" #include "ui/boxes/confirm_box.h" #include "ui/widgets/checkbox.h" +#include "ui/painter.h" #include "ui/ui_utility.h" #include "main/main_session.h" #include "data/data_session.h" diff --git a/Telegram/SourceFiles/boxes/peer_lists_box.cpp b/Telegram/SourceFiles/boxes/peer_lists_box.cpp index c8de74034..eb29c75d5 100644 --- a/Telegram/SourceFiles/boxes/peer_lists_box.cpp +++ b/Telegram/SourceFiles/boxes/peer_lists_box.cpp @@ -278,7 +278,7 @@ void PeerListsBox::resizeEvent(QResizeEvent *e) { } void PeerListsBox::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); const auto &bg = (firstController()->listSt() ? *firstController()->listSt() diff --git a/Telegram/SourceFiles/boxes/peers/edit_participant_box.cpp b/Telegram/SourceFiles/boxes/peers/edit_participant_box.cpp index 0e28840b6..79a885a23 100644 --- a/Telegram/SourceFiles/boxes/peers/edit_participant_box.cpp +++ b/Telegram/SourceFiles/boxes/peers/edit_participant_box.cpp @@ -21,6 +21,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/text/text_utilities.h" #include "ui/text/text_options.h" #include "ui/special_buttons.h" +#include "ui/painter.h" #include "chat_helpers/emoji_suggestions_widget.h" #include "settings/settings_privacy_security.h" #include "ui/boxes/choose_date_time.h" diff --git a/Telegram/SourceFiles/boxes/peers/edit_peer_invite_link.cpp b/Telegram/SourceFiles/boxes/peers/edit_peer_invite_link.cpp index 3b8e4a188..8fd5332ee 100644 --- a/Telegram/SourceFiles/boxes/peers/edit_peer_invite_link.cpp +++ b/Telegram/SourceFiles/boxes/peers/edit_peer_invite_link.cpp @@ -29,6 +29,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/toasts/common_toasts.h" #include "ui/text/text_utilities.h" #include "ui/boxes/edit_invite_link.h" +#include "ui/painter.h" #include "boxes/share_box.h" #include "history/view/history_view_group_call_bar.h" // GenerateUserpics... #include "history/history_message.h" // GetErrorTextForSending. diff --git a/Telegram/SourceFiles/boxes/peers/edit_peer_invite_links.cpp b/Telegram/SourceFiles/boxes/peers/edit_peer_invite_links.cpp index 02f64da22..332b226cd 100644 --- a/Telegram/SourceFiles/boxes/peers/edit_peer_invite_links.cpp +++ b/Telegram/SourceFiles/boxes/peers/edit_peer_invite_links.cpp @@ -17,6 +17,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/wrap/slide_wrap.h" #include "ui/widgets/buttons.h" #include "ui/widgets/popup_menu.h" +#include "ui/painter.h" #include "lang/lang_keys.h" #include "ui/boxes/confirm_box.h" #include "boxes/peer_list_controllers.h" @@ -328,7 +329,7 @@ QString Row::generateShortName() { PaintRoundImageCallback Row::generatePaintUserpicCallback() { return [=]( - Painter &p, + QPainter &p, int x, int y, int outerWidth, diff --git a/Telegram/SourceFiles/boxes/peers/edit_peer_requests_box.cpp b/Telegram/SourceFiles/boxes/peers/edit_peer_requests_box.cpp index 7ade95901..566351120 100644 --- a/Telegram/SourceFiles/boxes/peers/edit_peer_requests_box.cpp +++ b/Telegram/SourceFiles/boxes/peers/edit_peer_requests_box.cpp @@ -23,6 +23,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "mtproto/sender.h" #include "ui/text/text_utilities.h" #include "ui/toasts/common_toasts.h" +#include "ui/painter.h" #include "lang/lang_keys.h" #include "window/window_session_controller.h" #include "apiwrap.h" diff --git a/Telegram/SourceFiles/boxes/peers/peer_short_info_box.cpp b/Telegram/SourceFiles/boxes/peers/peer_short_info_box.cpp index 806be1f00..619542edb 100644 --- a/Telegram/SourceFiles/boxes/peers/peer_short_info_box.cpp +++ b/Telegram/SourceFiles/boxes/peers/peer_short_info_box.cpp @@ -15,6 +15,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/wrap/wrap.h" #include "ui/image/image_prepare.h" #include "ui/text/text_utilities.h" +#include "ui/painter.h" #include "info/profile/info_profile_text.h" #include "media/streaming/media_streaming_instance.h" #include "media/streaming/media_streaming_player.h" diff --git a/Telegram/SourceFiles/boxes/premium_preview_box.cpp b/Telegram/SourceFiles/boxes/premium_preview_box.cpp index 0c9b927b7..6daaa778b 100644 --- a/Telegram/SourceFiles/boxes/premium_preview_box.cpp +++ b/Telegram/SourceFiles/boxes/premium_preview_box.cpp @@ -31,6 +31,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/gradient_round_button.h" #include "ui/wrap/padding_wrap.h" #include "ui/boxes/confirm_box.h" +#include "ui/painter.h" #include "settings/settings_premium.h" #include "lottie/lottie_single_player.h" #include "history/view/media/history_view_sticker.h" diff --git a/Telegram/SourceFiles/boxes/reactions_settings_box.cpp b/Telegram/SourceFiles/boxes/reactions_settings_box.cpp index c4d3c3a2a..f13c27163 100644 --- a/Telegram/SourceFiles/boxes/reactions_settings_box.cpp +++ b/Telegram/SourceFiles/boxes/reactions_settings_box.cpp @@ -33,6 +33,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/scroll_area.h" #include "ui/wrap/vertical_layout.h" #include "ui/animated_icon.h" +#include "ui/painter.h" #include "window/section_widget.h" #include "window/window_session_controller.h" #include "styles/style_boxes.h" diff --git a/Telegram/SourceFiles/boxes/send_files_box.cpp b/Telegram/SourceFiles/boxes/send_files_box.cpp index 25119bb08..922c7cb89 100644 --- a/Telegram/SourceFiles/boxes/send_files_box.cpp +++ b/Telegram/SourceFiles/boxes/send_files_box.cpp @@ -45,6 +45,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/text/text_options.h" #include "ui/toast/toast.h" #include "ui/controls/emoji_button.h" +#include "ui/painter.h" #include "lottie/lottie_single_player.h" #include "data/data_document.h" #include "data/data_user.h" diff --git a/Telegram/SourceFiles/boxes/sessions_box.cpp b/Telegram/SourceFiles/boxes/sessions_box.cpp index e762a7b67..d74d26387 100644 --- a/Telegram/SourceFiles/boxes/sessions_box.cpp +++ b/Telegram/SourceFiles/boxes/sessions_box.cpp @@ -26,6 +26,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/wrap/padding_wrap.h" #include "ui/wrap/vertical_layout.h" #include "ui/layers/generic_box.h" +#include "ui/painter.h" #include "lottie/lottie_icon.h" #include "core/application.h" #include "core/core_settings.h" @@ -521,7 +522,7 @@ QString Row::generateShortName() { PaintRoundImageCallback Row::generatePaintUserpicCallback() { return [=]( - Painter &p, + QPainter &p, int x, int y, int outerWidth, diff --git a/Telegram/SourceFiles/boxes/share_box.cpp b/Telegram/SourceFiles/boxes/share_box.cpp index ddd06cb7d..3bdc09720 100644 --- a/Telegram/SourceFiles/boxes/share_box.cpp +++ b/Telegram/SourceFiles/boxes/share_box.cpp @@ -25,6 +25,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/wrap/slide_wrap.h" #include "ui/text/text_options.h" #include "ui/text/text_utilities.h" +#include "ui/painter.h" #include "chat_helpers/message_field.h" #include "menu/menu_check_item.h" #include "menu/menu_send.h" diff --git a/Telegram/SourceFiles/boxes/sticker_set_box.cpp b/Telegram/SourceFiles/boxes/sticker_set_box.cpp index ed7783548..1d9b42d90 100644 --- a/Telegram/SourceFiles/boxes/sticker_set_box.cpp +++ b/Telegram/SourceFiles/boxes/sticker_set_box.cpp @@ -31,6 +31,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/text/custom_emoji_instance.h" #include "ui/effects/path_shift_gradient.h" #include "ui/emoji_config.h" +#include "ui/painter.h" #include "ui/toast/toast.h" #include "ui/widgets/popup_menu.h" #include "ui/cached_round_corners.h" diff --git a/Telegram/SourceFiles/boxes/stickers_box.cpp b/Telegram/SourceFiles/boxes/stickers_box.cpp index bc2b89bf7..1ddfe0489 100644 --- a/Telegram/SourceFiles/boxes/stickers_box.cpp +++ b/Telegram/SourceFiles/boxes/stickers_box.cpp @@ -34,6 +34,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/input_fields.h" #include "ui/image/image.h" #include "ui/cached_round_corners.h" +#include "ui/painter.h" #include "window/window_session_controller.h" #include "media/clip/media_clip_reader.h" #include "main/main_session.h" @@ -330,7 +331,7 @@ StickersBox::CounterWidget::CounterWidget( void StickersBox::CounterWidget::setCounter(int counter) { _text = (counter > 0) ? QString::number(counter) : QString(); auto dummy = QImage(1, 1, QImage::Format_ARGB32_Premultiplied); - Painter p(&dummy); + auto p = QPainter(&dummy); const auto badge = Dialogs::Ui::PaintUnreadBadge(p, _text, 0, 0, _st); diff --git a/Telegram/SourceFiles/boxes/username_box.cpp b/Telegram/SourceFiles/boxes/username_box.cpp index 756216728..e61f0bc37 100644 --- a/Telegram/SourceFiles/boxes/username_box.cpp +++ b/Telegram/SourceFiles/boxes/username_box.cpp @@ -14,6 +14,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/fields/special_fields.h" #include "ui/toast/toast.h" #include "ui/text/text_utilities.h" +#include "ui/painter.h" #include "main/main_session.h" #include "data/data_session.h" #include "data/data_user.h" diff --git a/Telegram/SourceFiles/calls/calls_box_controller.cpp b/Telegram/SourceFiles/calls/calls_box_controller.cpp index c86d1e1aa..879d5edc7 100644 --- a/Telegram/SourceFiles/calls/calls_box_controller.cpp +++ b/Telegram/SourceFiles/calls/calls_box_controller.cpp @@ -12,6 +12,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/labels.h" #include "ui/widgets/checkbox.h" #include "ui/widgets/popup_menu.h" +#include "ui/painter.h" #include "core/application.h" #include "calls/calls_instance.h" #include "history/history.h" diff --git a/Telegram/SourceFiles/calls/calls_emoji_fingerprint.cpp b/Telegram/SourceFiles/calls/calls_emoji_fingerprint.cpp index 023499d2f..a39ae87ed 100644 --- a/Telegram/SourceFiles/calls/calls_emoji_fingerprint.cpp +++ b/Telegram/SourceFiles/calls/calls_emoji_fingerprint.cpp @@ -13,6 +13,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "data/data_user.h" #include "ui/widgets/tooltip.h" #include "ui/emoji_config.h" +#include "ui/painter.h" #include "ui/rp_widget.h" #include "styles/style_calls.h" diff --git a/Telegram/SourceFiles/calls/calls_panel.cpp b/Telegram/SourceFiles/calls/calls_panel.cpp index 853804b8e..5b820c30c 100644 --- a/Telegram/SourceFiles/calls/calls_panel.cpp +++ b/Telegram/SourceFiles/calls/calls_panel.cpp @@ -38,6 +38,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/toast/toast.h" #include "ui/empty_userpic.h" #include "ui/emoji_config.h" +#include "ui/painter.h" #include "core/application.h" #include "lang/lang_keys.h" #include "main/main_session.h" @@ -771,7 +772,7 @@ void Panel::updateStatusGeometry() { } void Panel::paint(QRect clip) { - Painter p(widget()); + auto p = QPainter(widget()); auto region = QRegion(clip); if (!_incoming->widget()->isHidden()) { diff --git a/Telegram/SourceFiles/calls/calls_signal_bars.cpp b/Telegram/SourceFiles/calls/calls_signal_bars.cpp index 370f0b885..9d2f3c870 100644 --- a/Telegram/SourceFiles/calls/calls_signal_bars.cpp +++ b/Telegram/SourceFiles/calls/calls_signal_bars.cpp @@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "calls/calls_signal_bars.h" #include "calls/calls_call.h" +#include "ui/painter.h" #include "styles/style_calls.h" namespace Calls { @@ -29,7 +30,7 @@ SignalBars::SignalBars( } void SignalBars::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); PainterHighQualityEnabler hq(p); p.setPen(Qt::NoPen); diff --git a/Telegram/SourceFiles/calls/calls_top_bar.cpp b/Telegram/SourceFiles/calls/calls_top_bar.cpp index da26bc1be..93012c43c 100644 --- a/Telegram/SourceFiles/calls/calls_top_bar.cpp +++ b/Telegram/SourceFiles/calls/calls_top_bar.cpp @@ -204,7 +204,7 @@ public: protected: bool eventFilter(QObject *object, QEvent *event) { if (event->type() == QEvent::Paint) { - Painter p(this); + auto p = QPainter(this); paintRipple( p, _st.rippleAreaPosition.x(), @@ -545,7 +545,7 @@ void TopBar::initBlobsUnder( return; } - Painter p(_blobs); + auto p = QPainter(_blobs); if (hidden > 0.) { p.setOpacity(1. - hidden); } @@ -751,7 +751,7 @@ void TopBar::updateControlsGeometry() { } void TopBar::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); auto brush = _groupCall ? _groupBrush : (_muted ? st::callBarBgMuted : st::callBarBg); diff --git a/Telegram/SourceFiles/calls/calls_userpic.cpp b/Telegram/SourceFiles/calls/calls_userpic.cpp index cca9a096c..1a47e8f36 100644 --- a/Telegram/SourceFiles/calls/calls_userpic.cpp +++ b/Telegram/SourceFiles/calls/calls_userpic.cpp @@ -16,6 +16,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "data/data_photo_media.h" #include "data/data_file_origin.h" #include "ui/empty_userpic.h" +#include "ui/painter.h" #include "apiwrap.h" // requestFullPeer. #include "styles/style_calls.h" @@ -90,7 +91,7 @@ void Userpic::setMuteLayout(QPoint position, int size, int stroke) { } void Userpic::paint() { - Painter p(&_content); + auto p = QPainter(&_content); p.drawPixmap(0, 0, _userPhoto); if (_muted && _muteSize > 0) { @@ -194,7 +195,7 @@ void Userpic::createCache(Image *image) { filled.setDevicePixelRatio(cRetinaFactor()); filled.fill(Qt::transparent); { - Painter p(&filled); + auto p = QPainter(&filled); Ui::EmptyUserpic( Data::PeerUserpicColor(_peer->id), _peer->name() diff --git a/Telegram/SourceFiles/calls/calls_video_bubble.cpp b/Telegram/SourceFiles/calls/calls_video_bubble.cpp index c137b52e0..476d6cb3d 100644 --- a/Telegram/SourceFiles/calls/calls_video_bubble.cpp +++ b/Telegram/SourceFiles/calls/calls_video_bubble.cpp @@ -119,7 +119,7 @@ void VideoBubble::applySizeConstraints(QSize min, QSize max) { } void VideoBubble::paint() { - Painter p(&_content); + auto p = QPainter(&_content); prepareFrame(); if (!_frame.isNull()) { diff --git a/Telegram/SourceFiles/calls/calls_video_incoming.cpp b/Telegram/SourceFiles/calls/calls_video_incoming.cpp index 75ad8e6e8..916a058dd 100644 --- a/Telegram/SourceFiles/calls/calls_video_incoming.cpp +++ b/Telegram/SourceFiles/calls/calls_video_incoming.cpp @@ -11,6 +11,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/gl/gl_shader.h" #include "ui/gl/gl_image.h" #include "ui/gl/gl_primitives.h" +#include "ui/painter.h" #include "media/view/media_view_pip.h" #include "webrtc/webrtc_video_track.h" #include "styles/style_calls.h" diff --git a/Telegram/SourceFiles/calls/group/calls_group_members.cpp b/Telegram/SourceFiles/calls/group/calls_group_members.cpp index 4706060f5..cd9069451 100644 --- a/Telegram/SourceFiles/calls/group/calls_group_members.cpp +++ b/Telegram/SourceFiles/calls/group/calls_group_members.cpp @@ -27,6 +27,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/popup_menu.h" #include "ui/effects/ripple_animation.h" #include "ui/effects/cross_line.h" +#include "ui/painter.h" #include "core/application.h" // Core::App().domain, .activeWindow. #include "main/main_domain.h" // Core::App().domain().activate. #include "main/main_session.h" @@ -86,11 +87,11 @@ public: void rowUpdateRow(not_null row) override; void rowScheduleRaisedHandStatusRemove(not_null row) override; void rowPaintIcon( - Painter &p, + QPainter &p, QRect rect, const IconState &state) override; int rowPaintStatusIcon( - Painter &p, + QPainter &p, int x, int y, int outerWidth, @@ -962,7 +963,7 @@ void Members::Controller::scheduleRaisedHandStatusRemove() { } void Members::Controller::rowPaintIcon( - Painter &p, + QPainter &p, QRect rect, const IconState &state) { if (_mode == PanelMode::Wide @@ -1074,7 +1075,7 @@ void Members::Controller::rowPaintIcon( } int Members::Controller::rowPaintStatusIcon( - Painter &p, + QPainter &p, int x, int y, int outerWidth, diff --git a/Telegram/SourceFiles/calls/group/calls_group_members_row.cpp b/Telegram/SourceFiles/calls/group/calls_group_members_row.cpp index aaa7a9cea..9f5e0a4a4 100644 --- a/Telegram/SourceFiles/calls/group/calls_group_members_row.cpp +++ b/Telegram/SourceFiles/calls/group/calls_group_members_row.cpp @@ -15,6 +15,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/paint/blobs.h" #include "ui/text/text_options.h" #include "ui/effects/ripple_animation.h" +#include "ui/painter.h" #include "lang/lang_keys.h" #include "webrtc/webrtc_video_track.h" #include "styles/style_calls.h" @@ -441,7 +442,7 @@ void MembersRow::paintScaledUserpic( } void MembersRow::paintMuteIcon( - Painter &p, + QPainter &p, QRect iconRect, MembersRowStyle style) { _delegate->rowPaintIcon(p, iconRect, computeIconState(style)); diff --git a/Telegram/SourceFiles/calls/group/calls_group_members_row.h b/Telegram/SourceFiles/calls/group/calls_group_members_row.h index 85f57664d..123ca3ec8 100644 --- a/Telegram/SourceFiles/calls/group/calls_group_members_row.h +++ b/Telegram/SourceFiles/calls/group/calls_group_members_row.h @@ -47,11 +47,11 @@ public: virtual void rowScheduleRaisedHandStatusRemove( not_null row) = 0; virtual void rowPaintIcon( - Painter &p, + QPainter &p, QRect rect, const IconState &state) = 0; virtual int rowPaintStatusIcon( - Painter &p, + QPainter &p, int x, int y, int outerWidth, @@ -150,7 +150,7 @@ public: bool selected, MembersRowStyle style); void paintMuteIcon( - Painter &p, + QPainter &p, QRect iconRect, MembersRowStyle style = MembersRowStyle::Default); [[nodiscard]] MembersRowDelegate::IconState computeIconState( diff --git a/Telegram/SourceFiles/calls/group/calls_group_menu.cpp b/Telegram/SourceFiles/calls/group/calls_group_menu.cpp index 4fe0137b0..9b97c34f3 100644 --- a/Telegram/SourceFiles/calls/group/calls_group_menu.cpp +++ b/Telegram/SourceFiles/calls/group/calls_group_menu.cpp @@ -22,6 +22,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/input_fields.h" #include "ui/effects/ripple_animation.h" #include "ui/layers/generic_box.h" +#include "ui/painter.h" #include "lang/lang_keys.h" #include "base/unixtime.h" #include "base/timer_rpl.h" diff --git a/Telegram/SourceFiles/calls/group/calls_group_panel.cpp b/Telegram/SourceFiles/calls/group/calls_group_panel.cpp index 6a79a66db..c1a0b01d5 100644 --- a/Telegram/SourceFiles/calls/group/calls_group_panel.cpp +++ b/Telegram/SourceFiles/calls/group/calls_group_panel.cpp @@ -33,6 +33,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/toast/toast.h" #include "ui/toasts/common_toasts.h" #include "ui/image/image_prepare.h" +#include "ui/painter.h" #include "ui/round_rect.h" #include "ui/special_buttons.h" #include "info/profile/info_profile_values.h" // Info::Profile::Value. @@ -2528,7 +2529,7 @@ void Panel::refreshTitleColors() { } void Panel::paint(QRect clip) { - Painter p(widget()); + auto p = QPainter(widget()); auto region = QRegion(clip); for (const auto &rect : region) { diff --git a/Telegram/SourceFiles/calls/group/calls_group_viewport_opengl.cpp b/Telegram/SourceFiles/calls/group/calls_group_viewport_opengl.cpp index 9aa0a96b1..2b6d91d6d 100644 --- a/Telegram/SourceFiles/calls/group/calls_group_viewport_opengl.cpp +++ b/Telegram/SourceFiles/calls/group/calls_group_viewport_opengl.cpp @@ -14,6 +14,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "calls/group/calls_group_members_row.h" #include "lang/lang_keys.h" #include "ui/gl/gl_shader.h" +#include "ui/painter.h" #include "data/data_peer.h" #include "styles/style_calls.h" diff --git a/Telegram/SourceFiles/calls/group/calls_group_viewport_raster.cpp b/Telegram/SourceFiles/calls/group/calls_group_viewport_raster.cpp index 6987f7c12..6c67b9fe8 100644 --- a/Telegram/SourceFiles/calls/group/calls_group_viewport_raster.cpp +++ b/Telegram/SourceFiles/calls/group/calls_group_viewport_raster.cpp @@ -14,6 +14,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "media/view/media_view_pip.h" #include "webrtc/webrtc_video_track.h" #include "ui/image/image_prepare.h" +#include "ui/painter.h" #include "lang/lang_keys.h" #include "styles/style_calls.h" #include "styles/palette.h" diff --git a/Telegram/SourceFiles/calls/group/calls_group_viewport_tile.cpp b/Telegram/SourceFiles/calls/group/calls_group_viewport_tile.cpp index 8c1090dc4..58ac0fb9d 100644 --- a/Telegram/SourceFiles/calls/group/calls_group_viewport_tile.cpp +++ b/Telegram/SourceFiles/calls/group/calls_group_viewport_tile.cpp @@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "webrtc/webrtc_video_track.h" #include "lang/lang_keys.h" #include "ui/round_rect.h" +#include "ui/painter.h" #include "ui/effects/cross_line.h" #include "styles/style_calls.h" diff --git a/Telegram/SourceFiles/calls/group/calls_volume_item.cpp b/Telegram/SourceFiles/calls/group/calls_volume_item.cpp index 1bf505de5..5942a97e7 100644 --- a/Telegram/SourceFiles/calls/group/calls_volume_item.cpp +++ b/Telegram/SourceFiles/calls/group/calls_volume_item.cpp @@ -88,7 +88,7 @@ MenuVolumeItem::MenuVolumeItem( paintRequest( ) | rpl::start_with_next([=](const QRect &clip) { - Painter p(this); + auto p = QPainter(this); const auto volume = _localMuted ? 0 diff --git a/Telegram/SourceFiles/calls/group/ui/calls_group_recording_box.cpp b/Telegram/SourceFiles/calls/group/ui/calls_group_recording_box.cpp index d73202ccc..5d084bb37 100644 --- a/Telegram/SourceFiles/calls/group/ui/calls_group_recording_box.cpp +++ b/Telegram/SourceFiles/calls/group/ui/calls_group_recording_box.cpp @@ -107,7 +107,7 @@ void GraphicButton::setToggled(bool value) { } void GraphicButton::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); const auto progress = _animation.value(_toggled ? 1. : 0.); p.setOpacity(progress); _roundRectSelect.paint(p, rect()); diff --git a/Telegram/SourceFiles/calls/group/ui/calls_group_scheduled_labels.cpp b/Telegram/SourceFiles/calls/group/ui/calls_group_scheduled_labels.cpp index aa793b6e6..dcd7aa762 100644 --- a/Telegram/SourceFiles/calls/group/ui/calls_group_scheduled_labels.cpp +++ b/Telegram/SourceFiles/calls/group/ui/calls_group_scheduled_labels.cpp @@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "calls/group/ui/calls_group_scheduled_labels.h" #include "ui/rp_widget.h" +#include "ui/painter.h" #include "lang/lang_keys.h" #include "base/unixtime.h" #include "base/timer_rpl.h" diff --git a/Telegram/SourceFiles/calls/group/ui/desktop_capture_choose_source.cpp b/Telegram/SourceFiles/calls/group/ui/desktop_capture_choose_source.cpp index 249696f8b..0c77bbeb1 100644 --- a/Telegram/SourceFiles/calls/group/ui/desktop_capture_choose_source.cpp +++ b/Telegram/SourceFiles/calls/group/ui/desktop_capture_choose_source.cpp @@ -15,6 +15,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/effects/ripple_animation.h" #include "ui/image/image.h" #include "ui/platform/ui_platform_window_title.h" +#include "ui/painter.h" #include "base/platform/base_platform_info.h" #include "webrtc/webrtc_video_track.h" #include "lang/lang_keys.h" diff --git a/Telegram/SourceFiles/chat_helpers/bot_keyboard.cpp b/Telegram/SourceFiles/chat_helpers/bot_keyboard.cpp index 1ef82785a..b83db33c7 100644 --- a/Telegram/SourceFiles/chat_helpers/bot_keyboard.cpp +++ b/Telegram/SourceFiles/chat_helpers/bot_keyboard.cpp @@ -15,6 +15,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "main/main_session.h" #include "window/window_session_controller.h" #include "ui/cached_round_corners.h" +#include "ui/painter.h" #include "api/api_bot.h" #include "styles/style_widgets.h" #include "styles/style_chat.h" @@ -29,24 +30,24 @@ public: int buttonRadius() const override; - void startPaint(Painter &p, const Ui::ChatStyle *st) const override; + void startPaint(QPainter &p, const Ui::ChatStyle *st) const override; const style::TextStyle &textStyle() const override; void repaint(not_null item) const override; protected: void paintButtonBg( - Painter &p, + QPainter &p, const Ui::ChatStyle *st, const QRect &rect, float64 howMuchOver) const override; void paintButtonIcon( - Painter &p, + QPainter &p, const Ui::ChatStyle *st, const QRect &rect, int outerWidth, HistoryMessageMarkupButton::Type type) const override; void paintButtonLoading( - Painter &p, + QPainter &p, const Ui::ChatStyle *st, const QRect &rect) const override; int minButtonWidth(HistoryMessageMarkupButton::Type type) const override; @@ -62,7 +63,7 @@ Style::Style( : ReplyKeyboard::Style(st), _parent(parent) { } -void Style::startPaint(Painter &p, const Ui::ChatStyle *st) const { +void Style::startPaint(QPainter &p, const Ui::ChatStyle *st) const { p.setPen(st::botKbColor); p.setFont(st::botKbStyle.font); } @@ -80,7 +81,7 @@ int Style::buttonRadius() const { } void Style::paintButtonBg( - Painter &p, + QPainter &p, const Ui::ChatStyle *st, const QRect &rect, float64 howMuchOver) const { @@ -88,7 +89,7 @@ void Style::paintButtonBg( } void Style::paintButtonIcon( - Painter &p, + QPainter &p, const Ui::ChatStyle *st, const QRect &rect, int outerWidth, @@ -97,7 +98,7 @@ void Style::paintButtonIcon( } void Style::paintButtonLoading( - Painter &p, + QPainter &p, const Ui::ChatStyle *st, const QRect &rect) const { // Buttons with loading progress should not appear here. diff --git a/Telegram/SourceFiles/chat_helpers/emoji_list_widget.cpp b/Telegram/SourceFiles/chat_helpers/emoji_list_widget.cpp index cbbaf421a..bd3e142e0 100644 --- a/Telegram/SourceFiles/chat_helpers/emoji_list_widget.cpp +++ b/Telegram/SourceFiles/chat_helpers/emoji_list_widget.cpp @@ -17,6 +17,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/effects/ripple_animation.h" #include "ui/effects/premium_graphics.h" #include "ui/emoji_config.h" +#include "ui/painter.h" #include "ui/ui_utility.h" #include "ui/cached_round_corners.h" #include "boxes/sticker_set_box.h" @@ -77,7 +78,7 @@ private: void animationCallback(); void updateSize(); - void drawVariant(Painter &p, int variant); + void drawVariant(QPainter &p, int variant); void updateSelected(); void setSelected(int newSelected); @@ -152,7 +153,7 @@ void EmojiColorPicker::updateSize() { } void EmojiColorPicker::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); auto opacity = _a_opacity.value(_hiding ? 0. : 1.); if (opacity < 1.) { @@ -336,7 +337,7 @@ void EmojiColorPicker::setSelected(int newSelected) { setCursor((_selected >= 0) ? style::cur_pointer : style::cur_default); } -void EmojiColorPicker::drawVariant(Painter &p, int variant) { +void EmojiColorPicker::drawVariant(QPainter &p, int variant) { const auto w = QPoint( st::emojiPanMargins.left(), st::emojiPanMargins.top() @@ -825,7 +826,7 @@ base::unique_qptr EmojiListWidget::fillContextMenu( } void EmojiListWidget::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); const auto clip = e ? e->rect() : rect(); diff --git a/Telegram/SourceFiles/chat_helpers/emoji_sets_manager.cpp b/Telegram/SourceFiles/chat_helpers/emoji_sets_manager.cpp index c20201bd6..831a9ca96 100644 --- a/Telegram/SourceFiles/chat_helpers/emoji_sets_manager.cpp +++ b/Telegram/SourceFiles/chat_helpers/emoji_sets_manager.cpp @@ -15,6 +15,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/effects/animations.h" #include "ui/effects/radial_animation.h" #include "ui/emoji_config.h" +#include "ui/painter.h" #include "ui/ui_utility.h" #include "core/application.h" #include "lang/lang_keys.h" @@ -93,8 +94,8 @@ private: void setupLabels(const Set &set); void setupPreview(const Set &set); void setupAnimation(); - void paintPreview(Painter &p) const; - void paintRadio(Painter &p); + void paintPreview(QPainter &p) const; + void paintRadio(QPainter &p); void setupHandler(); void load(); void radialAnimationCallback(crl::time now); @@ -230,7 +231,7 @@ Row::Row(QWidget *widget, not_null session, const Set &set) } void Row::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); const auto over = showOver(); const auto bg = over ? st::windowBgOver : st::windowBg; @@ -241,7 +242,7 @@ void Row::paintEvent(QPaintEvent *e) { paintRadio(p); } -void Row::paintPreview(Painter &p) const { +void Row::paintPreview(QPainter &p) const { const auto x = st::manageEmojiPreviewPadding.left(); const auto y = st::manageEmojiPreviewPadding.top(); const auto width = st::manageEmojiPreviewWidth; @@ -256,7 +257,7 @@ void Row::paintPreview(Painter &p) const { } } -void Row::paintRadio(Painter &p) { +void Row::paintRadio(QPainter &p) { if (_loading && !_loading->animating()) { _loading = nullptr; } diff --git a/Telegram/SourceFiles/chat_helpers/emoji_suggestions_widget.cpp b/Telegram/SourceFiles/chat_helpers/emoji_suggestions_widget.cpp index 162f66e82..42641fbc4 100644 --- a/Telegram/SourceFiles/chat_helpers/emoji_suggestions_widget.cpp +++ b/Telegram/SourceFiles/chat_helpers/emoji_suggestions_widget.cpp @@ -315,7 +315,7 @@ void SuggestionsWidget::scrollByWheelEvent(not_null e) { } void SuggestionsWidget::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); _repaintScheduled = false; @@ -363,7 +363,7 @@ void SuggestionsWidget::paintEvent(QPaintEvent *e) { paintFadings(p); } -void SuggestionsWidget::paintFadings(Painter &p) const { +void SuggestionsWidget::paintFadings(QPainter &p) const { const auto scroll = scrollCurrent(); const auto o_left = std::clamp( scroll / float64(st::emojiSuggestionsFadeAfter), diff --git a/Telegram/SourceFiles/chat_helpers/emoji_suggestions_widget.h b/Telegram/SourceFiles/chat_helpers/emoji_suggestions_widget.h index 97eef2d2b..513fb518d 100644 --- a/Telegram/SourceFiles/chat_helpers/emoji_suggestions_widget.h +++ b/Telegram/SourceFiles/chat_helpers/emoji_suggestions_widget.h @@ -77,7 +77,7 @@ private: void leaveEventHook(QEvent *e) override; void scrollByWheelEvent(not_null e); - void paintFadings(Painter &p) const; + void paintFadings(QPainter &p) const; [[nodiscard]] std::vector getRowsByQuery(const QString &text) const; [[nodiscard]] base::flat_multi_map lookupCustom( diff --git a/Telegram/SourceFiles/chat_helpers/field_autocomplete.cpp b/Telegram/SourceFiles/chat_helpers/field_autocomplete.cpp index 8044aabfc..57c394993 100644 --- a/Telegram/SourceFiles/chat_helpers/field_autocomplete.cpp +++ b/Telegram/SourceFiles/chat_helpers/field_autocomplete.cpp @@ -35,6 +35,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/text/text_options.h" #include "ui/image/image.h" #include "ui/effects/path_shift_gradient.h" +#include "ui/painter.h" #include "ui/ui_utility.h" #include "ui/cached_round_corners.h" #include "base/unixtime.h" diff --git a/Telegram/SourceFiles/chat_helpers/gifs_list_widget.cpp b/Telegram/SourceFiles/chat_helpers/gifs_list_widget.cpp index 0f49f2580..2a4fbc66c 100644 --- a/Telegram/SourceFiles/chat_helpers/gifs_list_widget.cpp +++ b/Telegram/SourceFiles/chat_helpers/gifs_list_widget.cpp @@ -25,6 +25,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/popup_menu.h" #include "ui/effects/ripple_animation.h" #include "ui/image/image.h" +#include "ui/painter.h" #include "boxes/stickers_box.h" #include "inline_bots/inline_bot_result.h" #include "storage/localstorage.h" diff --git a/Telegram/SourceFiles/chat_helpers/stickers_list_footer.cpp b/Telegram/SourceFiles/chat_helpers/stickers_list_footer.cpp index 3bd9a15ae..770d52974 100644 --- a/Telegram/SourceFiles/chat_helpers/stickers_list_footer.cpp +++ b/Telegram/SourceFiles/chat_helpers/stickers_list_footer.cpp @@ -21,6 +21,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "lottie/lottie_single_player.h" #include "ui/widgets/input_fields.h" #include "ui/widgets/buttons.h" +#include "ui/painter.h" #include "ui/rect_part.h" #include "styles/style_chat_helpers.h" diff --git a/Telegram/SourceFiles/chat_helpers/stickers_list_widget.cpp b/Telegram/SourceFiles/chat_helpers/stickers_list_widget.cpp index 19e9b15fb..2e989cb84 100644 --- a/Telegram/SourceFiles/chat_helpers/stickers_list_widget.cpp +++ b/Telegram/SourceFiles/chat_helpers/stickers_list_widget.cpp @@ -38,6 +38,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "boxes/sticker_set_box.h" #include "boxes/stickers_box.h" #include "ui/boxes/confirm_box.h" +#include "ui/painter.h" #include "window/window_session_controller.h" // GifPauseReason. #include "main/main_session.h" #include "main/main_session_settings.h" diff --git a/Telegram/SourceFiles/chat_helpers/stickers_lottie.cpp b/Telegram/SourceFiles/chat_helpers/stickers_lottie.cpp index 9e3d23ce2..62e437dae 100644 --- a/Telegram/SourceFiles/chat_helpers/stickers_lottie.cpp +++ b/Telegram/SourceFiles/chat_helpers/stickers_lottie.cpp @@ -18,6 +18,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "history/view/media/history_view_media_common.h" #include "media/clip/media_clip_reader.h" #include "ui/effects/path_shift_gradient.h" +#include "ui/painter.h" #include "main/main_session.h" namespace ChatHelpers { diff --git a/Telegram/SourceFiles/chat_helpers/tabbed_panel.cpp b/Telegram/SourceFiles/chat_helpers/tabbed_panel.cpp index 6c1800e51..4c51ae41a 100644 --- a/Telegram/SourceFiles/chat_helpers/tabbed_panel.cpp +++ b/Telegram/SourceFiles/chat_helpers/tabbed_panel.cpp @@ -196,7 +196,7 @@ void TabbedPanel::updateContentHeight() { } void TabbedPanel::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); // This call can finish _a_show animation and destroy _showAnimation. auto opacityAnimating = _a_opacity.animating(); diff --git a/Telegram/SourceFiles/chat_helpers/tabbed_selector.cpp b/Telegram/SourceFiles/chat_helpers/tabbed_selector.cpp index 25c2830db..2d36ddacf 100644 --- a/Telegram/SourceFiles/chat_helpers/tabbed_selector.cpp +++ b/Telegram/SourceFiles/chat_helpers/tabbed_selector.cpp @@ -163,7 +163,7 @@ void TabbedSelector::SlideAnimation::paintFrame(QPainter &p, float64 dt, float64 _frame.fill(Qt::transparent); } { - Painter p(&_frame); + auto p = QPainter(&_frame); p.setOpacity(opacity); p.fillRect(_painterInnerLeft, _painterInnerTop, _painterInnerWidth, _painterCategoriesTop - _painterInnerTop, st::emojiPanBg); p.fillRect(_painterInnerLeft, _painterCategoriesTop, _painterInnerWidth, _painterInnerBottom - _painterCategoriesTop, _wasSectionIcons ? st::emojiPanCategories : st::emojiPanBg); @@ -620,7 +620,7 @@ void TabbedSelector::updateRestrictedLabelGeometry() { } void TabbedSelector::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); auto switching = (_slideAnimation != nullptr); if (switching) { @@ -635,7 +635,7 @@ void TabbedSelector::paintEvent(QPaintEvent *e) { } } -void TabbedSelector::paintSlideFrame(Painter &p) { +void TabbedSelector::paintSlideFrame(QPainter &p) { if (_roundRadius > 0) { paintBgRoundedPart(p); } else if (_tabsSlider) { @@ -645,7 +645,7 @@ void TabbedSelector::paintSlideFrame(Painter &p) { _slideAnimation->paintFrame(p, slideDt, 1.); } -void TabbedSelector::paintBgRoundedPart(Painter &p) { +void TabbedSelector::paintBgRoundedPart(QPainter &p) { const auto threeRadius = 3 * _roundRadius; const auto topOrBottomPart = _dropDown ? QRect(0, height() - threeRadius, width(), threeRadius) @@ -668,7 +668,7 @@ void TabbedSelector::paintBgRoundedPart(Painter &p) { : RectPart::FullTop)); } -void TabbedSelector::paintContent(Painter &p) { +void TabbedSelector::paintContent(QPainter &p) { auto &footerBg = hasSectionIcons() ? st::emojiPanCategories : st::emojiPanBg; diff --git a/Telegram/SourceFiles/chat_helpers/tabbed_selector.h b/Telegram/SourceFiles/chat_helpers/tabbed_selector.h index a00e85edf..c8c0256d7 100644 --- a/Telegram/SourceFiles/chat_helpers/tabbed_selector.h +++ b/Telegram/SourceFiles/chat_helpers/tabbed_selector.h @@ -207,9 +207,9 @@ private: bool hasMasksTab() const; Tab createTab(SelectorTab type, int index); - void paintSlideFrame(Painter &p); - void paintBgRoundedPart(Painter &p); - void paintContent(Painter &p); + void paintSlideFrame(QPainter &p); + void paintBgRoundedPart(QPainter &p); + void paintContent(QPainter &p); void checkRestrictedPeer(); bool isRestrictedView(); diff --git a/Telegram/SourceFiles/core/application.cpp b/Telegram/SourceFiles/core/application.cpp index 341fbbed1..5879f21f6 100644 --- a/Telegram/SourceFiles/core/application.cpp +++ b/Telegram/SourceFiles/core/application.cpp @@ -256,7 +256,7 @@ void Application::run() { Ui::InitTextOptions(); Ui::StartCachedCorners(); Ui::Emoji::Init(); - Ui::PrepareDefaultSpoilerMess(); + Ui::PrepareTextSpoilerMask(); startEmojiImageLoader(); startSystemDarkModeViewer(); Media::Player::start(_audio.get()); diff --git a/Telegram/SourceFiles/core/ui_integration.cpp b/Telegram/SourceFiles/core/ui_integration.cpp index 21140014a..7b74de161 100644 --- a/Telegram/SourceFiles/core/ui_integration.cpp +++ b/Telegram/SourceFiles/core/ui_integration.cpp @@ -254,6 +254,11 @@ std::unique_ptr UiIntegration::createCustomEmoji( my->customEmojiRepaint); } +Fn UiIntegration::createSpoilerRepaint(const std::any &context) { + const auto my = std::any_cast(&context); + return my ? my->customEmojiRepaint : nullptr; +} + rpl::producer<> UiIntegration::forcePopupMenuHideRequests() { return Core::App().passcodeLockChanges() | rpl::to_empty; } diff --git a/Telegram/SourceFiles/core/ui_integration.h b/Telegram/SourceFiles/core/ui_integration.h index d3f4bf0cd..18b9bc718 100644 --- a/Telegram/SourceFiles/core/ui_integration.h +++ b/Telegram/SourceFiles/core/ui_integration.h @@ -59,6 +59,7 @@ public: std::unique_ptr createCustomEmoji( const QString &data, const std::any &context) override; + Fn createSpoilerRepaint(const std::any &context) override; QString phraseContextCopyText() override; QString phraseContextCopyEmail() override; diff --git a/Telegram/SourceFiles/data/data_folder.cpp b/Telegram/SourceFiles/data/data_folder.cpp index cb3f51a60..4c5e4016a 100644 --- a/Telegram/SourceFiles/data/data_folder.cpp +++ b/Telegram/SourceFiles/data/data_folder.cpp @@ -14,6 +14,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "dialogs/dialogs_key.h" #include "history/history.h" #include "history/history_item.h" +#include "ui/painter.h" #include "lang/lang_keys.h" #include "storage/storage_facade.h" #include "core/application.h" diff --git a/Telegram/SourceFiles/data/data_media_types.cpp b/Telegram/SourceFiles/data/data_media_types.cpp index 1c9b7ade8..8a46bd48c 100644 --- a/Telegram/SourceFiles/data/data_media_types.cpp +++ b/Telegram/SourceFiles/data/data_media_types.cpp @@ -31,6 +31,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "history/view/media/history_view_service_media_gift.h" #include "dialogs/ui/dialogs_message_view.h" #include "ui/image/image.h" +#include "ui/effects/spoiler_mess.h" #include "ui/text/format_song_document_name.h" #include "ui/text/format_values.h" #include "ui/text/text_entity.h" @@ -1541,6 +1542,9 @@ MediaInvoice::MediaInvoice( .photo = data.photo, .isTest = data.isTest, } { + if (_invoice.extendedPreview && !_invoice.extendedMedia) { + Ui::PrepareImageSpoiler(); + } } std::unique_ptr MediaInvoice::clone(not_null parent) { diff --git a/Telegram/SourceFiles/data/data_peer.cpp b/Telegram/SourceFiles/data/data_peer.cpp index ac5eb77d5..e1fab9045 100644 --- a/Telegram/SourceFiles/data/data_peer.cpp +++ b/Telegram/SourceFiles/data/data_peer.cpp @@ -37,6 +37,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/empty_userpic.h" #include "ui/text/text_options.h" #include "ui/toasts/common_toasts.h" +#include "ui/painter.h" #include "ui/ui_utility.h" #include "history/history.h" #include "history/view/history_view_element.h" diff --git a/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp b/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp index ffd7002bf..9782cd6fd 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp +++ b/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp @@ -20,6 +20,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/popup_menu.h" #include "ui/text/text_utilities.h" #include "ui/text/text_options.h" +#include "ui/painter.h" #include "ui/ui_utility.h" #include "data/data_drafts.h" #include "data/data_folder.h" diff --git a/Telegram/SourceFiles/dialogs/dialogs_row.cpp b/Telegram/SourceFiles/dialogs/dialogs_row.cpp index 673932f3b..0a03281e7 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_row.cpp +++ b/Telegram/SourceFiles/dialogs/dialogs_row.cpp @@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/effects/ripple_animation.h" #include "ui/text/text_options.h" #include "ui/text/text_utilities.h" +#include "ui/painter.h" #include "dialogs/dialogs_entry.h" #include "dialogs/ui/dialogs_video_userpic.h" #include "data/data_folder.h" @@ -107,7 +108,7 @@ void BasicRow::stopLastRipple() { } void BasicRow::paintRipple( - Painter &p, + QPainter &p, int x, int y, int outerWidth, diff --git a/Telegram/SourceFiles/dialogs/dialogs_row.h b/Telegram/SourceFiles/dialogs/dialogs_row.h index 2203e2ea0..c572dcc12 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_row.h +++ b/Telegram/SourceFiles/dialogs/dialogs_row.h @@ -53,7 +53,7 @@ public: void stopLastRipple(); void paintRipple( - Painter &p, + QPainter &p, int x, int y, int outerWidth, diff --git a/Telegram/SourceFiles/dialogs/dialogs_widget.cpp b/Telegram/SourceFiles/dialogs/dialogs_widget.cpp index c39b17e36..f3befdde7 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_widget.cpp +++ b/Telegram/SourceFiles/dialogs/dialogs_widget.cpp @@ -18,6 +18,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/wrap/fade_wrap.h" #include "ui/effects/radial_animation.h" #include "ui/controls/download_bar.h" +#include "ui/painter.h" #include "ui/ui_utility.h" #include "lang/lang_keys.h" #include "mainwindow.h" @@ -137,7 +138,7 @@ void Widget::BottomButton::onStateChanged(State was, StateChangeSource source) { } void Widget::BottomButton::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); const auto over = isOver() && !isDisabled(); diff --git a/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp b/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp index c90bccf01..28061779d 100644 --- a/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp +++ b/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp @@ -19,6 +19,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/text/text_options.h" #include "ui/text/text_utilities.h" #include "ui/unread_badge.h" +#include "ui/painter.h" #include "ui/ui_utility.h" #include "core/ui_integration.h" #include "lang/lang_keys.h" @@ -53,7 +54,7 @@ const auto kPsaBadgePrefix = "cloud_lng_badge_psa_"; || history->peer->asUser()->onlineTill > 0); } -void PaintRowTopRight(Painter &p, const QString &text, QRect &rectForName, bool active, bool selected) { +void PaintRowTopRight(QPainter &p, const QString &text, QRect &rectForName, bool active, bool selected) { const auto width = st::dialogsDateFont->width(text); rectForName.setWidth(rectForName.width() - width - st::dialogsDateSkip); p.setFont(st::dialogsDateFont); @@ -61,7 +62,7 @@ void PaintRowTopRight(Painter &p, const QString &text, QRect &rectForName, bool p.drawText(rectForName.left() + rectForName.width() + st::dialogsDateSkip, rectForName.top() + st::msgNameFont->height - st::msgDateFont->descent, text); } -void PaintRowDate(Painter &p, QDateTime date, QRect &rectForName, bool active, bool selected) { +void PaintRowDate(QPainter &p, QDateTime date, QRect &rectForName, bool active, bool selected) { const auto now = QDateTime::currentDateTime(); const auto &lastTime = date; const auto nowDate = now.date(); @@ -83,7 +84,7 @@ void PaintRowDate(Painter &p, QDateTime date, QRect &rectForName, bool active, b } void PaintNarrowCounter( - Painter &p, + QPainter &p, bool displayUnreadCounter, bool displayUnreadMark, bool displayMentionBadge, @@ -160,7 +161,7 @@ void PaintNarrowCounter( } int PaintWideCounter( - Painter &p, + QPainter &p, int texttop, int availableWidth, int fullWidth, @@ -263,32 +264,29 @@ void PaintListEntryText( return; } row->validateListEntryCache(); - const auto &palette = row->folder() - ? (active - ? st::dialogsTextPaletteArchiveActive - : selected - ? st::dialogsTextPaletteArchiveOver - : st::dialogsTextPaletteArchive) - : (active - ? st::dialogsTextPaletteActive - : selected - ? st::dialogsTextPaletteOver - : st::dialogsTextPalette); - const auto &color = active + p.setFont(st::dialogsTextFont); + p.setPen(active ? st::dialogsTextFgActive : selected ? st::dialogsTextFgOver - : st::dialogsTextFg; - p.setTextPalette(palette); - p.setFont(st::dialogsTextFont); - p.setPen(color); - row->listEntryCache().drawElided( - p, - rect.left(), - rect.top(), - rect.width(), - rect.height() / st::dialogsTextFont->height); - p.restoreTextPalette(); + : st::dialogsTextFg); + row->listEntryCache().draw(p, { + .position = rect.topLeft(), + .availableWidth = rect.width(), + .palette = &(row->folder() + ? (active + ? st::dialogsTextPaletteArchiveActive + : selected + ? st::dialogsTextPaletteArchiveOver + : st::dialogsTextPaletteArchive) + : (active + ? st::dialogsTextPaletteActive + : selected + ? st::dialogsTextPaletteOver + : st::dialogsTextPalette)), + .spoiler = Text::DefaultSpoilerCache(), + .elisionLines = rect.height() / st::dialogsTextFont->height, + }); } enum class Flag { @@ -434,7 +432,12 @@ void paintRow( DialogTextOptions()); } p.setPen(active ? st::dialogsTextFgActive : (selected ? st::dialogsTextFgOver : st::dialogsTextFg)); - history->cloudDraftTextCache.drawElided(p, nameleft, texttop, availableWidth, 1); + history->cloudDraftTextCache.draw(p, { + .position = { nameleft, texttop }, + .availableWidth = availableWidth, + .spoiler = Text::DefaultSpoilerCache(), + .elisionLines = 1, + }); } else if (draft || (supportMode && entry->session().supportHelper().isOccupiedBySomeone(history))) { @@ -485,13 +488,23 @@ void paintRow( context); } p.setPen(active ? st::dialogsTextFgActive : (selected ? st::dialogsTextFgOver : st::dialogsTextFg)); - if (supportMode) { - p.setTextPalette(active ? st::dialogsTextPaletteTakenActive : (selected ? st::dialogsTextPaletteTakenOver : st::dialogsTextPaletteTaken)); - } else { - p.setTextPalette(active ? st::dialogsTextPaletteDraftActive : (selected ? st::dialogsTextPaletteDraftOver : st::dialogsTextPaletteDraft)); - } - history->cloudDraftTextCache.drawElided(p, nameleft, texttop, availableWidth, 1); - p.restoreTextPalette(); + history->cloudDraftTextCache.draw(p, { + .position = { nameleft, texttop }, + .availableWidth = availableWidth, + .palette = &(supportMode + ? (active + ? st::dialogsTextPaletteTakenActive + : selected + ? st::dialogsTextPaletteTakenOver + : st::dialogsTextPaletteTaken) + : (active + ? st::dialogsTextPaletteDraftActive + : selected + ? st::dialogsTextPaletteDraftOver + : st::dialogsTextPaletteDraft)), + .spoiler = Text::DefaultSpoilerCache(), + .elisionLines = 1, + }); } } else if (!item) { auto availableWidth = namewidth; @@ -692,7 +705,7 @@ QImage colorizeCircleHalf(UnreadBadgeSizeData *data, int size, int half, int xof return result; } -void PaintUnreadBadge(Painter &p, const QRect &rect, const UnreadBadgeStyle &st) { +void PaintUnreadBadge(QPainter &p, const QRect &rect, const UnreadBadgeStyle &st) { Assert(rect.height() == st.size); int index = (st.muted ? 0x03 : 0x00) + (st.active ? 0x02 : (st.selected ? 0x01 : 0x00)); @@ -784,7 +797,7 @@ QSize CountUnreadBadgeSize( } QRect PaintUnreadBadge( - Painter &p, + QPainter &p, const QString &unreadCount, int x, int y, diff --git a/Telegram/SourceFiles/dialogs/ui/dialogs_layout.h b/Telegram/SourceFiles/dialogs/ui/dialogs_layout.h index b492a791a..b9987fc6e 100644 --- a/Telegram/SourceFiles/dialogs/ui/dialogs_layout.h +++ b/Telegram/SourceFiles/dialogs/ui/dialogs_layout.h @@ -94,7 +94,7 @@ struct UnreadBadgeStyle { const UnreadBadgeStyle &st, int allowDigits = 0); QRect PaintUnreadBadge( - Painter &p, + QPainter &p, const QString &t, int x, int y, diff --git a/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.cpp b/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.cpp index d5caeff28..40d8eaa18 100644 --- a/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.cpp +++ b/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.cpp @@ -14,6 +14,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/text/text_options.h" #include "ui/text/text_utilities.h" #include "ui/image/image.h" +#include "ui/painter.h" #include "core/ui_integration.h" #include "lang/lang_keys.h" #include "styles/style_dialogs.h" @@ -179,29 +180,26 @@ void MessageView::paint( if (geometry.isEmpty()) { return; } - p.setTextPalette(active - ? st::dialogsTextPaletteActive - : selected - ? st::dialogsTextPaletteOver - : st::dialogsTextPalette); p.setFont(st::dialogsTextFont); p.setPen(active ? st::dialogsTextFgActive : selected ? st::dialogsTextFgOver : st::dialogsTextFg); - const auto guard = gsl::finally([&] { - p.restoreTextPalette(); - }); + const auto palette = &(active + ? st::dialogsTextPaletteActive + : selected + ? st::dialogsTextPaletteOver + : st::dialogsTextPalette); auto rect = geometry; if (!_senderCache.isEmpty()) { - _senderCache.drawElided( - p, - rect.left(), - rect.top(), - rect.width(), - rect.height() / st::dialogsTextFont->height); + _senderCache.draw(p, { + .position = rect.topLeft(), + .availableWidth = rect.width(), + .palette = palette, + .elisionLines = rect.height() / st::dialogsTextFont->height, + }); const auto skip = st::dialogsMiniPreviewSkip + st::dialogsMiniPreviewRight; rect.setLeft(rect.x() + _senderCache.maxWidth() + skip); @@ -224,12 +222,13 @@ void MessageView::paint( if (rect.isEmpty()) { return; } - _textCache.drawElided( - p, - rect.left(), - rect.top(), - rect.width(), - rect.height() / st::dialogsTextFont->height); + _textCache.draw(p, { + .position = rect.topLeft(), + .availableWidth = rect.width(), + .palette = palette, + .spoiler = Text::DefaultSpoilerCache(), + .elisionLines = rect.height() / st::dialogsTextFont->height, + }); } HistoryView::ItemPreview PreviewWithSender( diff --git a/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.h b/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.h index 6b7ee2dea..449932b52 100644 --- a/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.h +++ b/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.h @@ -55,8 +55,8 @@ private: struct LoadingContext; mutable const HistoryItem *_textCachedFor = nullptr; - mutable Ui::Text::String _senderCache; - mutable Ui::Text::String _textCache; + mutable Text::String _senderCache; + mutable Text::String _textCache; mutable std::vector _imagesCache; mutable std::unique_ptr _loadingContext; diff --git a/Telegram/SourceFiles/dialogs/ui/dialogs_video_userpic.cpp b/Telegram/SourceFiles/dialogs/ui/dialogs_video_userpic.cpp index faea2ddf6..353a11300 100644 --- a/Telegram/SourceFiles/dialogs/ui/dialogs_video_userpic.cpp +++ b/Telegram/SourceFiles/dialogs/ui/dialogs_video_userpic.cpp @@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "dialogs/ui/dialogs_video_userpic.h" +#include "ui/painter.h" #include "core/file_location.h" #include "data/data_peer.h" #include "data/data_photo.h" diff --git a/Telegram/SourceFiles/editor/color_picker.cpp b/Telegram/SourceFiles/editor/color_picker.cpp index 8d68a12d9..a07e02114 100644 --- a/Telegram/SourceFiles/editor/color_picker.cpp +++ b/Telegram/SourceFiles/editor/color_picker.cpp @@ -7,8 +7,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "editor/color_picker.h" +#include "ui/painter.h" #include "ui/rp_widget.h" - #include "styles/style_editor.h" #include @@ -114,7 +114,7 @@ ColorPicker::ColorPicker( _colorLine->paintRequest( ) | rpl::start_with_next([=] { - Painter p(_colorLine); + auto p = QPainter(_colorLine); PainterHighQualityEnabler hq(p); p.setPen(Qt::NoPen); @@ -126,7 +126,7 @@ ColorPicker::ColorPicker( _canvasForCircle->paintRequest( ) | rpl::start_with_next([=] { - Painter p(_canvasForCircle); + auto p = QPainter(_canvasForCircle); paintCircle(p); }, _canvasForCircle->lifetime()); @@ -226,7 +226,7 @@ QColor ColorPicker::positionToColor(int x) const { return QColor(); } -void ColorPicker::paintCircle(Painter &p) { +void ColorPicker::paintCircle(QPainter &p) { PainterHighQualityEnabler hq(p); p.setPen(Qt::NoPen); @@ -263,7 +263,7 @@ void ColorPicker::paintCircle(Painter &p) { p.drawEllipse(innerRect); } -void ColorPicker::paintOutline(Painter &p, const QRectF &rect) { +void ColorPicker::paintOutline(QPainter &p, const QRectF &rect) { const auto &s = _outlinedStop; if (!s.stopPos) { return; diff --git a/Telegram/SourceFiles/editor/color_picker.h b/Telegram/SourceFiles/editor/color_picker.h index 2be30e4c6..84c3354ea 100644 --- a/Telegram/SourceFiles/editor/color_picker.h +++ b/Telegram/SourceFiles/editor/color_picker.h @@ -34,8 +34,8 @@ public: rpl::producer saveBrushRequests() const; private: - void paintCircle(Painter &p); - void paintOutline(Painter &p, const QRectF &rect); + void paintCircle(QPainter &p); + void paintOutline(QPainter &p, const QRectF &rect); QColor positionToColor(int x) const; int colorToPosition(const QColor &color) const; int circleHeight(float64 progress = 0.) const; diff --git a/Telegram/SourceFiles/editor/editor_crop.cpp b/Telegram/SourceFiles/editor/editor_crop.cpp index 008a9538b..f730984e0 100644 --- a/Telegram/SourceFiles/editor/editor_crop.cpp +++ b/Telegram/SourceFiles/editor/editor_crop.cpp @@ -66,7 +66,7 @@ Crop::Crop( paintRequest( ) | rpl::start_with_next([=] { - Painter p(this); + auto p = QPainter(this); p.fillPath(_painterPath, st::photoCropFadeBg); paintPoints(p); @@ -126,7 +126,7 @@ void Crop::applyTransform( } } -void Crop::paintPoints(Painter &p) { +void Crop::paintPoints(QPainter &p) { p.save(); p.setPen(Qt::NoPen); p.setBrush(st::photoCropPointFg); diff --git a/Telegram/SourceFiles/editor/editor_crop.h b/Telegram/SourceFiles/editor/editor_crop.h index 5a947b570..002bfcd4e 100644 --- a/Telegram/SourceFiles/editor/editor_crop.h +++ b/Telegram/SourceFiles/editor/editor_crop.h @@ -51,7 +51,7 @@ private: } borders; }; - void paintPoints(Painter &p); + void paintPoints(QPainter &p); void updateEdges(); [[nodiscard]] QPoint pointOfEdge(Qt::Edges e) const; diff --git a/Telegram/SourceFiles/editor/photo_editor_common.cpp b/Telegram/SourceFiles/editor/photo_editor_common.cpp index e20266c1b..4fd72ac82 100644 --- a/Telegram/SourceFiles/editor/photo_editor_common.cpp +++ b/Telegram/SourceFiles/editor/photo_editor_common.cpp @@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "editor/photo_editor_common.h" #include "editor/scene/scene.h" +#include "ui/painter.h" namespace Editor { diff --git a/Telegram/SourceFiles/editor/photo_editor_content.cpp b/Telegram/SourceFiles/editor/photo_editor_content.cpp index bfff43b5c..e4c92e8ca 100644 --- a/Telegram/SourceFiles/editor/photo_editor_content.cpp +++ b/Telegram/SourceFiles/editor/photo_editor_content.cpp @@ -84,12 +84,10 @@ PhotoEditorContent::PhotoEditorContent( paintRequest( ) | rpl::start_with_next([=](const QRect &clip) { - Painter p(this); + auto p = QPainter(this); p.fillRect(clip, Qt::transparent); - p.setTransform(_imageMatrix); - p.drawPixmap(_imageRect, _photo->pix(_imageRect.size())); }, lifetime()); diff --git a/Telegram/SourceFiles/editor/photo_editor_controls.cpp b/Telegram/SourceFiles/editor/photo_editor_controls.cpp index a05092fcf..f133977af 100644 --- a/Telegram/SourceFiles/editor/photo_editor_controls.cpp +++ b/Telegram/SourceFiles/editor/photo_editor_controls.cpp @@ -11,7 +11,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "lang/lang_keys.h" #include "ui/image/image_prepare.h" #include "ui/widgets/buttons.h" - +#include "ui/painter.h" #include "styles/style_editor.h" namespace Editor { @@ -156,8 +156,7 @@ ButtonBar::ButtonBar( paintRequest( ) | rpl::start_with_next([=] { - Painter p(this); - + auto p = QPainter(this); p.drawImage(QPoint(), _roundedBg); }, lifetime()); } diff --git a/Telegram/SourceFiles/editor/photo_editor_layer_widget.cpp b/Telegram/SourceFiles/editor/photo_editor_layer_widget.cpp index a77ecf902..d2acfdd9d 100644 --- a/Telegram/SourceFiles/editor/photo_editor_layer_widget.cpp +++ b/Telegram/SourceFiles/editor/photo_editor_layer_widget.cpp @@ -169,8 +169,7 @@ LayerWidget::LayerWidget( paintRequest( ) | rpl::start_with_next([=](const QRect &clip) { - Painter p(this); - + auto p = QPainter(this); p.fillRect(clip, st::photoEditorBg); }, lifetime()); diff --git a/Telegram/SourceFiles/editor/scene/scene_item_base.cpp b/Telegram/SourceFiles/editor/scene/scene_item_base.cpp index 26907925d..8c6970258 100644 --- a/Telegram/SourceFiles/editor/scene/scene_item_base.cpp +++ b/Telegram/SourceFiles/editor/scene/scene_item_base.cpp @@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "editor/scene/scene.h" #include "lang/lang_keys.h" #include "ui/widgets/popup_menu.h" +#include "ui/painter.h" #include "styles/style_editor.h" #include "styles/style_menu_icons.h" diff --git a/Telegram/SourceFiles/editor/scene/scene_item_canvas.h b/Telegram/SourceFiles/editor/scene/scene_item_canvas.h index d6e7b1e26..d93261dd7 100644 --- a/Telegram/SourceFiles/editor/scene/scene_item_canvas.h +++ b/Telegram/SourceFiles/editor/scene/scene_item_canvas.h @@ -7,6 +7,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once +#include "ui/painter.h" + #include class QGraphicsSceneMouseEvent; diff --git a/Telegram/SourceFiles/export/view/export_view_progress.cpp b/Telegram/SourceFiles/export/view/export_view_progress.cpp index 20cff5b7a..f75780395 100644 --- a/Telegram/SourceFiles/export/view/export_view_progress.cpp +++ b/Telegram/SourceFiles/export/view/export_view_progress.cpp @@ -53,7 +53,7 @@ private: void toggleInstance(Instance &data, bool shown); void instanceOpacityCallback(QPointer label); void removeOldInstance(QPointer label); - void paintInstance(Painter &p, const Instance &data); + void paintInstance(QPainter &p, const Instance &data); void updateControlsGeometry(int newWidth); void updateInstanceGeometry(const Instance &instance, int newWidth); @@ -185,7 +185,7 @@ int ProgressWidget::Row::resizeGetHeight(int newWidth) { } void ProgressWidget::Row::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); const auto thickness = st::exportProgressWidth; const auto top = height() - thickness; @@ -197,7 +197,7 @@ void ProgressWidget::Row::paintEvent(QPaintEvent *e) { paintInstance(p, _current); } -void ProgressWidget::Row::paintInstance(Painter &p, const Instance &data) { +void ProgressWidget::Row::paintInstance(QPainter &p, const Instance &data) { const auto opacity = data.opacity.value(data.hiding ? 0. : 1.); if (!opacity) { diff --git a/Telegram/SourceFiles/export/view/export_view_top_bar.cpp b/Telegram/SourceFiles/export/view/export_view_top_bar.cpp index 8facd622a..62f65e81e 100644 --- a/Telegram/SourceFiles/export/view/export_view_top_bar.cpp +++ b/Telegram/SourceFiles/export/view/export_view_top_bar.cpp @@ -62,7 +62,7 @@ void TopBar::resizeEvent(QResizeEvent *e) { } void TopBar::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); auto fill = e->rect().intersected( QRect(0, 0, width(), st::mediaPlayerHeight)); if (!fill.isEmpty()) { diff --git a/Telegram/SourceFiles/history/admin_log/history_admin_log_filter.cpp b/Telegram/SourceFiles/history/admin_log/history_admin_log_filter.cpp index c04662ba2..35eae243c 100644 --- a/Telegram/SourceFiles/history/admin_log/history_admin_log_filter.cpp +++ b/Telegram/SourceFiles/history/admin_log/history_admin_log_filter.cpp @@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/checkbox.h" #include "ui/effects/ripple_animation.h" #include "ui/text/text_options.h" +#include "ui/painter.h" #include "lang/lang_keys.h" #include "data/data_peer_values.h" #include "data/data_channel.h" diff --git a/Telegram/SourceFiles/history/admin_log/history_admin_log_inner.cpp b/Telegram/SourceFiles/history/admin_log/history_admin_log_inner.cpp index d3ba564ec..d5d32b4da 100644 --- a/Telegram/SourceFiles/history/admin_log/history_admin_log_inner.cpp +++ b/Telegram/SourceFiles/history/admin_log/history_admin_log_inner.cpp @@ -39,6 +39,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/image/image.h" #include "ui/text/text_utilities.h" #include "ui/inactive_press.h" +#include "ui/painter.h" #include "ui/effects/path_shift_gradient.h" #include "core/click_handler_types.h" #include "core/file_utilities.h" diff --git a/Telegram/SourceFiles/history/admin_log/history_admin_log_section.cpp b/Telegram/SourceFiles/history/admin_log/history_admin_log_section.cpp index 3b7db4dfe..d0ae510a1 100644 --- a/Telegram/SourceFiles/history/admin_log/history_admin_log_section.cpp +++ b/Telegram/SourceFiles/history/admin_log/history_admin_log_section.cpp @@ -259,7 +259,7 @@ void FixedBar::setAnimatingMode(bool enabled) { void FixedBar::paintEvent(QPaintEvent *e) { if (!_animatingMode) { - Painter p(this); + auto p = QPainter(this); p.fillRect(e->rect(), st::topBarBg); } } diff --git a/Telegram/SourceFiles/history/history_drag_area.cpp b/Telegram/SourceFiles/history/history_drag_area.cpp index a6c7f4783..8b64a46bf 100644 --- a/Telegram/SourceFiles/history/history_drag_area.cpp +++ b/Telegram/SourceFiles/history/history_drag_area.cpp @@ -17,6 +17,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "storage/localstorage.h" #include "lang/lang_keys.h" #include "ui/widgets/shadow.h" +#include "ui/painter.h" #include "ui/ui_utility.h" #include "ui/cached_round_corners.h" #include "mainwindow.h" diff --git a/Telegram/SourceFiles/history/history_inner_widget.cpp b/Telegram/SourceFiles/history/history_inner_widget.cpp index 30a6d8428..9a4e6687e 100644 --- a/Telegram/SourceFiles/history/history_inner_widget.cpp +++ b/Telegram/SourceFiles/history/history_inner_widget.cpp @@ -37,6 +37,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/layers/generic_box.h" #include "ui/controls/delete_message_context_action.h" #include "ui/controls/who_reacted_context_action.h" +#include "ui/painter.h" #include "ui/ui_utility.h" #include "ui/cached_round_corners.h" #include "ui/inactive_press.h" diff --git a/Telegram/SourceFiles/history/history_item_components.cpp b/Telegram/SourceFiles/history/history_item_components.cpp index fbf214956..21f921ec8 100644 --- a/Telegram/SourceFiles/history/history_item_components.cpp +++ b/Telegram/SourceFiles/history/history_item_components.cpp @@ -16,6 +16,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/text/text_utilities.h" #include "ui/chat/chat_style.h" #include "ui/chat/chat_theme.h" +#include "ui/painter.h" #include "history/history.h" #include "history/history_message.h" #include "history/view/history_view_service_message.h" @@ -457,11 +458,18 @@ void HistoryMessageReply::paint( p.setPen(inBubble ? stm->historyTextFg : st->msgImgReplyBarColor()); - p.setTextPalette(inBubble - ? stm->replyTextPalette - : st->imgReplyTextPalette()); holder->prepareCustomEmojiPaint(p, context, replyToText); - replyToText.drawLeftElided(p, x + st::msgReplyBarSkip + previewSkip, y + st::msgReplyPadding.top() + st::msgServiceNameFont->height, w - st::msgReplyBarSkip - previewSkip, w + 2 * x); + replyToText.draw(p, { + .position = QPoint( + x + st::msgReplyBarSkip + previewSkip, + y + st::msgReplyPadding.top() + st::msgServiceNameFont->height), + .availableWidth = w - st::msgReplyBarSkip - previewSkip, + .palette = &(inBubble + ? stm->replyTextPalette + : st->imgReplyTextPalette()), + .spoiler = Ui::Text::DefaultSpoilerCache(), + .elisionLines = 1, + }); p.setTextPalette(stm->textPalette); } } else { diff --git a/Telegram/SourceFiles/history/history_item_components.h b/Telegram/SourceFiles/history/history_item_components.h index 456aaffed..f9cf7fe75 100644 --- a/Telegram/SourceFiles/history/history_item_components.h +++ b/Telegram/SourceFiles/history/history_item_components.h @@ -288,7 +288,7 @@ public: } virtual void startPaint( - Painter &p, + QPainter &p, const Ui::ChatStyle *st) const = 0; virtual const style::TextStyle &textStyle() const = 0; @@ -303,18 +303,18 @@ public: protected: virtual void paintButtonBg( - Painter &p, + QPainter &p, const Ui::ChatStyle *st, const QRect &rect, float64 howMuchOver) const = 0; virtual void paintButtonIcon( - Painter &p, + QPainter &p, const Ui::ChatStyle *st, const QRect &rect, int outerWidth, HistoryMessageMarkupButton::Type type) const = 0; virtual void paintButtonLoading( - Painter &p, + QPainter &p, const Ui::ChatStyle *st, const QRect &rect) const = 0; virtual int minButtonWidth( diff --git a/Telegram/SourceFiles/history/history_widget.cpp b/Telegram/SourceFiles/history/history_widget.cpp index 515a44c3c..013dcb1fe 100644 --- a/Telegram/SourceFiles/history/history_widget.cpp +++ b/Telegram/SourceFiles/history/history_widget.cpp @@ -44,6 +44,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/chat/attach/attach_send_files_way.h" #include "ui/chat/choose_send_as.h" #include "ui/image/image.h" +#include "ui/painter.h" #include "ui/special_buttons.h" #include "ui/controls/emoji_button.h" #include "ui/controls/send_button.h" @@ -7689,9 +7690,15 @@ void HistoryWidget::drawField(Painter &p, const QRect &rect) { _replyToName.drawElided(p, replyLeft, backy + st::msgReplyPadding.top(), width() - replyLeft - _fieldBarCancel->width() - st::msgReplyPadding.right()); } p.setPen(st::historyComposeAreaFg); - p.setTextPalette(st::historyComposeAreaPalette); - _replyEditMsgText.drawElided(p, replyLeft, backy + st::msgReplyPadding.top() + st::msgServiceNameFont->height, width() - replyLeft - _fieldBarCancel->width() - st::msgReplyPadding.right()); - p.restoreTextPalette(); + _replyEditMsgText.draw(p, { + .position = QPoint( + replyLeft, + backy + st::msgReplyPadding.top() + st::msgServiceNameFont->height), + .availableWidth = width() - replyLeft - _fieldBarCancel->width() - st::msgReplyPadding.right(), + .palette = &st::historyComposeAreaPalette, + .spoiler = Ui::Text::DefaultSpoilerCache(), + .elisionLines = 1, + }); } else { p.setFont(st::msgDateFont); p.setPen(st::historyComposeAreaFgService); @@ -7720,9 +7727,15 @@ void HistoryWidget::drawField(Painter &p, const QRect &rect) { p.setPen(st::historyReplyNameFg); _toForwardFrom.drawElided(p, forwardLeft, backy + st::msgReplyPadding.top(), width() - forwardLeft - _fieldBarCancel->width() - st::msgReplyPadding.right()); p.setPen(st::historyComposeAreaFg); - p.setTextPalette(st::historyComposeAreaPalette); - _toForwardText.drawElided(p, forwardLeft, backy + st::msgReplyPadding.top() + st::msgServiceNameFont->height, width() - forwardLeft - _fieldBarCancel->width() - st::msgReplyPadding.right()); - p.restoreTextPalette(); + _toForwardText.draw(p, { + .position = QPoint( + forwardLeft, + backy + st::msgReplyPadding.top() + st::msgServiceNameFont->height), + .availableWidth = width() - forwardLeft - _fieldBarCancel->width() - st::msgReplyPadding.right(), + .palette = &st::historyComposeAreaPalette, + .spoiler = Ui::Text::DefaultSpoilerCache(), + .elisionLines = 1, + }); } } if (drawWebPagePreview) { diff --git a/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.cpp b/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.cpp index 16d1e9396..246e03fc2 100644 --- a/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.cpp +++ b/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.cpp @@ -36,6 +36,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "apiwrap.h" #include "api/api_chat_participants.h" #include "ui/boxes/confirm_box.h" +#include "ui/painter.h" #include "history/history.h" #include "history/history_item.h" #include "history/view/controls/history_view_voice_record_bar.h" @@ -745,13 +746,15 @@ void FieldHeader::paintEditOrReplyToMessage(Painter &p) { availableWidth); p.setPen(st::historyComposeAreaFg); - p.setTextPalette(st::historyComposeAreaPalette); - _shownMessageText.drawElided( - p, - replySkip, - st::msgReplyPadding.top() + st::msgServiceNameFont->height, - availableWidth); - p.restoreTextPalette(); + _shownMessageText.draw(p, { + .position = QPoint( + replySkip, + st::msgReplyPadding.top() + st::msgServiceNameFont->height), + .availableWidth = availableWidth, + .palette = &st::historyComposeAreaPalette, + .spoiler = Ui::Text::DefaultSpoilerCache(), + .elisionLines = 1, + }); } void FieldHeader::updateVisible() { @@ -1357,7 +1360,7 @@ void ComposeControls::clearListenState() { _voiceRecordBar->clearListenState(); } -void ComposeControls::drawRestrictedWrite(Painter &p, const QString &error) { +void ComposeControls::drawRestrictedWrite(QPainter &p, const QString &error) { p.fillRect(_writeRestricted->rect(), st::historyReplyBg); p.setFont(st::normalFont); diff --git a/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.h b/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.h index 1a08bf3c5..aea7c0d0d 100644 --- a/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.h +++ b/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.h @@ -245,7 +245,7 @@ private: void setTabbedPanel(std::unique_ptr panel); bool showRecordButton() const; - void drawRestrictedWrite(Painter &p, const QString &error); + void drawRestrictedWrite(QPainter &p, const QString &error); bool updateBotCommandShown(); void cancelInlineBot(); diff --git a/Telegram/SourceFiles/history/view/controls/history_view_compose_search.cpp b/Telegram/SourceFiles/history/view/controls/history_view_compose_search.cpp index c28f8f399..4a908ef8f 100644 --- a/Telegram/SourceFiles/history/view/controls/history_view_compose_search.cpp +++ b/Telegram/SourceFiles/history/view/controls/history_view_compose_search.cpp @@ -238,8 +238,7 @@ List CreateList( list.container->paintRequest( ) | rpl::start_with_next([weak = Ui::MakeWeak(list.container.get())]( const QRect &r) { - Painter p(weak); - + auto p = QPainter(weak); p.fillRect(r, st::dialogsBg); }, list.container->lifetime()); @@ -312,8 +311,7 @@ TopBar::TopBar(not_null parent) paintRequest( ) | rpl::start_with_next([=](const QRect &r) { - Painter p(this); - + auto p = QPainter(this); p.fillRect(r, st::dialogsBg); }, lifetime()); @@ -516,8 +514,7 @@ BottomBar::BottomBar(not_null parent, bool fastShowChooseFrom) paintRequest( ) | rpl::start_with_next([=](const QRect &r) { - Painter p(this); - + auto p = QPainter(this); p.fillRect(r, st::dialogsBg); }, lifetime()); diff --git a/Telegram/SourceFiles/history/view/controls/history_view_voice_record_bar.cpp b/Telegram/SourceFiles/history/view/controls/history_view_voice_record_bar.cpp index b05a15383..32c3dc375 100644 --- a/Telegram/SourceFiles/history/view/controls/history_view_voice_record_bar.cpp +++ b/Telegram/SourceFiles/history/view/controls/history_view_voice_record_bar.cpp @@ -33,6 +33,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/effects/animation_value.h" #include "ui/effects/ripple_animation.h" #include "ui/text/format_values.h" +#include "ui/painter.h" #include "window/window_session_controller.h" namespace HistoryView::Controls { @@ -115,7 +116,7 @@ enum class FilterType { } void PaintWaveform( - Painter &p, + QPainter &p, not_null voiceData, int availableWidth, const QColor &active, @@ -314,7 +315,7 @@ void ListenWrap::init() { _parent->paintRequest( ) | rpl::start_with_next([=](const QRect &clip) { - Painter p(_parent); + auto p = QPainter(_parent); PainterHighQualityEnabler hq(p); const auto progress = _showProgress.current(); p.setOpacity(progress); @@ -418,7 +419,7 @@ void ListenWrap::initPlayButton() { _playPauseButton->paintRequest( ) | rpl::start_with_next([=](const QRect &clip) { - Painter p(_playPauseButton); + auto p = QPainter(_playPauseButton); const auto progress = _showProgress.current(); p.translate(width / 2, width / 2); diff --git a/Telegram/SourceFiles/history/view/controls/history_view_voice_record_button.cpp b/Telegram/SourceFiles/history/view/controls/history_view_voice_record_button.cpp index b0789ec81..15dd53517 100644 --- a/Telegram/SourceFiles/history/view/controls/history_view_voice_record_button.cpp +++ b/Telegram/SourceFiles/history/view/controls/history_view_voice_record_button.cpp @@ -8,7 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "history/view/controls/history_view_voice_record_button.h" #include "ui/paint/blobs.h" - +#include "ui/painter.h" #include "styles/style_chat.h" #include "styles/style_layers.h" @@ -97,7 +97,7 @@ void VoiceRecordButton::init() { - mainRadiusMin; paintRequest( ) | rpl::start_with_next([=](const QRect &clip) { - Painter p(this); + auto p = QPainter(this); const auto hideProgress = _blobsHideLastTime ? 1. - std::clamp( diff --git a/Telegram/SourceFiles/history/view/history_view_bottom_info.cpp b/Telegram/SourceFiles/history/view/history_view_bottom_info.cpp index 3fc0c047c..2d7b86078 100644 --- a/Telegram/SourceFiles/history/view/history_view_bottom_info.cpp +++ b/Telegram/SourceFiles/history/view/history_view_bottom_info.cpp @@ -11,6 +11,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/chat/chat_style.h" #include "ui/text/text_options.h" #include "ui/text/text_utilities.h" +#include "ui/painter.h" #include "lang/lang_keys.h" #include "history/history_item_components.h" #include "history/history_message.h" diff --git a/Telegram/SourceFiles/history/view/history_view_element.cpp b/Telegram/SourceFiles/history/view/history_view_element.cpp index 3f8a0e765..082db4f41 100644 --- a/Telegram/SourceFiles/history/view/history_view_element.cpp +++ b/Telegram/SourceFiles/history/view/history_view_element.cpp @@ -34,6 +34,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/chat/chat_style.h" #include "ui/toast/toast.h" #include "ui/toasts/common_toasts.h" +#include "ui/painter.h" #include "data/data_session.h" #include "data/data_groups.h" #include "data/data_media_types.h" @@ -421,7 +422,7 @@ void Element::prepareCustomEmojiPaint( Painter &p, const PaintContext &context, const Ui::Text::String &text) const { - if (!text.hasCustomEmoji()) { + if (!text.hasPersistentAnimation()) { return; } clearCustomEmojiRepaint(); @@ -947,9 +948,9 @@ void Element::unloadHeavyPart() { } if (_heavyCustomEmoji) { _heavyCustomEmoji = false; - data()->_text.unloadCustomEmoji(); + data()->_text.unloadPersistentAnimation(); if (const auto reply = data()->Get()) { - reply->replyToText.unloadCustomEmoji(); + reply->replyToText.unloadPersistentAnimation(); } } } @@ -1127,7 +1128,7 @@ Element::~Element() { base::take(_media); if (_heavyCustomEmoji) { _heavyCustomEmoji = false; - data()->_text.unloadCustomEmoji(); + data()->_text.unloadPersistentAnimation(); checkHeavyPart(); } if (_data->mainView() == this) { diff --git a/Telegram/SourceFiles/history/view/history_view_empty_list_bubble.cpp b/Telegram/SourceFiles/history/view/history_view_empty_list_bubble.cpp index 6cf4f05e9..0b47a0183 100644 --- a/Telegram/SourceFiles/history/view/history_view_empty_list_bubble.cpp +++ b/Telegram/SourceFiles/history/view/history_view_empty_list_bubble.cpp @@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "history/view/history_view_empty_list_bubble.h" #include "ui/chat/chat_style.h" +#include "ui/painter.h" #include "history/view/history_view_service_message.h" namespace HistoryView { diff --git a/Telegram/SourceFiles/history/view/history_view_list_widget.cpp b/Telegram/SourceFiles/history/view/history_view_list_widget.cpp index 8adb38f74..ff662d760 100644 --- a/Telegram/SourceFiles/history/view/history_view_list_widget.cpp +++ b/Telegram/SourceFiles/history/view/history_view_list_widget.cpp @@ -46,6 +46,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/effects/path_shift_gradient.h" #include "ui/chat/chat_theme.h" #include "ui/chat/chat_style.h" +#include "ui/painter.h" #include "lang/lang_keys.h" #include "boxes/delete_messages_box.h" #include "boxes/premium_preview_box.h" diff --git a/Telegram/SourceFiles/history/view/history_view_message.cpp b/Telegram/SourceFiles/history/view/history_view_message.cpp index 8d366596e..a3f44b4d5 100644 --- a/Telegram/SourceFiles/history/view/history_view_message.cpp +++ b/Telegram/SourceFiles/history/view/history_view_message.cpp @@ -37,9 +37,9 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "mainwidget.h" #include "main/main_session.h" #include "ui/text/text_options.h" +#include "ui/painter.h" #include "window/window_session_controller.h" #include "apiwrap.h" - #include "styles/style_widgets.h" #include "styles/style_chat.h" #include "styles/style_dialogs.h" @@ -66,25 +66,25 @@ public: int buttonRadius() const override; void startPaint( - Painter &p, + QPainter &p, const Ui::ChatStyle *st) const override; const style::TextStyle &textStyle() const override; void repaint(not_null item) const override; protected: void paintButtonBg( - Painter &p, + QPainter &p, const Ui::ChatStyle *st, const QRect &rect, float64 howMuchOver) const override; void paintButtonIcon( - Painter &p, + QPainter &p, const Ui::ChatStyle *st, const QRect &rect, int outerWidth, HistoryMessageMarkupButton::Type type) const override; void paintButtonLoading( - Painter &p, + QPainter &p, const Ui::ChatStyle *st, const QRect &rect) const override; int minButtonWidth(HistoryMessageMarkupButton::Type type) const override; @@ -92,7 +92,7 @@ protected: }; void KeyboardStyle::startPaint( - Painter &p, + QPainter &p, const Ui::ChatStyle *st) const { Expects(st != nullptr); @@ -112,7 +112,7 @@ int KeyboardStyle::buttonRadius() const { } void KeyboardStyle::paintButtonBg( - Painter &p, + QPainter &p, const Ui::ChatStyle *st, const QRect &rect, float64 howMuchOver) const { @@ -129,7 +129,7 @@ void KeyboardStyle::paintButtonBg( } void KeyboardStyle::paintButtonIcon( - Painter &p, + QPainter &p, const Ui::ChatStyle *st, const QRect &rect, int outerWidth, @@ -155,7 +155,7 @@ void KeyboardStyle::paintButtonIcon( } void KeyboardStyle::paintButtonLoading( - Painter &p, + QPainter &p, const Ui::ChatStyle *st, const QRect &rect) const { Expects(st != nullptr); @@ -1299,15 +1299,13 @@ void Message::paintText( p.setPen(stm->historyTextFg); p.setFont(st::msgFont); prepareCustomEmojiPaint(p, context, item->_text); - item->_text.draw( - p, - trect.x(), - trect.y(), - trect.width(), - style::al_left, - 0, - -1, - context.selection); + item->_text.draw(p, { + .position = trect.topLeft(), + .availableWidth = trect.width(), + .palette = &stm->textPalette, + .spoiler = Ui::Text::DefaultSpoilerCache(), + .selection = context.selection, + }); } PointState Message::pointState(QPoint point) const { diff --git a/Telegram/SourceFiles/history/view/history_view_send_action.cpp b/Telegram/SourceFiles/history/view/history_view_send_action.cpp index 78f522a74..dfb941166 100644 --- a/Telegram/SourceFiles/history/view/history_view_send_action.cpp +++ b/Telegram/SourceFiles/history/view/history_view_send_action.cpp @@ -16,6 +16,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "lang/lang_keys.h" #include "ui/effects/animations.h" #include "ui/text/text_options.h" +#include "ui/painter.h" #include "styles/style_dialogs.h" namespace HistoryView { @@ -168,7 +169,7 @@ bool SendActionPainter::paint( } void SendActionPainter::paintSpeaking( - Painter &p, + QPainter &p, int x, int y, int outerWidth, diff --git a/Telegram/SourceFiles/history/view/history_view_send_action.h b/Telegram/SourceFiles/history/view/history_view_send_action.h index 249af8995..03ae7cede 100644 --- a/Telegram/SourceFiles/history/view/history_view_send_action.h +++ b/Telegram/SourceFiles/history/view/history_view_send_action.h @@ -36,7 +36,7 @@ public: style::color color, crl::time now); void paintSpeaking( - Painter &p, + QPainter &p, int x, int y, int outerWidth, diff --git a/Telegram/SourceFiles/history/view/history_view_service_message.cpp b/Telegram/SourceFiles/history/view/history_view_service_message.cpp index f2204eeb9..7ce1ca2aa 100644 --- a/Telegram/SourceFiles/history/view/history_view_service_message.cpp +++ b/Telegram/SourceFiles/history/view/history_view_service_message.cpp @@ -17,6 +17,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "data/data_channel.h" #include "ui/chat/chat_style.h" #include "ui/text/text_options.h" +#include "ui/painter.h" #include "ui/ui_utility.h" #include "mainwidget.h" #include "menu/menu_ttl_validator.h" @@ -539,17 +540,15 @@ void Service::draw(Painter &p, const PaintContext &context) const { p.setPen(st->msgServiceFg()); p.setFont(st::msgServiceFont); prepareCustomEmojiPaint(p, context, item->_text); - item->_text.draw( - p, - trect.x(), - trect.y(), - trect.width(), - Qt::AlignCenter, - 0, - -1, - context.selection, false); - - p.restoreTextPalette(); + item->_text.draw(p, { + .position = trect.topLeft(), + .availableWidth = trect.width(), + .align = style::al_top, + .palette = &st->serviceTextPalette(), + .spoiler = Ui::Text::DefaultSpoilerCache(), + .selection = context.selection, + .fullWidthSelection = false, + }); if (media) { const auto left = margin.left() + (g.width() - media->maxWidth()) / 2; diff --git a/Telegram/SourceFiles/history/view/history_view_top_bar_widget.cpp b/Telegram/SourceFiles/history/view/history_view_top_bar_widget.cpp index 67ad03a49..aebf1c12e 100644 --- a/Telegram/SourceFiles/history/view/history_view_top_bar_widget.cpp +++ b/Telegram/SourceFiles/history/view/history_view_top_bar_widget.cpp @@ -32,6 +32,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/boxes/report_box.h" // Ui::ReportReason #include "ui/text/text.h" #include "ui/text/text_options.h" +#include "ui/painter.h" #include "ui/special_buttons.h" #include "ui/unread_badge.h" #include "ui/ui_utility.h" diff --git a/Telegram/SourceFiles/history/view/history_view_transcribe_button.cpp b/Telegram/SourceFiles/history/view/history_view_transcribe_button.cpp index c0eb6bdd8..02f0abbaa 100644 --- a/Telegram/SourceFiles/history/view/history_view_transcribe_button.cpp +++ b/Telegram/SourceFiles/history/view/history_view_transcribe_button.cpp @@ -14,6 +14,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/chat/chat_style.h" #include "ui/click_handler.h" #include "ui/effects/radial_animation.h" +#include "ui/painter.h" #include "api/api_transcribes.h" #include "apiwrap.h" #include "styles/style_chat.h" diff --git a/Telegram/SourceFiles/history/view/history_view_view_button.cpp b/Telegram/SourceFiles/history/view/history_view_view_button.cpp index f7471c31a..1d7cba92f 100644 --- a/Telegram/SourceFiles/history/view/history_view_view_button.cpp +++ b/Telegram/SourceFiles/history/view/history_view_view_button.cpp @@ -21,6 +21,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "main/main_session.h" #include "ui/click_handler.h" #include "ui/effects/ripple_animation.h" +#include "ui/painter.h" #include "ui/round_rect.h" #include "ui/text/text_utilities.h" // Ui::Text::ToUpper #include "window/window_session_controller.h" diff --git a/Telegram/SourceFiles/history/view/history_view_webpage_preview.cpp b/Telegram/SourceFiles/history/view/history_view_webpage_preview.cpp index 01b83838e..96faf53b8 100644 --- a/Telegram/SourceFiles/history/view/history_view_webpage_preview.cpp +++ b/Telegram/SourceFiles/history/view/history_view_webpage_preview.cpp @@ -57,7 +57,7 @@ WebPageText TitleAndDescriptionFromWebPage(not_null d) { } bool DrawWebPageDataPreview( - Painter &p, + QPainter &p, not_null webpage, not_null context, QRect to) { diff --git a/Telegram/SourceFiles/history/view/history_view_webpage_preview.h b/Telegram/SourceFiles/history/view/history_view_webpage_preview.h index e20ad9232..b517ebc07 100644 --- a/Telegram/SourceFiles/history/view/history_view_webpage_preview.h +++ b/Telegram/SourceFiles/history/view/history_view_webpage_preview.h @@ -16,7 +16,7 @@ struct WebPageText { WebPageText TitleAndDescriptionFromWebPage(not_null d); bool DrawWebPageDataPreview( - Painter &p, + QPainter &p, not_null webpage, not_null context, QRect to); diff --git a/Telegram/SourceFiles/history/view/media/history_view_call.cpp b/Telegram/SourceFiles/history/view/media/history_view_call.cpp index c8df97c01..a96f329c5 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_call.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_call.cpp @@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "lang/lang_keys.h" #include "ui/chat/chat_style.h" #include "ui/text/format_values.h" +#include "ui/painter.h" #include "layout/layout_selection.h" // FullSelection #include "history/history.h" #include "history/history_item.h" diff --git a/Telegram/SourceFiles/history/view/media/history_view_contact.cpp b/Telegram/SourceFiles/history/view/media/history_view_contact.cpp index 3222bf47a..6cbec2cee 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_contact.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_contact.cpp @@ -22,6 +22,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/chat/chat_style.h" #include "ui/text/format_values.h" // Ui::FormatPhone #include "ui/text/text_options.h" +#include "ui/painter.h" #include "data/data_session.h" #include "data/data_user.h" #include "data/data_media_types.h" diff --git a/Telegram/SourceFiles/history/view/media/history_view_custom_emoji.cpp b/Telegram/SourceFiles/history/view/media/history_view_custom_emoji.cpp index 75e30773e..9cc707b70 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_custom_emoji.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_custom_emoji.cpp @@ -19,6 +19,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "chat_helpers/stickers_lottie.h" #include "ui/chat/chat_style.h" #include "ui/text/text_isolated_emoji.h" +#include "ui/painter.h" #include "styles/style_chat.h" namespace HistoryView { diff --git a/Telegram/SourceFiles/history/view/media/history_view_document.cpp b/Telegram/SourceFiles/history/view/media/history_view_document.cpp index 62f81e66c..2bd2b967f 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_document.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_document.cpp @@ -25,6 +25,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/chat/message_bubble.h" #include "ui/chat/chat_style.h" #include "ui/cached_round_corners.h" +#include "ui/painter.h" #include "ui/ui_utility.h" #include "data/data_session.h" #include "data/data_document.h" @@ -580,7 +581,7 @@ void Document::draw( ? &stm->historyFileCancel : nullptr; - const auto paintContent = [&](Painter &q) { + const auto paintContent = [&](QPainter &q) { if (previous && radialOpacity > 0. && radialOpacity < 1.) { PaintInterpolatedIcon(q, icon, *previous, radialOpacity, inner); } else { @@ -695,7 +696,13 @@ void Document::draw( if (const auto captioned = Get()) { p.setPen(stm->historyTextFg); _parent->prepareCustomEmojiPaint(p, context, captioned->_caption); - captioned->_caption.draw(p, st::msgPadding.left(), captiontop, captionw, style::al_left, 0, -1, selection); + captioned->_caption.draw(p, { + .position = { st::msgPadding.left(), captiontop }, + .availableWidth = captionw, + .palette = &stm->textPalette, + .spoiler = Ui::Text::DefaultSpoilerCache(), + .selection = selection, + }); } } @@ -706,7 +713,7 @@ bool Document::hasHeavyPart() const { void Document::unloadHeavyPart() { _dataMedia = nullptr; if (const auto captioned = Get()) { - captioned->_caption.unloadCustomEmoji(); + captioned->_caption.unloadPersistentAnimation(); } } @@ -762,7 +769,7 @@ void Document::drawCornerDownload( const auto &icon = _data->loading() ? stm->historyAudioCancel : stm->historyAudioDownload; - const auto paintContent = [&](Painter &q) { + const auto paintContent = [&](QPainter &q) { if (bubblePattern) { auto hq = PainterHighQualityEnabler(q); auto pen = stm->msgBg->p; diff --git a/Telegram/SourceFiles/history/view/media/history_view_extended_preview.cpp b/Telegram/SourceFiles/history/view/media/history_view_extended_preview.cpp index 12ec2e418..efcaeb840 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_extended_preview.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_extended_preview.cpp @@ -18,6 +18,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/image/image.h" #include "ui/image/image_prepare.h" #include "ui/chat/chat_style.h" +#include "ui/painter.h" #include "data/data_session.h" #include "payments/payments_checkout_process.h" #include "window/window_session_controller.h" @@ -105,7 +106,7 @@ void ExtendedPreview::unloadHeavyPart() { = _cornerCache = _buttonBackground = QImage(); _animation = nullptr; - _caption.unloadCustomEmoji(); + _caption.unloadPersistentAnimation(); } QSize ExtendedPreview::countOptimalSize() { @@ -230,7 +231,15 @@ void ExtendedPreview::draw(Painter &p, const PaintContext &context) const { if (!_caption.isEmpty()) { p.setPen(stm->historyTextFg); _parent->prepareCustomEmojiPaint(p, context, _caption); - _caption.draw(p, st::msgPadding.left(), painty + painth + st::mediaCaptionSkip, captionw, style::al_left, 0, -1, context.selection); + _caption.draw(p, { + .position = QPoint( + st::msgPadding.left(), + painty + painth + st::mediaCaptionSkip), + .availableWidth = captionw, + .palette = &stm->textPalette, + .spoiler = Ui::Text::DefaultSpoilerCache(), + .selection = context.selection, + }); } else if (!inWebPage) { auto fullRight = paintx + paintw; auto fullBottom = painty + painth; diff --git a/Telegram/SourceFiles/history/view/media/history_view_game.cpp b/Telegram/SourceFiles/history/view/media/history_view_game.cpp index c157a9452..65f5fd659 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_game.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_game.cpp @@ -17,6 +17,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/text/text_utilities.h" #include "ui/cached_round_corners.h" #include "ui/chat/chat_style.h" +#include "ui/painter.h" #include "core/ui_integration.h" #include "data/data_session.h" #include "data/data_game.h" @@ -453,7 +454,7 @@ void Game::unloadHeavyPart() { if (_attach) { _attach->unloadHeavyPart(); } - _description.unloadCustomEmoji(); + _description.unloadPersistentAnimation(); } Game::~Game() { diff --git a/Telegram/SourceFiles/history/view/media/history_view_gif.cpp b/Telegram/SourceFiles/history/view/media/history_view_gif.cpp index 151d3825d..e464192c2 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_gif.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_gif.cpp @@ -19,6 +19,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "media/streaming/media_streaming_utility.h" #include "media/view/media_view_playback_progress.h" #include "ui/boxes/confirm_box.h" +#include "ui/painter.h" #include "history/history_item_components.h" #include "history/history_item.h" #include "history/history.h" @@ -604,7 +605,15 @@ void Gif::draw(Painter &p, const PaintContext &context) const { if (!unwrapped && !_caption.isEmpty()) { p.setPen(stm->historyTextFg); _parent->prepareCustomEmojiPaint(p, context, _caption); - _caption.draw(p, st::msgPadding.left(), painty + painth + st::mediaCaptionSkip, captionw, style::al_left, 0, -1, context.selection); + _caption.draw(p, { + .position = QPoint( + st::msgPadding.left(), + painty + painth + st::mediaCaptionSkip), + .availableWidth = captionw, + .palette = &stm->textPalette, + .spoiler = Ui::Text::DefaultSpoilerCache(), + .selection = context.selection, + }); } else if (!inWebPage && !skipDrawingSurrounding) { auto fullRight = paintx + usex + usew; auto fullBottom = painty + painth; @@ -1446,7 +1455,7 @@ void Gif::unloadHeavyPart() { _dataMedia = nullptr; _thumbCache = QImage(); _videoThumbnailFrame = nullptr; - _caption.unloadCustomEmoji(); + _caption.unloadPersistentAnimation(); } void Gif::refreshParentId(not_null realParent) { diff --git a/Telegram/SourceFiles/history/view/media/history_view_invoice.cpp b/Telegram/SourceFiles/history/view/media/history_view_invoice.cpp index ff0432876..e726ab910 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_invoice.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_invoice.cpp @@ -16,6 +16,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/chat/chat_style.h" #include "ui/text/format_values.h" #include "ui/cached_round_corners.h" +#include "ui/painter.h" #include "data/data_media_types.h" #include "styles/style_chat.h" diff --git a/Telegram/SourceFiles/history/view/media/history_view_large_emoji.cpp b/Telegram/SourceFiles/history/view/media/history_view_large_emoji.cpp index 882455e84..ed1e1dce0 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_large_emoji.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_large_emoji.cpp @@ -14,6 +14,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "history/history.h" #include "ui/image/image.h" #include "ui/chat/chat_style.h" +#include "ui/painter.h" #include "data/data_session.h" #include "data/data_file_origin.h" #include "data/stickers/data_custom_emoji.h" diff --git a/Telegram/SourceFiles/history/view/media/history_view_location.cpp b/Telegram/SourceFiles/history/view/media/history_view_location.cpp index 07ab77145..767339391 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_location.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_location.cpp @@ -17,6 +17,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/image/image.h" #include "ui/text/text_options.h" #include "ui/cached_round_corners.h" +#include "ui/painter.h" #include "data/data_session.h" #include "data/data_file_origin.h" #include "data/data_cloud_file.h" diff --git a/Telegram/SourceFiles/history/view/media/history_view_media_common.cpp b/Telegram/SourceFiles/history/view/media/history_view_media_common.cpp index 019f10ebf..094a8af58 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_media_common.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_media_common.cpp @@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "history/view/media/history_view_media_common.h" #include "ui/text/format_values.h" +#include "ui/painter.h" #include "data/data_document.h" #include "data/data_wall_paper.h" #include "data/data_media_types.h" @@ -24,7 +25,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL namespace HistoryView { void PaintInterpolatedIcon( - Painter &p, + QPainter &p, const style::icon &a, const style::icon &b, float64 b_ratio, diff --git a/Telegram/SourceFiles/history/view/media/history_view_media_common.h b/Telegram/SourceFiles/history/view/media/history_view_media_common.h index 0a880a131..2a46f5b3e 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_media_common.h +++ b/Telegram/SourceFiles/history/view/media/history_view_media_common.h @@ -28,7 +28,7 @@ namespace HistoryView { class Media; void PaintInterpolatedIcon( - Painter &p, + QPainter &p, const style::icon &a, const style::icon &b, float64 b_ratio, diff --git a/Telegram/SourceFiles/history/view/media/history_view_media_grouped.cpp b/Telegram/SourceFiles/history/view/media/history_view_media_grouped.cpp index 0e394826f..00f933539 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_media_grouped.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_media_grouped.cpp @@ -21,6 +21,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/chat/chat_style.h" #include "ui/chat/message_bubble.h" #include "ui/text/text_options.h" +#include "ui/painter.h" #include "layout/layout_selection.h" #include "styles/style_chat.h" @@ -345,7 +346,15 @@ void GroupedMedia::draw(Painter &p, const PaintContext &context) const { const auto stm = context.messageStyle(); p.setPen(stm->historyTextFg); _parent->prepareCustomEmojiPaint(p, context, _caption); - _caption.draw(p, st::msgPadding.left(), captiony, captionw, style::al_left, 0, -1, selection); + _caption.draw(p, { + .position = QPoint( + st::msgPadding.left(), + captiony), + .availableWidth = captionw, + .palette = &stm->textPalette, + .spoiler = Ui::Text::DefaultSpoilerCache(), + .selection = context.selection, + }); } else if (_parent->media() == this) { auto fullRight = width(); auto fullBottom = height(); @@ -721,7 +730,7 @@ void GroupedMedia::unloadHeavyPart() { part.cacheKey = 0; part.cache = QPixmap(); } - _caption.unloadCustomEmoji(); + _caption.unloadPersistentAnimation(); } void GroupedMedia::parentTextUpdated() { diff --git a/Telegram/SourceFiles/history/view/media/history_view_media_unwrapped.cpp b/Telegram/SourceFiles/history/view/media/history_view_media_unwrapped.cpp index 50509fcf4..b90e5acea 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_media_unwrapped.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_media_unwrapped.cpp @@ -16,6 +16,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "lottie/lottie_single_player.h" #include "ui/cached_round_corners.h" #include "ui/chat/chat_style.h" +#include "ui/painter.h" #include "styles/style_chat.h" namespace HistoryView { diff --git a/Telegram/SourceFiles/history/view/media/history_view_photo.cpp b/Telegram/SourceFiles/history/view/media/history_view_photo.cpp index 0d2eee4bf..f592407db 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_photo.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_photo.cpp @@ -23,6 +23,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/chat/chat_style.h" #include "ui/grouped_layout.h" #include "ui/cached_round_corners.h" +#include "ui/painter.h" #include "data/data_session.h" #include "data/data_streaming.h" #include "data/data_photo.h" @@ -135,7 +136,7 @@ void Photo::unloadHeavyPart() { stopAnimation(); _dataMedia = nullptr; _imageCache = QImage(); - _caption.unloadCustomEmoji(); + _caption.unloadPersistentAnimation(); } QSize Photo::countOptimalSize() { @@ -297,7 +298,15 @@ void Photo::draw(Painter &p, const PaintContext &context) const { if (!_caption.isEmpty()) { p.setPen(stm->historyTextFg); _parent->prepareCustomEmojiPaint(p, context, _caption); - _caption.draw(p, st::msgPadding.left(), painty + painth + st::mediaCaptionSkip, captionw, style::al_left, 0, -1, context.selection); + _caption.draw(p, { + .position = QPoint( + st::msgPadding.left(), + painty + painth + st::mediaCaptionSkip), + .availableWidth = captionw, + .palette = &stm->textPalette, + .spoiler = Ui::Text::DefaultSpoilerCache(), + .selection = context.selection, + }); } else if (!inWebPage) { auto fullRight = paintx + paintw; auto fullBottom = painty + painth; diff --git a/Telegram/SourceFiles/history/view/media/history_view_poll.cpp b/Telegram/SourceFiles/history/view/media/history_view_poll.cpp index 516634307..64e51185b 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_poll.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_poll.cpp @@ -23,6 +23,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/effects/ripple_animation.h" #include "ui/effects/fireworks_animation.h" #include "ui/toast/toast.h" +#include "ui/painter.h" #include "data/data_media_types.h" #include "data/data_poll.h" #include "data/data_user.h" @@ -890,7 +891,7 @@ void Poll::paintRecentVoters( if (!was && recent.userpic) { created = true; } - const auto paintContent = [&](Painter &p) { + const auto paintContent = [&](QPainter &p) { p.setPen(pen); p.setBrush(Qt::NoBrush); PainterHighQualityEnabler hq(p); @@ -1250,7 +1251,7 @@ void Poll::paintFilling( const auto ctop = ftop - (icon.height() - thickness) / 2; p.drawEllipse(cleft, ctop, icon.width(), icon.height()); - const auto paintContent = [&](Painter &p) { + const auto paintContent = [&](QPainter &p) { icon.paint(p, cleft, ctop, width); }; if (style == Style::Default && usesBubblePattern(context)) { diff --git a/Telegram/SourceFiles/history/view/media/history_view_service_media_gift.cpp b/Telegram/SourceFiles/history/view/media/history_view_service_media_gift.cpp index 76cd98f45..7431db6cf 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_service_media_gift.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_service_media_gift.cpp @@ -23,6 +23,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "settings/settings_premium.h" // Settings::ShowGiftPremium #include "ui/chat/chat_style.h" #include "ui/effects/ripple_animation.h" +#include "ui/painter.h" #include "window/window_session_controller.h" #include "styles/style_chat.h" #include "styles/style_premium.h" diff --git a/Telegram/SourceFiles/history/view/media/history_view_sticker.cpp b/Telegram/SourceFiles/history/view/media/history_view_sticker.cpp index db25cf181..4534a77cd 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_sticker.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_sticker.cpp @@ -19,6 +19,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/chat/chat_style.h" #include "ui/effects/path_shift_gradient.h" #include "ui/emoji_config.h" +#include "ui/painter.h" #include "core/application.h" #include "core/core_settings.h" #include "core/click_handler_types.h" diff --git a/Telegram/SourceFiles/history/view/media/history_view_theme_document.cpp b/Telegram/SourceFiles/history/view/media/history_view_theme_document.cpp index 1c9d8e461..5e2b060b2 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_theme_document.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_theme_document.cpp @@ -23,6 +23,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/chat/chat_style.h" #include "ui/chat/chat_theme.h" #include "ui/cached_round_corners.h" +#include "ui/painter.h" #include "ui/ui_utility.h" #include "styles/style_chat.h" diff --git a/Telegram/SourceFiles/history/view/media/history_view_web_page.cpp b/Telegram/SourceFiles/history/view/media/history_view_web_page.cpp index 1f25c66e9..b6d8c5ce0 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_web_page.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_web_page.cpp @@ -24,6 +24,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/text/format_values.h" #include "ui/chat/chat_style.h" #include "ui/cached_round_corners.h" +#include "ui/painter.h" #include "data/data_session.h" #include "data/data_wall_paper.h" #include "data/data_media_types.h" @@ -464,7 +465,7 @@ void WebPage::unloadHeavyPart() { if (_attach) { _attach->unloadHeavyPart(); } - _description.unloadCustomEmoji(); + _description.unloadPersistentAnimation(); _photoMedia = nullptr; } diff --git a/Telegram/SourceFiles/history/view/reactions/history_view_reactions.cpp b/Telegram/SourceFiles/history/view/reactions/history_view_reactions.cpp index efe35af6d..6bc95d87d 100644 --- a/Telegram/SourceFiles/history/view/reactions/history_view_reactions.cpp +++ b/Telegram/SourceFiles/history/view/reactions/history_view_reactions.cpp @@ -23,6 +23,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "lang/lang_tag.h" #include "ui/text/text_custom_emoji.h" #include "ui/chat/chat_style.h" +#include "ui/painter.h" #include "styles/style_chat.h" namespace HistoryView::Reactions { diff --git a/Telegram/SourceFiles/history/view/reactions/history_view_reactions_animation.cpp b/Telegram/SourceFiles/history/view/reactions/history_view_reactions_animation.cpp index 8ef575423..a1b1f17d7 100644 --- a/Telegram/SourceFiles/history/view/reactions/history_view_reactions_animation.cpp +++ b/Telegram/SourceFiles/history/view/reactions/history_view_reactions_animation.cpp @@ -11,6 +11,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "history/view/history_view_bottom_info.h" #include "ui/text/text_custom_emoji.h" #include "ui/animated_icon.h" +#include "ui/painter.h" #include "data/data_message_reactions.h" #include "data/data_session.h" #include "data/data_document.h" diff --git a/Telegram/SourceFiles/history/view/reactions/history_view_reactions_button.cpp b/Telegram/SourceFiles/history/view/reactions/history_view_reactions_button.cpp index a3c2304fe..0117ad4a5 100644 --- a/Telegram/SourceFiles/history/view/reactions/history_view_reactions_button.cpp +++ b/Telegram/SourceFiles/history/view/reactions/history_view_reactions_button.cpp @@ -481,7 +481,7 @@ void Manager::removeStaleButtons() { end(_buttonHiding)); } -void Manager::paint(Painter &p, const PaintContext &context) { +void Manager::paint(QPainter &p, const PaintContext &context) { removeStaleButtons(); for (const auto &button : _buttonHiding) { paintButton(p, context, button.get()); @@ -587,7 +587,7 @@ bool Manager::consumeWheelEvent(not_null e) { } void Manager::paintButton( - Painter &p, + QPainter &p, const PaintContext &context, not_null button) { const auto geometry = button->geometry(); @@ -606,7 +606,7 @@ void Manager::paintButton( } void Manager::paintButton( - Painter &p, + QPainter &p, const PaintContext &context, not_null button, int frameIndex, @@ -623,7 +623,7 @@ void Manager::paintButton( if (opacity != 1.) { p.setOpacity(opacity); } - auto layeredPainter = std::optional(); + auto layeredPainter = std::optional(); if (expanded) { _expandedBuffer.fill(Qt::transparent); } @@ -729,7 +729,7 @@ void Manager::paintButton( } void Manager::paintInnerGradients( - Painter &p, + QPainter &p, const QColor &background, not_null button, int scroll, diff --git a/Telegram/SourceFiles/history/view/reactions/history_view_reactions_button.h b/Telegram/SourceFiles/history/view/reactions/history_view_reactions_button.h index 2621373de..793382198 100644 --- a/Telegram/SourceFiles/history/view/reactions/history_view_reactions_button.h +++ b/Telegram/SourceFiles/history/view/reactions/history_view_reactions_button.h @@ -146,7 +146,7 @@ public: void applyList(const Data::PossibleItemReactionsRef &reactions); void updateButton(ButtonParameters parameters); - void paint(Painter &p, const PaintContext &context); + void paint(QPainter &p, const PaintContext &context); [[nodiscard]] TextState buttonTextState(QPoint position) const; void remove(FullMsgId context); @@ -188,24 +188,23 @@ private: void removeStaleButtons(); void paintButton( - Painter &p, + QPainter &p, const PaintContext &context, not_null button); void paintButton( - Painter &p, + QPainter &p, const PaintContext &context, not_null button, int frame, float64 scale); void paintInnerGradients( - Painter &p, + QPainter &p, const QColor &background, not_null button, int scroll, float64 expandRatio); void clearAppearAnimations(); - [[nodiscard]] QRect cacheRect(int frameIndex, int columnIndex) const; [[nodiscard]] QMargins innerMargins() const; [[nodiscard]] QRect buttonInner() const; diff --git a/Telegram/SourceFiles/history/view/reactions/history_view_reactions_list.cpp b/Telegram/SourceFiles/history/view/reactions/history_view_reactions_list.cpp index 5772b0581..f3613fb8b 100644 --- a/Telegram/SourceFiles/history/view/reactions/history_view_reactions_list.cpp +++ b/Telegram/SourceFiles/history/view/reactions/history_view_reactions_list.cpp @@ -16,6 +16,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "api/api_who_reacted.h" #include "ui/controls/who_reacted_context_action.h" #include "ui/text/text_custom_emoji.h" +#include "ui/painter.h" #include "data/stickers/data_custom_emoji.h" #include "data/data_message_reaction_id.h" #include "main/main_session.h" @@ -164,7 +165,6 @@ void Row::rightActionPaint( }); } - Controller::Controller( not_null window, not_null item, diff --git a/Telegram/SourceFiles/history/view/reactions/history_view_reactions_selector.cpp b/Telegram/SourceFiles/history/view/reactions/history_view_reactions_selector.cpp index 37c85b4ae..b12df0e2f 100644 --- a/Telegram/SourceFiles/history/view/reactions/history_view_reactions_selector.cpp +++ b/Telegram/SourceFiles/history/view/reactions/history_view_reactions_selector.cpp @@ -12,6 +12,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/shadow.h" #include "ui/text/text_custom_emoji.h" #include "ui/platform/ui_platform_utility.h" +#include "ui/painter.h" #include "history/history_item.h" #include "data/data_document.h" #include "data/data_session.h" diff --git a/Telegram/SourceFiles/history/view/reactions/history_view_reactions_strip.cpp b/Telegram/SourceFiles/history/view/reactions/history_view_reactions_strip.cpp index 3c21326bf..865f9293c 100644 --- a/Telegram/SourceFiles/history/view/reactions/history_view_reactions_strip.cpp +++ b/Telegram/SourceFiles/history/view/reactions/history_view_reactions_strip.cpp @@ -14,6 +14,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "main/main_session.h" #include "ui/effects/frame_generator.h" #include "ui/animated_icon.h" +#include "ui/painter.h" #include "styles/style_chat.h" namespace HistoryView::Reactions { diff --git a/Telegram/SourceFiles/history/view/reactions/history_view_reactions_tabs.cpp b/Telegram/SourceFiles/history/view/reactions/history_view_reactions_tabs.cpp index 80b76c85f..b58336dca 100644 --- a/Telegram/SourceFiles/history/view/reactions/history_view_reactions_tabs.cpp +++ b/Telegram/SourceFiles/history/view/reactions/history_view_reactions_tabs.cpp @@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/rp_widget.h" #include "ui/abstract_button.h" +#include "ui/painter.h" #include "ui/controls/who_reacted_context_action.h" #include "data/data_message_reaction_id.h" #include "styles/style_widgets.h" diff --git a/Telegram/SourceFiles/info/info_content_widget.cpp b/Telegram/SourceFiles/info/info_content_widget.cpp index 0a40110e6..87d04c6c2 100644 --- a/Telegram/SourceFiles/info/info_content_widget.cpp +++ b/Telegram/SourceFiles/info/info_content_widget.cpp @@ -113,7 +113,7 @@ bool ContentWidget::isStackBottom() const { } void ContentWidget::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); if (_paintPadding.isNull()) { p.fillRect(e->rect(), _bg); } else { diff --git a/Telegram/SourceFiles/info/info_layer_widget.cpp b/Telegram/SourceFiles/info/info_layer_widget.cpp index f3c2d095d..952c8b767 100644 --- a/Telegram/SourceFiles/info/info_layer_widget.cpp +++ b/Telegram/SourceFiles/info/info_layer_widget.cpp @@ -322,7 +322,7 @@ void LayerWidget::doSetInnerFocus() { } void LayerWidget::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); const auto clip = e->rect(); const auto radius = st::boxRadius; diff --git a/Telegram/SourceFiles/info/info_top_bar.cpp b/Telegram/SourceFiles/info/info_top_bar.cpp index f5651aa5d..37dfe5529 100644 --- a/Telegram/SourceFiles/info/info_top_bar.cpp +++ b/Telegram/SourceFiles/info/info_top_bar.cpp @@ -363,7 +363,7 @@ void TopBar::updateSelectionControlsGeometry(int newWidth) { } void TopBar::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); auto highlight = _a_highlight.value(_highlight ? 1. : 0.); if (_highlight && !_a_highlight.animating()) { diff --git a/Telegram/SourceFiles/info/media/info_media_empty_widget.cpp b/Telegram/SourceFiles/info/media/info_media_empty_widget.cpp index a79cb821f..07f07af85 100644 --- a/Telegram/SourceFiles/info/media/info_media_empty_widget.cpp +++ b/Telegram/SourceFiles/info/media/info_media_empty_widget.cpp @@ -83,7 +83,7 @@ void EmptyWidget::paintEvent(QPaintEvent *e) { return; } - Painter p(this); + auto p = QPainter(this); auto iconLeft = (width() - _icon->width()) / 2; auto iconTop = height() - st::infoEmptyIconTop; diff --git a/Telegram/SourceFiles/info/media/info_media_list_section.cpp b/Telegram/SourceFiles/info/media/info_media_list_section.cpp index 9a41a25f1..323238527 100644 --- a/Telegram/SourceFiles/info/media/info_media_list_section.cpp +++ b/Telegram/SourceFiles/info/media/info_media_list_section.cpp @@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "storage/storage_shared_media.h" #include "layout/layout_selection.h" +#include "ui/painter.h" #include "styles/style_info.h" namespace Info::Media { diff --git a/Telegram/SourceFiles/info/media/info_media_list_widget.cpp b/Telegram/SourceFiles/info/media/info_media_list_widget.cpp index da44e93e9..5f47999af 100644 --- a/Telegram/SourceFiles/info/media/info_media_list_widget.cpp +++ b/Telegram/SourceFiles/info/media/info_media_list_widget.cpp @@ -35,6 +35,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/controls/delete_message_context_action.h" #include "ui/chat/chat_style.h" #include "ui/cached_round_corners.h" +#include "ui/painter.h" #include "ui/ui_utility.h" #include "ui/inactive_press.h" #include "lang/lang_keys.h" diff --git a/Telegram/SourceFiles/info/profile/info_profile_badge.cpp b/Telegram/SourceFiles/info/profile/info_profile_badge.cpp index c00f19a28..0ac67a013 100644 --- a/Telegram/SourceFiles/info/profile/info_profile_badge.cpp +++ b/Telegram/SourceFiles/info/profile/info_profile_badge.cpp @@ -14,6 +14,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "info/profile/info_profile_emoji_status_panel.h" #include "lang/lang_keys.h" #include "ui/widgets/buttons.h" +#include "ui/painter.h" #include "main/main_session.h" #include "styles/style_info.h" diff --git a/Telegram/SourceFiles/info/profile/info_profile_icon.cpp b/Telegram/SourceFiles/info/profile/info_profile_icon.cpp index 058a617ee..9f8dee910 100644 --- a/Telegram/SourceFiles/info/profile/info_profile_icon.cpp +++ b/Telegram/SourceFiles/info/profile/info_profile_icon.cpp @@ -36,7 +36,7 @@ FloatingIcon::FloatingIcon( } void FloatingIcon::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); _icon->paint(p, _point, width()); } diff --git a/Telegram/SourceFiles/inline_bots/bot_attach_web_view.cpp b/Telegram/SourceFiles/inline_bots/bot_attach_web_view.cpp index 2a5724e4f..3b8eaca39 100644 --- a/Telegram/SourceFiles/inline_bots/bot_attach_web_view.cpp +++ b/Telegram/SourceFiles/inline_bots/bot_attach_web_view.cpp @@ -24,6 +24,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/menu/menu_item_base.h" #include "ui/text/text_utilities.h" #include "ui/effects/ripple_animation.h" +#include "ui/painter.h" #include "window/themes/window_theme.h" #include "window/window_controller.h" #include "window/window_session_controller.h" diff --git a/Telegram/SourceFiles/inline_bots/inline_bot_layout_internal.cpp b/Telegram/SourceFiles/inline_bots/inline_bot_layout_internal.cpp index 93fe573c8..b38bd84d8 100644 --- a/Telegram/SourceFiles/inline_bots/inline_bot_layout_internal.cpp +++ b/Telegram/SourceFiles/inline_bots/inline_bot_layout_internal.cpp @@ -28,6 +28,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/image/image.h" #include "ui/text/format_values.h" #include "ui/cached_round_corners.h" +#include "ui/painter.h" #include "main/main_session.h" #include "lang/lang_keys.h" #include "styles/style_overview.h" diff --git a/Telegram/SourceFiles/inline_bots/inline_results_inner.cpp b/Telegram/SourceFiles/inline_bots/inline_results_inner.cpp index d6d4816a0..013c37beb 100644 --- a/Telegram/SourceFiles/inline_bots/inline_results_inner.cpp +++ b/Telegram/SourceFiles/inline_bots/inline_results_inner.cpp @@ -29,6 +29,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/buttons.h" #include "ui/widgets/labels.h" #include "ui/effects/path_shift_gradient.h" +#include "ui/painter.h" #include "history/view/history_view_cursor_state.h" #include "styles/style_chat_helpers.h" #include "styles/style_menu_icons.h" diff --git a/Telegram/SourceFiles/inline_bots/inline_results_widget.cpp b/Telegram/SourceFiles/inline_bots/inline_results_widget.cpp index 0f317844a..5465ae22c 100644 --- a/Telegram/SourceFiles/inline_bots/inline_results_widget.cpp +++ b/Telegram/SourceFiles/inline_bots/inline_results_widget.cpp @@ -119,7 +119,7 @@ void Widget::updateContentHeight() { } void Widget::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); auto opacityAnimating = _a_opacity.animating(); @@ -148,7 +148,7 @@ void Widget::paintEvent(QPaintEvent *e) { } } -void Widget::paintContent(Painter &p) { +void Widget::paintContent(QPainter &p) { auto inner = innerRect(); Ui::FillRoundRect(p, inner, st::emojiPanBg, ImageRoundRadius::Small, RectPart::FullTop | RectPart::FullBottom); diff --git a/Telegram/SourceFiles/inline_bots/inline_results_widget.h b/Telegram/SourceFiles/inline_bots/inline_results_widget.h index 4a8cd2f80..c46f4f1d9 100644 --- a/Telegram/SourceFiles/inline_bots/inline_results_widget.h +++ b/Telegram/SourceFiles/inline_bots/inline_results_widget.h @@ -86,7 +86,7 @@ protected: private: void moveByBottom(); - void paintContent(Painter &p); + void paintContent(QPainter &p); style::margins innerPadding() const; diff --git a/Telegram/SourceFiles/intro/intro_step.cpp b/Telegram/SourceFiles/intro/intro_step.cpp index 15e322d94..164129b24 100644 --- a/Telegram/SourceFiles/intro/intro_step.cpp +++ b/Telegram/SourceFiles/intro/intro_step.cpp @@ -209,7 +209,7 @@ void Step::createSession( } void Step::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); paintAnimated(p, e->rect()); } @@ -264,7 +264,7 @@ void Step::showFinished() { activate(); } -bool Step::paintAnimated(Painter &p, QRect clip) { +bool Step::paintAnimated(QPainter &p, QRect clip) { if (_slideAnimation) { _slideAnimation->paintFrame(p, (width() - st::introStepWidth) / 2, contentTop(), width()); if (!_slideAnimation->animating()) { @@ -342,7 +342,7 @@ void Step::hideDescription() { _description->hide(anim::type::normal); } -void Step::paintContentSnapshot(Painter &p, const QPixmap &snapshot, float64 alpha, float64 howMuchHidden) { +void Step::paintContentSnapshot(QPainter &p, const QPixmap &snapshot, float64 alpha, float64 howMuchHidden) { if (!snapshot.isNull()) { auto contentTop = anim::interpolate(height() - (snapshot.height() / cIntRetinaFactor()), height(), howMuchHidden); if (contentTop < height()) { @@ -374,7 +374,7 @@ void Step::prepareCoverMask() { _coverMask = Ui::PixmapFromImage(std::move(mask)); } -void Step::paintCover(Painter &p, int top) { +void Step::paintCover(QPainter &p, int top) { auto coverHeight = top + st::introCoverHeight; if (coverHeight > 0) { p.drawPixmap(QRect(0, 0, width(), coverHeight), _coverMask, QRect(0, -top * cIntRetinaFactor(), _coverMask.width(), coverHeight * cIntRetinaFactor())); diff --git a/Telegram/SourceFiles/intro/intro_step.h b/Telegram/SourceFiles/intro/intro_step.h index 4a590a93e..2148e6e94 100644 --- a/Telegram/SourceFiles/intro/intro_step.h +++ b/Telegram/SourceFiles/intro/intro_step.h @@ -95,7 +95,7 @@ protected: void setDescriptionText(rpl::producer descriptionText); void setDescriptionText( rpl::producer richDescriptionText); - bool paintAnimated(Painter &p, QRect clip); + bool paintAnimated(QPainter &p, QRect clip); void fillSentCodeData(const MTPDauth_sentCode &type); @@ -158,7 +158,7 @@ private: }; void updateLabelsPosition(); void paintContentSnapshot( - Painter &p, + QPainter &p, const QPixmap &snapshot, float64 alpha, float64 howMuchHidden); @@ -173,7 +173,7 @@ private: void showFinished(); void prepareCoverMask(); - void paintCover(Painter &p, int top); + void paintCover(QPainter &p, int top); const not_null _account; const not_null _data; diff --git a/Telegram/SourceFiles/layout/layout_mosaic.cpp b/Telegram/SourceFiles/layout/layout_mosaic.cpp index 682a1ab3e..d9eb05e09 100644 --- a/Telegram/SourceFiles/layout/layout_mosaic.cpp +++ b/Telegram/SourceFiles/layout/layout_mosaic.cpp @@ -7,6 +7,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "layout/layout_mosaic.h" +#include "styles/style_basic.h" + namespace Mosaic::Layout { AbstractMosaicLayout::AbstractMosaicLayout(int bigWidth) diff --git a/Telegram/SourceFiles/mainwidget.cpp b/Telegram/SourceFiles/mainwidget.cpp index ff142da80..a04a1ed0d 100644 --- a/Telegram/SourceFiles/mainwidget.cpp +++ b/Telegram/SourceFiles/mainwidget.cpp @@ -2006,7 +2006,7 @@ void MainWidget::paintEvent(QPaintEvent *e) { checkChatBackground(); } - Painter p(this); + auto p = QPainter(this); auto progress = _a_show.value(1.); if (_a_show.animating()) { auto coordUnder = _showBack ? anim::interpolate(-st::slideShift, 0, progress) : anim::interpolate(0, -st::slideShift, progress); diff --git a/Telegram/SourceFiles/media/clip/media_clip_reader.cpp b/Telegram/SourceFiles/media/clip/media_clip_reader.cpp index 02aee535e..fd6934d65 100644 --- a/Telegram/SourceFiles/media/clip/media_clip_reader.cpp +++ b/Telegram/SourceFiles/media/clip/media_clip_reader.cpp @@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "media/clip/media_clip_ffmpeg.h" #include "media/clip/media_clip_check_streaming.h" +#include "ui/painter.h" #include "core/file_location.h" #include "base/random.h" #include "base/invoke_queued.h" @@ -64,7 +65,7 @@ QImage PrepareFrame( cache.fill(Qt::transparent); } { - Painter p(&cache); + auto p = QPainter(&cache); const auto framew = request.frame.width(); const auto outerw = size.width(); const auto frameh = request.frame.height(); diff --git a/Telegram/SourceFiles/media/player/media_player_button.cpp b/Telegram/SourceFiles/media/player/media_player_button.cpp index bcbc5f85b..a59e536c5 100644 --- a/Telegram/SourceFiles/media/player/media_player_button.cpp +++ b/Telegram/SourceFiles/media/player/media_player_button.cpp @@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "media/player/media_player_button.h" +#include "ui/painter.h" #include "styles/style_widgets.h" namespace Media { @@ -42,7 +43,7 @@ void PlayButtonLayout::finishTransform() { if (_callback) _callback(); } -void PlayButtonLayout::paint(Painter &p, const QBrush &brush) { +void PlayButtonLayout::paint(QPainter &p, const QBrush &brush) { if (_transformProgress.animating()) { auto from = _oldState, to = _state; auto backward = _transformBackward; @@ -74,7 +75,7 @@ void PlayButtonLayout::paint(Painter &p, const QBrush &brush) { } } -void PlayButtonLayout::paintPlay(Painter &p, const QBrush &brush) { +void PlayButtonLayout::paintPlay(QPainter &p, const QBrush &brush) { auto playLeft = 0. + _st.playPosition.x(); auto playTop = 0. + _st.playPosition.y(); auto playWidth = _st.playOuter.width() - 2 * playLeft; @@ -92,7 +93,7 @@ void PlayButtonLayout::paintPlay(Painter &p, const QBrush &brush) { p.fillPath(pathPlay, brush); } -void PlayButtonLayout::paintPlayToPause(Painter &p, const QBrush &brush, float64 progress) { +void PlayButtonLayout::paintPlayToPause(QPainter &p, const QBrush &brush, float64 progress) { auto playLeft = 0. + _st.playPosition.x(); auto playTop = 0. + _st.playPosition.y(); auto playWidth = _st.playOuter.width() - 2 * playLeft; @@ -136,7 +137,7 @@ void PlayButtonLayout::paintPlayToPause(Painter &p, const QBrush &brush, float64 p.fillPath(anim::interpolate(pathRightPlay, pathRightPause, progress), brush); } -void PlayButtonLayout::paintPlayToCancel(Painter &p, const QBrush &brush, float64 progress) { +void PlayButtonLayout::paintPlayToCancel(QPainter &p, const QBrush &brush, float64 progress) { static const auto sqrt2 = sqrt(2.); auto playLeft = 0. + _st.playPosition.x(); @@ -184,7 +185,7 @@ void PlayButtonLayout::paintPlayToCancel(Painter &p, const QBrush &brush, float6 p.fillPath(anim::interpolate(pathPlay, pathCancel, progress), brush); } -void PlayButtonLayout::paintPauseToCancel(Painter &p, const QBrush &brush, float64 progress) { +void PlayButtonLayout::paintPauseToCancel(QPainter &p, const QBrush &brush, float64 progress) { static const auto sqrt2 = sqrt(2.); auto pauseLeft = 0. + _st.pausePosition.x(); diff --git a/Telegram/SourceFiles/media/player/media_player_button.h b/Telegram/SourceFiles/media/player/media_player_button.h index aaabadf83..74e448563 100644 --- a/Telegram/SourceFiles/media/player/media_player_button.h +++ b/Telegram/SourceFiles/media/player/media_player_button.h @@ -25,16 +25,16 @@ public: void setState(State state); void finishTransform(); - void paint(Painter &p, const QBrush &brush); + void paint(QPainter &p, const QBrush &brush); private: void animationCallback(); void startTransform(float64 from, float64 to); - void paintPlay(Painter &p, const QBrush &brush); - void paintPlayToPause(Painter &p, const QBrush &brush, float64 progress); - void paintPlayToCancel(Painter &p, const QBrush &brush, float64 progress); - void paintPauseToCancel(Painter &p, const QBrush &brush, float64 progress); + void paintPlay(QPainter &p, const QBrush &brush); + void paintPlayToPause(QPainter &p, const QBrush &brush, float64 progress); + void paintPlayToCancel(QPainter &p, const QBrush &brush, float64 progress); + void paintPauseToCancel(QPainter &p, const QBrush &brush, float64 progress); const style::MediaPlayerButton &_st; diff --git a/Telegram/SourceFiles/media/player/media_player_dropdown.cpp b/Telegram/SourceFiles/media/player/media_player_dropdown.cpp index 64e4adac5..516f71e33 100644 --- a/Telegram/SourceFiles/media/player/media_player_dropdown.cpp +++ b/Telegram/SourceFiles/media/player/media_player_dropdown.cpp @@ -49,7 +49,7 @@ bool Dropdown::overlaps(const QRect &globalRect) { } void Dropdown::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); if (!_cache.isNull()) { bool animating = _a_appearance.animating(); diff --git a/Telegram/SourceFiles/media/player/media_player_float.cpp b/Telegram/SourceFiles/media/player/media_player_float.cpp index 4929b2eff..792861e5e 100644 --- a/Telegram/SourceFiles/media/player/media_player_float.cpp +++ b/Telegram/SourceFiles/media/player/media_player_float.cpp @@ -25,6 +25,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "core/core_settings.h" #include "main/main_session.h" #include "main/main_account.h" +#include "ui/painter.h" #include "ui/ui_utility.h" #include "facades.h" #include "styles/style_media_player.h" @@ -166,7 +167,7 @@ void Float::prepareShadow() { shadow.fill(Qt::transparent); shadow.setDevicePixelRatio(cRetinaFactor()); { - Painter p(&shadow); + auto p = QPainter(&shadow); PainterHighQualityEnabler hq(p); p.setPen(Qt::NoPen); p.setBrush(st::shadowFg); @@ -182,7 +183,7 @@ QRect Float::getInnerRect() const { } void Float::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); p.setOpacity(_opacity); p.drawPixmap(0, 0, _shadow); @@ -248,7 +249,7 @@ bool Float::fillFrame() { if (!frame.isNull()) { _frame.fill(Qt::transparent); - Painter p(&_frame); + auto p = QPainter(&_frame); PainterHighQualityEnabler hq(p); p.drawImage(frameInner(), frame); return true; @@ -257,7 +258,7 @@ bool Float::fillFrame() { if (creating) { _frame.fill(Qt::transparent); - Painter p(&_frame); + auto p = QPainter(&_frame); PainterHighQualityEnabler hq(p); p.setPen(Qt::NoPen); p.setBrush(st::imageBg); diff --git a/Telegram/SourceFiles/media/player/media_player_panel.cpp b/Telegram/SourceFiles/media/player/media_player_panel.cpp index 137d72bdc..1a36d1621 100644 --- a/Telegram/SourceFiles/media/player/media_player_panel.cpp +++ b/Telegram/SourceFiles/media/player/media_player_panel.cpp @@ -135,7 +135,7 @@ void Panel::updateSize() { } void Panel::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); if (!_cache.isNull()) { bool animating = _a_appearance.animating(); diff --git a/Telegram/SourceFiles/media/player/media_player_widget.cpp b/Telegram/SourceFiles/media/player/media_player_widget.cpp index 9d6e2b8e1..3401cdeca 100644 --- a/Telegram/SourceFiles/media/player/media_player_widget.cpp +++ b/Telegram/SourceFiles/media/player/media_player_widget.cpp @@ -730,7 +730,7 @@ void Widget::updateControlsWrapVisibility() { } void Widget::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); auto fill = e->rect().intersected(QRect(0, 0, width(), st::mediaPlayerHeight)); if (!fill.isEmpty()) { p.fillRect(fill, st::mediaPlayerBg); diff --git a/Telegram/SourceFiles/media/streaming/media_streaming_utility.cpp b/Telegram/SourceFiles/media/streaming/media_streaming_utility.cpp index 238a52fa1..f3478e274 100644 --- a/Telegram/SourceFiles/media/streaming/media_streaming_utility.cpp +++ b/Telegram/SourceFiles/media/streaming/media_streaming_utility.cpp @@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "media/streaming/media_streaming_common.h" #include "ui/image/image_prepare.h" +#include "ui/painter.h" #include "ffmpeg/ffmpeg_utility.h" namespace Media { diff --git a/Telegram/SourceFiles/media/view/media_view_group_thumbs.cpp b/Telegram/SourceFiles/media/view/media_view_group_thumbs.cpp index 4755bf071..37b5e2ae7 100644 --- a/Telegram/SourceFiles/media/view/media_view_group_thumbs.cpp +++ b/Telegram/SourceFiles/media/view/media_view_group_thumbs.cpp @@ -200,7 +200,7 @@ public: State state() const; bool removed() const; - void paint(Painter &p, int x, int y, int outerWidth, float64 progress); + void paint(QPainter &p, int x, int y, int outerWidth, float64 progress); ClickHandlerPtr getState(QPoint point) const; private: @@ -405,7 +405,7 @@ bool GroupThumbs::Thumb::removed() const { } void GroupThumbs::Thumb::paint( - Painter &p, + QPainter &p, int x, int y, int outerWidth, @@ -813,7 +813,7 @@ void GroupThumbs::update() { _updateRequests.fire_copy(_updatedRect); } -void GroupThumbs::paint(Painter &p, int x, int y, int outerWidth) { +void GroupThumbs::paint(QPainter &p, int x, int y, int outerWidth) { const auto progress = _waitingForAnimationStart ? 0. : _animation.value(1.); diff --git a/Telegram/SourceFiles/media/view/media_view_group_thumbs.h b/Telegram/SourceFiles/media/view/media_view_group_thumbs.h index b425256cf..b624c985d 100644 --- a/Telegram/SourceFiles/media/view/media_view_group_thumbs.h +++ b/Telegram/SourceFiles/media/view/media_view_group_thumbs.h @@ -65,7 +65,7 @@ public: bool hidden() const; void checkForAnimationStart(); - void paint(Painter &p, int x, int y, int outerWidth); + void paint(QPainter &p, int x, int y, int outerWidth); ClickHandlerPtr getState(QPoint point) const; rpl::producer updateRequests() const { diff --git a/Telegram/SourceFiles/media/view/media_view_overlay_opengl.cpp b/Telegram/SourceFiles/media/view/media_view_overlay_opengl.cpp index db1f8631c..4541c3746 100644 --- a/Telegram/SourceFiles/media/view/media_view_overlay_opengl.cpp +++ b/Telegram/SourceFiles/media/view/media_view_overlay_opengl.cpp @@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "media/view/media_view_overlay_opengl.h" #include "ui/gl/gl_shader.h" +#include "ui/painter.h" #include "media/streaming/media_streaming_common.h" #include "base/platform/base_platform_info.h" #include "core/crash_reports.h" diff --git a/Telegram/SourceFiles/media/view/media_view_overlay_raster.cpp b/Telegram/SourceFiles/media/view/media_view_overlay_raster.cpp index dc21b43f4..7a0cc3952 100644 --- a/Telegram/SourceFiles/media/view/media_view_overlay_raster.cpp +++ b/Telegram/SourceFiles/media/view/media_view_overlay_raster.cpp @@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "media/view/media_view_overlay_raster.h" +#include "ui/painter.h" #include "media/view/media_view_pip.h" namespace Media::View { diff --git a/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp b/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp index dec7be453..99b3693e4 100644 --- a/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp +++ b/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp @@ -27,6 +27,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/toasts/common_toasts.h" #include "ui/text/format_values.h" #include "ui/item_text_options.h" +#include "ui/painter.h" #include "ui/ui_utility.h" #include "ui/cached_round_corners.h" #include "ui/gl/gl_surface.h" @@ -3717,9 +3718,13 @@ void OverlayWidget::paintSaveMsgContent( st::mediaviewSaveMsgCheck.paint(p, outer.topLeft() + st::mediaviewSaveMsgCheckPos, width()); p.setPen(st::mediaviewSaveMsgFg); - p.setTextPalette(st::mediaviewTextPalette); - _saveMsgText.draw(p, outer.x() + st::mediaviewSaveMsgPadding.left(), outer.y() + st::mediaviewSaveMsgPadding.top(), outer.width() - st::mediaviewSaveMsgPadding.left() - st::mediaviewSaveMsgPadding.right()); - p.restoreTextPalette(); + _saveMsgText.draw(p, { + .position = QPoint( + outer.x() + st::mediaviewSaveMsgPadding.left(), + outer.y() + st::mediaviewSaveMsgPadding.top()), + .availableWidth = outer.width() - st::mediaviewSaveMsgPadding.left() - st::mediaviewSaveMsgPadding.right(), + .palette = &st::mediaviewTextPalette, + }); p.setOpacity(1); } @@ -3858,10 +3863,14 @@ void OverlayWidget::paintCaptionContent( p.setPen(Qt::NoPen); p.drawRoundedRect(outer, st::mediaviewCaptionRadius, st::mediaviewCaptionRadius); if (inner.intersects(clip)) { - p.setTextPalette(st::mediaviewTextPalette); p.setPen(st::mediaviewCaptionFg); - _caption.drawElided(p, inner.x(), inner.y(), inner.width(), inner.height() / st::mediaviewCaptionStyle.font->height); - p.restoreTextPalette(); + _caption.draw(p, { + .position = inner.topLeft(), + .availableWidth = inner.width(), + .palette = &st::mediaviewTextPalette, + .spoiler = Ui::Text::DefaultSpoilerCache(), + .elisionLines = inner.height() / st::mediaviewCaptionStyle.font->height, + }); } } diff --git a/Telegram/SourceFiles/media/view/media_view_pip.cpp b/Telegram/SourceFiles/media/view/media_view_pip.cpp index 5bf9dfa65..eda0e8bcf 100644 --- a/Telegram/SourceFiles/media/view/media_view_pip.cpp +++ b/Telegram/SourceFiles/media/view/media_view_pip.cpp @@ -31,6 +31,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/shadow.h" #include "ui/text/format_values.h" #include "ui/gl/gl_surface.h" +#include "ui/painter.h" #include "window/window_controller.h" #include "styles/style_widgets.h" #include "styles/style_window.h" diff --git a/Telegram/SourceFiles/media/view/media_view_pip_opengl.cpp b/Telegram/SourceFiles/media/view/media_view_pip_opengl.cpp index 154ab2b88..a304578b2 100644 --- a/Telegram/SourceFiles/media/view/media_view_pip_opengl.cpp +++ b/Telegram/SourceFiles/media/view/media_view_pip_opengl.cpp @@ -497,7 +497,7 @@ void Pip::RendererGL::uploadTexture( void Pip::RendererGL::paintRadialLoading( QRect inner, float64 controlsShown) { - paintUsingRaster(_radialImage, inner, [&](Painter &&p) { + paintUsingRaster(_radialImage, inner, [&](QPainter &&p) { // Raster renderer paints content, then radial loading, then fade. // Here we paint fade together with the content, so we should emulate // radial loading being under the fade. @@ -521,14 +521,14 @@ void Pip::RendererGL::paintRadialLoading( } void Pip::RendererGL::paintPlayback(QRect outer, float64 shown) { - paintUsingRaster(_playbackImage, outer, [&](Painter &&p) { + paintUsingRaster(_playbackImage, outer, [&](QPainter &&p) { const auto newOuter = QRect(QPoint(), outer.size()); _owner->paintPlaybackContent(p, newOuter, shown); }, kPlaybackOffset, true); } void Pip::RendererGL::paintVolumeController(QRect outer, float64 shown) { - paintUsingRaster(_volumeControllerImage, outer, [&](Painter &&p) { + paintUsingRaster(_volumeControllerImage, outer, [&](QPainter &&p) { const auto newOuter = QRect(QPoint(), outer.size()); _owner->paintVolumeControllerContent(p, newOuter, shown); }, kVolumeControllerOffset, true); @@ -698,7 +698,7 @@ void Pip::RendererGL::invalidateControls() { void Pip::RendererGL::paintUsingRaster( Ui::GL::Image &image, QRect rect, - Fn method, + Fn method, int bufferOffset, bool transparent) { auto raster = image.takeImage(); @@ -718,7 +718,7 @@ void Pip::RendererGL::paintUsingRaster( if (transparent) { raster.fill(Qt::transparent); } - method(Painter(&raster)); + method(QPainter(&raster)); _f->glActiveTexture(GL_TEXTURE0); diff --git a/Telegram/SourceFiles/media/view/media_view_pip_opengl.h b/Telegram/SourceFiles/media/view/media_view_pip_opengl.h index 88fe7c6f4..977240c50 100644 --- a/Telegram/SourceFiles/media/view/media_view_pip_opengl.h +++ b/Telegram/SourceFiles/media/view/media_view_pip_opengl.h @@ -65,7 +65,7 @@ private: void paintUsingRaster( Ui::GL::Image &image, QRect rect, - Fn method, + Fn method, int bufferOffset, bool transparent = false); diff --git a/Telegram/SourceFiles/media/view/media_view_pip_raster.cpp b/Telegram/SourceFiles/media/view/media_view_pip_raster.cpp index bc858a787..e6f4c2009 100644 --- a/Telegram/SourceFiles/media/view/media_view_pip_raster.cpp +++ b/Telegram/SourceFiles/media/view/media_view_pip_raster.cpp @@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/image/image_prepare.h" #include "ui/widgets/shadow.h" +#include "ui/painter.h" #include "styles/style_calls.h" // st::callShadow. namespace Media::View { diff --git a/Telegram/SourceFiles/media/view/media_view_playback_controls.cpp b/Telegram/SourceFiles/media/view/media_view_playback_controls.cpp index 064523d34..646526016 100644 --- a/Telegram/SourceFiles/media/view/media_view_playback_controls.cpp +++ b/Telegram/SourceFiles/media/view/media_view_playback_controls.cpp @@ -140,7 +140,7 @@ MenuSpeedItem::MenuSpeedItem( paintRequest( ) | rpl::start_with_next([=](const QRect &clip) { - Painter p(this); + auto p = QPainter(this); const auto selected = isSelected(); p.fillRect(clip, selected ? st.itemBgOver : st.itemBg); @@ -568,7 +568,7 @@ void PlaybackControls::updateDownloadProgressPosition() { } void PlaybackControls::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); if (_fadeAnimation->paint(p)) { return; diff --git a/Telegram/SourceFiles/menu/menu_mute.cpp b/Telegram/SourceFiles/menu/menu_mute.cpp index 018cbf77d..e5fee5703 100644 --- a/Telegram/SourceFiles/menu/menu_mute.cpp +++ b/Telegram/SourceFiles/menu/menu_mute.cpp @@ -24,6 +24,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/checkbox.h" #include "ui/widgets/menu/menu_action.h" #include "ui/widgets/popup_menu.h" +#include "ui/painter.h" #include "styles/style_boxes.h" #include "styles/style_info.h" // infoTopBarMenu #include "styles/style_layers.h" @@ -58,7 +59,7 @@ void IconWithText::setData(const QString &text, const QPoint &iconPosition) { void IconWithText::paintEvent(QPaintEvent *e) { Ui::Menu::Action::paintEvent(e); - Painter p(this); + auto p = QPainter(this); p.setFont(st::menuIconMuteForAnyTextFont); p.setPen(st::menuIconColor); p.drawText(_iconPosition, _text); diff --git a/Telegram/SourceFiles/overview/overview_layout.cpp b/Telegram/SourceFiles/overview/overview_layout.cpp index c42dd19a7..4c2c1f531 100644 --- a/Telegram/SourceFiles/overview/overview_layout.cpp +++ b/Telegram/SourceFiles/overview/overview_layout.cpp @@ -45,6 +45,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/text/text_options.h" #include "ui/text/text_utilities.h" #include "ui/cached_round_corners.h" +#include "ui/painter.h" #include "ui/ui_utility.h" namespace Overview { @@ -1234,7 +1235,7 @@ void Document::paint(Painter &p, const QRect &clip, TextSelection selection, con paintCheckbox(p, { checkLeft, checkTop }, selected, context); } -void Document::drawCornerDownload(Painter &p, bool selected, const PaintContext *context) const { +void Document::drawCornerDownload(QPainter &p, bool selected, const PaintContext *context) const { if (dataLoaded() || _data->loadedInMediaCache() || !downloadInCorner()) { diff --git a/Telegram/SourceFiles/overview/overview_layout.h b/Telegram/SourceFiles/overview/overview_layout.h index a72671d0d..f87187043 100644 --- a/Telegram/SourceFiles/overview/overview_layout.h +++ b/Telegram/SourceFiles/overview/overview_layout.h @@ -369,7 +369,7 @@ protected: private: [[nodiscard]] bool downloadInCorner() const; - void drawCornerDownload(Painter &p, bool selected, const PaintContext *context) const; + void drawCornerDownload(QPainter &p, bool selected, const PaintContext *context) const; [[nodiscard]] TextState cornerDownloadTextState( QPoint point, StateRequest request) const; diff --git a/Telegram/SourceFiles/passport/passport_panel_edit_scans.cpp b/Telegram/SourceFiles/passport/passport_panel_edit_scans.cpp index ed291b552..46f1ab3ca 100644 --- a/Telegram/SourceFiles/passport/passport_panel_edit_scans.cpp +++ b/Telegram/SourceFiles/passport/passport_panel_edit_scans.cpp @@ -19,6 +19,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/text/text_utilities.h" // Ui::Text::ToUpper #include "ui/text/text_options.h" #include "ui/image/image_prepare.h" +#include "ui/painter.h" #include "core/file_utilities.h" #include "lang/lang_keys.h" #include "boxes/abstract_box.h" diff --git a/Telegram/SourceFiles/passport/ui/passport_details_row.cpp b/Telegram/SourceFiles/passport/ui/passport_details_row.cpp index 6fd408537..9c9618055 100644 --- a/Telegram/SourceFiles/passport/ui/passport_details_row.cpp +++ b/Telegram/SourceFiles/passport/ui/passport_details_row.cpp @@ -16,6 +16,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/wrap/slide_wrap.h" #include "ui/layers/box_content.h" #include "ui/boxes/country_select_box.h" +#include "ui/painter.h" #include "countries/countries_instance.h" #include "styles/style_layers.h" #include "styles/style_passport.h" diff --git a/Telegram/SourceFiles/passport/ui/passport_form_row.cpp b/Telegram/SourceFiles/passport/ui/passport_form_row.cpp index 6d3104408..ca76b4095 100644 --- a/Telegram/SourceFiles/passport/ui/passport_form_row.cpp +++ b/Telegram/SourceFiles/passport/ui/passport_form_row.cpp @@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "passport/ui/passport_form_row.h" #include "ui/text/text_options.h" +#include "ui/painter.h" #include "styles/style_passport.h" #include "styles/style_layers.h" diff --git a/Telegram/SourceFiles/profile/profile_back_button.cpp b/Telegram/SourceFiles/profile/profile_back_button.cpp index 64a51b0e9..939859a1e 100644 --- a/Telegram/SourceFiles/profile/profile_back_button.cpp +++ b/Telegram/SourceFiles/profile/profile_back_button.cpp @@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL //#include "history/view/history_view_top_bar_widget.h" #include "main/main_session.h" #include "data/data_session.h" +#include "ui/painter.h" #include "styles/style_widgets.h" #include "styles/style_window.h" #include "styles/style_profile.h" diff --git a/Telegram/SourceFiles/profile/profile_block_peer_list.cpp b/Telegram/SourceFiles/profile/profile_block_peer_list.cpp index 953fc4188..1db171dfc 100644 --- a/Telegram/SourceFiles/profile/profile_block_peer_list.cpp +++ b/Telegram/SourceFiles/profile/profile_block_peer_list.cpp @@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/effects/ripple_animation.h" #include "ui/text/text_options.h" +#include "ui/painter.h" #include "data/data_peer.h" #include "data/data_cloud_file.h" #include "main/main_session.h" diff --git a/Telegram/SourceFiles/profile/profile_block_widget.cpp b/Telegram/SourceFiles/profile/profile_block_widget.cpp index ff51bd84a..f029e261c 100644 --- a/Telegram/SourceFiles/profile/profile_block_widget.cpp +++ b/Telegram/SourceFiles/profile/profile_block_widget.cpp @@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "profile/profile_block_widget.h" +#include "ui/painter.h" #include "styles/style_profile.h" #include "styles/style_widgets.h" diff --git a/Telegram/SourceFiles/profile/profile_cover_drop_area.cpp b/Telegram/SourceFiles/profile/profile_cover_drop_area.cpp index 9e42f7e34..6b10b827a 100644 --- a/Telegram/SourceFiles/profile/profile_cover_drop_area.cpp +++ b/Telegram/SourceFiles/profile/profile_cover_drop_area.cpp @@ -32,7 +32,7 @@ void CoverDropArea::hideAnimated(HideFinishCallback &&callback) { } void CoverDropArea::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); if (_a_appearance.animating()) { p.setOpacity(_a_appearance.value(_hiding ? 0. : 1.)); diff --git a/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_common.cpp b/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_common.cpp index 060f99820..42eb5b782 100644 --- a/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_common.cpp +++ b/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_common.cpp @@ -46,7 +46,7 @@ void OneEdgeBoxContentDivider::skipEdge(Qt::Edge edge, bool skip) { } void OneEdgeBoxContentDivider::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); p.fillRect(e->rect(), Ui::BoxContentDivider::color()); if (!(_skipEdges & Qt::TopEdge)) { Ui::BoxContentDivider::paintTop(p); diff --git a/Telegram/SourceFiles/settings/settings_chat.cpp b/Telegram/SourceFiles/settings/settings_chat.cpp index 36338bfae..a6bce4edd 100644 --- a/Telegram/SourceFiles/settings/settings_chat.cpp +++ b/Telegram/SourceFiles/settings/settings_chat.cpp @@ -32,6 +32,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/style/style_palette_colorizer.h" #include "ui/toast/toast.h" #include "ui/image/image.h" +#include "ui/painter.h" #include "ui/ui_utility.h" #include "history/view/history_view_quick_action.h" #include "lang/lang_keys.h" @@ -124,7 +125,7 @@ private: }; -void PaintColorButton(Painter &p, QColor color, float64 selected) { +void PaintColorButton(QPainter &p, QColor color, float64 selected) { const auto size = st::settingsAccentColorSize; const auto rect = QRect(0, 0, size, size); @@ -145,7 +146,7 @@ void PaintColorButton(Painter &p, QColor color, float64 selected) { } } -void PaintCustomButton(Painter &p, const std::vector &colors) { +void PaintCustomButton(QPainter &p, const std::vector &colors) { Expects(colors.size() >= kCustomColorButtonParts); p.setPen(Qt::NoPen); @@ -225,7 +226,7 @@ QColor ColorsPalette::Button::color() const { } void ColorsPalette::Button::paint() { - Painter p(&_widget); + auto p = QPainter(&_widget); PainterHighQualityEnabler hq(p); if (_colors.size() == 1) { @@ -445,7 +446,7 @@ BackgroundRow::BackgroundRow( } void BackgroundRow::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); const auto radial = _radial.animating(); const auto radialOpacity = radial ? _radial.opacity() : 0.; @@ -606,7 +607,7 @@ void BackgroundRow::updateImage() { result.fill(Qt::transparent); return result; } - Painter p(&result); + auto p = QPainter(&result); PainterHighQualityEnabler hq(p); const auto w = prepared.width(); const auto h = prepared.height(); @@ -880,7 +881,7 @@ void SetupMessages( } protected: void paintEvent(QPaintEvent *e) override { - Painter p(this); + auto p = QPainter(this); paintRipple(p, _rippleAreaPosition, nullptr); } diff --git a/Telegram/SourceFiles/settings/settings_common.cpp b/Telegram/SourceFiles/settings/settings_common.cpp index da7d63048..37cc9f7f6 100644 --- a/Telegram/SourceFiles/settings/settings_common.cpp +++ b/Telegram/SourceFiles/settings/settings_common.cpp @@ -27,6 +27,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/box_content_divider.h" #include "ui/widgets/buttons.h" #include "ui/widgets/menu/menu_add_action_callback.h" +#include "ui/painter.h" #include "boxes/abstract_box.h" #include "boxes/sessions_box.h" #include "window/themes/window_theme_editor_box.h" diff --git a/Telegram/SourceFiles/settings/settings_information.cpp b/Telegram/SourceFiles/settings/settings_information.cpp index ab159ac2e..fffe15f4c 100644 --- a/Telegram/SourceFiles/settings/settings_information.cpp +++ b/Telegram/SourceFiles/settings/settings_information.cpp @@ -21,6 +21,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/menu/menu_add_action_callback_factory.h" #include "ui/boxes/confirm_box.h" #include "ui/text/text_utilities.h" +#include "ui/painter.h" #include "ui/special_buttons.h" #include "core/application.h" #include "core/core_settings.h" diff --git a/Telegram/SourceFiles/settings/settings_intro.cpp b/Telegram/SourceFiles/settings/settings_intro.cpp index 00033b888..17537fbfb 100644 --- a/Telegram/SourceFiles/settings/settings_intro.cpp +++ b/Telegram/SourceFiles/settings/settings_intro.cpp @@ -217,7 +217,7 @@ IntroWidget::IntroWidget( _wrap->setAttribute(Qt::WA_OpaquePaintEvent); _wrap->paintRequest( ) | rpl::start_with_next([=](QRect clip) { - Painter p(_wrap.data()); + auto p = QPainter(_wrap.data()); p.fillRect(clip, st::boxBg); }, _wrap->lifetime()); @@ -510,7 +510,7 @@ void LayerWidget::doSetInnerFocus() { } void LayerWidget::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); auto clip = e->rect(); auto r = st::boxRadius; diff --git a/Telegram/SourceFiles/settings/settings_notifications.cpp b/Telegram/SourceFiles/settings/settings_notifications.cpp index 51d6923c1..fefd47e70 100644 --- a/Telegram/SourceFiles/settings/settings_notifications.cpp +++ b/Telegram/SourceFiles/settings/settings_notifications.cpp @@ -16,6 +16,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/checkbox.h" #include "ui/widgets/buttons.h" #include "ui/widgets/discrete_sliders.h" +#include "ui/painter.h" #include "ui/ui_utility.h" #include "lang/lang_keys.h" #include "window/notifications_manager.h" diff --git a/Telegram/SourceFiles/settings/settings_premium.cpp b/Telegram/SourceFiles/settings/settings_premium.cpp index 78dc6bfc4..f466a9843 100644 --- a/Telegram/SourceFiles/settings/settings_premium.cpp +++ b/Telegram/SourceFiles/settings/settings_premium.cpp @@ -48,6 +48,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/wrap/padding_wrap.h" #include "ui/wrap/slide_wrap.h" #include "ui/wrap/vertical_layout.h" +#include "ui/painter.h" #include "window/window_controller.h" #include "window/window_session_controller.h" #include "base/unixtime.h" @@ -689,7 +690,7 @@ TopBarUser::TopBarUser( auto mask = frame; mask.fill(Qt::transparent); { - Painter p(&mask); + auto p = QPainter(&mask); auto gradient = QLinearGradient( 0, size.height(), @@ -702,7 +703,7 @@ TopBarUser::TopBarUser( } frame.fill(Qt::transparent); { - Painter q(&frame); + auto q = QPainter(&frame); svg.render(&q, QRect(QPoint(), size)); q.setCompositionMode(QPainter::CompositionMode_SourceIn); q.drawImage(0, 0, mask); @@ -808,7 +809,7 @@ TopBarUser::TopBarUser( _content->paintRequest( ) | rpl::start_with_next([=] { - Painter p(_content); + auto p = QPainter(_content); _ministars.paint(p); @@ -912,7 +913,7 @@ void TopBarUser::setTextPosition(int x, int y) { } void TopBarUser::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); TopBarAbstract::paintEdges(p); } @@ -1052,7 +1053,7 @@ void TopBar::resizeEvent(QResizeEvent *e) { } void TopBar::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); p.fillRect(e->rect(), Qt::transparent); diff --git a/Telegram/SourceFiles/settings/settings_privacy_controllers.cpp b/Telegram/SourceFiles/settings/settings_privacy_controllers.cpp index ae5433801..4e72afa64 100644 --- a/Telegram/SourceFiles/settings/settings_privacy_controllers.cpp +++ b/Telegram/SourceFiles/settings/settings_privacy_controllers.cpp @@ -36,6 +36,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/cached_round_corners.h" #include "ui/text/format_values.h" // Ui::FormatPhone #include "ui/text/text_utilities.h" +#include "ui/painter.h" #include "window/section_widget.h" #include "window/window_controller.h" #include "window/window_session_controller.h" @@ -197,7 +198,7 @@ AdminLog::OwnedItem GenerateForwardedItem( struct ForwardedTooltip { QRect geometry; - Fn paint; + Fn paint; }; [[nodiscard]] ForwardedTooltip PrepareForwardedTooltip( not_null view, @@ -276,7 +277,7 @@ struct ForwardedTooltip { { line, line, line, line + arrowSize }); const auto origin = full.topLeft(); - const auto paint = [=](Painter &p) { + const auto paint = [=](QPainter &p) { p.translate(-origin); Ui::FillRoundRect( @@ -918,7 +919,7 @@ object_ptr ForwardsPrivacyController::setupAboveWidget( state->tooltip->paintRequest( ) | rpl::start_with_next([=] { if (state->info.paint) { - auto p = Painter(state->tooltip.get()); + auto p = QPainter(state->tooltip.get()); state->info.paint(p); } }, state->tooltip->lifetime()); diff --git a/Telegram/SourceFiles/settings/settings_privacy_security.cpp b/Telegram/SourceFiles/settings/settings_privacy_security.cpp index f38963b5e..db62fae32 100644 --- a/Telegram/SourceFiles/settings/settings_privacy_security.cpp +++ b/Telegram/SourceFiles/settings/settings_privacy_security.cpp @@ -151,7 +151,7 @@ void AddPremiumPrivacyButton( ) | rpl::filter([=]() -> bool { return state->widget.x(); }) | rpl::start_with_next([=] { - auto p = Painter(&state->widget); + auto p = QPainter(&state->widget); st::settingsPremiumLock.paint(p, 0, 0, state->widget.width()); }, state->widget.lifetime()); diff --git a/Telegram/SourceFiles/support/support_autocomplete.cpp b/Telegram/SourceFiles/support/support_autocomplete.cpp index b4a7a3972..ba3183f24 100644 --- a/Telegram/SourceFiles/support/support_autocomplete.cpp +++ b/Telegram/SourceFiles/support/support_autocomplete.cpp @@ -13,6 +13,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/input_fields.h" #include "ui/widgets/buttons.h" #include "ui/wrap/padding_wrap.h" +#include "ui/painter.h" #include "support/support_templates.h" #include "support/support_common.h" #include "history/view/history_view_message.h" diff --git a/Telegram/SourceFiles/ui/boxes/auto_delete_settings.cpp b/Telegram/SourceFiles/ui/boxes/auto_delete_settings.cpp index d65417979..33be63169 100644 --- a/Telegram/SourceFiles/ui/boxes/auto_delete_settings.cpp +++ b/Telegram/SourceFiles/ui/boxes/auto_delete_settings.cpp @@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/boxes/auto_delete_settings.h" #include "ui/widgets/checkbox.h" +#include "ui/painter.h" #include "lang/lang_keys.h" #include "styles/style_chat.h" #include "styles/style_layers.h" diff --git a/Telegram/SourceFiles/ui/boxes/calendar_box.cpp b/Telegram/SourceFiles/ui/boxes/calendar_box.cpp index 715e92e08..6478a93f3 100644 --- a/Telegram/SourceFiles/ui/boxes/calendar_box.cpp +++ b/Telegram/SourceFiles/ui/boxes/calendar_box.cpp @@ -12,6 +12,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/effects/ripple_animation.h" #include "ui/chat/chat_style.h" #include "ui/ui_utility.h" +#include "ui/painter.h" #include "ui/cached_round_corners.h" #include "lang/lang_keys.h" #include "styles/style_boxes.h" @@ -365,7 +366,7 @@ private: int rowsLeft() const; int rowsTop() const; void resizeToCurrent(); - void paintRows(Painter &p, QRect clip); + void paintRows(QPainter &p, QRect clip); const style::CalendarSizes &_st; const style::CalendarColors &_styleColors; @@ -447,7 +448,7 @@ rpl::lifetime &CalendarBox::FloatingDate::lifetime() { } void CalendarBox::FloatingDate::paint() { - auto p = Painter(&_widget); + auto p = QPainter(&_widget); FillRoundRect(p, _widget.rect(), st::roundedBg, _corners); @@ -495,7 +496,7 @@ void CalendarBox::Inner::resizeToCurrent() { } void CalendarBox::Inner::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); auto clip = e->rect(); @@ -510,7 +511,7 @@ int CalendarBox::Inner::rowsTop() const { return _st.padding.top(); } -void CalendarBox::Inner::paintRows(Painter &p, QRect clip) { +void CalendarBox::Inner::paintRows(QPainter &p, QRect clip) { p.setFont(st::calendarDaysFont); auto y = rowsTop(); auto index = -_context->daysShift(); diff --git a/Telegram/SourceFiles/ui/boxes/confirm_phone_box.cpp b/Telegram/SourceFiles/ui/boxes/confirm_phone_box.cpp index 42557f913..a2b51ac50 100644 --- a/Telegram/SourceFiles/ui/boxes/confirm_phone_box.cpp +++ b/Telegram/SourceFiles/ui/boxes/confirm_phone_box.cpp @@ -96,7 +96,7 @@ void ConfirmPhoneBox::showError(const QString &error) { void ConfirmPhoneBox::paintEvent(QPaintEvent *e) { BoxContent::paintEvent(e); - Painter p(this); + auto p = QPainter(this); p.setFont(st::boxTextFont); const auto callText = _call.getText(); diff --git a/Telegram/SourceFiles/ui/boxes/country_select_box.cpp b/Telegram/SourceFiles/ui/boxes/country_select_box.cpp index 13d0a811f..66ccadbf0 100644 --- a/Telegram/SourceFiles/ui/boxes/country_select_box.cpp +++ b/Telegram/SourceFiles/ui/boxes/country_select_box.cpp @@ -11,6 +11,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/scroll_area.h" #include "ui/widgets/multi_select.h" #include "ui/effects/ripple_animation.h" +#include "ui/painter.h" #include "countries/countries_instance.h" #include "styles/style_layers.h" #include "styles/style_boxes.h" diff --git a/Telegram/SourceFiles/ui/boxes/time_picker_box.cpp b/Telegram/SourceFiles/ui/boxes/time_picker_box.cpp index 4ed30b247..746fbd4e2 100644 --- a/Telegram/SourceFiles/ui/boxes/time_picker_box.cpp +++ b/Telegram/SourceFiles/ui/boxes/time_picker_box.cpp @@ -82,7 +82,7 @@ Fn TimePickerBox( }(); const auto itemHeight = st::historyMessagesTTLPickerItemHeight; auto paintCallback = [=]( - Painter &p, + QPainter &p, int index, float64 y, float64 distanceFromCenter, @@ -118,7 +118,7 @@ Fn TimePickerBox( content->paintRequest( ) | rpl::start_with_next([=](const QRect &r) { - Painter p(content); + auto p = QPainter(content); p.fillRect(r, Qt::transparent); diff --git a/Telegram/SourceFiles/ui/cached_round_corners.cpp b/Telegram/SourceFiles/ui/cached_round_corners.cpp index 1c09eb12e..bf7cc063f 100644 --- a/Telegram/SourceFiles/ui/cached_round_corners.cpp +++ b/Telegram/SourceFiles/ui/cached_round_corners.cpp @@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "ui/cached_round_corners.h" +#include "ui/painter.h" #include "ui/ui_utility.h" #include "ui/image/image_prepare.h" #include "styles/style_chat.h" @@ -27,7 +28,7 @@ rpl::lifetime PaletteChangedLifetime; int32 r = radius * style::DevicePixelRatio(), s = st::msgShadow * style::DevicePixelRatio(); QImage rect(r * 3, r * 3 + (shadow ? s : 0), QImage::Format_ARGB32_Premultiplied); { - Painter p(&rect); + auto p = QPainter(&rect); PainterHighQualityEnabler hq(p); p.setCompositionMode(QPainter::CompositionMode_Source); @@ -108,7 +109,7 @@ void FinishCachedCorners() { PaletteChangedLifetime.destroy(); } -void FillRoundRect(Painter &p, int32 x, int32 y, int32 w, int32 h, style::color bg, const CornersPixmaps &corner, const style::color *shadow, RectParts parts) { +void FillRoundRect(QPainter &p, int32 x, int32 y, int32 w, int32 h, style::color bg, const CornersPixmaps &corner, const style::color *shadow, RectParts parts) { auto cornerWidth = corner.p[0].width() / style::DevicePixelRatio(); auto cornerHeight = corner.p[0].height() / style::DevicePixelRatio(); if (w < 2 * cornerWidth || h < 2 * cornerHeight) return; @@ -152,15 +153,15 @@ void FillRoundRect(Painter &p, int32 x, int32 y, int32 w, int32 h, style::color } } -void FillRoundRect(Painter &p, int32 x, int32 y, int32 w, int32 h, style::color bg, CachedRoundCorners index, const style::color *shadow, RectParts parts) { +void FillRoundRect(QPainter &p, int32 x, int32 y, int32 w, int32 h, style::color bg, CachedRoundCorners index, const style::color *shadow, RectParts parts) { FillRoundRect(p, x, y, w, h, bg, Corners[index], shadow, parts); } -void FillRoundShadow(Painter &p, int32 x, int32 y, int32 w, int32 h, style::color shadow, CachedRoundCorners index, RectParts parts) { +void FillRoundShadow(QPainter &p, int32 x, int32 y, int32 w, int32 h, style::color shadow, CachedRoundCorners index, RectParts parts) { FillRoundShadow(p, x, y, w, h, shadow, Corners[index], parts); } -void FillRoundShadow(Painter &p, int32 x, int32 y, int32 w, int32 h, style::color shadow, const CornersPixmaps &corner, RectParts parts) { +void FillRoundShadow(QPainter &p, int32 x, int32 y, int32 w, int32 h, style::color shadow, const CornersPixmaps &corner, RectParts parts) { auto cornerWidth = corner.p[0].width() / style::DevicePixelRatio(); auto cornerHeight = corner.p[0].height() / style::DevicePixelRatio(); if (parts & RectPart::Bottom) { @@ -196,7 +197,7 @@ CornersPixmaps PrepareCornerPixmaps(ImageRoundRadius radius, style::color bg, co Unexpected("Image round radius in PrepareCornerPixmaps."); } -void FillRoundRect(Painter &p, int32 x, int32 y, int32 w, int32 h, style::color bg, ImageRoundRadius radius, RectParts parts) { +void FillRoundRect(QPainter &p, int32 x, int32 y, int32 w, int32 h, style::color bg, ImageRoundRadius radius, RectParts parts) { if (radius == ImageRoundRadius::None) { p.fillRect(x, y, w, h, bg); return; diff --git a/Telegram/SourceFiles/ui/cached_round_corners.h b/Telegram/SourceFiles/ui/cached_round_corners.h index c227654cc..c61172b26 100644 --- a/Telegram/SourceFiles/ui/cached_round_corners.h +++ b/Telegram/SourceFiles/ui/cached_round_corners.h @@ -9,8 +9,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/rect_part.h" -class Painter; - enum class ImageRoundRadius; namespace Ui { @@ -38,16 +36,16 @@ enum CachedRoundCorners : int { RoundCornersCount }; -void FillRoundRect(Painter &p, int32 x, int32 y, int32 w, int32 h, style::color bg, CachedRoundCorners index, const style::color *shadow = nullptr, RectParts parts = RectPart::Full); -inline void FillRoundRect(Painter &p, const QRect &rect, style::color bg, CachedRoundCorners index, const style::color *shadow = nullptr, RectParts parts = RectPart::Full) { +void FillRoundRect(QPainter &p, int32 x, int32 y, int32 w, int32 h, style::color bg, CachedRoundCorners index, const style::color *shadow = nullptr, RectParts parts = RectPart::Full); +inline void FillRoundRect(QPainter &p, const QRect &rect, style::color bg, CachedRoundCorners index, const style::color *shadow = nullptr, RectParts parts = RectPart::Full) { FillRoundRect(p, rect.x(), rect.y(), rect.width(), rect.height(), bg, index, shadow, parts); } -void FillRoundShadow(Painter &p, int32 x, int32 y, int32 w, int32 h, style::color shadow, CachedRoundCorners index, RectParts parts = RectPart::Full); -inline void FillRoundShadow(Painter &p, const QRect &rect, style::color shadow, CachedRoundCorners index, RectParts parts = RectPart::Full) { +void FillRoundShadow(QPainter &p, int32 x, int32 y, int32 w, int32 h, style::color shadow, CachedRoundCorners index, RectParts parts = RectPart::Full); +inline void FillRoundShadow(QPainter &p, const QRect &rect, style::color shadow, CachedRoundCorners index, RectParts parts = RectPart::Full) { FillRoundShadow(p, rect.x(), rect.y(), rect.width(), rect.height(), shadow, index, parts); } -void FillRoundRect(Painter &p, int32 x, int32 y, int32 w, int32 h, style::color bg, ImageRoundRadius radius, RectParts parts = RectPart::Full); -inline void FillRoundRect(Painter &p, const QRect &rect, style::color bg, ImageRoundRadius radius, RectParts parts = RectPart::Full) { +void FillRoundRect(QPainter &p, int32 x, int32 y, int32 w, int32 h, style::color bg, ImageRoundRadius radius, RectParts parts = RectPart::Full); +inline void FillRoundRect(QPainter &p, const QRect &rect, style::color bg, ImageRoundRadius radius, RectParts parts = RectPart::Full) { FillRoundRect(p, rect.x(), rect.y(), rect.width(), rect.height(), bg, radius, parts); } @@ -59,12 +57,12 @@ inline void FillRoundRect(Painter &p, const QRect &rect, style::color bg, ImageR ImageRoundRadius radius, style::color bg, const style::color *sh); -void FillRoundRect(Painter &p, int32 x, int32 y, int32 w, int32 h, style::color bg, const CornersPixmaps &corner, const style::color *shadow = nullptr, RectParts parts = RectPart::Full); -inline void FillRoundRect(Painter &p, const QRect &rect, style::color bg, const CornersPixmaps &corner, const style::color *shadow = nullptr, RectParts parts = RectPart::Full) { +void FillRoundRect(QPainter &p, int32 x, int32 y, int32 w, int32 h, style::color bg, const CornersPixmaps &corner, const style::color *shadow = nullptr, RectParts parts = RectPart::Full); +inline void FillRoundRect(QPainter &p, const QRect &rect, style::color bg, const CornersPixmaps &corner, const style::color *shadow = nullptr, RectParts parts = RectPart::Full) { return FillRoundRect(p, rect.x(), rect.y(), rect.width(), rect.height(), bg, corner, shadow, parts); } -void FillRoundShadow(Painter &p, int32 x, int32 y, int32 w, int32 h, style::color shadow, const CornersPixmaps &corner, RectParts parts = RectPart::Full); -inline void FillRoundShadow(Painter &p, const QRect &rect, style::color shadow, const CornersPixmaps &corner, RectParts parts = RectPart::Full) { +void FillRoundShadow(QPainter &p, int32 x, int32 y, int32 w, int32 h, style::color shadow, const CornersPixmaps &corner, RectParts parts = RectPart::Full); +inline void FillRoundShadow(QPainter &p, const QRect &rect, style::color shadow, const CornersPixmaps &corner, RectParts parts = RectPart::Full) { FillRoundShadow(p, rect.x(), rect.y(), rect.width(), rect.height(), shadow, corner, parts); } diff --git a/Telegram/SourceFiles/ui/chat/attach/attach_abstract_single_file_preview.cpp b/Telegram/SourceFiles/ui/chat/attach/attach_abstract_single_file_preview.cpp index 848a051fc..49557b46e 100644 --- a/Telegram/SourceFiles/ui/chat/attach/attach_abstract_single_file_preview.cpp +++ b/Telegram/SourceFiles/ui/chat/attach/attach_abstract_single_file_preview.cpp @@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/text/text_options.h" #include "ui/widgets/buttons.h" #include "ui/image/image_prepare.h" +#include "ui/painter.h" #include "base/timer_rpl.h" #include "styles/style_chat.h" #include "styles/style_boxes.h" diff --git a/Telegram/SourceFiles/ui/chat/attach/attach_abstract_single_media_preview.cpp b/Telegram/SourceFiles/ui/chat/attach/attach_abstract_single_media_preview.cpp index 13f6efdb4..dccd8874d 100644 --- a/Telegram/SourceFiles/ui/chat/attach/attach_abstract_single_media_preview.cpp +++ b/Telegram/SourceFiles/ui/chat/attach/attach_abstract_single_media_preview.cpp @@ -11,6 +11,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/chat/attach/attach_controls.h" #include "ui/image/image_prepare.h" #include "ui/widgets/buttons.h" +#include "ui/painter.h" #include "styles/style_boxes.h" #include "styles/style_chat.h" #include "styles/style_layers.h" @@ -124,7 +125,7 @@ void AbstractSingleMediaPreview::resizeEvent(QResizeEvent *e) { } void AbstractSingleMediaPreview::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); if (drawBackground()) { const auto &padding = st::boxPhotoPadding; diff --git a/Telegram/SourceFiles/ui/chat/attach/attach_abstract_single_media_preview.h b/Telegram/SourceFiles/ui/chat/attach/attach_abstract_single_media_preview.h index 06a6b124e..011eabe82 100644 --- a/Telegram/SourceFiles/ui/chat/attach/attach_abstract_single_media_preview.h +++ b/Telegram/SourceFiles/ui/chat/attach/attach_abstract_single_media_preview.h @@ -26,7 +26,7 @@ public: protected: virtual bool drawBackground() const = 0; - virtual bool tryPaintAnimation(Painter &p) = 0; + virtual bool tryPaintAnimation(QPainter &p) = 0; virtual bool isAnimatedPreviewReady() const = 0; void updatePhotoEditorButton(); diff --git a/Telegram/SourceFiles/ui/chat/attach/attach_album_preview.cpp b/Telegram/SourceFiles/ui/chat/attach/attach_album_preview.cpp index a9bbcdf9c..c62ea7302 100644 --- a/Telegram/SourceFiles/ui/chat/attach/attach_album_preview.cpp +++ b/Telegram/SourceFiles/ui/chat/attach/attach_album_preview.cpp @@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/chat/attach/attach_album_thumbnail.h" #include "ui/chat/attach/attach_prepare.h" +#include "ui/painter.h" #include "styles/style_chat.h" #include "styles/style_boxes.h" #include "styles/style_layers.h" diff --git a/Telegram/SourceFiles/ui/chat/attach/attach_album_thumbnail.cpp b/Telegram/SourceFiles/ui/chat/attach/attach_album_thumbnail.cpp index 6742cddf7..9e2b18e3e 100644 --- a/Telegram/SourceFiles/ui/chat/attach/attach_album_thumbnail.cpp +++ b/Telegram/SourceFiles/ui/chat/attach/attach_album_thumbnail.cpp @@ -12,6 +12,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/text/format_values.h" #include "ui/widgets/buttons.h" #include "ui/ui_utility.h" +#include "ui/painter.h" #include "base/call_delayed.h" #include "styles/style_chat.h" #include "styles/style_boxes.h" @@ -173,7 +174,7 @@ int AlbumThumbnail::photoHeight() const { } void AlbumThumbnail::paintInAlbum( - Painter &p, + QPainter &p, int left, int top, float64 shrinkProgress, @@ -251,7 +252,7 @@ void AlbumThumbnail::prepareCache(QSize size, int shrink) { QRect(QPoint(), size * style::DevicePixelRatio())); } -void AlbumThumbnail::drawSimpleFrame(Painter &p, QRect to, QSize size) const { +void AlbumThumbnail::drawSimpleFrame(QPainter &p, QRect to, QSize size) const { const auto fullWidth = _fullPreview.width(); const auto fullHeight = _fullPreview.height(); const auto previewSize = GetImageScaleSizeForGeometry( @@ -495,7 +496,7 @@ void AlbumThumbnail::finishAnimations() { } QRect AlbumThumbnail::paintButtons( - Painter &p, + QPainter &p, QPoint point, int outerWidth, float64 shrinkProgress) { diff --git a/Telegram/SourceFiles/ui/chat/attach/attach_album_thumbnail.h b/Telegram/SourceFiles/ui/chat/attach/attach_album_thumbnail.h index a544f27de..a0b98192d 100644 --- a/Telegram/SourceFiles/ui/chat/attach/attach_album_thumbnail.h +++ b/Telegram/SourceFiles/ui/chat/attach/attach_album_thumbnail.h @@ -35,7 +35,7 @@ public: int photoHeight() const; void paintInAlbum( - Painter &p, + QPainter &p, int left, int top, float64 shrinkProgress, @@ -61,9 +61,9 @@ private: QRect countRealGeometry() const; QRect countCurrentGeometry(float64 progress) const; void prepareCache(QSize size, int shrink); - void drawSimpleFrame(Painter &p, QRect to, QSize size) const; + void drawSimpleFrame(QPainter &p, QRect to, QSize size) const; QRect paintButtons( - Painter &p, + QPainter &p, QPoint point, int outerWidth, float64 shrinkProgress); diff --git a/Telegram/SourceFiles/ui/chat/attach/attach_bot_webview.cpp b/Telegram/SourceFiles/ui/chat/attach/attach_bot_webview.cpp index 665c96e91..eda4984a1 100644 --- a/Telegram/SourceFiles/ui/chat/attach/attach_bot_webview.cpp +++ b/Telegram/SourceFiles/ui/chat/attach/attach_bot_webview.cpp @@ -18,6 +18,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/menu/menu_add_action_callback.h" #include "ui/wrap/fade_wrap.h" #include "ui/integration.h" +#include "ui/painter.h" #include "lang/lang_keys.h" #include "webview/webview_embed.h" #include "webview/webview_dialog.h" diff --git a/Telegram/SourceFiles/ui/chat/attach/attach_controls.cpp b/Telegram/SourceFiles/ui/chat/attach/attach_controls.cpp index 3665acf29..addfc3a9a 100644 --- a/Telegram/SourceFiles/ui/chat/attach/attach_controls.cpp +++ b/Telegram/SourceFiles/ui/chat/attach/attach_controls.cpp @@ -15,7 +15,7 @@ AttachControls::AttachControls() : _rect(st::sendBoxAlbumGroupRadius, st::roundedBg) { } -void AttachControls::paint(Painter &p, int x, int y) { +void AttachControls::paint(QPainter &p, int x, int y) { const auto groupWidth = width(); const auto groupHeight = height(); const auto full = (_type == Type::Full); @@ -84,7 +84,7 @@ AttachControlsWidget::AttachControlsWidget( paintRequest( ) | rpl::start_with_next([=] { - Painter p(this); + auto p = QPainter(this); _controls.paint(p, 0, 0); }, lifetime()); } diff --git a/Telegram/SourceFiles/ui/chat/attach/attach_controls.h b/Telegram/SourceFiles/ui/chat/attach/attach_controls.h index 93a723efb..9b7ad55c5 100644 --- a/Telegram/SourceFiles/ui/chat/attach/attach_controls.h +++ b/Telegram/SourceFiles/ui/chat/attach/attach_controls.h @@ -23,7 +23,7 @@ public: AttachControls(); - void paint(Painter &p, int x, int y); + void paint(QPainter &p, int x, int y); void setType(Type type); [[nodiscard]] int width() const; diff --git a/Telegram/SourceFiles/ui/chat/attach/attach_item_single_file_preview.cpp b/Telegram/SourceFiles/ui/chat/attach/attach_item_single_file_preview.cpp index fd658d712..63d76c07f 100644 --- a/Telegram/SourceFiles/ui/chat/attach/attach_item_single_file_preview.cpp +++ b/Telegram/SourceFiles/ui/chat/attach/attach_item_single_file_preview.cpp @@ -17,6 +17,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/chat/attach/attach_prepare.h" #include "ui/text/format_song_name.h" #include "ui/text/format_values.h" +#include "ui/painter.h" #include "styles/style_chat.h" namespace Ui { diff --git a/Telegram/SourceFiles/ui/chat/attach/attach_item_single_media_preview.cpp b/Telegram/SourceFiles/ui/chat/attach/attach_item_single_media_preview.cpp index 2a6c221ac..1e1ec6847 100644 --- a/Telegram/SourceFiles/ui/chat/attach/attach_item_single_media_preview.cpp +++ b/Telegram/SourceFiles/ui/chat/attach/attach_item_single_media_preview.cpp @@ -194,7 +194,7 @@ bool ItemSingleMediaPreview::drawBackground() const { return true; // A sticker can't be here. } -bool ItemSingleMediaPreview::tryPaintAnimation(Painter &p) { +bool ItemSingleMediaPreview::tryPaintAnimation(QPainter &p) { checkStreamedIsStarted(); if (_streamed && _streamed->player().ready() diff --git a/Telegram/SourceFiles/ui/chat/attach/attach_item_single_media_preview.h b/Telegram/SourceFiles/ui/chat/attach/attach_item_single_media_preview.h index ebd3946f7..12dfe05ca 100644 --- a/Telegram/SourceFiles/ui/chat/attach/attach_item_single_media_preview.h +++ b/Telegram/SourceFiles/ui/chat/attach/attach_item_single_media_preview.h @@ -40,7 +40,7 @@ public: protected: bool drawBackground() const override; - bool tryPaintAnimation(Painter &p) override; + bool tryPaintAnimation(QPainter &p) override; bool isAnimatedPreviewReady() const override; private: diff --git a/Telegram/SourceFiles/ui/chat/attach/attach_single_media_preview.cpp b/Telegram/SourceFiles/ui/chat/attach/attach_single_media_preview.cpp index 720a74f71..224a110e7 100644 --- a/Telegram/SourceFiles/ui/chat/attach/attach_single_media_preview.cpp +++ b/Telegram/SourceFiles/ui/chat/attach/attach_single_media_preview.cpp @@ -74,7 +74,7 @@ bool SingleMediaPreview::drawBackground() const { return !_sticker; } -bool SingleMediaPreview::tryPaintAnimation(Painter &p) { +bool SingleMediaPreview::tryPaintAnimation(QPainter &p) { if (_gifPreview && _gifPreview->started()) { const auto paused = _gifPaused(); const auto frame = _gifPreview->current({ diff --git a/Telegram/SourceFiles/ui/chat/attach/attach_single_media_preview.h b/Telegram/SourceFiles/ui/chat/attach/attach_single_media_preview.h index 7f43cc322..f1bf834d5 100644 --- a/Telegram/SourceFiles/ui/chat/attach/attach_single_media_preview.h +++ b/Telegram/SourceFiles/ui/chat/attach/attach_single_media_preview.h @@ -37,7 +37,7 @@ public: protected: bool drawBackground() const override; - bool tryPaintAnimation(Painter &p) override; + bool tryPaintAnimation(QPainter &p) override; bool isAnimatedPreviewReady() const override; private: diff --git a/Telegram/SourceFiles/ui/chat/chat_style.cpp b/Telegram/SourceFiles/ui/chat/chat_style.cpp index 2328f2182..f06797b9d 100644 --- a/Telegram/SourceFiles/ui/chat/chat_style.cpp +++ b/Telegram/SourceFiles/ui/chat/chat_style.cpp @@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/chat/chat_theme.h" #include "ui/image/image_prepare.h" // ImageRoundRadius +#include "ui/painter.h" #include "ui/ui_utility.h" #include "styles/style_chat.h" #include "styles/style_dialogs.h" @@ -28,7 +29,7 @@ void EnsureCorners( } void RectWithCorners( - Painter &p, + QPainter &p, QRect rect, const style::color &bg, const CornersPixmaps &corners, @@ -681,7 +682,7 @@ void ChatStyle::make( } void FillComplexOverlayRect( - Painter &p, + QPainter &p, not_null st, QRect rect, ImageRoundRadius radius, @@ -701,7 +702,7 @@ void FillComplexOverlayRect( } void FillComplexLocationRect( - Painter &p, + QPainter &p, not_null st, QRect rect, ImageRoundRadius radius, diff --git a/Telegram/SourceFiles/ui/chat/chat_style.h b/Telegram/SourceFiles/ui/chat/chat_style.h index e4080262c..8acae297d 100644 --- a/Telegram/SourceFiles/ui/chat/chat_style.h +++ b/Telegram/SourceFiles/ui/chat/chat_style.h @@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/cached_round_corners.h" #include "ui/style/style_core_palette.h" #include "layout/layout_selection.h" +#include "styles/style_basic.h" enum class ImageRoundRadius; @@ -351,13 +352,13 @@ private: }; void FillComplexOverlayRect( - Painter &p, + QPainter &p, not_null st, QRect rect, ImageRoundRadius radius, RectParts roundCorners); void FillComplexLocationRect( - Painter &p, + QPainter &p, not_null st, QRect rect, ImageRoundRadius radius, diff --git a/Telegram/SourceFiles/ui/chat/choose_send_as.cpp b/Telegram/SourceFiles/ui/chat/choose_send_as.cpp index 45aa363ff..f7b4ee44a 100644 --- a/Telegram/SourceFiles/ui/chat/choose_send_as.cpp +++ b/Telegram/SourceFiles/ui/chat/choose_send_as.cpp @@ -15,6 +15,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/controls/send_as_button.h" #include "ui/text/text_utilities.h" #include "ui/toast/toast.h" +#include "ui/painter.h" #include "window/window_session_controller.h" #include "main/main_session.h" #include "main/session/send_as_peers.h" diff --git a/Telegram/SourceFiles/ui/chat/choose_theme_controller.cpp b/Telegram/SourceFiles/ui/chat/choose_theme_controller.cpp index 52bb3ac39..fff6222f5 100644 --- a/Telegram/SourceFiles/ui/chat/choose_theme_controller.cpp +++ b/Telegram/SourceFiles/ui/chat/choose_theme_controller.cpp @@ -14,6 +14,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/chat/chat_theme.h" #include "ui/chat/message_bubble.h" #include "ui/wrap/vertical_layout.h" +#include "ui/painter.h" #include "main/main_session.h" #include "window/window_session_controller.h" #include "window/themes/window_theme.h" diff --git a/Telegram/SourceFiles/ui/chat/group_call_bar.cpp b/Telegram/SourceFiles/ui/chat/group_call_bar.cpp index 02b3c2a38..4a743706b 100644 --- a/Telegram/SourceFiles/ui/chat/group_call_bar.cpp +++ b/Telegram/SourceFiles/ui/chat/group_call_bar.cpp @@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/chat/group_call_userpics.h" #include "ui/widgets/shadow.h" #include "ui/widgets/buttons.h" +#include "ui/painter.h" #include "lang/lang_keys.h" #include "base/unixtime.h" #include "styles/style_chat.h" diff --git a/Telegram/SourceFiles/ui/chat/group_call_userpics.cpp b/Telegram/SourceFiles/ui/chat/group_call_userpics.cpp index 6b98a0f2a..12fd2e912 100644 --- a/Telegram/SourceFiles/ui/chat/group_call_userpics.cpp +++ b/Telegram/SourceFiles/ui/chat/group_call_userpics.cpp @@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/chat/group_call_userpics.h" #include "ui/paint/blobs.h" +#include "ui/painter.h" #include "base/random.h" #include "styles/style_chat.h" @@ -138,7 +139,7 @@ GroupCallUserpics::GroupCallUserpics( GroupCallUserpics::~GroupCallUserpics() = default; -void GroupCallUserpics::paint(Painter &p, int x, int y, int size) { +void GroupCallUserpics::paint(QPainter &p, int x, int y, int size) { const auto factor = style::DevicePixelRatio(); const auto &minScale = kUserpicMinScale; for (auto &userpic : ranges::views::reverse(_list)) { @@ -259,7 +260,7 @@ void GroupCallUserpics::validateCache(Userpic &userpic) { userpic.cacheMasked = !userpic.topMost; userpic.cache.fill(Qt::transparent); { - Painter p(&userpic.cache); + auto p = QPainter(&userpic.cache); const auto skip = (kWideScale - 1) / 2 * size; p.drawImage(skip, skip, userpic.data.userpic); diff --git a/Telegram/SourceFiles/ui/chat/group_call_userpics.h b/Telegram/SourceFiles/ui/chat/group_call_userpics.h index 9ce16d63b..326992d3d 100644 --- a/Telegram/SourceFiles/ui/chat/group_call_userpics.h +++ b/Telegram/SourceFiles/ui/chat/group_call_userpics.h @@ -33,7 +33,7 @@ public: void update( const std::vector &users, bool visible); - void paint(Painter &p, int x, int y, int size); + void paint(QPainter &p, int x, int y, int size); [[nodiscard]] int maxWidth() const; [[nodiscard]] rpl::producer widthValue() const; diff --git a/Telegram/SourceFiles/ui/chat/message_bar.cpp b/Telegram/SourceFiles/ui/chat/message_bar.cpp index 55ee3a615..71b38ba76 100644 --- a/Telegram/SourceFiles/ui/chat/message_bar.cpp +++ b/Telegram/SourceFiles/ui/chat/message_bar.cpp @@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/text/text_options.h" #include "ui/image/image_prepare.h" +#include "ui/painter.h" #include "styles/style_chat.h" #include "styles/palette.h" @@ -402,8 +403,14 @@ void MessageBar::paint(Painter &p) { width); } else { p.setPen(_st.textFg); - p.setTextPalette(_st.textPalette); - _text.drawLeftElided(p, body.x(), text.y(), body.width(), width); + _text.draw(p, { + .position = { body.x(), text.y() }, + .outerWidth = width, + .availableWidth = body.width(), + .palette = &_st.textPalette, + .spoiler = Ui::Text::DefaultSpoilerCache(), + .elisionLines = 1, + }); } } else if (_animation->bodyAnimation == BodyAnimation::Text) { p.setOpacity(1. - progress); diff --git a/Telegram/SourceFiles/ui/chat/message_bubble.cpp b/Telegram/SourceFiles/ui/chat/message_bubble.cpp index c7f58d7ce..9996383e8 100644 --- a/Telegram/SourceFiles/ui/chat/message_bubble.cpp +++ b/Telegram/SourceFiles/ui/chat/message_bubble.cpp @@ -79,7 +79,7 @@ void PaintBubbleGeneric( fillRounded(rect, parts); } -void PaintPatternBubble(Painter &p, const SimpleBubble &args) { +void PaintPatternBubble(QPainter &p, const SimpleBubble &args) { const auto opacity = args.st->msgOutBg()->c.alphaF(); const auto shadowOpacity = opacity * args.st->msgOutShadow()->c.alphaF(); const auto pattern = args.pattern; @@ -217,7 +217,7 @@ void PaintPatternBubble(Painter &p, const SimpleBubble &args) { p.setOpacity(1.); } -void PaintSolidBubble(Painter &p, const SimpleBubble &args) { +void PaintSolidBubble(QPainter &p, const SimpleBubble &args) { const auto &st = args.st->messageStyle(args.outbg, args.selected); const auto &bg = st.msgBg; const auto sh = (args.skip & RectPart::Bottom) @@ -283,7 +283,7 @@ void FinishBubblePatternOnMain(not_null pattern) { QImage::Format_ARGB32_Premultiplied); } -void PaintBubble(Painter &p, const SimpleBubble &args) { +void PaintBubble(QPainter &p, const SimpleBubble &args) { if (!args.selected && args.outbg && args.pattern @@ -295,7 +295,7 @@ void PaintBubble(Painter &p, const SimpleBubble &args) { } } -void PaintBubble(Painter &p, const ComplexBubble &args) { +void PaintBubble(QPainter &p, const ComplexBubble &args) { if (args.selection.empty()) { PaintBubble(p, args.simple); return; @@ -409,7 +409,7 @@ void PaintPatternBubblePart( const QRect &viewport, const QPixmap &pixmap, const QRect &target, - Fn paintContent, + Fn paintContent, QImage &cache) { Expects(paintContent != nullptr); @@ -422,7 +422,7 @@ void PaintPatternBubblePart( cache.setDevicePixelRatio(style::DevicePixelRatio()); } cache.fill(Qt::transparent); - auto q = Painter(&cache); + auto q = QPainter(&cache); q.translate(-targetOrigin); paintContent(q); q.translate(targetOrigin); diff --git a/Telegram/SourceFiles/ui/chat/message_bubble.h b/Telegram/SourceFiles/ui/chat/message_bubble.h index 71ebf5873..f202f8bbf 100644 --- a/Telegram/SourceFiles/ui/chat/message_bubble.h +++ b/Telegram/SourceFiles/ui/chat/message_bubble.h @@ -52,8 +52,8 @@ struct ComplexBubble { const std::vector &selection; }; -void PaintBubble(Painter &p, const SimpleBubble &args); -void PaintBubble(Painter &p, const ComplexBubble &args); +void PaintBubble(QPainter &p, const SimpleBubble &args); +void PaintBubble(QPainter &p, const ComplexBubble &args); void PaintPatternBubblePart( QPainter &p, @@ -74,7 +74,7 @@ void PaintPatternBubblePart( const QRect &viewport, const QPixmap &pixmap, const QRect &target, - Fn paintContent, + Fn paintContent, QImage &cache); } // namespace Ui diff --git a/Telegram/SourceFiles/ui/chat/requests_bar.cpp b/Telegram/SourceFiles/ui/chat/requests_bar.cpp index e0ec4ce68..04a4ae460 100644 --- a/Telegram/SourceFiles/ui/chat/requests_bar.cpp +++ b/Telegram/SourceFiles/ui/chat/requests_bar.cpp @@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/chat/group_call_userpics.h" #include "ui/widgets/shadow.h" #include "ui/text/text_options.h" +#include "ui/painter.h" #include "lang/lang_keys.h" #include "styles/style_chat.h" #include "styles/style_calls.h" diff --git a/Telegram/SourceFiles/ui/controls/chat_service_checkbox.cpp b/Telegram/SourceFiles/ui/controls/chat_service_checkbox.cpp index 253b5177e..b8e80c5c9 100644 --- a/Telegram/SourceFiles/ui/controls/chat_service_checkbox.cpp +++ b/Telegram/SourceFiles/ui/controls/chat_service_checkbox.cpp @@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/controls/chat_service_checkbox.h" #include "ui/widgets/checkbox.h" +#include "ui/painter.h" #include "styles/style_layers.h" #include @@ -23,7 +24,7 @@ public: QSize getSize() const override; void paint( - Painter &p, + QPainter &p, int left, int top, int outerWidth) override; @@ -36,7 +37,7 @@ private: Generator(); void paintFrame( - Painter &p, + QPainter &p, int left, int top, not_null st, @@ -57,11 +58,11 @@ private: int index, int count); static void PaintFillingFrame( - Painter &p, + QPainter &p, not_null st, float64 progress); static void PaintCheckingFrame( - Painter &p, + QPainter &p, not_null st, float64 progress); @@ -107,7 +108,7 @@ void ServiceCheck::Generator::FillFrame( Expects(count > 1); Expects(index >= 0 && index < count); - Painter p(&image); + auto p = QPainter(&image); PainterHighQualityEnabler hq(p); p.translate(index * st->diameter, 0); @@ -120,7 +121,7 @@ void ServiceCheck::Generator::FillFrame( } void ServiceCheck::Generator::PaintFillingFrame( - Painter &p, + QPainter &p, not_null st, float64 progress) { const auto shift = progress * st->shift; @@ -145,7 +146,7 @@ void ServiceCheck::Generator::PaintFillingFrame( } void ServiceCheck::Generator::PaintCheckingFrame( - Painter &p, + QPainter &p, not_null st, float64 progress) { const auto shift = (1. - progress) * st->shift; @@ -177,7 +178,7 @@ void ServiceCheck::Generator::PaintCheckingFrame( } void ServiceCheck::Generator::paintFrame( - Painter &p, + QPainter &p, int left, int top, not_null st, @@ -222,7 +223,7 @@ QSize ServiceCheck::getSize() const { } void ServiceCheck::paint( - Painter &p, + QPainter &p, int left, int top, int outerWidth) { @@ -249,7 +250,7 @@ void SetupBackground(not_null checkbox, Fn bg) { ) | rpl::filter([=](const QColor &color) { return color.alpha() > 0; }) | rpl::start_with_next([=](const QColor &color) { - Painter p(checkbox); + auto p = QPainter(checkbox); PainterHighQualityEnabler hq(p); p.setPen(Qt::NoPen); p.setBrush(color); diff --git a/Telegram/SourceFiles/ui/controls/delete_message_context_action.cpp b/Telegram/SourceFiles/ui/controls/delete_message_context_action.cpp index ca2ff25be..bbd3e8bc2 100644 --- a/Telegram/SourceFiles/ui/controls/delete_message_context_action.cpp +++ b/Telegram/SourceFiles/ui/controls/delete_message_context_action.cpp @@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/menu/menu_action.h" #include "ui/effects/ripple_animation.h" +#include "ui/painter.h" #include "lang/lang_keys.h" #include "base/call_delayed.h" #include "base/unixtime.h" diff --git a/Telegram/SourceFiles/ui/controls/download_bar.cpp b/Telegram/SourceFiles/ui/controls/download_bar.cpp index 8b5966529..8b8a47675 100644 --- a/Telegram/SourceFiles/ui/controls/download_bar.cpp +++ b/Telegram/SourceFiles/ui/controls/download_bar.cpp @@ -11,6 +11,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/text/format_values.h" #include "ui/text/text_utilities.h" #include "ui/image/image_prepare.h" +#include "ui/painter.h" #include "lang/lang_keys.h" #include "styles/style_dialogs.h" diff --git a/Telegram/SourceFiles/ui/controls/emoji_button.cpp b/Telegram/SourceFiles/ui/controls/emoji_button.cpp index 51f22f103..9f224198e 100644 --- a/Telegram/SourceFiles/ui/controls/emoji_button.cpp +++ b/Telegram/SourceFiles/ui/controls/emoji_button.cpp @@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/effects/radial_animation.h" #include "ui/effects/ripple_animation.h" +#include "ui/painter.h" #include "styles/style_chat.h" namespace Ui { @@ -24,7 +25,7 @@ EmojiButton::EmojiButton(QWidget *parent, const style::IconButton &st) } void EmojiButton::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); p.fillRect(e->rect(), st::historyComposeAreaBg); paintRipple(p, _st.rippleAreaPosition.x(), _st.rippleAreaPosition.y(), _rippleOverride ? &(*_rippleOverride)->c : nullptr); diff --git a/Telegram/SourceFiles/ui/controls/invite_link_label.cpp b/Telegram/SourceFiles/ui/controls/invite_link_label.cpp index 15fa86d3a..14284d0eb 100644 --- a/Telegram/SourceFiles/ui/controls/invite_link_label.cpp +++ b/Telegram/SourceFiles/ui/controls/invite_link_label.cpp @@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "ui/controls/invite_link_label.h" +#include "ui/painter.h" #include "ui/rp_widget.h" #include "ui/widgets/labels.h" #include "ui/widgets/buttons.h" diff --git a/Telegram/SourceFiles/ui/controls/peer_list_dummy.cpp b/Telegram/SourceFiles/ui/controls/peer_list_dummy.cpp index e4a3e2575..6146afd1e 100644 --- a/Telegram/SourceFiles/ui/controls/peer_list_dummy.cpp +++ b/Telegram/SourceFiles/ui/controls/peer_list_dummy.cpp @@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "ui/controls/peer_list_dummy.h" +#include "ui/painter.h" #include "styles/style_widgets.h" PeerListDummy::PeerListDummy( diff --git a/Telegram/SourceFiles/ui/controls/send_as_button.cpp b/Telegram/SourceFiles/ui/controls/send_as_button.cpp index 062350541..2ffbe7790 100644 --- a/Telegram/SourceFiles/ui/controls/send_as_button.cpp +++ b/Telegram/SourceFiles/ui/controls/send_as_button.cpp @@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/controls/send_as_button.h" #include "ui/effects/cross_animation.h" +#include "ui/painter.h" #include "styles/style_chat.h" namespace Ui { @@ -36,7 +37,7 @@ void SendAsButton::setActive(bool active) { } void SendAsButton::paintEvent(QPaintEvent *e) { - auto p = Painter(this); + auto p = QPainter(this); const auto left = (width() - _st.size) / 2; const auto top = (height() - _st.size) / 2; diff --git a/Telegram/SourceFiles/ui/controls/send_button.cpp b/Telegram/SourceFiles/ui/controls/send_button.cpp index 3e2420fe9..223df4458 100644 --- a/Telegram/SourceFiles/ui/controls/send_button.cpp +++ b/Telegram/SourceFiles/ui/controls/send_button.cpp @@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/controls/send_button.h" #include "ui/effects/ripple_animation.h" +#include "ui/painter.h" #include "styles/style_chat.h" namespace Ui { @@ -64,7 +65,7 @@ void SendButton::finishAnimating() { } void SendButton::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); auto over = (isDown() || isOver()); auto changed = _a_typeChanged.value(1.); @@ -91,7 +92,7 @@ void SendButton::paintEvent(QPaintEvent *e) { } } -void SendButton::paintRecord(Painter &p, bool over) { +void SendButton::paintRecord(QPainter &p, bool over) { const auto recordActive = 0.; if (!isDisabled()) { auto rippleColor = anim::color( @@ -123,14 +124,14 @@ void SendButton::paintRecord(Painter &p, bool over) { } } -void SendButton::paintSave(Painter &p, bool over) { +void SendButton::paintSave(QPainter &p, bool over) { const auto &saveIcon = over ? st::historyEditSaveIconOver : st::historyEditSaveIcon; saveIcon.paintInCenter(p, rect()); } -void SendButton::paintCancel(Painter &p, bool over) { +void SendButton::paintCancel(QPainter &p, bool over) { paintRipple(p, (width() - st::historyAttachEmoji.rippleAreaSize) / 2, st::historyAttachEmoji.rippleAreaPosition.y()); const auto &cancelIcon = over @@ -139,7 +140,7 @@ void SendButton::paintCancel(Painter &p, bool over) { cancelIcon.paintInCenter(p, rect()); } -void SendButton::paintSend(Painter &p, bool over) { +void SendButton::paintSend(QPainter &p, bool over) { const auto &sendIcon = over ? st::historySendIconOver : st::historySendIcon; @@ -151,7 +152,7 @@ void SendButton::paintSend(Painter &p, bool over) { } } -void SendButton::paintSchedule(Painter &p, bool over) { +void SendButton::paintSchedule(QPainter &p, bool over) { { PainterHighQualityEnabler hq(p); p.setPen(Qt::NoPen); @@ -168,7 +169,7 @@ void SendButton::paintSchedule(Painter &p, bool over) { width()); } -void SendButton::paintSlowmode(Painter &p) { +void SendButton::paintSlowmode(QPainter &p) { p.setFont(st::normalFont); p.setPen(st::windowSubTextFg); p.drawText( @@ -188,7 +189,7 @@ QPixmap SendButton::grabContent() { result.setDevicePixelRatio(style::DevicePixelRatio()); result.fill(Qt::transparent); { - Painter p(&result); + auto p = QPainter(&result); p.drawPixmap( (kWideScale - 1) / 2 * width(), (kWideScale - 1) / 2 * height(), diff --git a/Telegram/SourceFiles/ui/controls/send_button.h b/Telegram/SourceFiles/ui/controls/send_button.h index 0c174c8b3..02ac3c093 100644 --- a/Telegram/SourceFiles/ui/controls/send_button.h +++ b/Telegram/SourceFiles/ui/controls/send_button.h @@ -42,12 +42,12 @@ private: [[nodiscard]] QPixmap grabContent(); [[nodiscard]] bool isSlowmode() const; - void paintRecord(Painter &p, bool over); - void paintSave(Painter &p, bool over); - void paintCancel(Painter &p, bool over); - void paintSend(Painter &p, bool over); - void paintSchedule(Painter &p, bool over); - void paintSlowmode(Painter &p); + void paintRecord(QPainter &p, bool over); + void paintSave(QPainter &p, bool over); + void paintCancel(QPainter &p, bool over); + void paintSend(QPainter &p, bool over); + void paintSchedule(QPainter &p, bool over); + void paintSlowmode(QPainter &p); Type _type = Type::Send; Type _afterSlowmodeType = Type::Send; diff --git a/Telegram/SourceFiles/ui/controls/who_reacted_context_action.cpp b/Telegram/SourceFiles/ui/controls/who_reacted_context_action.cpp index a767d8709..ffd645079 100644 --- a/Telegram/SourceFiles/ui/controls/who_reacted_context_action.cpp +++ b/Telegram/SourceFiles/ui/controls/who_reacted_context_action.cpp @@ -13,6 +13,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/effects/ripple_animation.h" #include "ui/chat/group_call_userpics.h" #include "ui/text/text_custom_emoji.h" +#include "ui/painter.h" #include "lang/lang_keys.h" #include "styles/style_chat.h" #include "styles/style_menu_icons.h" diff --git a/Telegram/SourceFiles/ui/countryinput.cpp b/Telegram/SourceFiles/ui/countryinput.cpp index 9b0b7baf3..a757a6326 100644 --- a/Telegram/SourceFiles/ui/countryinput.cpp +++ b/Telegram/SourceFiles/ui/countryinput.cpp @@ -12,6 +12,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/multi_select.h" #include "ui/effects/ripple_animation.h" #include "ui/boxes/country_select_box.h" +#include "ui/painter.h" #include "countries/countries_instance.h" #include "window/window_session_controller.h" #include "styles/style_layers.h" @@ -42,7 +43,7 @@ CountryInput::CountryInput( } void CountryInput::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); QRect r(rect().intersected(e->rect())); if (_st.textBg->c.alphaF() > 0.) { diff --git a/Telegram/SourceFiles/ui/effects/fireworks_animation.cpp b/Telegram/SourceFiles/ui/effects/fireworks_animation.cpp index 74717cfa6..f9eb099a2 100644 --- a/Telegram/SourceFiles/ui/effects/fireworks_animation.cpp +++ b/Telegram/SourceFiles/ui/effects/fireworks_animation.cpp @@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/effects/fireworks_animation.h" #include "base/random.h" +#include "ui/painter.h" namespace Ui { namespace { diff --git a/Telegram/SourceFiles/ui/effects/message_sending_animation_controller.cpp b/Telegram/SourceFiles/ui/effects/message_sending_animation_controller.cpp index 1305f8b2f..84d98f521 100644 --- a/Telegram/SourceFiles/ui/effects/message_sending_animation_controller.cpp +++ b/Telegram/SourceFiles/ui/effects/message_sending_animation_controller.cpp @@ -20,6 +20,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/effects/animation_value.h" #include "ui/effects/animation_value_f.h" #include "ui/effects/animations.h" +#include "ui/painter.h" #include "ui/rp_widget.h" #include "window/window_session_controller.h" #include "styles/style_chat.h" @@ -215,7 +216,7 @@ void Content::paintEvent(QPaintEvent *e) { Qt::black); } - Painter p(this); + auto p = QPainter(this); p.drawImage(QPoint(), std::move(image)); } } diff --git a/Telegram/SourceFiles/ui/effects/premium_graphics.cpp b/Telegram/SourceFiles/ui/effects/premium_graphics.cpp index 6b24a2a86..104c2166c 100644 --- a/Telegram/SourceFiles/ui/effects/premium_graphics.cpp +++ b/Telegram/SourceFiles/ui/effects/premium_graphics.cpp @@ -19,6 +19,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/checkbox.h" #include "ui/wrap/padding_wrap.h" #include "ui/wrap/vertical_layout.h" +#include "ui/painter.h" #include "styles/style_premium.h" #include "styles/style_boxes.h" #include "styles/style_settings.h" @@ -51,7 +52,7 @@ public: void setBrush(std::optional brush); - void paint(Painter &p, int left, int top, int outerWidth) override; + void paint(QPainter &p, int left, int top, int outerWidth) override; private: @@ -68,7 +69,7 @@ GradientRadioView::GradientRadioView( , _st(&st) { } -void GradientRadioView::paint(Painter &p, int left, int top, int outerWidth) { +void GradientRadioView::paint(QPainter &p, int left, int top, int outerWidth) { PainterHighQualityEnabler hq(p); const auto toggled = currentAnimationValue(); @@ -197,7 +198,7 @@ public: void setCounter(int value); void setTailEdge(EdgeProgress edge); - void paintBubble(Painter &p, const QRect &r, const QBrush &brush); + void paintBubble(QPainter &p, const QRect &r, const QBrush &brush); [[nodiscard]] rpl::producer<> widthChanges() const; @@ -290,7 +291,7 @@ void Bubble::setTailEdge(EdgeProgress edge) { _tailEdge = std::clamp(edge, 0., 1.); } -void Bubble::paintBubble(Painter &p, const QRect &r, const QBrush &brush) { +void Bubble::paintBubble(QPainter &p, const QRect &r, const QBrush &brush) { if (_counter < 0) { return; } @@ -504,7 +505,7 @@ void BubbleWidget::paintEvent(QPaintEvent *e) { return; } - Painter p(this); + auto p = QPainter(this); const auto padding = QMargins( 0, @@ -676,7 +677,7 @@ void Line::recache(const QSize &s) { { auto leftPixmap = pixmap; - Painter p(&leftPixmap); + auto p = QPainter(&leftPixmap); PainterHighQualityEnabler hq(p); auto pathRect = QPainterPath(); auto halfRect = r; @@ -689,7 +690,7 @@ void Line::recache(const QSize &s) { } { auto rightPixmap = pixmap; - Painter p(&rightPixmap); + auto p = QPainter(&rightPixmap); PainterHighQualityEnabler hq(p); auto pathRect = QPainterPath(); auto halfRect = r; @@ -791,7 +792,7 @@ void AddAccountsRow( badge.setDevicePixelRatio(style::DevicePixelRatio()); badge.fill(Qt::transparent); - Painter p(&badge); + auto p = QPainter(&badge); PainterHighQualityEnabler hq(p); p.setPen(Qt::NoPen); @@ -1080,7 +1081,7 @@ void AddGiftOptions( row->paintRequest( ) | rpl::start_with_next([=](const QRect &r) { - Painter p(row); + auto p = QPainter(row); PainterHighQualityEnabler hq(p); p.fillRect(r, Qt::transparent); diff --git a/Telegram/SourceFiles/ui/effects/premium_stars.cpp b/Telegram/SourceFiles/ui/effects/premium_stars.cpp index d32afd789..e7d6ae1eb 100644 --- a/Telegram/SourceFiles/ui/effects/premium_stars.cpp +++ b/Telegram/SourceFiles/ui/effects/premium_stars.cpp @@ -61,7 +61,7 @@ crl::time MiniStars::timeNow() const { return anim::Disabled() ? 0 : crl::now(); } -void MiniStars::paint(Painter &p, const QRectF &rect) { +void MiniStars::paint(QPainter &p, const QRectF &rect) { const auto center = rect.center(); const auto opacity = p.opacity(); for (const auto &ministar : _ministars) { diff --git a/Telegram/SourceFiles/ui/effects/premium_stars.h b/Telegram/SourceFiles/ui/effects/premium_stars.h index be71db324..cb0b88acb 100644 --- a/Telegram/SourceFiles/ui/effects/premium_stars.h +++ b/Telegram/SourceFiles/ui/effects/premium_stars.h @@ -18,7 +18,7 @@ class MiniStars final { public: MiniStars(Fn updateCallback, bool opaque = false); - void paint(Painter &p, const QRectF &rect); + void paint(QPainter &p, const QRectF &rect); void setPaused(bool paused); static constexpr auto kSizeFactor = 1.5; diff --git a/Telegram/SourceFiles/ui/effects/premium_stars_colored.cpp b/Telegram/SourceFiles/ui/effects/premium_stars_colored.cpp index 4458df5e0..5eeee3b89 100644 --- a/Telegram/SourceFiles/ui/effects/premium_stars_colored.cpp +++ b/Telegram/SourceFiles/ui/effects/premium_stars_colored.cpp @@ -28,7 +28,7 @@ void ColoredMiniStars::setSize(const QSize &size) { _mask = _frame; _mask.fill(Qt::transparent); { - Painter p(&_mask); + auto p = QPainter(&_mask); if (_colorOverride) { p.fillRect(0, 0, size.width(), size.height(), *_colorOverride); } else { @@ -61,10 +61,10 @@ void ColoredMiniStars::setColorOverride(std::optional color) { _colorOverride = color; } -void ColoredMiniStars::paint(Painter &p) { +void ColoredMiniStars::paint(QPainter &p) { _frame.fill(Qt::transparent); { - Painter q(&_frame); + auto q = QPainter(&_frame); _ministars.paint(q, _ministarsRect); q.setCompositionMode(QPainter::CompositionMode_SourceIn); q.drawImage(0, 0, _mask); diff --git a/Telegram/SourceFiles/ui/effects/premium_stars_colored.h b/Telegram/SourceFiles/ui/effects/premium_stars_colored.h index f5c058760..a8bdbd974 100644 --- a/Telegram/SourceFiles/ui/effects/premium_stars_colored.h +++ b/Telegram/SourceFiles/ui/effects/premium_stars_colored.h @@ -22,7 +22,7 @@ public: void setPosition(QPoint position); void setColorOverride(std::optional color); void setCenter(const QRect &rect); - void paint(Painter &p); + void paint(QPainter &p); void setPaused(bool paused); diff --git a/Telegram/SourceFiles/ui/effects/round_checkbox.cpp b/Telegram/SourceFiles/ui/effects/round_checkbox.cpp index 3ab51c436..a6098447c 100644 --- a/Telegram/SourceFiles/ui/effects/round_checkbox.cpp +++ b/Telegram/SourceFiles/ui/effects/round_checkbox.cpp @@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/rp_widget.h" #include "ui/ui_utility.h" +#include "ui/painter.h" #include @@ -70,7 +71,7 @@ QPixmap PrepareOuterWide(const style::RoundCheckbox *st) { result.setDevicePixelRatio(style::DevicePixelRatio()); result.fill(Qt::transparent); { - Painter p(&result); + auto p = QPainter(&result); PainterHighQualityEnabler hq(p); p.setPen(Qt::NoPen); @@ -93,7 +94,7 @@ QPixmap PrepareInner(const style::RoundCheckbox *st, bool displayInactive) { result.setDevicePixelRatio(style::DevicePixelRatio()); result.fill(Qt::transparent); { - Painter p(&result); + auto p = QPainter(&result); PainterHighQualityEnabler hq(p); p.setPen(Qt::NoPen); @@ -116,7 +117,7 @@ QPixmap PrepareCheck(const style::RoundCheckbox *st) { result.setDevicePixelRatio(style::DevicePixelRatio()); result.fill(Qt::transparent); { - Painter p(&result); + auto p = QPainter(&result); st->check.paint(p, 0, 0, size); } return Ui::PixmapFromImage(std::move(result)); @@ -205,7 +206,7 @@ QPixmap CheckCaches::paintFrame( ? 0. : (1. - (1. - progress) / st->fgDuration); { - Painter p(&result); + auto p = QPainter(&result); PainterHighQualityEnabler hq(p); if (!frames.displayInactive) { @@ -258,7 +259,7 @@ RoundCheckbox::RoundCheckbox(const style::RoundCheckbox &st, Fn updateCa , _updateCallback(updateCallback) { } -void RoundCheckbox::paint(Painter &p, int x, int y, int outerWidth, float64 masterScale) const { +void RoundCheckbox::paint(QPainter &p, int x, int y, int outerWidth, float64 masterScale) const { if (!_st.size || (!_checkedProgress.animating() && !_checked @@ -332,7 +333,7 @@ void RoundCheckbox::prepareInactiveCache() { cacheBg.fill(Qt::transparent); auto cacheFg = cacheBg; if (_st.bgInactive) { - Painter p(&cacheBg); + auto p = QPainter(&cacheBg); PainterHighQualityEnabler hq(p); p.setPen(Qt::NoPen); @@ -342,7 +343,7 @@ void RoundCheckbox::prepareInactiveCache() { _inactiveCacheBg = Ui::PixmapFromImage(std::move(cacheBg)); { - Painter p(&cacheFg); + auto p = QPainter(&cacheFg); PainterHighQualityEnabler hq(p); auto pen = _st.border->p; @@ -441,7 +442,7 @@ void RoundImageCheckbox::prepareWideCache() { QImage cache(wideSize * style::DevicePixelRatio(), wideSize * style::DevicePixelRatio(), QImage::Format_ARGB32_Premultiplied); cache.setDevicePixelRatio(style::DevicePixelRatio()); { - Painter p(&cache); + auto p = Painter(&cache); p.setCompositionMode(QPainter::CompositionMode_Source); p.fillRect(0, 0, wideSize, wideSize, Qt::transparent); p.setCompositionMode(QPainter::CompositionMode_SourceOver); diff --git a/Telegram/SourceFiles/ui/effects/round_checkbox.h b/Telegram/SourceFiles/ui/effects/round_checkbox.h index 30008581d..2a8926b06 100644 --- a/Telegram/SourceFiles/ui/effects/round_checkbox.h +++ b/Telegram/SourceFiles/ui/effects/round_checkbox.h @@ -10,13 +10,15 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/effects/animations.h" #include "styles/style_widgets.h" +class Painter; + namespace Ui { class RoundCheckbox { public: RoundCheckbox(const style::RoundCheckbox &st, Fn updateCallback); - void paint(Painter &p, int x, int y, int outerWidth, float64 masterScale = 1.) const; + void paint(QPainter &p, int x, int y, int outerWidth, float64 masterScale = 1.) const; void setDisplayInactive(bool displayInactive); bool checked() const { diff --git a/Telegram/SourceFiles/ui/effects/send_action_animations.cpp b/Telegram/SourceFiles/ui/effects/send_action_animations.cpp index 14eb24976..526846e5a 100644 --- a/Telegram/SourceFiles/ui/effects/send_action_animations.cpp +++ b/Telegram/SourceFiles/ui/effects/send_action_animations.cpp @@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "api/api_send_progress.h" #include "ui/effects/animation_value.h" +#include "ui/painter.h" #include "styles/style_widgets.h" #include "styles/style_dialogs.h" @@ -42,7 +43,7 @@ public: return width(); } virtual void paint( - Painter &p, + QPainter &p, style::color color, int x, int y, @@ -102,7 +103,7 @@ public: } void paint( - Painter &p, + QPainter &p, style::color color, int x, int y, @@ -117,7 +118,7 @@ const TypingAnimation::MetaData TypingAnimation::kMeta = { }; void TypingAnimation::paint( - Painter &p, + QPainter &p, style::color color, int x, int y, @@ -177,7 +178,7 @@ public: } void paint( - Painter &p, + QPainter &p, style::color color, int x, int y, @@ -192,7 +193,7 @@ const RecordAnimation::MetaData RecordAnimation::kMeta = { }; void RecordAnimation::paint( - Painter &p, + QPainter &p, style::color color, int x, int y, @@ -243,7 +244,7 @@ public: } void paint( - Painter &p, + QPainter &p, style::color color, int x, int y, @@ -258,7 +259,7 @@ const UploadAnimation::MetaData UploadAnimation::kMeta = { }; void UploadAnimation::paint( - Painter &p, + QPainter &p, style::color color, int x, int y, @@ -326,14 +327,14 @@ public: bool finishNow() override; static void PaintIdle( - Painter &p, + QPainter &p, style::color color, int x, int y, int outerWidth); void paint( - Painter &p, + QPainter &p, style::color color, int x, int y, @@ -342,7 +343,7 @@ public: private: static void PaintFrame( - Painter &p, + QPainter &p, style::color color, int x, int y, @@ -396,7 +397,7 @@ bool SpeakingAnimation::finishNow() { } void SpeakingAnimation::PaintIdle( - Painter &p, + QPainter &p, style::color color, int x, int y, @@ -405,7 +406,7 @@ void SpeakingAnimation::PaintIdle( } void SpeakingAnimation::paint( - Painter &p, + QPainter &p, style::color color, int x, int y, @@ -419,7 +420,7 @@ void SpeakingAnimation::paint( } void SpeakingAnimation::PaintFrame( - Painter &p, + QPainter &p, style::color color, int x, int y, @@ -533,12 +534,13 @@ public: } void paint( - Painter &p, + QPainter &p, style::color color, int x, int y, int outerWidth, crl::time now) override; + private: const struct { const float64 outWidth; @@ -562,7 +564,7 @@ const ChooseStickerAnimation::MetaData ChooseStickerAnimation::kMeta = { }; void ChooseStickerAnimation::paint( - Painter &p, + QPainter &p, style::color color, int x, int y, @@ -693,7 +695,7 @@ int SendActionAnimation::widthNoMargins() const { } void SendActionAnimation::paint( - Painter &p, + QPainter &p, style::color color, int x, int y, @@ -705,7 +707,7 @@ void SendActionAnimation::paint( } void SendActionAnimation::PaintSpeakingIdle( - Painter &p, + QPainter &p, style::color color, int x, int y, diff --git a/Telegram/SourceFiles/ui/effects/send_action_animations.h b/Telegram/SourceFiles/ui/effects/send_action_animations.h index 37504b76b..ac1619044 100644 --- a/Telegram/SourceFiles/ui/effects/send_action_animations.h +++ b/Telegram/SourceFiles/ui/effects/send_action_animations.h @@ -27,7 +27,7 @@ public: int width() const; int widthNoMargins() const; void paint( - Painter &p, + QPainter &p, style::color color, int x, int y, @@ -39,7 +39,7 @@ public: } static void PaintSpeakingIdle( - Painter &p, + QPainter &p, style::color color, int x, int y, diff --git a/Telegram/SourceFiles/ui/empty_userpic.cpp b/Telegram/SourceFiles/ui/empty_userpic.cpp index 09526b34e..5cf75e78f 100644 --- a/Telegram/SourceFiles/ui/empty_userpic.cpp +++ b/Telegram/SourceFiles/ui/empty_userpic.cpp @@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "data/data_peer.h" #include "ui/emoji_config.h" #include "ui/effects/animation_value.h" +#include "ui/painter.h" #include "ui/ui_utility.h" #include "styles/style_chat.h" #include "styles/style_dialogs.h" @@ -26,7 +27,7 @@ namespace { } void PaintSavedMessagesInner( - Painter &p, + QPainter &p, int x, int y, int size, @@ -100,7 +101,7 @@ void PaintSavedMessagesInner( } void PaintIconInner( - Painter &p, + QPainter &p, int x, int y, int size, @@ -129,7 +130,7 @@ void PaintIconInner( } void PaintRepliesMessagesInner( - Painter &p, + QPainter &p, int x, int y, int size, @@ -145,7 +146,7 @@ void PaintRepliesMessagesInner( } void PaintExternalMessagesInner( - Painter &p, + QPainter &p, int x, int y, int size, @@ -187,7 +188,7 @@ QString EmptyUserpic::ExternalName() { template void EmptyUserpic::paint( - Painter &p, + QPainter &p, int x, int y, int outerWidth, @@ -218,7 +219,7 @@ void EmptyUserpic::paint( } void EmptyUserpic::paint( - Painter &p, + QPainter &p, int x, int y, int outerWidth, @@ -228,20 +229,20 @@ void EmptyUserpic::paint( }); } -void EmptyUserpic::paintRounded(Painter &p, int x, int y, int outerWidth, int size) const { +void EmptyUserpic::paintRounded(QPainter &p, int x, int y, int outerWidth, int size) const { paint(p, x, y, outerWidth, size, [&p, x, y, size] { p.drawRoundedRect(x, y, size, size, st::roundRadiusSmall, st::roundRadiusSmall); }); } -void EmptyUserpic::paintSquare(Painter &p, int x, int y, int outerWidth, int size) const { +void EmptyUserpic::paintSquare(QPainter &p, int x, int y, int outerWidth, int size) const { paint(p, x, y, outerWidth, size, [&p, x, y, size] { p.fillRect(x, y, size, size, p.brush()); }); } void EmptyUserpic::PaintSavedMessages( - Painter &p, + QPainter &p, int x, int y, int outerWidth, @@ -252,7 +253,7 @@ void EmptyUserpic::PaintSavedMessages( } void EmptyUserpic::PaintSavedMessagesRounded( - Painter &p, + QPainter &p, int x, int y, int outerWidth, @@ -263,7 +264,7 @@ void EmptyUserpic::PaintSavedMessagesRounded( } void EmptyUserpic::PaintSavedMessages( - Painter &p, + QPainter &p, int x, int y, int outerWidth, @@ -281,7 +282,7 @@ void EmptyUserpic::PaintSavedMessages( } void EmptyUserpic::PaintSavedMessagesRounded( - Painter &p, + QPainter &p, int x, int y, int outerWidth, @@ -299,19 +300,19 @@ void EmptyUserpic::PaintSavedMessagesRounded( } QPixmap EmptyUserpic::GenerateSavedMessages(int size) { - return Generate(size, [&](Painter &p) { + return Generate(size, [&](QPainter &p) { PaintSavedMessages(p, 0, 0, size, size); }); } QPixmap EmptyUserpic::GenerateSavedMessagesRounded(int size) { - return Generate(size, [&](Painter &p) { + return Generate(size, [&](QPainter &p) { PaintSavedMessagesRounded(p, 0, 0, size, size); }); } void EmptyUserpic::PaintRepliesMessages( - Painter &p, + QPainter &p, int x, int y, int outerWidth, @@ -322,7 +323,7 @@ void EmptyUserpic::PaintRepliesMessages( } void EmptyUserpic::PaintRepliesMessagesRounded( - Painter &p, + QPainter &p, int x, int y, int outerWidth, @@ -333,7 +334,7 @@ void EmptyUserpic::PaintRepliesMessagesRounded( } void EmptyUserpic::PaintRepliesMessages( - Painter &p, + QPainter &p, int x, int y, int outerWidth, @@ -351,7 +352,7 @@ void EmptyUserpic::PaintRepliesMessages( } void EmptyUserpic::PaintRepliesMessagesRounded( - Painter &p, + QPainter &p, int x, int y, int outerWidth, @@ -369,13 +370,13 @@ void EmptyUserpic::PaintRepliesMessagesRounded( } QPixmap EmptyUserpic::GenerateRepliesMessages(int size) { - return Generate(size, [&](Painter &p) { + return Generate(size, [&](QPainter &p) { PaintRepliesMessages(p, 0, 0, size, size); }); } QPixmap EmptyUserpic::GenerateRepliesMessagesRounded(int size) { - return Generate(size, [&](Painter &p) { + return Generate(size, [&](QPainter &p) { PaintRepliesMessagesRounded(p, 0, 0, size, size); }); } @@ -393,7 +394,7 @@ QPixmap EmptyUserpic::generate(int size) { result.setDevicePixelRatio(cRetinaFactor()); result.fill(Qt::transparent); { - Painter p(&result); + auto p = QPainter(&result); paint(p, 0, 0, size, size); } return Ui::PixmapFromImage(std::move(result)); diff --git a/Telegram/SourceFiles/ui/empty_userpic.h b/Telegram/SourceFiles/ui/empty_userpic.h index 0480e8611..ea57e4d94 100644 --- a/Telegram/SourceFiles/ui/empty_userpic.h +++ b/Telegram/SourceFiles/ui/empty_userpic.h @@ -16,19 +16,19 @@ public: EmptyUserpic(const style::color &color, const QString &name); void paint( - Painter &p, + QPainter &p, int x, int y, int outerWidth, int size) const; void paintRounded( - Painter &p, + QPainter &p, int x, int y, int outerWidth, int size) const; void paintSquare( - Painter &p, + QPainter &p, int x, int y, int outerWidth, @@ -37,19 +37,19 @@ public: InMemoryKey uniqueKey() const; static void PaintSavedMessages( - Painter &p, + QPainter &p, int x, int y, int outerWidth, int size); static void PaintSavedMessagesRounded( - Painter &p, + QPainter &p, int x, int y, int outerWidth, int size); static void PaintSavedMessages( - Painter &p, + QPainter &p, int x, int y, int outerWidth, @@ -57,7 +57,7 @@ public: const style::color &bg, const style::color &fg); static void PaintSavedMessagesRounded( - Painter &p, + QPainter &p, int x, int y, int outerWidth, @@ -68,19 +68,19 @@ public: static QPixmap GenerateSavedMessagesRounded(int size); static void PaintRepliesMessages( - Painter &p, + QPainter &p, int x, int y, int outerWidth, int size); static void PaintRepliesMessagesRounded( - Painter &p, + QPainter &p, int x, int y, int outerWidth, int size); static void PaintRepliesMessages( - Painter &p, + QPainter &p, int x, int y, int outerWidth, @@ -88,7 +88,7 @@ public: const style::color &bg, const style::color &fg); static void PaintRepliesMessagesRounded( - Painter &p, + QPainter &p, int x, int y, int outerWidth, @@ -103,7 +103,7 @@ public: private: template void paint( - Painter &p, + QPainter &p, int x, int y, int outerWidth, diff --git a/Telegram/SourceFiles/ui/filter_icon_panel.cpp b/Telegram/SourceFiles/ui/filter_icon_panel.cpp index f50a11b21..caa4c79b9 100644 --- a/Telegram/SourceFiles/ui/filter_icon_panel.cpp +++ b/Telegram/SourceFiles/ui/filter_icon_panel.cpp @@ -12,6 +12,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/effects/panel_animation.h" #include "ui/ui_utility.h" #include "ui/filter_icons.h" +#include "ui/painter.h" #include "ui/cached_round_corners.h" #include "lang/lang_keys.h" #include "core/application.h" diff --git a/Telegram/SourceFiles/ui/search_field_controller.cpp b/Telegram/SourceFiles/ui/search_field_controller.cpp index 5bb2277f4..60dcc1769 100644 --- a/Telegram/SourceFiles/ui/search_field_controller.cpp +++ b/Telegram/SourceFiles/ui/search_field_controller.cpp @@ -70,7 +70,7 @@ auto SearchFieldController::createRowView( }, wrap->lifetime()); wrap->paintRequest( ) | rpl::start_with_next([=, &st] { - Painter p(wrap); + auto p = QPainter(wrap); st.fieldIcon.paint( p, st.padding.left(), diff --git a/Telegram/SourceFiles/ui/special_buttons.cpp b/Telegram/SourceFiles/ui/special_buttons.cpp index 00f871785..4187b4db7 100644 --- a/Telegram/SourceFiles/ui/special_buttons.cpp +++ b/Telegram/SourceFiles/ui/special_buttons.cpp @@ -28,6 +28,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "core/file_utilities.h" #include "core/application.h" #include "ui/boxes/confirm_box.h" +#include "ui/painter.h" #include "editor/photo_editor_layer_widget.h" #include "media/streaming/media_streaming_instance.h" #include "media/streaming/media_streaming_player.h" @@ -134,7 +135,7 @@ QPoint HistoryDownButton::prepareRippleStartPosition() const { } void HistoryDownButton::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); const auto over = isOver(); const auto down = isDown(); @@ -787,7 +788,7 @@ void UserpicButton::prepareUserpicPixmap() { return; } auto size = _st.photoSize; - auto paintButton = [&](Painter &p, const style::color &color) { + auto paintButton = [&](QPainter &p, const style::color &color) { PainterHighQualityEnabler hq(p); p.setBrush(color); p.setPen(Qt::NoPen); @@ -819,7 +820,7 @@ SilentToggle::SilentToggle(QWidget *parent, not_null channel) paintRequest( ) | rpl::start_with_next([=](const QRect &clip) { - Painter p(this); + auto p = QPainter(this); paintRipple(p, _st.rippleAreaPosition, nullptr); //const auto checked = _crossLineAnimation.value(_checked ? 1. : 0.); diff --git a/Telegram/SourceFiles/ui/unread_badge.cpp b/Telegram/SourceFiles/ui/unread_badge.cpp index 0a485c59a..24d6fe7a2 100644 --- a/Telegram/SourceFiles/ui/unread_badge.cpp +++ b/Telegram/SourceFiles/ui/unread_badge.cpp @@ -14,6 +14,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "main/main_session.h" #include "dialogs/ui/dialogs_layout.h" #include "lang/lang_keys.h" +#include "ui/painter.h" #include "styles/style_dialogs.h" namespace Ui { @@ -43,7 +44,7 @@ void UnreadBadge::paintEvent(QPaintEvent *e) { return; } - Painter p(this); + auto p = QPainter(this); Dialogs::Ui::UnreadBadgeStyle unreadSt; unreadSt.muted = !_active; diff --git a/Telegram/SourceFiles/ui/widgets/continuous_sliders.cpp b/Telegram/SourceFiles/ui/widgets/continuous_sliders.cpp index 0d57b74d7..ea4e252ff 100644 --- a/Telegram/SourceFiles/ui/widgets/continuous_sliders.cpp +++ b/Telegram/SourceFiles/ui/widgets/continuous_sliders.cpp @@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "ui/widgets/continuous_sliders.h" +#include "ui/painter.h" #include "base/timer.h" #include "base/platform/base_platform_info.h" @@ -165,7 +166,7 @@ float64 FilledSlider::getOverDuration() const { } void FilledSlider::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); PainterHighQualityEnabler hq(p); p.setPen(Qt::NoPen); @@ -228,7 +229,7 @@ void MediaSlider::paintEvent(QPaintEvent *e) { if (_paintDisabled) { return; } - Painter p(this); + auto p = QPainter(this); PainterHighQualityEnabler hq(p); p.setPen(Qt::NoPen); diff --git a/Telegram/SourceFiles/ui/widgets/discrete_sliders.cpp b/Telegram/SourceFiles/ui/widgets/discrete_sliders.cpp index cf2625534..734807be9 100644 --- a/Telegram/SourceFiles/ui/widgets/discrete_sliders.cpp +++ b/Telegram/SourceFiles/ui/widgets/discrete_sliders.cpp @@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/discrete_sliders.h" #include "ui/effects/ripple_animation.h" +#include "ui/painter.h" #include "styles/style_widgets.h" namespace Ui { diff --git a/Telegram/SourceFiles/ui/widgets/fields/special_fields.cpp b/Telegram/SourceFiles/ui/widgets/fields/special_fields.cpp index 6a8133d05..a58eff7ac 100644 --- a/Telegram/SourceFiles/ui/widgets/fields/special_fields.cpp +++ b/Telegram/SourceFiles/ui/widgets/fields/special_fields.cpp @@ -104,7 +104,7 @@ PhonePartInput::PhonePartInput( , _groupsCallback(std::move(groupsCallback)) { } -void PhonePartInput::paintAdditionalPlaceholder(Painter &p) { +void PhonePartInput::paintAdditionalPlaceholder(QPainter &p) { if (!_pattern.isEmpty()) { auto t = getDisplayedText(); auto ph = _additionalPlaceholder.mid(t.size()); @@ -257,7 +257,7 @@ void UsernameInput::setLinkPlaceholder(const QString &placeholder) { } } -void UsernameInput::paintAdditionalPlaceholder(Painter &p) { +void UsernameInput::paintAdditionalPlaceholder(QPainter &p) { if (!_linkPlaceholder.isEmpty()) { p.setFont(_st.font); p.setPen(_st.placeholderFg); @@ -322,7 +322,7 @@ void PhoneInput::clearText() { correctValue(QString(), 0, value, pos); } -void PhoneInput::paintAdditionalPlaceholder(Painter &p) { +void PhoneInput::paintAdditionalPlaceholder(QPainter &p) { if (!_pattern.isEmpty()) { auto t = getDisplayedText(); auto ph = _additionalPlaceholder.mid(t.size()); diff --git a/Telegram/SourceFiles/ui/widgets/fields/special_fields.h b/Telegram/SourceFiles/ui/widgets/fields/special_fields.h index 78327d87e..ebade9cfc 100644 --- a/Telegram/SourceFiles/ui/widgets/fields/special_fields.h +++ b/Telegram/SourceFiles/ui/widgets/fields/special_fields.h @@ -65,7 +65,7 @@ protected: int wasCursor, QString &now, int &nowCursor) override; - void paintAdditionalPlaceholder(Painter &p) override; + void paintAdditionalPlaceholder(QPainter &p) override; private: QVector _pattern; @@ -92,7 +92,7 @@ protected: int wasCursor, QString &now, int &nowCursor) override; - void paintAdditionalPlaceholder(Painter &p) override; + void paintAdditionalPlaceholder(QPainter &p) override; private: QString _linkPlaceholder; @@ -121,7 +121,7 @@ protected: int wasCursor, QString &now, int &nowCursor) override; - void paintAdditionalPlaceholder(Painter &p) override; + void paintAdditionalPlaceholder(QPainter &p) override; private: QString _defaultValue; diff --git a/Telegram/SourceFiles/ui/widgets/fields/time_part_input_with_placeholder.cpp b/Telegram/SourceFiles/ui/widgets/fields/time_part_input_with_placeholder.cpp index 2f09f39ee..c38241c0d 100644 --- a/Telegram/SourceFiles/ui/widgets/fields/time_part_input_with_placeholder.cpp +++ b/Telegram/SourceFiles/ui/widgets/fields/time_part_input_with_placeholder.cpp @@ -16,7 +16,7 @@ void TimePartWithPlaceholder::setPhrase( _phrase = phrase; } -void TimePartWithPlaceholder::paintAdditionalPlaceholder(Painter &p) { +void TimePartWithPlaceholder::paintAdditionalPlaceholder(QPainter &p) { maybeUpdatePlaceholder(); p.setClipRect(rect()); diff --git a/Telegram/SourceFiles/ui/widgets/fields/time_part_input_with_placeholder.h b/Telegram/SourceFiles/ui/widgets/fields/time_part_input_with_placeholder.h index 98f448948..2960be628 100644 --- a/Telegram/SourceFiles/ui/widgets/fields/time_part_input_with_placeholder.h +++ b/Telegram/SourceFiles/ui/widgets/fields/time_part_input_with_placeholder.h @@ -20,7 +20,7 @@ public: void setPhrase(const tr::phrase &phrase); protected: - void paintAdditionalPlaceholder(Painter &p) override; + void paintAdditionalPlaceholder(QPainter &p) override; private: void maybeUpdatePlaceholder(); diff --git a/Telegram/SourceFiles/ui/widgets/gradient_round_button.cpp b/Telegram/SourceFiles/ui/widgets/gradient_round_button.cpp index 5221ffa81..1510c19ae 100644 --- a/Telegram/SourceFiles/ui/widgets/gradient_round_button.cpp +++ b/Telegram/SourceFiles/ui/widgets/gradient_round_button.cpp @@ -53,7 +53,7 @@ void GradientButton::paintGlare(QPainter &p) { frame.fill(Qt::transparent); { - Painter q(&frame); + auto q = QPainter(&frame); q.drawTiledPixmap(0, 0, _glare.width, h, _glare.pixmap, 0, 0); q.setCompositionMode(QPainter::CompositionMode_DestinationIn); q.drawImage(-x, 0, _bg, 0, 0); @@ -110,7 +110,7 @@ void GradientButton::validateGlare() { pixmap.setDevicePixelRatio(style::DevicePixelRatio()); pixmap.fill(Qt::transparent); { - Painter p(&pixmap); + auto p = QPainter(&pixmap); auto gradient = QLinearGradient( QPointF(0, 0), QPointF(_glare.width, 0)); diff --git a/Telegram/SourceFiles/ui/widgets/level_meter.cpp b/Telegram/SourceFiles/ui/widgets/level_meter.cpp index 74819a6e1..fe0511d4c 100644 --- a/Telegram/SourceFiles/ui/widgets/level_meter.cpp +++ b/Telegram/SourceFiles/ui/widgets/level_meter.cpp @@ -7,6 +7,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "ui/widgets/level_meter.h" +#include "ui/painter.h" + namespace Ui { LevelMeter::LevelMeter(QWidget *parent, const style::LevelMeter &st) @@ -20,7 +22,7 @@ void LevelMeter::setValue(float value) { } void LevelMeter::paintEvent(QPaintEvent* event) { - Painter p(this); + auto p = QPainter(this); PainterHighQualityEnabler hq(p); p.setPen(Qt::NoPen); diff --git a/Telegram/SourceFiles/ui/widgets/multi_select.cpp b/Telegram/SourceFiles/ui/widgets/multi_select.cpp index 6f9860182..fa8ea97ea 100644 --- a/Telegram/SourceFiles/ui/widgets/multi_select.cpp +++ b/Telegram/SourceFiles/ui/widgets/multi_select.cpp @@ -13,6 +13,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/effects/animations.h" #include "ui/effects/cross_animation.h" #include "ui/text/text_options.h" +#include "ui/painter.h" #include "ui/ui_utility.h" #include "lang/lang_keys.h" diff --git a/Telegram/SourceFiles/ui/widgets/vertical_drum_picker.cpp b/Telegram/SourceFiles/ui/widgets/vertical_drum_picker.cpp index 4f5c213f0..649c5129b 100644 --- a/Telegram/SourceFiles/ui/widgets/vertical_drum_picker.cpp +++ b/Telegram/SourceFiles/ui/widgets/vertical_drum_picker.cpp @@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/vertical_drum_picker.h" #include "ui/effects/animation_value_f.h" +#include "styles/style_basic.h" namespace Ui { @@ -73,7 +74,7 @@ VerticalDrumPicker::VerticalDrumPicker( paintRequest( ) | rpl::start_with_next([=] { - Painter p(this); + auto p = QPainter(this); const auto outerWidth = width(); const auto centerY = height() / 2.; diff --git a/Telegram/SourceFiles/ui/widgets/vertical_drum_picker.h b/Telegram/SourceFiles/ui/widgets/vertical_drum_picker.h index 4cccd43b3..802f72fba 100644 --- a/Telegram/SourceFiles/ui/widgets/vertical_drum_picker.h +++ b/Telegram/SourceFiles/ui/widgets/vertical_drum_picker.h @@ -37,7 +37,7 @@ private: class VerticalDrumPicker final : public Ui::RpWidget { public: using PaintItemCallback = Fnheight); - p.restoreTextPalette(); + _textCache.draw(p, { + .position = _textRect.topLeft(), + .availableWidth = _textRect.width(), + .palette = &st::dialogsTextPalette, + .spoiler = Ui::Text::DefaultSpoilerCache(), + .elisionLines = _textRect.height() / st::dialogsTextFont->height, + }); } void Notification::updateNotifyDisplay() { @@ -902,7 +902,7 @@ void Notification::updateNotifyDisplay() { context); _textRect = r; paintText(p); - if (!_textCache.hasCustomEmoji()) { + if (!_textCache.hasPersistentAnimation()) { _textCache = Ui::Text::String(); } } else { diff --git a/Telegram/SourceFiles/window/section_widget.cpp b/Telegram/SourceFiles/window/section_widget.cpp index efdbe2317..8ae9e1b38 100644 --- a/Telegram/SourceFiles/window/section_widget.cpp +++ b/Telegram/SourceFiles/window/section_widget.cpp @@ -11,6 +11,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/ui_utility.h" #include "ui/chat/chat_theme.h" #include "ui/toasts/common_toasts.h" +#include "ui/painter.h" #include "boxes/premium_preview_box.h" #include "data/data_peer.h" #include "data/data_user.h" @@ -184,7 +185,7 @@ void SectionWidget::PaintBackground( not_null theme, not_null widget, QRect clip) { - Painter p(widget); + auto p = QPainter(widget); const auto &background = theme->background(); if (background.colorForFill) { @@ -277,7 +278,7 @@ void SectionWidget::PaintBackground( void SectionWidget::paintEvent(QPaintEvent *e) { if (_showAnimation) { - Painter p(this); + auto p = QPainter(this); _showAnimation->paintContents(p); } } diff --git a/Telegram/SourceFiles/window/themes/window_theme_editor.cpp b/Telegram/SourceFiles/window/themes/window_theme_editor.cpp index 3b7ac8017..e8f34314d 100644 --- a/Telegram/SourceFiles/window/themes/window_theme_editor.cpp +++ b/Telegram/SourceFiles/window/themes/window_theme_editor.cpp @@ -24,6 +24,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/toast/toast.h" #include "ui/style/style_palette_colorizer.h" #include "ui/image/image_prepare.h" +#include "ui/painter.h" #include "ui/ui_utility.h" #include "base/parse_helper.h" #include "base/zlib_help.h" diff --git a/Telegram/SourceFiles/window/themes/window_theme_editor_block.cpp b/Telegram/SourceFiles/window/themes/window_theme_editor_block.cpp index a1e533d00..d5c58f342 100644 --- a/Telegram/SourceFiles/window/themes/window_theme_editor_block.cpp +++ b/Telegram/SourceFiles/window/themes/window_theme_editor_block.cpp @@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "styles/style_window.h" #include "ui/effects/ripple_animation.h" #include "ui/widgets/shadow.h" +#include "ui/painter.h" #include "boxes/edit_color_box.h" #include "lang/lang_keys.h" #include "base/call_delayed.h" diff --git a/Telegram/SourceFiles/window/themes/window_theme_editor_box.cpp b/Telegram/SourceFiles/window/themes/window_theme_editor_box.cpp index 4843eb235..1f00891cb 100644 --- a/Telegram/SourceFiles/window/themes/window_theme_editor_box.cpp +++ b/Telegram/SourceFiles/window/themes/window_theme_editor_box.cpp @@ -23,6 +23,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/text/format_values.h" #include "ui/style/style_palette_colorizer.h" #include "ui/widgets/fields/special_fields.h" +#include "ui/painter.h" #include "ui/ui_utility.h" #include "main/main_account.h" #include "main/main_session.h" diff --git a/Telegram/SourceFiles/window/themes/window_theme_preview.cpp b/Telegram/SourceFiles/window/themes/window_theme_preview.cpp index 49d466176..f657dcfb3 100644 --- a/Telegram/SourceFiles/window/themes/window_theme_preview.cpp +++ b/Telegram/SourceFiles/window/themes/window_theme_preview.cpp @@ -13,6 +13,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/text/text_utilities.h" #include "ui/image/image_prepare.h" #include "ui/emoji_config.h" +#include "ui/painter.h" #include "ui/chat/chat_theme.h" #include "ui/image/image_prepare.h" #include "styles/style_widgets.h" diff --git a/Telegram/SourceFiles/window/themes/window_theme_warning.cpp b/Telegram/SourceFiles/window/themes/window_theme_warning.cpp index af9e1af69..3b0624f0a 100644 --- a/Telegram/SourceFiles/window/themes/window_theme_warning.cpp +++ b/Telegram/SourceFiles/window/themes/window_theme_warning.cpp @@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/buttons.h" #include "ui/widgets/shadow.h" +#include "ui/painter.h" #include "ui/ui_utility.h" #include "ui/cached_round_corners.h" #include "window/themes/window_theme.h" diff --git a/Telegram/SourceFiles/window/themes/window_themes_cloud_list.cpp b/Telegram/SourceFiles/window/themes/window_themes_cloud_list.cpp index e9998538d..35414b75c 100644 --- a/Telegram/SourceFiles/window/themes/window_themes_cloud_list.cpp +++ b/Telegram/SourceFiles/window/themes/window_themes_cloud_list.cpp @@ -23,6 +23,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/toast/toast.h" #include "ui/style/style_palette_colorizer.h" #include "ui/boxes/confirm_box.h" +#include "ui/painter.h" #include "lang/lang_keys.h" #include "main/main_session.h" #include "core/application.h" @@ -220,7 +221,7 @@ void CloudListCheck::validateBackgroundCache(int width) { _backgroundCache.setDevicePixelRatio(cRetinaFactor()); } -void CloudListCheck::paint(Painter &p, int left, int top, int outerWidth) { +void CloudListCheck::paint(QPainter &p, int left, int top, int outerWidth) { if (!_colors) { return; } else if (_colors->background.isNull()) { @@ -231,7 +232,7 @@ void CloudListCheck::paint(Painter &p, int left, int top, int outerWidth) { } void CloudListCheck::paintNotSupported( - Painter &p, + QPainter &p, int left, int top, int outerWidth) { @@ -247,7 +248,7 @@ void CloudListCheck::paintNotSupported( } void CloudListCheck::paintWithColors( - Painter &p, + QPainter &p, int left, int top, int outerWidth) { diff --git a/Telegram/SourceFiles/window/themes/window_themes_cloud_list.h b/Telegram/SourceFiles/window/themes/window_themes_cloud_list.h index 7405b65a3..005991e71 100644 --- a/Telegram/SourceFiles/window/themes/window_themes_cloud_list.h +++ b/Telegram/SourceFiles/window/themes/window_themes_cloud_list.h @@ -51,7 +51,7 @@ public: QSize getSize() const override; void paint( - Painter &p, + QPainter &p, int left, int top, int outerWidth) override; @@ -61,8 +61,8 @@ public: void setColors(const Colors &colors); private: - void paintNotSupported(Painter &p, int left, int top, int outerWidth); - void paintWithColors(Painter &p, int left, int top, int outerWidth); + void paintNotSupported(QPainter &p, int left, int top, int outerWidth); + void paintWithColors(QPainter &p, int left, int top, int outerWidth); void checkedChangedHook(anim::type animated) override; void validateBackgroundCache(int width); void ensureContrast(); diff --git a/Telegram/SourceFiles/window/window_connecting_widget.cpp b/Telegram/SourceFiles/window/window_connecting_widget.cpp index b9525eb0d..3d3a5d2a3 100644 --- a/Telegram/SourceFiles/window/window_connecting_widget.cpp +++ b/Telegram/SourceFiles/window/window_connecting_widget.cpp @@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/buttons.h" #include "ui/effects/radial_animation.h" +#include "ui/painter.h" #include "ui/ui_utility.h" #include "mtproto/mtp_instance.h" #include "mtproto/facade.h" @@ -53,7 +54,7 @@ Progress::Progress(QWidget *parent) } void Progress::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); p.fillRect(e->rect(), st::windowBg); const auto &st = st::connectingRadial; @@ -156,7 +157,7 @@ void ConnectionState::Widget::ProxyIcon::refreshCacheImages() { image.setDevicePixelRatio(cRetinaFactor()); image.fill(st::windowBg->c); { - Painter p(&image); + auto p = QPainter(&image); icon.paint( p, (width() - icon.width()) / 2, @@ -187,7 +188,7 @@ void ConnectionState::Widget::ProxyIcon::setOpacity(float64 opacity) { } void ConnectionState::Widget::ProxyIcon::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); p.setOpacity(_opacity); p.drawPixmap(0, 0, _toggled ? _cacheOn : _cacheOff); } diff --git a/Telegram/SourceFiles/window/window_history_hider.cpp b/Telegram/SourceFiles/window/window_history_hider.cpp index d8fcf4c92..4eff8d4f6 100644 --- a/Telegram/SourceFiles/window/window_history_hider.cpp +++ b/Telegram/SourceFiles/window/window_history_hider.cpp @@ -47,7 +47,7 @@ void HistoryHider::refreshLang() { } void HistoryHider::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); auto opacity = _a_opacity.value(_hiding ? 0. : 1.); if (opacity == 0.) { if (_hiding) { diff --git a/Telegram/SourceFiles/window/window_lock_widgets.cpp b/Telegram/SourceFiles/window/window_lock_widgets.cpp index b44831d6b..58cb91ccc 100644 --- a/Telegram/SourceFiles/window/window_lock_widgets.cpp +++ b/Telegram/SourceFiles/window/window_lock_widgets.cpp @@ -83,7 +83,7 @@ void LockWidget::showFinished() { } void LockWidget::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); auto progress = _a_show.value(1.); if (_a_show.animating()) { @@ -104,7 +104,7 @@ void LockWidget::paintEvent(QPaintEvent *e) { } } -void LockWidget::paintContent(Painter &p) { +void LockWidget::paintContent(QPainter &p) { p.fillRect(rect(), st::windowBg); } @@ -124,7 +124,7 @@ PasscodeLockWidget::PasscodeLockWidget( }); } -void PasscodeLockWidget::paintContent(Painter &p) { +void PasscodeLockWidget::paintContent(QPainter &p) { LockWidget::paintContent(p); p.setFont(st::passcodeHeaderFont); diff --git a/Telegram/SourceFiles/window/window_lock_widgets.h b/Telegram/SourceFiles/window/window_lock_widgets.h index 6b22588d0..d21bc585c 100644 --- a/Telegram/SourceFiles/window/window_lock_widgets.h +++ b/Telegram/SourceFiles/window/window_lock_widgets.h @@ -40,7 +40,7 @@ public: protected: void paintEvent(QPaintEvent *e) override; - virtual void paintContent(Painter &p); + virtual void paintContent(QPainter &p); private: void animationCallback(); @@ -62,7 +62,7 @@ protected: void resizeEvent(QResizeEvent *e) override; private: - void paintContent(Painter &p) override; + void paintContent(QPainter &p) override; void changed(); void submit(); void error(); diff --git a/Telegram/SourceFiles/window/window_main_menu.cpp b/Telegram/SourceFiles/window/window_main_menu.cpp index adf0660f5..b2dda39c2 100644 --- a/Telegram/SourceFiles/window/window_main_menu.cpp +++ b/Telegram/SourceFiles/window/window_main_menu.cpp @@ -23,6 +23,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/text/format_values.h" // Ui::FormatPhone #include "ui/text/text_utilities.h" #include "ui/text/text_options.h" +#include "ui/painter.h" #include "ui/special_buttons.h" #include "ui/empty_userpic.h" #include "dialogs/ui/dialogs_layout.h" diff --git a/Telegram/SourceFiles/window/window_media_preview.cpp b/Telegram/SourceFiles/window/window_media_preview.cpp index 93a252676..41fe410e0 100644 --- a/Telegram/SourceFiles/window/window_media_preview.cpp +++ b/Telegram/SourceFiles/window/window_media_preview.cpp @@ -62,7 +62,7 @@ QRect MediaPreviewWidget::updateArea() const { } void MediaPreviewWidget::paintEvent(QPaintEvent *e) { - Painter p(this); + auto p = QPainter(this); const auto r = e->rect(); const auto factor = cIntRetinaFactor(); diff --git a/Telegram/SourceFiles/window/window_slide_animation.cpp b/Telegram/SourceFiles/window/window_slide_animation.cpp index 3368ef08b..0ba70e416 100644 --- a/Telegram/SourceFiles/window/window_slide_animation.cpp +++ b/Telegram/SourceFiles/window/window_slide_animation.cpp @@ -12,7 +12,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL namespace Window { -void SlideAnimation::paintContents(Painter &p) const { +void SlideAnimation::paintContents(QPainter &p) const { const auto retina = style::DevicePixelRatio(); const auto slideLeft = (_direction == SlideDirection::FromLeft); diff --git a/Telegram/SourceFiles/window/window_slide_animation.h b/Telegram/SourceFiles/window/window_slide_animation.h index ba7fbcc5d..efe0f9696 100644 --- a/Telegram/SourceFiles/window/window_slide_animation.h +++ b/Telegram/SourceFiles/window/window_slide_animation.h @@ -18,7 +18,7 @@ enum class SlideDirection { class SlideAnimation { public: - void paintContents(Painter &p) const; + void paintContents(QPainter &p) const; void setDirection(SlideDirection direction); void setPixmaps( diff --git a/Telegram/lib_ui b/Telegram/lib_ui index f82162f05..bd7098ef4 160000 --- a/Telegram/lib_ui +++ b/Telegram/lib_ui @@ -1 +1 @@ -Subproject commit f82162f05a72352bfee0fb79f9e50c350b3a98f3 +Subproject commit bd7098ef426886736a2bfde17bf114f5633aa339