// Copyright 2017 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef REMOTING_CLIENT_UI_DESKTOP_VIEWPORT_H_ #define REMOTING_CLIENT_UI_DESKTOP_VIEWPORT_H_ #include "base/functional/callback.h" #include "remoting/client/ui/view_matrix.h" namespace remoting { // The viewport is a sliding window on the desktop image. This class defines // the viewport's position and size, provides methods to manipulate it, and // outputs a desktop space -> surface space transformation matrix for drawing // the desktop onto the client's view surface on the screen. // // Desktop space: Coordinates to locate a point on the host's desktop image in // pixels, similar to the mouse's cursor position. // Surface space: Coordinates to locate a point on the client device's view // surface (e.g. GLKView/SurfaceView) for rendering the desktop, this is // often the coordinate system to locate a point on the user's phone // screen (if the surface expands to the whole screen). // // Viewport: Projection of the user surface view on the desktop space. // Desktop: Projection of the host's desktop on the surface space. // // You may either manipulate the desktop on the surface coordinate or manipulate // the viewport on the desktop coordinate, depending on your choice of the // reference frame. class DesktopViewport { … }; } // namespace remoting #endif // REMOTING_CLIENT_UI_DESKTOP_VIEWPORT_H_