| Index: cc/input/single_scrollbar_animation_controller_thinning.h
|
| diff --git a/cc/input/scrollbar_animation_controller_thinning.h b/cc/input/single_scrollbar_animation_controller_thinning.h
|
| similarity index 50%
|
| copy from cc/input/scrollbar_animation_controller_thinning.h
|
| copy to cc/input/single_scrollbar_animation_controller_thinning.h
|
| index 236e595ea263ec5d9f090d913005b34bfbbcd967..b9743874b844ed980191be7b0fa46540a3e9bd8d 100644
|
| --- a/cc/input/scrollbar_animation_controller_thinning.h
|
| +++ b/cc/input/single_scrollbar_animation_controller_thinning.h
|
| @@ -2,76 +2,83 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#ifndef CC_INPUT_SCROLLBAR_ANIMATION_CONTROLLER_THINNING_H_
|
| -#define CC_INPUT_SCROLLBAR_ANIMATION_CONTROLLER_THINNING_H_
|
| +#ifndef CC_INPUT_SINGLE_SCROLLBAR_ANIMATION_CONTROLLER_THINNING_H_
|
| +#define CC_INPUT_SINGLE_SCROLLBAR_ANIMATION_CONTROLLER_THINNING_H_
|
|
|
| #include <memory>
|
|
|
| #include "base/macros.h"
|
| +#include "base/time/time.h"
|
| #include "cc/base/cc_export.h"
|
| -#include "cc/input/scrollbar_animation_controller.h"
|
| +#include "cc/input/scrollbar.h"
|
| +#include "cc/layers/layer_impl.h"
|
| +#include "cc/layers/scrollbar_layer_impl_base.h"
|
| +#include "ui/gfx/geometry/vector2d_f.h"
|
|
|
| namespace cc {
|
|
|
| -// Scrollbar animation that partially fades and thins after an idle delay,
|
| -// and reacts to mouse movements.
|
| -class CC_EXPORT ScrollbarAnimationControllerThinning
|
| - : public ScrollbarAnimationController {
|
| +class ScrollbarAnimationControllerClient;
|
| +
|
| +// ScrollbarAnimationControllerThinning for one scrollbar
|
| +class CC_EXPORT SingleScrollbarAnimationControllerThinning {
|
| public:
|
| - static std::unique_ptr<ScrollbarAnimationControllerThinning> Create(
|
| + static std::unique_ptr<SingleScrollbarAnimationControllerThinning> Create(
|
| int scroll_layer_id,
|
| + ScrollbarOrientation orientation,
|
| ScrollbarAnimationControllerClient* client,
|
| - base::TimeDelta delay_before_starting,
|
| - base::TimeDelta resize_delay_before_starting,
|
| - base::TimeDelta fade_duration,
|
| base::TimeDelta thinning_duration);
|
|
|
| - ~ScrollbarAnimationControllerThinning() override;
|
| + ~SingleScrollbarAnimationControllerThinning() {}
|
|
|
| void set_mouse_move_distance_for_test(float distance) {
|
| mouse_move_distance_to_trigger_animation_ = distance;
|
| }
|
| bool mouse_is_over_scrollbar() const { return mouse_is_over_scrollbar_; }
|
| bool mouse_is_near_scrollbar() const { return mouse_is_near_scrollbar_; }
|
| + bool captured() const { return captured_; }
|
| +
|
| + bool Animate(base::TimeTicks now);
|
| + void StartAnimation();
|
| + void StopAnimation();
|
|
|
| - void DidScrollUpdate(bool on_resize) override;
|
| - void DidScrollEnd() override;
|
| + void UpdateThumbThicknessScale();
|
|
|
| - void DidMouseDown() override;
|
| - void DidMouseUp() override;
|
| - void DidMouseLeave() override;
|
| - void DidMouseMoveNear(float distance) override;
|
| - bool ScrollbarsHidden() const override;
|
| + void DidMouseDown();
|
| + void DidMouseUp();
|
| + void DidMouseLeave();
|
| + void DidMouseMoveNear(float distance);
|
|
|
| - protected:
|
| - ScrollbarAnimationControllerThinning(
|
| + private:
|
| + SingleScrollbarAnimationControllerThinning(
|
| int scroll_layer_id,
|
| + ScrollbarOrientation orientation,
|
| ScrollbarAnimationControllerClient* client,
|
| - base::TimeDelta delay_before_starting,
|
| - base::TimeDelta resize_delay_before_starting,
|
| - base::TimeDelta fade_duration,
|
| base::TimeDelta thinning_duration);
|
|
|
| - void RunAnimationFrame(float progress) override;
|
| - const base::TimeDelta& Duration() override;
|
| + float AnimationProgressAtTime(base::TimeTicks now);
|
| + void RunAnimationFrame(float progress);
|
| + const base::TimeDelta& Duration();
|
|
|
| - private:
|
| // Describes whether the current animation should INCREASE (thicken)
|
| // a bar or DECREASE it (thin).
|
| enum AnimationChange { NONE, INCREASE, DECREASE };
|
| - enum AnimatingProperty { OPACITY, THICKNESS };
|
| float ThumbThicknessScaleAt(float progress);
|
| +
|
| float AdjustScale(float new_value,
|
| float current_value,
|
| AnimationChange animation_change,
|
| float min_value,
|
| float max_value);
|
| - void ApplyOpacity(float opacity);
|
| void ApplyThumbThicknessScale(float thumb_thickness_scale);
|
|
|
| - void SetCurrentAnimatingProperty(AnimatingProperty property);
|
| + ScrollbarAnimationControllerClient* client_;
|
| +
|
| + base::TimeTicks last_awaken_time_;
|
| + bool is_animating_;
|
|
|
| - float opacity_;
|
| + int scroll_layer_id_;
|
| +
|
| + ScrollbarOrientation orientation_;
|
| bool captured_;
|
| bool mouse_is_over_scrollbar_;
|
| bool mouse_is_near_scrollbar_;
|
| @@ -80,14 +87,11 @@ class CC_EXPORT ScrollbarAnimationControllerThinning
|
| // How close should the mouse be to the scrollbar before we thicken it.
|
| float mouse_move_distance_to_trigger_animation_;
|
|
|
| - base::TimeDelta fade_duration_;
|
| base::TimeDelta thinning_duration_;
|
|
|
| - AnimatingProperty current_animating_property_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(ScrollbarAnimationControllerThinning);
|
| + DISALLOW_COPY_AND_ASSIGN(SingleScrollbarAnimationControllerThinning);
|
| };
|
|
|
| } // namespace cc
|
|
|
| -#endif // CC_INPUT_SCROLLBAR_ANIMATION_CONTROLLER_THINNING_H_
|
| +#endif // CC_INPUT_SINGLE_SCROLLBAR_ANIMATION_CONTROLLER_THINNING_H_
|
|
|