#pragma once
#include <stdbool.h>
#include <stdint.h>
#include "../rute_base.h"
#ifdef __cplusplus
extern "C" {
#endif
#include "color_ffi.h"
struct RUColorFuncs;
struct RUColor;
typedef struct RUColorFuncs {
void (*destroy)(struct RUBase* self);
bool (*is_valid)(struct RUBase* self_c);
const char* (*name)(struct RUBase* self_c);
const char* (*name_2)(struct RUBase* self_c, int format);
void (*set_named_color)(struct RUBase* self_c, const char* name);
int (*spec)(struct RUBase* self_c);
int (*alpha)(struct RUBase* self_c);
void (*set_alpha)(struct RUBase* self_c, int alpha);
float (*alpha_f)(struct RUBase* self_c);
void (*set_alpha_f)(struct RUBase* self_c, float alpha);
int (*red)(struct RUBase* self_c);
int (*green)(struct RUBase* self_c);
int (*blue)(struct RUBase* self_c);
void (*set_red)(struct RUBase* self_c, int red);
void (*set_green)(struct RUBase* self_c, int green);
void (*set_blue)(struct RUBase* self_c, int blue);
float (*red_f)(struct RUBase* self_c);
float (*green_f)(struct RUBase* self_c);
float (*blue_f)(struct RUBase* self_c);
void (*set_red_f)(struct RUBase* self_c, float red);
void (*set_green_f)(struct RUBase* self_c, float green);
void (*set_blue_f)(struct RUBase* self_c, float blue);
void (*set_rgb)(struct RUBase* self_c, int r, int g, int b, int a);
void (*set_rgb_f)(struct RUBase* self_c, float r, float g, float b,
float a);
int (*hue)(struct RUBase* self_c);
int (*saturation)(struct RUBase* self_c);
int (*hsv_hue)(struct RUBase* self_c);
int (*hsv_saturation)(struct RUBase* self_c);
int (*value)(struct RUBase* self_c);
float (*hue_f)(struct RUBase* self_c);
float (*saturation_f)(struct RUBase* self_c);
float (*hsv_hue_f)(struct RUBase* self_c);
float (*hsv_saturation_f)(struct RUBase* self_c);
float (*value_f)(struct RUBase* self_c);
void (*set_hsv)(struct RUBase* self_c, int h, int s, int v, int a);
void (*set_hsv_f)(struct RUBase* self_c, float h, float s, float v,
float a);
int (*cyan)(struct RUBase* self_c);
int (*magenta)(struct RUBase* self_c);
int (*yellow)(struct RUBase* self_c);
int (*black)(struct RUBase* self_c);
float (*cyan_f)(struct RUBase* self_c);
float (*magenta_f)(struct RUBase* self_c);
float (*yellow_f)(struct RUBase* self_c);
float (*black_f)(struct RUBase* self_c);
void (*set_cmyk)(struct RUBase* self_c, int c, int m, int y, int k, int a);
void (*set_cmyk_f)(struct RUBase* self_c, float c, float m, float y,
float k, float a);
int (*hsl_hue)(struct RUBase* self_c);
int (*hsl_saturation)(struct RUBase* self_c);
int (*lightness)(struct RUBase* self_c);
float (*hsl_hue_f)(struct RUBase* self_c);
float (*hsl_saturation_f)(struct RUBase* self_c);
float (*lightness_f)(struct RUBase* self_c);
void (*set_hsl)(struct RUBase* self_c, int h, int s, int l, int a);
void (*set_hsl_f)(struct RUBase* self_c, float h, float s, float l,
float a);
struct RUColor (*to_rgb)(struct RUBase* self_c);
struct RUColor (*to_hsv)(struct RUBase* self_c);
struct RUColor (*to_cmyk)(struct RUBase* self_c);
struct RUColor (*to_hsl)(struct RUBase* self_c);
struct RUColor (*convert_to)(struct RUBase* self_c, int color_spec);
struct RUColor (*from_rgb_2)(struct RUBase* self_c, int r, int g, int b,
int a);
struct RUColor (*from_rgb_f)(struct RUBase* self_c, float r, float g,
float b, float a);
struct RUColor (*from_rgba64)(struct RUBase* self_c, uint16_t r, uint16_t g,
uint16_t b, uint16_t a);
struct RUColor (*from_hsv)(struct RUBase* self_c, int h, int s, int v,
int a);
struct RUColor (*from_hsv_f)(struct RUBase* self_c, float h, float s,
float v, float a);
struct RUColor (*from_cmyk)(struct RUBase* self_c, int c, int m, int y,
int k, int a);
struct RUColor (*from_cmyk_f)(struct RUBase* self_c, float c, float m,
float y, float k, float a);
struct RUColor (*from_hsl)(struct RUBase* self_c, int h, int s, int l,
int a);
struct RUColor (*from_hsl_f)(struct RUBase* self_c, float h, float s,
float l, float a);
struct RUColor (*light)(struct RUBase* self_c, int f);
struct RUColor (*lighter)(struct RUBase* self_c, int f);
struct RUColor (*dark)(struct RUBase* self_c, int f);
struct RUColor (*darker)(struct RUBase* self_c, int f);
bool (*is_valid_color)(struct RUBase* self_c, const char* name);
} RUColorFuncs;
typedef struct RUColorAllFuncs {
struct RUColorFuncs* color_funcs;
} RUColorAllFuncs;
typedef struct RUColor {
RUBase* qt_data;
RUBase* host_data;
struct RUColorAllFuncs* all_funcs;
} RUColor;
extern RUColorFuncs s_color_funcs;
extern RUColorAllFuncs s_color_all_funcs;
#ifdef __cplusplus
}
#endif