mirror of
https://github.com/libretro/MesenCE.git
synced 2026-11-10 11:11:32 -10:00
Also fixes DX11.0 support (for Win7 PCs that aren't fully updated), which stopped working after the recent variable refresh rate changes
78 lines
2.3 KiB
C#
78 lines
2.3 KiB
C#
using Avalonia;
|
|
using Avalonia.Controls;
|
|
using Avalonia.Layout;
|
|
using Avalonia.Markup.Xaml;
|
|
using CommunityToolkit.Mvvm.ComponentModel;
|
|
using Mesen.Config;
|
|
using Mesen.Debugger.ViewModels;
|
|
using Mesen.Utilities;
|
|
using System;
|
|
|
|
namespace Mesen.Debugger.Controls
|
|
{
|
|
public class SpritePreviewPanel : MesenUserControl
|
|
{
|
|
public static readonly StyledProperty<double> InnerHeightProperty = AvaloniaProperty.Register<SpritePreviewPanel, double>(nameof(InnerHeight), 0);
|
|
public static readonly StyledProperty<double> InnerWidthProperty = AvaloniaProperty.Register<SpritePreviewPanel, double>(nameof(InnerWidth), 0);
|
|
public static readonly StyledProperty<bool> FadePreviewProperty = AvaloniaProperty.Register<SpritePreviewPanel, bool>(nameof(FadePreview), false);
|
|
public static readonly StyledProperty<Thickness> BorderSizeProperty = AvaloniaProperty.Register<SpritePreviewPanel, Thickness>(nameof(BorderSize), default);
|
|
|
|
public bool FadePreview
|
|
{
|
|
get { return GetValue(FadePreviewProperty); }
|
|
set { SetValue(FadePreviewProperty, value); }
|
|
}
|
|
|
|
public double InnerHeight
|
|
{
|
|
get { return GetValue(InnerHeightProperty); }
|
|
set { SetValue(InnerHeightProperty, value); }
|
|
}
|
|
|
|
public double InnerWidth
|
|
{
|
|
get { return GetValue(InnerWidthProperty); }
|
|
set { SetValue(InnerWidthProperty, value); }
|
|
}
|
|
|
|
public Thickness BorderSize
|
|
{
|
|
get { return GetValue(BorderSizeProperty); }
|
|
set { SetValue(BorderSizeProperty, value); }
|
|
}
|
|
|
|
public SpritePreviewModel Model { get; private init; }
|
|
public SpriteViewerConfig Config { get; private init; }
|
|
|
|
[Obsolete("For designer only")]
|
|
public SpritePreviewPanel() : this(new(), new()) { }
|
|
|
|
public SpritePreviewPanel(SpritePreviewModel model, SpriteViewerConfig config)
|
|
{
|
|
InitializeComponent();
|
|
|
|
Model = model;
|
|
Config = config;
|
|
|
|
AddDisposable(Model.ObserveProp(nameof(Model.FadePreview), UpdateFadePreviewFlag));
|
|
AddDisposable(Config.ObserveProp(nameof(Config.DimOffscreenSprites), UpdateFadePreviewFlag));
|
|
}
|
|
|
|
private void UpdateFadePreviewFlag()
|
|
{
|
|
FadePreview = Model.FadePreview && Config.DimOffscreenSprites;
|
|
}
|
|
|
|
protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e)
|
|
{
|
|
base.OnAttachedToVisualTree(e);
|
|
BorderSize = new Thickness(1 / LayoutHelper.GetLayoutScale(this));
|
|
}
|
|
|
|
private void InitializeComponent()
|
|
{
|
|
AvaloniaXamlLoader.Load(this);
|
|
}
|
|
}
|
|
}
|