/
diev
/
stelegramdesktop-tdesktop
Обзор
Документация
Войти
/
diev
/
stelegramdesktop-tdesktop
Код
Запросы
0
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
Telegram/SourceFiles/ui/effects/shake_animation.cpp
39 строк
1 KB
23rd
Moved animation callback for shake effect to single place.
28 ноя 2023, 20:55
28 ноя 2023, 20:55
9ef0e5c
Код
Авторство
О чём код?
/* This file is part of Telegram Desktop, the official desktop application for the Telegram messaging service. For license and copyright information please follow this link: https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "ui/effects/shake_animation.h" #include "styles/style_basic.h" namespace Ui { Fn<void(float64)> DefaultShakeCallback(Fn<void(int)> applyShift) { constexpr auto kShiftProgress = 6; constexpr auto kSegmentsCount = 5; return [=, applyShift = std::move(applyShift)](float64 value) { const auto fullProgress = value * kShiftProgress; const auto segment = std::clamp( int(std::floor(fullProgress)), 0, kSegmentsCount); const auto part = fullProgress - segment; const auto from = (segment == 0) ? 0. : (segment == 1 || segment == 3 || segment == 5) ? 1. : -1.; const auto to = (segment == 0 || segment == 2 || segment == 4) ? 1. : (segment == 1 || segment == 3) ? -1. : 0.; const auto shift = from * (1. - part) + to * part; applyShift(int(base::SafeRound(shift * st::shakeShift))); }; } } // namespace Ui