mirror of
https://github.com/wwiinnddyy/LanMountainDesktop.git
synced 2026-08-18 15:20:47 +08:00
88 lines
2.8 KiB
C#
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;
|
|
}
|
|
}
|