mirror of
https://github.com/wwiinnddyy/LanMountainDesktop.git
synced 2026-06-20 23:54:26 +08:00
settings_re8
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
using Avalonia.Controls;
|
||||
|
||||
namespace LanMountainDesktop.PluginSdk;
|
||||
|
||||
public sealed class PluginDesktopComponentEditorRegistration
|
||||
{
|
||||
public PluginDesktopComponentEditorRegistration(
|
||||
string componentId,
|
||||
Func<IServiceProvider, PluginDesktopComponentEditorContext, Control> editorFactory,
|
||||
double preferredWidth = 720d,
|
||||
double preferredHeight = 540d,
|
||||
double minScale = 0.85d,
|
||||
double maxScale = 1.45d)
|
||||
{
|
||||
ArgumentException.ThrowIfNullOrWhiteSpace(componentId);
|
||||
ArgumentNullException.ThrowIfNull(editorFactory);
|
||||
|
||||
if (preferredWidth <= 0)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException(nameof(preferredWidth));
|
||||
}
|
||||
|
||||
if (preferredHeight <= 0)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException(nameof(preferredHeight));
|
||||
}
|
||||
|
||||
if (minScale <= 0)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException(nameof(minScale));
|
||||
}
|
||||
|
||||
if (maxScale < minScale)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException(nameof(maxScale));
|
||||
}
|
||||
|
||||
ComponentId = componentId.Trim();
|
||||
EditorFactory = editorFactory;
|
||||
PreferredWidth = preferredWidth;
|
||||
PreferredHeight = preferredHeight;
|
||||
MinScale = minScale;
|
||||
MaxScale = maxScale;
|
||||
AspectRatio = preferredWidth / preferredHeight;
|
||||
}
|
||||
|
||||
public PluginDesktopComponentEditorRegistration(
|
||||
string componentId,
|
||||
Func<PluginDesktopComponentEditorContext, Control> editorFactory,
|
||||
double preferredWidth = 720d,
|
||||
double preferredHeight = 540d,
|
||||
double minScale = 0.85d,
|
||||
double maxScale = 1.45d)
|
||||
: this(
|
||||
componentId,
|
||||
(_, context) => editorFactory(context),
|
||||
preferredWidth,
|
||||
preferredHeight,
|
||||
minScale,
|
||||
maxScale)
|
||||
{
|
||||
}
|
||||
|
||||
public string ComponentId { get; }
|
||||
|
||||
public Func<IServiceProvider, PluginDesktopComponentEditorContext, Control> EditorFactory { get; }
|
||||
|
||||
public double PreferredWidth { get; }
|
||||
|
||||
public double PreferredHeight { get; }
|
||||
|
||||
public double MinScale { get; }
|
||||
|
||||
public double MaxScale { get; }
|
||||
|
||||
public double AspectRatio { get; }
|
||||
}
|
||||
Reference in New Issue
Block a user