You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.2 KiB
39 lines
1.2 KiB
1 year ago
|
using System.Collections.Immutable;
|
||
|
|
||
|
namespace StabilityMatrix.Core.Models.Api.Comfy;
|
||
|
|
||
|
public readonly record struct ComfyScheduler(string Name)
|
||
|
{
|
||
|
private static Dictionary<string, string> ConvertDict { get; } =
|
||
|
new()
|
||
|
{
|
||
|
["normal"] = "Normal",
|
||
|
["karras"] = "Karras",
|
||
|
["exponential"] = "Exponential",
|
||
|
["sgm_uniform"] = "SGM Uniform",
|
||
|
["simple"] = "Simple",
|
||
|
["ddim_uniform"] = "DDIM Uniform"
|
||
|
};
|
||
|
|
||
|
public static IReadOnlyList<ComfyScheduler> Defaults { get; } =
|
||
|
ConvertDict.Keys.Select(k => new ComfyScheduler(k)).ToImmutableArray();
|
||
|
|
||
|
public string DisplayName =>
|
||
|
ConvertDict.TryGetValue(Name, out var displayName) ? displayName : Name;
|
||
|
|
||
|
private sealed class NameEqualityComparer : IEqualityComparer<ComfyScheduler>
|
||
|
{
|
||
|
public bool Equals(ComfyScheduler x, ComfyScheduler y)
|
||
|
{
|
||
|
return x.Name == y.Name;
|
||
|
}
|
||
|
|
||
|
public int GetHashCode(ComfyScheduler obj)
|
||
|
{
|
||
|
return obj.Name.GetHashCode();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static IEqualityComparer<ComfyScheduler> Comparer { get; } = new NameEqualityComparer();
|
||
|
}
|