Here's an interface I'd be perfectly content with. Of course it would be ideal having the LCHA built in type with accordingly named properties instead of Vector4:
class_name LCH
static func to_rgb(lch: Vector4) -> Color:
return(Color())
static func from_rgb(rgb: Color) -> Vector4:
return (Vector4())
static func blend_rgb(rgb1: Color, rgb2: Color, factor: float) -> Color:
return(Color())
static func blend_rgb_steps(rgb1: Color, rgb2: Color, steps_count: int) -> PackedColorArray:
return(PackedColorArray())
static func shift_luma(rgb: Color, delta: float) -> Color:
return(Color())
static func shift_chroma(rgb: Color, delta: float) -> Color:
return(Color())
static func shift_hue(rgb: Color, delta: float) -> Color:
return(Color())
static func to_string(lch: Vector4) -> String:
return(String())