diff --git a/src/BizHawk.Client.Common/DisplayManager/IWindowCoordsTransformer.cs b/src/BizHawk.Client.Common/DisplayManager/IWindowCoordsTransformer.cs
new file mode 100644
index 0000000000..8a05772c12
--- /dev/null
+++ b/src/BizHawk.Client.Common/DisplayManager/IWindowCoordsTransformer.cs
@@ -0,0 +1,17 @@
+using System.Drawing;
+
+namespace BizHawk.Client.Common
+{
+ public interface IWindowCoordsTransformer
+ {
+ (int Left, int Top, int Right, int Bottom) ClientExtraPadding { get; set; }
+
+ (int Left, int Top, int Right, int Bottom) GameExtraPadding { get; set; }
+
+ Size GetPanelNativeSize();
+
+ Point TransformPoint(Point p);
+
+ Point UntransformPoint(Point p);
+ }
+}
diff --git a/src/BizHawk.Client.EmuHawk/Api/Libraries/EmuClientApi.cs b/src/BizHawk.Client.EmuHawk/Api/Libraries/EmuClientApi.cs
index 2fa649066c..9a6775522d 100644
--- a/src/BizHawk.Client.EmuHawk/Api/Libraries/EmuClientApi.cs
+++ b/src/BizHawk.Client.EmuHawk/Api/Libraries/EmuClientApi.cs
@@ -4,7 +4,6 @@ using System.Drawing;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
-using System.Windows.Forms;
using BizHawk.Client.Common;
using BizHawk.Common;
@@ -265,13 +264,13 @@ namespace BizHawk.Client.EmuHawk
public void SetClientExtraPadding(int left, int top, int right, int bottom)
{
- _displayManager.ClientExtraPadding = new Padding(left, top, right, bottom);
+ _displayManager.ClientExtraPadding = (left, top, right, bottom);
_mainForm.FrameBufferResized();
}
public void SetGameExtraPadding(int left, int top, int right, int bottom)
{
- _displayManager.GameExtraPadding = new Padding(left, top, right, bottom);
+ _displayManager.GameExtraPadding = (left, top, right, bottom);
_mainForm.FrameBufferResized();
}
diff --git a/src/BizHawk.Client.EmuHawk/DisplayManager/DisplayManager.cs b/src/BizHawk.Client.EmuHawk/DisplayManager/DisplayManager.cs
index 0231417195..286761aee9 100644
--- a/src/BizHawk.Client.EmuHawk/DisplayManager/DisplayManager.cs
+++ b/src/BizHawk.Client.EmuHawk/DisplayManager/DisplayManager.cs
@@ -30,7 +30,7 @@ namespace BizHawk.Client.EmuHawk
/// Its job is to receive OSD and emulator outputs, and produce one single buffer (BitmapBuffer? Texture2d?) for display by the PresentationPanel.
/// Details TBD
///
- public class DisplayManager : IDisposable
+ public class DisplayManager : IWindowCoordsTransformer, IDisposable
{
private class DisplayManagerRenderTargetProvider : IRenderTargetProvider
{
@@ -189,15 +189,27 @@ namespace BizHawk.Client.EmuHawk
///
private int _currEmuWidth, _currEmuHeight;
+ private Padding _clientExtraPadding;
+
+ private Padding _gameExtraPadding;
+
///
/// additional pixels added at the unscaled level for the use of lua drawing. essentially increases the input video provider dimensions
///
- public Padding GameExtraPadding { get; set; }
+ public (int Left, int Top, int Right, int Bottom) GameExtraPadding
+ {
+ get => (_gameExtraPadding.Left, _gameExtraPadding.Top, _gameExtraPadding.Right, _gameExtraPadding.Bottom);
+ set => _gameExtraPadding = new Padding(value.Left, value.Top, value.Right, value.Bottom);
+ }
///
/// additional pixels added at the native level for the use of lua drawing. essentially just gets tacked onto the final calculated window sizes.
///
- public Padding ClientExtraPadding { get; set; }
+ public (int Left, int Top, int Right, int Bottom) ClientExtraPadding
+ {
+ get => (_clientExtraPadding.Left, _clientExtraPadding.Top, _clientExtraPadding.Right, _clientExtraPadding.Bottom);
+ set => _clientExtraPadding = new Padding(value.Left, value.Top, value.Right, value.Bottom);
+ }
///
/// custom fonts that don't need to be installed on the user side
@@ -227,7 +239,7 @@ namespace BizHawk.Client.EmuHawk
if (user)
{
- padding += GameExtraPadding;
+ padding += _gameExtraPadding;
}
// an experimental feature
@@ -461,7 +473,7 @@ namespace BizHawk.Client.EmuHawk
return new Point((int)v.X, (int)v.Y);
}
- internal Size GetPanelNativeSize() => _presentationPanel.NativeSize;
+ public Size GetPanelNativeSize() => _presentationPanel.NativeSize;
///
/// This will receive an emulated output frame from an IVideoProvider and run it through the complete frame processing pipeline
@@ -719,8 +731,8 @@ namespace BizHawk.Client.EmuHawk
chainOutsize = new Size(bufferWidth * zoom, bufferHeight * zoom);
}
- chainOutsize.Width += ClientExtraPadding.Horizontal;
- chainOutsize.Height += ClientExtraPadding.Vertical;
+ chainOutsize.Width += _clientExtraPadding.Horizontal;
+ chainOutsize.Height += _clientExtraPadding.Vertical;
var job = new JobInfo
{
@@ -1104,16 +1116,16 @@ namespace BizHawk.Client.EmuHawk
int currNativeWidth = _presentationPanel.NativeSize.Width;
int currNativeHeight = _presentationPanel.NativeSize.Height;
- currNativeWidth += ClientExtraPadding.Horizontal;
- currNativeHeight += ClientExtraPadding.Vertical;
+ currNativeWidth += _clientExtraPadding.Horizontal;
+ currNativeHeight += _clientExtraPadding.Vertical;
int width,height;
if (name == "emu")
{
width = _currEmuWidth;
height = _currEmuHeight;
- width += GameExtraPadding.Horizontal;
- height += GameExtraPadding.Vertical;
+ width += _gameExtraPadding.Horizontal;
+ height += _gameExtraPadding.Vertical;
}
else if (name == "native")
{
diff --git a/src/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.cs b/src/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.cs
index 968db1c4b0..506ec4d947 100644
--- a/src/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.cs
@@ -122,15 +122,15 @@ namespace BizHawk.Client.EmuHawk
DisplayManager.ClearLuaSurfaces();
- if (DisplayManager.ClientExtraPadding != Padding.Empty)
+ if (DisplayManager.ClientExtraPadding != (0, 0, 0, 0))
{
- DisplayManager.ClientExtraPadding = new Padding(0);
+ DisplayManager.ClientExtraPadding = (0, 0, 0, 0);
MainForm.FrameBufferResized();
}
- if (DisplayManager.GameExtraPadding != Padding.Empty)
+ if (DisplayManager.GameExtraPadding != (0, 0, 0, 0))
{
- DisplayManager.GameExtraPadding = new Padding(0);
+ DisplayManager.GameExtraPadding = (0, 0, 0, 0);
MainForm.FrameBufferResized();
}