// 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 REMOTING_CLIENT_INPUT_DIRECT_TOUCH_INPUT_STRATEGY_H_ #define REMOTING_CLIENT_INPUT_DIRECT_TOUCH_INPUT_STRATEGY_H_ #include "remoting/client/input/touch_input_strategy.h" namespace remoting { // This strategy directly translates all operations on the OpenGL view into // corresponding operations on the desktop. It doesn't maintain the cursor // positions separately -- the positions come from the location of the touch. class DirectTouchInputStrategy : public TouchInputStrategy { public: DirectTouchInputStrategy(); ~DirectTouchInputStrategy() override; // TouchInputStrategy overrides. void HandleZoom(const ViewMatrix::Point& pivot, float scale, DesktopViewport* viewport) override; bool HandlePan(const ViewMatrix::Vector2D& translation, Gesture simultaneous_gesture, DesktopViewport* viewport) override; bool TrackTouchInput(const ViewMatrix::Point& touch_point, const DesktopViewport& viewport) override; ViewMatrix::Point GetCursorPosition() const override; void FocusViewportOnCursor(DesktopViewport* viewport) const override; ViewMatrix::Vector2D MapScreenVectorToDesktop( const ViewMatrix::Vector2D& delta, const DesktopViewport& viewport) const override; float GetFeedbackRadius(TouchFeedbackType type) const override; bool IsCursorVisible() const override; private: ViewMatrix::Point cursor_position_{0.f, 0.f}; // TouchInputStrategy is neither copyable nor movable. DirectTouchInputStrategy(const DirectTouchInputStrategy&) = delete; DirectTouchInputStrategy& operator=(const DirectTouchInputStrategy&) = delete; }; } // namespace remoting #endif // REMOTING_CLIENT_INPUT_DIRECT_TOUCH_INPUT_STRATEGY_H_