using System.Numerics;
using Robust.Client.Graphics;
using Robust.Shared.Map;
using Robust.Shared.Maths;
namespace Robust.Client.UserInterface.CustomControls
{
///
/// Base interface for controls that display a viewport.
///
///
/// This has to be implemented for correct handling of input,
/// you do not strictly need to implement this otherwise.
///
public interface IViewportControl
{
IClydeWindow? Window { get; }
///
/// Converts a point on the screen to map coordinates.
///
///
/// The coordinates, in ABSOLUTE SCREEN PIXEL COORDINATES. NOT CONTROL-RELATIVE COORDINATES.
///
MapCoordinates ScreenToMap(Vector2 coords);
///
/// Similar to , except it should compensate for the effects of shaders on viewports.
///
MapCoordinates PixelToMap(Vector2 point);
///
/// Converts a point on the map to screen coordinates.
///
///
/// The coordinates, in ABSOLUTE SCREEN PIXEL COORDINATES. NOT CONTROL-RELATIVE COORDINATES.
///
Vector2 WorldToScreen(Vector2 map);
///
/// Returns a matrix that can be used to perform the transformations.
///
///
/// This is generally just be a combination of and
///
Matrix3x2 GetWorldToScreenMatrix();
///
/// Returns a matrix that can be used to transform from view-port local to screen coordinates.
///
Matrix3x2 GetLocalToScreenMatrix();
}
}