public static void Write(this Stream stream, ByteColor color, ColorMemberOrder order) { switch (order) { case ColorMemberOrder.AlphaFirst: stream.Write(color.a); stream.Write(color.r); stream.Write(color.g); stream.Write(color.b); break; case ColorMemberOrder.AlphaLast: stream.Write(color.r); stream.Write(color.g); stream.Write(color.b); stream.Write(color.a); break; case ColorMemberOrder.NoAlpha: stream.Write(color.r); stream.Write(color.g); stream.Write(color.b); break; default: throw new ArgumentOutOfRangeException(nameof(order), order, null); } }
public static ByteColor ReadByteColor(this Stream stream, ColorMemberOrder order = ColorMemberOrder.AlphaFirst) { byte x = stream.Read1Byte(); byte y = stream.Read1Byte(); byte z = stream.Read1Byte(); byte w = 0; if (order != ColorMemberOrder.NoAlpha) { w = stream.Read1Byte(); } switch (order) { case ColorMemberOrder.AlphaFirst: return(new ByteColor(y, z, w, x)); case ColorMemberOrder.AlphaLast: return(new ByteColor(x, y, z, w)); case ColorMemberOrder.NoAlpha: return(new ByteColor(x, y, z)); default: throw new ArgumentOutOfRangeException(nameof(order), order, null); } }