| // Copyright 2017 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef ASH_COMPONENTS_FAST_INK_FAST_INK_POINTER_CONTROLLER_H_ |
| #define ASH_COMPONENTS_FAST_INK_FAST_INK_POINTER_CONTROLLER_H_ |
| |
| #include "base/macros.h" |
| #include "base/time/time.h" |
| #include "ui/events/event_handler.h" |
| |
| namespace aura { |
| class Window; |
| } |
| |
| namespace views { |
| class View; |
| } |
| |
| namespace fast_ink { |
| |
| // Base class for a fast ink based pointer controller. Enables/disables |
| // the pointer, receives points and passes them off to be rendered. |
| class FastInkPointerController : public ui::EventHandler { |
| public: |
| FastInkPointerController(); |
| ~FastInkPointerController() override; |
| |
| bool enabled() const { return enabled_; } |
| |
| // Enables/disables the pointer. The user still has to press to see |
| // the pointer. |
| virtual void SetEnabled(bool enabled); |
| |
| protected: |
| // Whether the controller is ready to start handling a new gesture. |
| virtual bool CanStartNewGesture(ui::TouchEvent* event); |
| |
| private: |
| // ui::EventHandler: |
| void OnTouchEvent(ui::TouchEvent* event) override; |
| |
| // Returns the pointer view. |
| virtual views::View* GetPointerView() const = 0; |
| |
| // Creates the pointer view. |
| virtual void CreatePointerView(base::TimeDelta presentation_delay, |
| aura::Window* root_window) = 0; |
| |
| // Updates the pointer view. |
| virtual void UpdatePointerView(ui::TouchEvent* event) = 0; |
| |
| // Destroys the pointer view if it exists. |
| virtual void DestroyPointerView() = 0; |
| |
| // The presentation delay used for pointer location prediction. |
| const base::TimeDelta presentation_delay_; |
| |
| bool enabled_ = false; |
| |
| DISALLOW_COPY_AND_ASSIGN(FastInkPointerController); |
| }; |
| |
| } // namespace fast_ink |
| |
| #endif // ASH_COMPONENTS_FAST_INK_FAST_INK_POINTER_CONTROLLER_H_ |