From 101c04de1b7ff2476e4d179834c13d803e4bb55f Mon Sep 17 00:00:00 2001 From: YoshiRulz Date: Fri, 28 May 2021 16:12:49 +1000 Subject: [PATCH] Remove explicit WinForms dep from DisplayManager (Padding struct) --- .../DisplayManager/DisplayManager.cs | 58 +++++++++---------- 1 file changed, 27 insertions(+), 31 deletions(-) diff --git a/src/BizHawk.Client.EmuHawk/DisplayManager/DisplayManager.cs b/src/BizHawk.Client.EmuHawk/DisplayManager/DisplayManager.cs index 68164e33fe..9d0d6fd9d5 100644 --- a/src/BizHawk.Client.EmuHawk/DisplayManager/DisplayManager.cs +++ b/src/BizHawk.Client.EmuHawk/DisplayManager/DisplayManager.cs @@ -9,7 +9,6 @@ using System.Diagnostics; using System.Drawing; using System.Drawing.Text; using System.Runtime.InteropServices; -using System.Windows.Forms; using BizHawk.Bizware.BizwareGL; using BizHawk.Bizware.DirectX; @@ -182,27 +181,15 @@ 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 (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); - } + public (int Left, int Top, int Right, int Bottom) GameExtraPadding { get; set; } /// /// additional pixels added at the native level for the use of lua drawing. essentially just gets tacked onto the final calculated window sizes. /// - 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); - } + public (int Left, int Top, int Right, int Bottom) ClientExtraPadding { get; set; } /// /// custom fonts that don't need to be installed on the user side @@ -226,13 +213,16 @@ namespace BizHawk.Client.EmuHawk } } - private Padding CalculateCompleteContentPadding(bool user, bool source) + private (int Left, int Top, int Right, int Bottom) CalculateCompleteContentPadding(bool user, bool source) { - var padding = new Padding(); + var padding = (Left: 0, Top: 0, Right: 0, Bottom: 0); if (user) { - padding += _gameExtraPadding; + padding.Left += GameExtraPadding.Left; + padding.Top += GameExtraPadding.Top; + padding.Right += GameExtraPadding.Right; + padding.Bottom += GameExtraPadding.Bottom; } // an experimental feature @@ -255,6 +245,12 @@ namespace BizHawk.Client.EmuHawk return padding; } + private (int Horizontal, int Vertical) CalculateCompleteContentPaddingSum(bool user, bool source) + { + var p = CalculateCompleteContentPadding(user: user, source: source); + return (p.Left + p.Right, p.Top + p.Bottom); + } + private FilterProgram BuildDefaultChain(Size chainInSize, Size chainOutSize, bool includeOSD, bool includeUserFilters) { // select user special FX shader chain @@ -318,18 +314,18 @@ namespace BizHawk.Client.EmuHawk // keep in mind, the VideoProvider design in principle might call for another color. // we haven't really been using this very hard, but users will probably want black there (they could fill it to another color if needed tho) var padding = CalculateCompleteContentPadding(true, true); - if (padding.Vertical != 0 || padding.Horizontal != 0) + if (padding != (0, 0, 0, 0)) { // TODO - add another filter just for this, its cumbersome to use final presentation... I think. but maybe there's enough similarities to justify it. Size size = chainInSize; - size.Width += padding.Horizontal; - size.Height += padding.Vertical; + size.Width += padding.Left + padding.Right; + size.Height += padding.Top + padding.Bottom; FinalPresentation fPadding = new FinalPresentation(size); chain.AddFilter(fPadding, "padding"); fPadding.GuiRenderer = _renderer; fPadding.GL = _gl; fPadding.Config_PadOnly = true; - fPadding.Padding = (padding.Left, padding.Top, padding.Right, padding.Bottom); + fPadding.Padding = padding; } //add lua layer 'emu' @@ -505,7 +501,7 @@ namespace BizHawk.Client.EmuHawk { // TODO - we might need to gather more Config.DispXXX properties here, so they can be overridden var targetSize = new Size(videoProvider.BufferWidth, videoProvider.BufferHeight); - var padding = CalculateCompleteContentPadding(true,true); + var padding = CalculateCompleteContentPaddingSum(true,true); targetSize.Width += padding.Horizontal; targetSize.Height += padding.Vertical; @@ -634,11 +630,11 @@ namespace BizHawk.Client.EmuHawk virtualHeight = bufferHeight = sz.Height; } - var padding = CalculateCompleteContentPadding(true, false); + var padding = CalculateCompleteContentPaddingSum(true, false); virtualWidth += padding.Horizontal; virtualHeight += padding.Vertical; - padding = CalculateCompleteContentPadding(true, true); + padding = CalculateCompleteContentPaddingSum(true, true); bufferWidth += padding.Horizontal; bufferHeight += padding.Vertical; @@ -739,8 +735,8 @@ namespace BizHawk.Client.EmuHawk chainOutsize = new Size(bufferWidth * zoom, bufferHeight * zoom); } - chainOutsize.Width += _clientExtraPadding.Horizontal; - chainOutsize.Height += _clientExtraPadding.Vertical; + chainOutsize.Width += ClientExtraPadding.Left + ClientExtraPadding.Right; + chainOutsize.Height += ClientExtraPadding.Top + ClientExtraPadding.Bottom; var job = new JobInfo { @@ -852,7 +848,7 @@ namespace BizHawk.Client.EmuHawk } } - var padding = CalculateCompleteContentPadding(true,false); + var padding = CalculateCompleteContentPaddingSum(true,false); vw += padding.Horizontal; vh += padding.Vertical; @@ -1125,12 +1121,12 @@ namespace BizHawk.Client.EmuHawk int currNativeWidth = _presentationPanel.NativeSize.Width; int currNativeHeight = _presentationPanel.NativeSize.Height; - currNativeWidth += _clientExtraPadding.Horizontal; - currNativeHeight += _clientExtraPadding.Vertical; + currNativeWidth += ClientExtraPadding.Left + ClientExtraPadding.Right; + currNativeHeight += ClientExtraPadding.Top + ClientExtraPadding.Bottom; var (width, height) = surfaceID switch { - DisplaySurfaceID.EmuCore => (_currEmuWidth + _gameExtraPadding.Horizontal, _currEmuHeight + _gameExtraPadding.Vertical), + DisplaySurfaceID.EmuCore => (GameExtraPadding.Left + _currEmuWidth + GameExtraPadding.Right, GameExtraPadding.Top + _currEmuHeight + GameExtraPadding.Bottom), DisplaySurfaceID.Client => (currNativeWidth, currNativeHeight), _ => throw new ArgumentException(message: "not a valid enum member", paramName: nameof(surfaceID)) };