Multi-Platform Package Manager for Stable Diffusion
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.

43 lines
1.4 KiB

using System.Collections.Immutable;
namespace StabilityMatrix.Core.Models.Api.Comfy;
public readonly record struct ComfyScheduler(string Name)
{
public static ComfyScheduler Normal { get; } = new("normal");
public static ComfyScheduler Karras { get; } = new("karras");
public static ComfyScheduler Exponential { get; } = new("exponential");
private static Dictionary<string, string> ConvertDict { get; } =
new()
{
[Normal.Name] = "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();
}