Generic color struct constructors

This commit is contained in:
Jeremy Pritts committed 2023-10-06 13:56:34 -04:00
1 parent 548d5e8aec
commit c16bec4431
6 files changed
+86

No files matched your search

@@ -164,6 +164,8 @@ internal static partial class Program
WriteProperty(writer, hasAlpha, typeName, 'A', maxValue);
writer.WriteLineNoTabs();
WriteConstructor(writer, name, hasRed, hasGreen, hasBlue, hasAlpha, typeName);
writer.WriteLineNoTabs();
WriteGetChannels(writer, typeName);
writer.WriteLineNoTabs();
WriteSetChannels(writer, typeName, hasRed, hasGreen, hasBlue, hasAlpha);
@@ -174,6 +176,59 @@ internal static partial class Program
}
}
private static void WriteConstructor(IndentedTextWriter writer, string declaringTypeName, bool hasRed, bool hasGreen, bool hasBlue, bool hasAlpha, string channelTypeName)
{
writer.Write($"public {declaringTypeName}(");
if (hasRed)
{
writer.Write($"{channelTypeName} r");
if (hasGreen || hasBlue || hasAlpha)
{
writer.Write(", ");
}
}
if (hasGreen)
{
writer.Write($"{channelTypeName} g");
if (hasBlue || hasAlpha)
{
writer.Write(", ");
}
}
if (hasBlue)
{
writer.Write($"{channelTypeName} b");
if (hasAlpha)
{
writer.Write(", ");
}
}
if (hasAlpha)
{
writer.Write($"{channelTypeName} a");
}
writer.WriteLine(")");
using (new CurlyBrackets(writer))
{
if (hasRed)
{
writer.WriteLine("R = r;");
}
if (hasGreen)
{
writer.WriteLine("G = g;");
}
if (hasBlue)
{
writer.WriteLine("B = b;");
}
if (hasAlpha)
{
writer.WriteLine("A = a;");
}
}
}
private static void WriteGetChannels(IndentedTextWriter writer, string typeName)
{
writer.WriteLine($"public readonly void GetChannels(out {typeName} r, out {typeName} g, out {typeName} b, out {typeName} a)");