Improve scaling. Still needs some work but it's better than it was.

This commit is contained in:
jdpurcell 2014-12-28 23:58:45 +00:00
parent 9a1108e9f7
commit 7b4c5636bd
2 changed files with 29 additions and 10 deletions

View File

@ -37,5 +37,15 @@ namespace BizHawk.Client.Common
{ {
return (int)Math.Round(size * AutoScaleFactorY); return (int)Math.Round(size * AutoScaleFactorY);
} }
public static Point Scale(Point p)
{
return new Point(ScaleX(p.X), ScaleY(p.Y));
}
public static Size Scale(Size s)
{
return new Size(ScaleX(s.Width), ScaleY(s.Height));
}
} }
} }

View File

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Windows.Forms; using System.Windows.Forms;
using BizHawk.Client.Common;
using BizHawk.Emulation.Common; using BizHawk.Emulation.Common;
using System.Drawing; using System.Drawing;
@ -56,27 +57,35 @@ namespace BizHawk.Client.EmuHawk
private void VirtualPadControl_Load(object sender, EventArgs e) private void VirtualPadControl_Load(object sender, EventArgs e)
{ {
Size = _schema.DefaultSize; Size = UIHelper.Scale(_schema.DefaultSize);
MaximumSize = _schema.MaxSize ?? _schema.DefaultSize; MaximumSize = UIHelper.Scale(_schema.MaxSize ?? _schema.DefaultSize);
PadBox.Text = _schema.DisplayName; PadBox.Text = _schema.DisplayName;
foreach (var button in _schema.Buttons) foreach (var button in _schema.Buttons)
{ {
// TODO: Size of all controls should ideally be scaled, only implemented on button for now
switch (button.Type) switch (button.Type)
{ {
case PadSchema.PadInputType.Boolean: case PadSchema.PadInputType.Boolean:
PadBox.Controls.Add(new VirtualPadButton var buttonControl = new VirtualPadButton
{ {
Name = button.Name, Name = button.Name,
Text = button.DisplayName, Text = button.DisplayName,
Location = button.Location, Location = UIHelper.Scale(button.Location),
Image = button.Icon, Image = button.Icon,
}); };
if (button.Icon != null && UIHelper.AutoScaleFactorX > 1F && UIHelper.AutoScaleFactorY > 1F)
{
// When scaling up, unfortunately the icon will look too small, but at least we can make the rest of the button bigger
buttonControl.AutoSize = false;
buttonControl.Size = UIHelper.Scale(new Size(button.Icon.Width + 4, button.Icon.Height + 4));
}
PadBox.Controls.Add(buttonControl);
break; break;
case PadSchema.PadInputType.AnalogStick: case PadSchema.PadInputType.AnalogStick:
PadBox.Controls.Add(new VirtualPadAnalogStick PadBox.Controls.Add(new VirtualPadAnalogStick
{ {
Name = button.Name, Name = button.Name,
Location = button.Location, Location = UIHelper.Scale(button.Location),
Size = new Size(button.MaxValue + 79, button.MaxValue + 9), // TODO: don't use hardcoded values here, at least make them defaults in the AnalogStick object itself Size = new Size(button.MaxValue + 79, button.MaxValue + 9), // TODO: don't use hardcoded values here, at least make them defaults in the AnalogStick object itself
RangeX = button.MaxValue, RangeX = button.MaxValue,
RangeY = button.MaxValue // TODO ability to pass in a different Y max RangeY = button.MaxValue // TODO ability to pass in a different Y max
@ -86,10 +95,10 @@ namespace BizHawk.Client.EmuHawk
PadBox.Controls.Add(new VirtualPadTargetScreen PadBox.Controls.Add(new VirtualPadTargetScreen
{ {
Name = button.Name, Name = button.Name,
Location = button.Location, Location = UIHelper.Scale(button.Location),
Size = button.TargetSize,
XName = button.Name, XName = button.Name,
YName = button.SecondaryNames[0], YName = button.SecondaryNames[0],
Size = button.TargetSize,
RangeX = button.MaxValue, RangeX = button.MaxValue,
RangeY = button.MaxValue // TODO: ability to have a different Y than X RangeY = button.MaxValue // TODO: ability to have a different Y than X
}); });
@ -99,7 +108,7 @@ namespace BizHawk.Client.EmuHawk
{ {
Name = button.Name, Name = button.Name,
DisplayName = button.DisplayName, DisplayName = button.DisplayName,
Location = button.Location, Location = UIHelper.Scale(button.Location),
Size = button.TargetSize, Size = button.TargetSize,
MinValue = button.MinValue, MinValue = button.MinValue,
MaxValue = button.MaxValue MaxValue = button.MaxValue
@ -110,7 +119,7 @@ namespace BizHawk.Client.EmuHawk
{ {
Name = button.Name, Name = button.Name,
//DisplayName = button.DisplayName, //DisplayName = button.DisplayName,
Location = button.Location, Location = UIHelper.Scale(button.Location),
Size = button.TargetSize, Size = button.TargetSize,
OwnerEmulator = button.OwnerEmulator OwnerEmulator = button.OwnerEmulator
}); });