#ifndef ACCENT_EXTRACT_COLOUR_H #define ACCENT_EXTRACT_COLOUR_H #include #include #include "../vendor/accent_score.h" typedef struct { double l; double a; double b; } Oklab; typedef struct { double red; double green; double blue; double alpha; } ColourAccumulator; bool colour_parse_hex(const char *text, RGB *out); double colour_srgb_to_linear(double value); double colour_linear_to_srgb(double value); RGB colour_from_linear(double red, double green, double blue); Oklab colour_to_oklab(RGB colour); double colour_oklab_distance(Oklab left, Oklab right); RGB colour_tweak_accent(RGB colour, RGB background); void colour_accumulator_add_u8(ColourAccumulator *acc, uint8_t red, uint8_t green, uint8_t blue, uint8_t alpha); void colour_accumulator_add_u16(ColourAccumulator *acc, uint16_t red, uint16_t green, uint16_t blue, uint16_t alpha); bool colour_accumulator_average(const ColourAccumulator *acc, RGB *out); #endif