chromium/remoting/client/ui/desktop_viewport.h

// 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_