From 27d3b68ff450f49393e57dbb01064aa2733b9a50 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Mon, 7 Feb 2022 21:37:15 +0300 Subject: [PATCH] Moved InterpolatedRect util to separated file. --- CMakeLists.txt | 1 + ui/effects/animation_value_f.h | 26 ++++++++++++++++++++++++++ ui/paint/arcs.cpp | 18 ++---------------- 3 files changed, 29 insertions(+), 16 deletions(-) create mode 100644 ui/effects/animation_value_f.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 8fac166..e76e73c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,6 +38,7 @@ PRIVATE ui/effects/animation_value.cpp ui/effects/animation_value.h + ui/effects/animation_value_f.h ui/effects/animations.cpp ui/effects/animations.h ui/effects/cross_animation.cpp diff --git a/ui/effects/animation_value_f.h b/ui/effects/animation_value_f.h new file mode 100644 index 0000000..bd8adb7 --- /dev/null +++ b/ui/effects/animation_value_f.h @@ -0,0 +1,26 @@ +// This file is part of Desktop App Toolkit, +// a set of libraries for developing nice desktop applications. +// +// For license and copyright information please follow this link: +// https://github.com/desktop-app/legal/blob/master/LEGAL +// +#pragma once + +namespace anim { + +TG_FORCE_INLINE float64 interpolateF(float a, float b, float64 b_ratio) { + return a + float64(b - a) * b_ratio; +}; + +TG_FORCE_INLINE QRectF interpolatedRectF( + const QRectF &r1, + const QRectF &r2, + float64 ratio) { + return QRectF( + interpolateF(r1.x(), r2.x(), ratio), + interpolateF(r1.y(), r2.y(), ratio), + interpolateF(r1.width(), r2.width(), ratio), + interpolateF(r1.height(), r2.height(), ratio)); +} + +} // namespace anim diff --git a/ui/paint/arcs.cpp b/ui/paint/arcs.cpp index d3121d6..0204e06 100644 --- a/ui/paint/arcs.cpp +++ b/ui/paint/arcs.cpp @@ -7,24 +7,10 @@ #include "ui/paint/arcs.h" #include "ui/effects/animation_value.h" +#include "ui/effects/animation_value_f.h" #include "ui/painter.h" namespace Ui::Paint { -namespace { - -inline float64 InterpolateF(float a, float b, float64 b_ratio) { - return a + float64(b - a) * b_ratio; -}; - -QRectF InterpolatedRect(const QRectF &r1, const QRectF &r2, float64 ratio) { - return QRectF( - InterpolateF(r1.x(), r2.x(), ratio), - InterpolateF(r1.y(), r2.y(), ratio), - InterpolateF(r1.width(), r2.width(), ratio), - InterpolateF(r1.height(), r2.height(), ratio)); -} - -} // namespace ArcsAnimation::ArcsAnimation( const style::ArcsAnimation &st, @@ -221,7 +207,7 @@ void ArcsAnimation::paint(Painter &p, std::optional colorOverride) { ? arc.rect : (progress == 1.) ? previousRect - : InterpolatedRect(arc.rect, previousRect, progress); + : anim::interpolatedRectF(arc.rect, previousRect, progress); p.drawArc(rect, _startAngle, _spanAngle); } p.setOpacity(1.);