Move common values to ui/arc_angles.h.
This commit is contained in:
parent
db8c3d16e8
commit
4cc4d2ff56
4 changed files with 33 additions and 16 deletions
|
|
@ -261,6 +261,7 @@ PRIVATE
|
||||||
ui/abstract_button.h
|
ui/abstract_button.h
|
||||||
ui/animated_icon.cpp
|
ui/animated_icon.cpp
|
||||||
ui/animated_icon.h
|
ui/animated_icon.h
|
||||||
|
ui/arc_angles.h
|
||||||
ui/basic_click_handlers.cpp
|
ui/basic_click_handlers.cpp
|
||||||
ui/basic_click_handlers.h
|
ui/basic_click_handlers.h
|
||||||
ui/cached_special_layer_shadow_corners.cpp
|
ui/cached_special_layer_shadow_corners.cpp
|
||||||
|
|
|
||||||
18
ui/arc_angles.h
Normal file
18
ui/arc_angles.h
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
/*
|
||||||
|
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
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
namespace arc {
|
||||||
|
|
||||||
|
constexpr auto kFullLength = 360 * 16;
|
||||||
|
constexpr auto kHalfLength = (kFullLength / 2);
|
||||||
|
constexpr auto kQuarterLength = (kFullLength / 4);
|
||||||
|
constexpr auto kMinLength = (kFullLength / 360);
|
||||||
|
constexpr auto kAlmostFullLength = (kFullLength - kMinLength);
|
||||||
|
|
||||||
|
} // namespace arc
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
#include "ui/effects/cross_animation.h"
|
#include "ui/effects/cross_animation.h"
|
||||||
|
|
||||||
#include "ui/effects/animation_value.h"
|
#include "ui/effects/animation_value.h"
|
||||||
|
#include "ui/arc_angles.h"
|
||||||
#include "ui/painter.h"
|
#include "ui/painter.h"
|
||||||
|
|
||||||
#include <QtCore/QtMath>
|
#include <QtCore/QtMath>
|
||||||
|
|
@ -17,7 +18,6 @@ namespace {
|
||||||
|
|
||||||
constexpr auto kPointCount = 12;
|
constexpr auto kPointCount = 12;
|
||||||
constexpr auto kStaticLoadingValue = float64(-666);
|
constexpr auto kStaticLoadingValue = float64(-666);
|
||||||
constexpr auto kFullArcLength = 360 * 16;
|
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
@ -148,12 +148,12 @@ void CrossAnimation::paint(
|
||||||
auto pathDeleteSize = kPointCount;
|
auto pathDeleteSize = kPointCount;
|
||||||
|
|
||||||
const auto staticLoading = (loading == kStaticLoadingValue);
|
const auto staticLoading = (loading == kStaticLoadingValue);
|
||||||
auto loadingArcLength = staticLoading ? kFullArcLength : 0;
|
auto loadingArcLength = staticLoading ? arc::kFullLength : 0;
|
||||||
if (loading > 0.) {
|
if (loading > 0.) {
|
||||||
transformLoadingCross(loading, pathDelete, pathDeleteSize);
|
transformLoadingCross(loading, pathDelete, pathDeleteSize);
|
||||||
|
|
||||||
auto loadingArc = (loading >= 0.5) ? (loading - 1.) : loading;
|
auto loadingArc = (loading >= 0.5) ? (loading - 1.) : loading;
|
||||||
loadingArcLength = qRound(-loadingArc * 2 * kFullArcLength);
|
loadingArcLength = qRound(-loadingArc * 2 * arc::kFullLength);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!staticLoading) {
|
if (!staticLoading) {
|
||||||
|
|
@ -184,9 +184,9 @@ void CrossAnimation::paint(
|
||||||
if (staticLoading) {
|
if (staticLoading) {
|
||||||
anim::DrawStaticLoading(p, roundPart, stroke, color);
|
anim::DrawStaticLoading(p, roundPart, stroke, color);
|
||||||
} else {
|
} else {
|
||||||
auto loadingArcStart = kFullArcLength / 8;
|
auto loadingArcStart = arc::kQuarterLength / 2;
|
||||||
if (shown < 1.) {
|
if (shown < 1.) {
|
||||||
loadingArcStart -= qRound(-(shown - 1.) * kFullArcLength / 4.);
|
loadingArcStart -= qRound(-(shown - 1.) * arc::kQuarterLength);
|
||||||
}
|
}
|
||||||
if (loadingArcLength < 0) {
|
if (loadingArcLength < 0) {
|
||||||
loadingArcStart += loadingArcLength;
|
loadingArcStart += loadingArcLength;
|
||||||
|
|
|
||||||
|
|
@ -6,16 +6,14 @@
|
||||||
//
|
//
|
||||||
#include "ui/effects/radial_animation.h"
|
#include "ui/effects/radial_animation.h"
|
||||||
|
|
||||||
|
#include "ui/arc_angles.h"
|
||||||
#include "ui/painter.h"
|
#include "ui/painter.h"
|
||||||
#include "styles/style_widgets.h"
|
#include "styles/style_widgets.h"
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
constexpr auto kFullArcLength = 360 * 16;
|
constexpr auto kFullArcLength = arc::kFullLength;
|
||||||
constexpr auto kQuarterArcLength = (kFullArcLength / 4);
|
|
||||||
constexpr auto kMinArcLength = (kFullArcLength / 360);
|
|
||||||
constexpr auto kAlmostFullArcLength = (kFullArcLength - kMinArcLength);
|
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
|
|
@ -23,14 +21,14 @@ const int RadialState::kFull = kFullArcLength;
|
||||||
|
|
||||||
void RadialAnimation::start(float64 prg) {
|
void RadialAnimation::start(float64 prg) {
|
||||||
_firstStart = _lastStart = _lastTime = crl::now();
|
_firstStart = _lastStart = _lastTime = crl::now();
|
||||||
const auto iprg = qRound(qMax(prg, 0.0001) * kAlmostFullArcLength);
|
const auto iprg = qRound(qMax(prg, 0.0001) * arc::kAlmostFullLength);
|
||||||
const auto iprgstrict = qRound(prg * kAlmostFullArcLength);
|
const auto iprgstrict = qRound(prg * arc::kAlmostFullLength);
|
||||||
_arcEnd = anim::value(iprgstrict, iprg);
|
_arcEnd = anim::value(iprgstrict, iprg);
|
||||||
_animation.start();
|
_animation.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RadialAnimation::update(float64 prg, bool finished, crl::time ms) {
|
bool RadialAnimation::update(float64 prg, bool finished, crl::time ms) {
|
||||||
const auto iprg = qRound(qMax(prg, 0.0001) * kAlmostFullArcLength);
|
const auto iprg = qRound(qMax(prg, 0.0001) * arc::kAlmostFullLength);
|
||||||
const auto result = (iprg != qRound(_arcEnd.to()))
|
const auto result = (iprg != qRound(_arcEnd.to()))
|
||||||
|| (_finished != finished);
|
|| (_finished != finished);
|
||||||
if (_finished != finished) {
|
if (_finished != finished) {
|
||||||
|
|
@ -101,13 +99,13 @@ void RadialAnimation::draw(
|
||||||
}
|
}
|
||||||
|
|
||||||
RadialState RadialAnimation::computeState() const {
|
RadialState RadialAnimation::computeState() const {
|
||||||
auto length = kMinArcLength + qRound(_arcEnd.current());
|
auto length = arc::kMinLength + qRound(_arcEnd.current());
|
||||||
auto from = kQuarterArcLength
|
auto from = arc::kQuarterLength
|
||||||
- length
|
- length
|
||||||
- (anim::Disabled() ? 0 : qRound(_arcStart.current()));
|
- (anim::Disabled() ? 0 : qRound(_arcStart.current()));
|
||||||
if (style::RightToLeft()) {
|
if (style::RightToLeft()) {
|
||||||
from = kQuarterArcLength - (from - kQuarterArcLength) - length;
|
from = arc::kQuarterLength - (from - arc::kQuarterLength) - length;
|
||||||
if (from < 0) from += kFullArcLength;
|
if (from < 0) from += arc::kFullLength;
|
||||||
}
|
}
|
||||||
return { _opacity, from, length };
|
return { _opacity, from, length };
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue