Files
LanMountainDesktop/airapp/LanMountainDesktop.AirAppSdk/AirAppAppearanceExtensions.cs
2026-08-11 23:03:55 +08:00

88 lines
2.8 KiB
C#

using Avalonia;
namespace LanMountainDesktop.AirAppSdk;
public static class AirAppAppearanceExtensions
{
public static CornerRadius ResolveCornerRadius(
this AirAppAppearanceSnapshot snapshot,
AirAppCornerRadiusPreset preset)
{
ArgumentNullException.ThrowIfNull(snapshot);
var value = snapshot.CornerRadiusTokens.Get(preset);
return new CornerRadius(Math.Max(0d, value));
}
public static CornerRadius ResolveCornerRadius(
this AirAppAppearanceSnapshot snapshot,
AirAppCornerRadiusPreset 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 IAirAppAppearanceContext context,
AirAppCornerRadiusPreset preset)
{
ArgumentNullException.ThrowIfNull(context);
var value = context.ResolveCornerRadius(preset);
return new CornerRadius(Math.Max(0d, value));
}
public static CornerRadius ResolveCornerRadius(
this IAirAppAppearanceContext context,
AirAppCornerRadiusPreset 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 IAirAppAppearanceContext context,
double baseRadius)
{
ArgumentNullException.ThrowIfNull(context);
var value = context.ResolveScaledCornerRadius(baseRadius);
return new CornerRadius(Math.Max(0d, value));
}
public static CornerRadius ResolveScaledCornerRadius(
this IAirAppAppearanceContext 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 AirAppComponentContext context,
AirAppCornerRadiusPreset preset,
double minimum,
double maximum)
{
ArgumentNullException.ThrowIfNull(context);
var value = context.ResolveCornerRadius(preset, minimum, maximum);
return new CornerRadius(Math.Max(0d, value));
}
public static AirAppAppearanceSnapshot GetAppearanceSnapshot(
this AirAppComponentContext context)
{
ArgumentNullException.ThrowIfNull(context);
return context.Appearance.Snapshot;
}
}