From 6bc9586644f54a9324b8ef7e1a8bf0e53c140e33 Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 11 May 2021 12:56:28 +0400 Subject: [PATCH] Fix CrossLineAnimation with semi-transparent color. --- ui/colors.palette | 4 ++-- ui/effects/cross_line.cpp | 21 +++++++++++++++++---- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/ui/colors.palette b/ui/colors.palette index ddbe40b..b294d2e 100644 --- a/ui/colors.palette +++ b/ui/colors.palette @@ -584,8 +584,8 @@ groupCallMenuBgOver: #343940; // group call popup menu with mouse over groupCallMenuBgRipple: #3a4047; // group call popup menu ripple effect groupCallLeaveBg: #f75c5c7f; // group call leave button background groupCallLeaveBgRipple: #f75c5c9e; // group call leave button ripple effect -groupCallVideoTextFg: #ffffffb2; // group call text over video -groupCallVideoSubTextFg: #ffffff66; // group call additional text over video +groupCallVideoTextFg: #ffffffe0; // group call text over video +groupCallVideoSubTextFg: #ffffffc0; // group call additional text over video callBarBg: dialogsBgActive; // active phone call bar background callBarMuteRipple: dialogsRippleBgActive; // active phone call bar mute and hangup button ripple effect diff --git a/ui/effects/cross_line.cpp b/ui/effects/cross_line.cpp index 0028ac8..c1e0f96 100644 --- a/ui/effects/cross_line.cpp +++ b/ui/effects/cross_line.cpp @@ -88,15 +88,20 @@ void CrossLineAnimation::fillFrame( Painter q(&_frame); PainterHighQualityEnabler hq(q); - if (colorOverride) { - _st.icon.paint(q, 0, 0, _st.icon.width(), *colorOverride); + const auto colorize = ((colorOverride && colorOverride->alpha() != 255) + || (!colorOverride && _st.fg->c.alpha() != 255)); + const auto color = colorize + ? QColor(255, 255, 255) + : colorOverride; + if (color) { + _st.icon.paint(q, 0, 0, _st.icon.width(), *color); } else { _st.icon.paint(q, 0, 0, _st.icon.width()); } - if (colorOverride) { + if (color) { auto pen = _strokePen; - pen.setColor(*colorOverride); + pen.setColor(*color); q.setPen(pen); } else { q.setPen(_strokePen); @@ -106,6 +111,14 @@ void CrossLineAnimation::fillFrame( q.setCompositionMode(QPainter::CompositionMode_Source); q.setPen(_transparentPen); q.drawLine(_reversed ? bottomLine : topLine); + q.end(); + + if (colorize) { + style::colorizeImage( + _frame, + colorOverride.value_or(_st.fg->c), + &_frame); + } } void CrossLineAnimation::invalidate() {