diff --git a/ui/effects/animation_value.h b/ui/effects/animation_value.h index 4ecf3ff..8244227 100644 --- a/ui/effects/animation_value.h +++ b/ui/effects/animation_value.h @@ -99,7 +99,7 @@ TG_FORCE_INLINE float64 interpolateF(int a, int b, float64 b_ratio) { } TG_FORCE_INLINE int interpolate(int a, int b, float64 b_ratio) { - return std::round(interpolateF(a, b, b_ratio)); + return base::SafeRound(interpolateF(a, b, b_ratio)); } #ifdef ARCH_CPU_32_BITS diff --git a/ui/effects/radial_animation.cpp b/ui/effects/radial_animation.cpp index 21e5a13..ffea2ac 100644 --- a/ui/effects/radial_animation.cpp +++ b/ui/effects/radial_animation.cpp @@ -224,8 +224,8 @@ RadialState InfiniteRadialAnimation::computeState() { if (anim::Disabled()) { return { 1., 0, kFullArcLength }; } - const auto min = int(std::round(kFullArcLength * _st.arcMin)); - const auto max = int(std::round(kFullArcLength * _st.arcMax)); + const auto min = int(base::SafeRound(kFullArcLength * _st.arcMin)); + const auto max = int(base::SafeRound(kFullArcLength * _st.arcMax)); if (now <= _workStarted) { // zero .. _workStarted const auto zero = _workStarted - _st.sineDuration; @@ -314,8 +314,8 @@ RadialState InfiniteRadialAnimation::computeState() { // st.arcMax - st.arcMin, // std::min(backCurrent, crl::time(st.sineDuration)) // / float64(st.sineDuration)); - //const auto front = linear + std::round((st.arcMin + frontProgress + frontPeriods * (st.arcMax - st.arcMin)) * kFullArcLength); - //const auto from = linear + std::round((backProgress + backPeriods * (st.arcMax - st.arcMin)) * kFullArcLength); + //const auto front = linear + base::SafeRound((st.arcMin + frontProgress + frontPeriods * (st.arcMax - st.arcMin)) * kFullArcLength); + //const auto from = linear + base::SafeRound((backProgress + backPeriods * (st.arcMax - st.arcMin)) * kFullArcLength); //const auto length = (front - from); //return { diff --git a/ui/style/style_core_scale.h b/ui/style/style_core_scale.h index e25dcf0..a92c786 100644 --- a/ui/style/style_core_scale.h +++ b/ui/style/style_core_scale.h @@ -6,6 +6,8 @@ // #pragma once +#include "base/algorithm.h" + #include #include @@ -34,7 +36,7 @@ template [[nodiscard]] inline T ConvertScale(T value, int scale) { return (value < 0.) ? (-ConvertScale(-value, scale)) - : T(std::round((double(value) * scale / 100.) - 0.01)); + : T(base::SafeRound((double(value) * scale / 100.) - 0.01)); } template diff --git a/ui/wrap/vertical_layout_reorder.cpp b/ui/wrap/vertical_layout_reorder.cpp index 7ddc773..e8f778b 100644 --- a/ui/wrap/vertical_layout_reorder.cpp +++ b/ui/wrap/vertical_layout_reorder.cpp @@ -260,8 +260,9 @@ void VerticalLayoutReorder::updateShift( ? indexHint : indexOf(widget); auto &entry = _entries[index]; - entry.shift = std::round(entry.shiftAnimation.value(entry.finalShift)) - + entry.deltaShift; + entry.shift = base::SafeRound( + entry.shiftAnimation.value(entry.finalShift) + ) + entry.deltaShift; if (entry.deltaShift && !entry.shiftAnimation.animating()) { entry.finalShift += entry.deltaShift; entry.deltaShift = 0;