Try different overscroll function.
This commit is contained in:
parent
6af98c0802
commit
d04a38e15d
1 changed files with 18 additions and 5 deletions
|
|
@ -13,24 +13,38 @@
|
||||||
#include "styles/style_widgets.h"
|
#include "styles/style_widgets.h"
|
||||||
|
|
||||||
#include <QtGui/QWindow>
|
#include <QtGui/QWindow>
|
||||||
|
#include <QtCore/QtMath>
|
||||||
#include <QtWidgets/QApplication>
|
#include <QtWidgets/QApplication>
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
constexpr auto kOverscrollReturnDuration = crl::time(250);
|
constexpr auto kOverscrollReturnDuration = crl::time(250);
|
||||||
constexpr auto kOverscrollPower = 0.6;
|
//constexpr auto kOverscrollPower = 0.6;
|
||||||
constexpr auto kOverscrollFromThreshold = -(1 << 30);
|
constexpr auto kOverscrollFromThreshold = -(1 << 30);
|
||||||
constexpr auto kOverscrollTillThreshold = (1 << 30);
|
constexpr auto kOverscrollTillThreshold = (1 << 30);
|
||||||
constexpr auto kTouchOverscrollMultiplier = 2;
|
constexpr auto kTouchOverscrollMultiplier = 2;
|
||||||
|
|
||||||
|
constexpr auto kLogA = 16.;
|
||||||
|
constexpr auto kLogB = 10.;
|
||||||
|
|
||||||
|
[[nodiscard]] float64 RawFrom(float64 value) {
|
||||||
|
return kLogA * log(1. + value / kLogB);
|
||||||
|
//return pow(value, kOverscrollPower);
|
||||||
|
}
|
||||||
|
|
||||||
|
[[nodiscard]] float64 RawTo(float64 value) {
|
||||||
|
return (exp(value / kLogA) - 1.) * kLogB;
|
||||||
|
//return pow(value, 1. / kOverscrollPower);
|
||||||
|
}
|
||||||
|
|
||||||
[[nodiscard]] int OverscrollFromAccumulated(int accumulated) {
|
[[nodiscard]] int OverscrollFromAccumulated(int accumulated) {
|
||||||
if (!accumulated) {
|
if (!accumulated) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (accumulated > 0 ? 1. : -1.)
|
return (accumulated > 0 ? 1. : -1.)
|
||||||
* int(base::SafeRound(
|
* int(base::SafeRound(RawFrom(std::abs(accumulated))));
|
||||||
pow(std::abs(accumulated), kOverscrollPower)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[[nodiscard]] int OverscrollToAccumulated(int overscroll) {
|
[[nodiscard]] int OverscrollToAccumulated(int overscroll) {
|
||||||
|
|
@ -38,8 +52,7 @@ constexpr auto kTouchOverscrollMultiplier = 2;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return (overscroll > 0 ? 1. : -1.)
|
return (overscroll > 0 ? 1. : -1.)
|
||||||
* int(base::SafeRound(
|
* int(base::SafeRound(RawTo(std::abs(overscroll))));
|
||||||
pow(std::abs(overscroll), 1. / kOverscrollPower)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue