public static Color ToColor3(this float[] src, ColorSpace srcColorSpace, ColorSpace dstColorSpace) { if (src == null || src.Length < 3) { Debug.LogWarning("Invalid argument."); return(Color.magenta); } return(new Color(src[0], src[1], src[2], 1f).ConvertColorSpace(srcColorSpace, dstColorSpace)); }
private static Color ConvertColorSpace(this Color srcColor, ColorSpace srcColorSpace, ColorSpace dstColorSpace) { // Need pattern matching :( if (srcColorSpace == ColorSpace.sRGB && dstColorSpace == ColorSpace.sRGB) { return(srcColor); } else if (srcColorSpace == ColorSpace.sRGB && dstColorSpace == ColorSpace.Linear) { return(srcColor.linear); } else if (srcColorSpace == ColorSpace.Linear && dstColorSpace == ColorSpace.sRGB) { return(srcColor.gamma); } else if (srcColorSpace == ColorSpace.Linear && dstColorSpace == ColorSpace.Linear) { return(srcColor); } else { throw new ArgumentException(); } }
private static Color ToColor(JsonNode node, ColorSpace srcColorSpace, ColorSpace dstColorSpace) { return(node.ArrayItems().Select(x => ListTreeNodeExtensions.GetSingle(x)).ToArray().ToColor4(srcColorSpace, dstColorSpace)); }
public static float[] ToFloat4(this Color src, ColorSpace srcColorSpace, ColorSpace dstColorSpace) { var dst = src.ConvertColorSpace(srcColorSpace, dstColorSpace); return(new float[] { dst.r, dst.g, dst.b, dst.a }); }
static Color ToColor(JsonNode node, ColorSpace srcColorSpace, ColorSpace dstColorSpace) { return(node.ArrayItems().Select(x => x.GetSingle()).ToArray().ToColor4(srcColorSpace, dstColorSpace)); }