Files
MesenCE/UI/Controls/ImageAspectRatio.cs
SourMesen e391fd8f9a Code: Add auto-formatting rules for C++ (clang-format) and enforce in CI via "clang-format" and "dotnet format" (#78)
* Code: Add auto-formatting rules for C++ projects (clang-format) and enforce code style via "clang-format" and "dotnet format"

* fix ui format warnings
2026-04-30 06:03:55 -07:00

43 lines
980 B
C#

using Avalonia;
using Avalonia.Controls;
using System;
namespace Mesen.Controls
{
public class ImageAspectRatio : Image
{
protected override Type StyleKeyOverride => typeof(Image);
public static readonly StyledProperty<double> AspectRatioProperty = AvaloniaProperty.Register<StateGridEntry, double>(nameof(AspectRatio));
public ImageAspectRatio()
{
}
public double AspectRatio
{
get { return GetValue(AspectRatioProperty); }
set { SetValue(AspectRatioProperty, value); }
}
protected override Size ArrangeOverride(Size finalSize)
{
finalSize = base.ArrangeOverride(finalSize);
if(Source == null) {
return finalSize;
}
double ratio = AspectRatio;
if(ratio == 0) {
ratio = Source.Size.Width / Source.Size.Height;
}
if(finalSize.Width >= finalSize.Height * ratio) {
return new Size(finalSize.Height * ratio, finalSize.Height);
} else {
return new Size(finalSize.Width, finalSize.Width / ratio);
}
}
}
}