Files
LanMountainDesktop/LanMountainDesktop.PluginSdk/PluginAppearanceExtensions.cs

88 lines
2.8 KiB
C#
Raw Normal View History

2026-04-01 00:34:07 +08:00
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;
}
}