using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Input; using System.Windows.Media.Imaging; using Tango.RemoteDesktop.Frames; using Tango.RemoteDesktop.Network; namespace Tango.FSE.Common.RemoteDesktop { /// /// Represents a machine PPC remote desktop provider. /// public interface IRemoteDesktopProvider { /// /// Occurs when a remote desktop session has started. /// event EventHandler SessionStarted; /// /// Occurs when a remote desktop session has stopped. /// event EventHandler SessionStopped; /// /// Occurs when a new remote desktop screen frame is available. /// event EventHandler FrameReceived; /// /// Gets the current remote desktop session frame rate. /// double FrameRate { get; } /// /// Gets the current remote desktop session frame width. /// int FrameWidth { get; } /// /// Gets the current remote desktop session frame height. /// int FrameHeight { get; } /// /// Gets a value indicating whether the WebRTC channel is available. /// bool IsWebRtcActive { get; } /// /// Gets or sets a value indicating whether enable the WebRTC channel. /// bool EnableWebRtc { get; set; } /// /// Gets a value indicating whether a remote desktop session is active. /// bool InSession { get; } /// /// Gets a value indicating whether a remote desktop session can be started. /// bool CanStartSession { get; } /// /// Gets or sets the mouse move send interval. /// TimeSpan MouseMoveInterval { get; set; } /// /// Starts a remote desktop session. /// /// Task StartSession(); /// /// Ends the current remote desktop session. /// /// Task EndSession(); /// /// Creates a video recording handler. /// /// VideoRecordingHandler CreateRecordingHandler(); /// /// Sends a mouse down command to the remote PPC. /// /// The button. /// The location. /// Size of the view. void MouseDown(MouseButton button, Point location, Size viewSize); /// /// Sends a mouse up command to the remote PPC. /// /// The button. /// The location. /// Size of the view. void MouseUp(MouseButton button, Point location, Size viewSize); /// /// Sends a mouse move command to the remote PPC. /// /// The location. /// Size of the view. void MouseMove(Point location, Size viewSize); /// /// Sends a mouse double click command to the remote PPC. /// /// The button. /// The location. /// Size of the view. void MouseDoubleClick(MouseButton button, Point location, Size viewSize); /// /// Send a mouse scroll command to the remote PPC. /// /// The delta. /// The location. /// Size of the view. void MouseScroll(int delta, Point location, Size viewSize); /// /// Sends a touch down command to the remote PPC. /// /// The location. /// Size of the view. void TouchDown(Point location, Size viewSize); /// /// Sends a touch move command to the remote PPC. /// /// The delta x. /// The delta y. /// Size of the view. void TouchMove(int deltaX, int deltaY, Size viewSize); /// /// Sends a touch up command to the remote PPC. /// void TouchUp(); /// /// Sends a key down command to the remote PPC. /// /// The key. /// if set to true [control down]. /// if set to true [shit down]. /// if set to true [alt down]. void KeyboardDown(Key key, bool ctrlDown, bool shitDown, bool altDown); /// /// Sends a key up command to the remote PPC. /// /// The key. /// if set to true [control down]. /// if set to true [shit down]. /// if set to true [alt down]. void KeyboardUp(Key key, bool ctrlDown, bool shitDown, bool altDown); /// /// Sends the specified predefined remote desktop command. /// /// The command. void SendCommand(RemoteDesktopCommand command); /// /// Sets the remote cursor visibility. /// /// if set to true [visible]. void SetRemoteCursorVisibility(bool visible); /// /// Gets a single remote desktop screen-shot. /// /// Task GetDesktopScreenShot(); } }