This commit is contained in:
lincube
2026-04-01 00:34:07 +08:00
parent 3b810fd0ba
commit f50cfed3cc
21 changed files with 201 additions and 1766 deletions

View File

@@ -0,0 +1,87 @@
using Avalonia;
namespace LanMountainDesktop.PluginSdk;
public static class PluginAppearanceExtensions
{
public static CornerRadius ResolveCornerRadius(
this PluginAppearanceSnapshot snapshot,
PluginCornerRadiusPreset preset)
{
ArgumentNullException.ThrowIfNull(snapshot);
var value = snapshot.CornerRadiusTokens.Get(preset);
return new CornerRadius(Math.Max(0d, value));
}
public static CornerRadius ResolveCornerRadius(
this PluginAppearanceSnapshot snapshot,
PluginCornerRadiusPreset preset,
CornerRadius fallback)
{
ArgumentNullException.ThrowIfNull(snapshot);
var value = snapshot.CornerRadiusTokens.Get(preset);
if (!double.IsFinite(value) || value < 0)
{
return fallback;
}
return new CornerRadius(value);
}
public static CornerRadius ResolveCornerRadius(
this IPluginAppearanceContext context,
PluginCornerRadiusPreset preset)
{
ArgumentNullException.ThrowIfNull(context);
var value = context.ResolveCornerRadius(preset);
return new CornerRadius(Math.Max(0d, value));
}
public static CornerRadius ResolveCornerRadius(
this IPluginAppearanceContext context,
PluginCornerRadiusPreset preset,
double minimum,
double maximum)
{
ArgumentNullException.ThrowIfNull(context);
var value = context.ResolveCornerRadius(preset, minimum, maximum);
return new CornerRadius(Math.Max(0d, value));
}
public static CornerRadius ResolveScaledCornerRadius(
this IPluginAppearanceContext context,
double baseRadius)
{
ArgumentNullException.ThrowIfNull(context);
var value = context.ResolveScaledCornerRadius(baseRadius);
return new CornerRadius(Math.Max(0d, value));
}
public static CornerRadius ResolveScaledCornerRadius(
this IPluginAppearanceContext context,
double baseRadius,
double minimum,
double maximum)
{
ArgumentNullException.ThrowIfNull(context);
var value = context.ResolveScaledCornerRadius(baseRadius, minimum, maximum);
return new CornerRadius(Math.Max(0d, value));
}
public static CornerRadius ResolveCornerRadius(
this PluginDesktopComponentContext context,
PluginCornerRadiusPreset preset,
double minimum,
double maximum)
{
ArgumentNullException.ThrowIfNull(context);
var value = context.ResolveCornerRadius(preset, minimum, maximum);
return new CornerRadius(Math.Max(0d, value));
}
public static PluginAppearanceSnapshot GetAppearanceSnapshot(
this PluginDesktopComponentContext context)
{
ArgumentNullException.ThrowIfNull(context);
return context.Appearance.Snapshot;
}
}