From 74aae29b64b8de2ecbf0ffa420b3598681bf256e Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Fri, 7 Jul 2023 11:28:50 +0300 Subject: [PATCH] Added point details widget to chart widget. --- .../SourceFiles/statistics/chart_widget.cpp | 106 ++++++++++++++++-- .../SourceFiles/statistics/chart_widget.h | 17 ++- .../statistics/linear_chart_view.cpp | 20 +++- .../statistics/linear_chart_view.h | 4 +- .../statistics/point_details_widget.cpp | 5 + .../statistics/point_details_widget.h | 3 + .../SourceFiles/statistics/statistics.style | 2 + .../statistics/statistics_common.h | 6 + 8 files changed, 151 insertions(+), 12 deletions(-) diff --git a/Telegram/SourceFiles/statistics/chart_widget.cpp b/Telegram/SourceFiles/statistics/chart_widget.cpp index b07375a7bb..53b8011599 100644 --- a/Telegram/SourceFiles/statistics/chart_widget.cpp +++ b/Telegram/SourceFiles/statistics/chart_widget.cpp @@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "base/qt/qt_key_modifiers.h" #include "statistics/linear_chart_view.h" +#include "statistics/point_details_widget.h" #include "ui/abstract_button.h" #include "ui/effects/animation_value_f.h" #include "ui/rect.h" @@ -20,6 +21,10 @@ namespace { constexpr auto kHeightLimitsUpdateTimeout = crl::time(320); +inline float64 InterpolationRatio(float64 from, float64 to, float64 result) { + return (result - from) / (to - from); +}; + [[nodiscard]] int FindMaxValue( Data::StatisticalChart &chartData, int startXIndex, @@ -424,6 +429,10 @@ Limits ChartWidget::ChartAnimationController::currentXLimits() const { return { _animationValueXMin.current(), _animationValueXMax.current() }; } +Limits ChartWidget::ChartAnimationController::finalXLimits() const { + return { _animationValueXMin.to(), _animationValueXMax.to() }; +} + Limits ChartWidget::ChartAnimationController::currentHeightLimits() const { return { _animationValueHeightMin.current(), @@ -442,7 +451,7 @@ auto ChartWidget::ChartAnimationController::heightAnimationStarts() const ChartWidget::ChartWidget(not_null parent) : Ui::RpWidget(parent) -, _chartArea(base::make_unique_q(this)) +, _chartArea(base::make_unique_q(this)) , _footer(std::make_unique