#ifndef ACCENT_EXTRACT_COLOUR_H
#define ACCENT_EXTRACT_COLOUR_H
#include <stdbool.h>
#include <stdint.h>
#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