Blame src-nuklear/nuklear_color.c

Ivan Mahonin b53a5c
#include "nuklear.h"
Ivan Mahonin b53a5c
#include "nuklear_internal.h"
Ivan Mahonin b53a5c
Ivan Mahonin b53a5c
/* ==============================================================
Ivan Mahonin b53a5c
 *
Ivan Mahonin b53a5c
 *                          COLOR
Ivan Mahonin b53a5c
 *
Ivan Mahonin b53a5c
 * ===============================================================*/
Ivan Mahonin b53a5c
NK_INTERN int
Ivan Mahonin b53a5c
nk_parse_hex(const char *p, int length)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    int i = 0;
Ivan Mahonin b53a5c
    int len = 0;
Ivan Mahonin b53a5c
    while (len < length) {
Ivan Mahonin b53a5c
        i <<= 4;
Ivan Mahonin b53a5c
        if (p[len] >= 'a' && p[len] <= 'f')
Ivan Mahonin b53a5c
            i += ((p[len] - 'a') + 10);
Ivan Mahonin b53a5c
        else if (p[len] >= 'A' && p[len] <= 'F')
Ivan Mahonin b53a5c
            i += ((p[len] - 'A') + 10);
Ivan Mahonin b53a5c
        else i += (p[len] - '0');
Ivan Mahonin b53a5c
        len++;
Ivan Mahonin b53a5c
    }
Ivan Mahonin b53a5c
    return i;
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_color
Ivan Mahonin b53a5c
nk_rgba(int r, int g, int b, int a)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    struct nk_color ret;
Ivan Mahonin b53a5c
    ret.r = (nk_byte)NK_CLAMP(0, r, 255);
Ivan Mahonin b53a5c
    ret.g = (nk_byte)NK_CLAMP(0, g, 255);
Ivan Mahonin b53a5c
    ret.b = (nk_byte)NK_CLAMP(0, b, 255);
Ivan Mahonin b53a5c
    ret.a = (nk_byte)NK_CLAMP(0, a, 255);
Ivan Mahonin b53a5c
    return ret;
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_color
Ivan Mahonin b53a5c
nk_rgb_hex(const char *rgb)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    struct nk_color col;
Ivan Mahonin b53a5c
    const char *c = rgb;
Ivan Mahonin b53a5c
    if (*c == '#') c++;
Ivan Mahonin b53a5c
    col.r = (nk_byte)nk_parse_hex(c, 2);
Ivan Mahonin b53a5c
    col.g = (nk_byte)nk_parse_hex(c+2, 2);
Ivan Mahonin b53a5c
    col.b = (nk_byte)nk_parse_hex(c+4, 2);
Ivan Mahonin b53a5c
    col.a = 255;
Ivan Mahonin b53a5c
    return col;
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_color
Ivan Mahonin b53a5c
nk_rgba_hex(const char *rgb)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    struct nk_color col;
Ivan Mahonin b53a5c
    const char *c = rgb;
Ivan Mahonin b53a5c
    if (*c == '#') c++;
Ivan Mahonin b53a5c
    col.r = (nk_byte)nk_parse_hex(c, 2);
Ivan Mahonin b53a5c
    col.g = (nk_byte)nk_parse_hex(c+2, 2);
Ivan Mahonin b53a5c
    col.b = (nk_byte)nk_parse_hex(c+4, 2);
Ivan Mahonin b53a5c
    col.a = (nk_byte)nk_parse_hex(c+6, 2);
Ivan Mahonin b53a5c
    return col;
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API void
Ivan Mahonin b53a5c
nk_color_hex_rgba(char *output, struct nk_color col)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    #define NK_TO_HEX(i) ((i) <= 9 ? '0' + (i): 'A' - 10 + (i))
Ivan Mahonin b53a5c
    output[0] = (char)NK_TO_HEX((col.r & 0xF0) >> 4);
Ivan Mahonin b53a5c
    output[1] = (char)NK_TO_HEX((col.r & 0x0F));
Ivan Mahonin b53a5c
    output[2] = (char)NK_TO_HEX((col.g & 0xF0) >> 4);
Ivan Mahonin b53a5c
    output[3] = (char)NK_TO_HEX((col.g & 0x0F));
Ivan Mahonin b53a5c
    output[4] = (char)NK_TO_HEX((col.b & 0xF0) >> 4);
Ivan Mahonin b53a5c
    output[5] = (char)NK_TO_HEX((col.b & 0x0F));
Ivan Mahonin b53a5c
    output[6] = (char)NK_TO_HEX((col.a & 0xF0) >> 4);
Ivan Mahonin b53a5c
    output[7] = (char)NK_TO_HEX((col.a & 0x0F));
Ivan Mahonin b53a5c
    output[8] = '\0';
Ivan Mahonin b53a5c
    #undef NK_TO_HEX
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API void
Ivan Mahonin b53a5c
nk_color_hex_rgb(char *output, struct nk_color col)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    #define NK_TO_HEX(i) ((i) <= 9 ? '0' + (i): 'A' - 10 + (i))
Ivan Mahonin b53a5c
    output[0] = (char)NK_TO_HEX((col.r & 0xF0) >> 4);
Ivan Mahonin b53a5c
    output[1] = (char)NK_TO_HEX((col.r & 0x0F));
Ivan Mahonin b53a5c
    output[2] = (char)NK_TO_HEX((col.g & 0xF0) >> 4);
Ivan Mahonin b53a5c
    output[3] = (char)NK_TO_HEX((col.g & 0x0F));
Ivan Mahonin b53a5c
    output[4] = (char)NK_TO_HEX((col.b & 0xF0) >> 4);
Ivan Mahonin b53a5c
    output[5] = (char)NK_TO_HEX((col.b & 0x0F));
Ivan Mahonin b53a5c
    output[6] = '\0';
Ivan Mahonin b53a5c
    #undef NK_TO_HEX
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_color
Ivan Mahonin b53a5c
nk_rgba_iv(const int *c)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    return nk_rgba(c[0], c[1], c[2], c[3]);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_color
Ivan Mahonin b53a5c
nk_rgba_bv(const nk_byte *c)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    return nk_rgba(c[0], c[1], c[2], c[3]);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_color
Ivan Mahonin b53a5c
nk_rgb(int r, int g, int b)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    struct nk_color ret;
Ivan Mahonin b53a5c
    ret.r = (nk_byte)NK_CLAMP(0, r, 255);
Ivan Mahonin b53a5c
    ret.g = (nk_byte)NK_CLAMP(0, g, 255);
Ivan Mahonin b53a5c
    ret.b = (nk_byte)NK_CLAMP(0, b, 255);
Ivan Mahonin b53a5c
    ret.a = (nk_byte)255;
Ivan Mahonin b53a5c
    return ret;
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_color
Ivan Mahonin b53a5c
nk_rgb_iv(const int *c)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    return nk_rgb(c[0], c[1], c[2]);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_color
Ivan Mahonin b53a5c
nk_rgb_bv(const nk_byte* c)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    return nk_rgb(c[0], c[1], c[2]);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_color
Ivan Mahonin b53a5c
nk_rgba_u32(nk_uint in)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    struct nk_color ret;
Ivan Mahonin b53a5c
    ret.r = (in & 0xFF);
Ivan Mahonin b53a5c
    ret.g = ((in >> 8) & 0xFF);
Ivan Mahonin b53a5c
    ret.b = ((in >> 16) & 0xFF);
Ivan Mahonin b53a5c
    ret.a = (nk_byte)((in >> 24) & 0xFF);
Ivan Mahonin b53a5c
    return ret;
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_color
Ivan Mahonin b53a5c
nk_rgba_f(float r, float g, float b, float a)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    struct nk_color ret;
Ivan Mahonin b53a5c
    ret.r = (nk_byte)(NK_SATURATE(r) * 255.0f);
Ivan Mahonin b53a5c
    ret.g = (nk_byte)(NK_SATURATE(g) * 255.0f);
Ivan Mahonin b53a5c
    ret.b = (nk_byte)(NK_SATURATE(b) * 255.0f);
Ivan Mahonin b53a5c
    ret.a = (nk_byte)(NK_SATURATE(a) * 255.0f);
Ivan Mahonin b53a5c
    return ret;
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_color
Ivan Mahonin b53a5c
nk_rgba_fv(const float *c)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    return nk_rgba_f(c[0], c[1], c[2], c[3]);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_color
Ivan Mahonin b53a5c
nk_rgba_cf(struct nk_colorf c)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    return nk_rgba_f(c.r, c.g, c.b, c.a);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_color
Ivan Mahonin b53a5c
nk_rgb_f(float r, float g, float b)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    struct nk_color ret;
Ivan Mahonin b53a5c
    ret.r = (nk_byte)(NK_SATURATE(r) * 255.0f);
Ivan Mahonin b53a5c
    ret.g = (nk_byte)(NK_SATURATE(g) * 255.0f);
Ivan Mahonin b53a5c
    ret.b = (nk_byte)(NK_SATURATE(b) * 255.0f);
Ivan Mahonin b53a5c
    ret.a = 255;
Ivan Mahonin b53a5c
    return ret;
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_color
Ivan Mahonin b53a5c
nk_rgb_fv(const float *c)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    return nk_rgb_f(c[0], c[1], c[2]);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_color
Ivan Mahonin b53a5c
nk_rgb_cf(struct nk_colorf c)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    return nk_rgb_f(c.r, c.g, c.b);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_color
Ivan Mahonin b53a5c
nk_hsv(int h, int s, int v)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    return nk_hsva(h, s, v, 255);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_color
Ivan Mahonin b53a5c
nk_hsv_iv(const int *c)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    return nk_hsv(c[0], c[1], c[2]);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_color
Ivan Mahonin b53a5c
nk_hsv_bv(const nk_byte *c)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    return nk_hsv(c[0], c[1], c[2]);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_color
Ivan Mahonin b53a5c
nk_hsv_f(float h, float s, float v)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    return nk_hsva_f(h, s, v, 1.0f);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_color
Ivan Mahonin b53a5c
nk_hsv_fv(const float *c)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    return nk_hsv_f(c[0], c[1], c[2]);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_color
Ivan Mahonin b53a5c
nk_hsva(int h, int s, int v, int a)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    float hf = ((float)NK_CLAMP(0, h, 255)) / 255.0f;
Ivan Mahonin b53a5c
    float sf = ((float)NK_CLAMP(0, s, 255)) / 255.0f;
Ivan Mahonin b53a5c
    float vf = ((float)NK_CLAMP(0, v, 255)) / 255.0f;
Ivan Mahonin b53a5c
    float af = ((float)NK_CLAMP(0, a, 255)) / 255.0f;
Ivan Mahonin b53a5c
    return nk_hsva_f(hf, sf, vf, af);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_color
Ivan Mahonin b53a5c
nk_hsva_iv(const int *c)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    return nk_hsva(c[0], c[1], c[2], c[3]);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_color
Ivan Mahonin b53a5c
nk_hsva_bv(const nk_byte *c)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    return nk_hsva(c[0], c[1], c[2], c[3]);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_colorf
Ivan Mahonin b53a5c
nk_hsva_colorf(float h, float s, float v, float a)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    int i;
Ivan Mahonin b53a5c
    float p, q, t, f;
Ivan Mahonin b53a5c
    struct nk_colorf out = {0,0,0,0};
Ivan Mahonin b53a5c
    if (s <= 0.0f) {
Ivan Mahonin b53a5c
        out.r = v; out.g = v; out.b = v; out.a = a;
Ivan Mahonin b53a5c
        return out;
Ivan Mahonin b53a5c
    }
Ivan Mahonin b53a5c
    h = h / (60.0f/360.0f);
Ivan Mahonin b53a5c
    i = (int)h;
Ivan Mahonin b53a5c
    f = h - (float)i;
Ivan Mahonin b53a5c
    p = v * (1.0f - s);
Ivan Mahonin b53a5c
    q = v * (1.0f - (s * f));
Ivan Mahonin b53a5c
    t = v * (1.0f - s * (1.0f - f));
Ivan Mahonin b53a5c
Ivan Mahonin b53a5c
    switch (i) {
Ivan Mahonin b53a5c
    case 0: default: out.r = v; out.g = t; out.b = p; break;
Ivan Mahonin b53a5c
    case 1: out.r = q; out.g = v; out.b = p; break;
Ivan Mahonin b53a5c
    case 2: out.r = p; out.g = v; out.b = t; break;
Ivan Mahonin b53a5c
    case 3: out.r = p; out.g = q; out.b = v; break;
Ivan Mahonin b53a5c
    case 4: out.r = t; out.g = p; out.b = v; break;
Ivan Mahonin b53a5c
    case 5: out.r = v; out.g = p; out.b = q; break;}
Ivan Mahonin b53a5c
    out.a = a;
Ivan Mahonin b53a5c
    return out;
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_colorf
Ivan Mahonin b53a5c
nk_hsva_colorfv(float *c)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    return nk_hsva_colorf(c[0], c[1], c[2], c[3]);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_color
Ivan Mahonin b53a5c
nk_hsva_f(float h, float s, float v, float a)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    struct nk_colorf c = nk_hsva_colorf(h, s, v, a);
Ivan Mahonin b53a5c
    return nk_rgba_f(c.r, c.g, c.b, c.a);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_color
Ivan Mahonin b53a5c
nk_hsva_fv(const float *c)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    return nk_hsva_f(c[0], c[1], c[2], c[3]);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API nk_uint
Ivan Mahonin b53a5c
nk_color_u32(struct nk_color in)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    nk_uint out = (nk_uint)in.r;
Ivan Mahonin b53a5c
    out |= ((nk_uint)in.g << 8);
Ivan Mahonin b53a5c
    out |= ((nk_uint)in.b << 16);
Ivan Mahonin b53a5c
    out |= ((nk_uint)in.a << 24);
Ivan Mahonin b53a5c
    return out;
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API void
Ivan Mahonin b53a5c
nk_color_f(float *r, float *g, float *b, float *a, struct nk_color in)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    NK_STORAGE const float s = 1.0f/255.0f;
Ivan Mahonin b53a5c
    *r = (float)in.r * s;
Ivan Mahonin b53a5c
    *g = (float)in.g * s;
Ivan Mahonin b53a5c
    *b = (float)in.b * s;
Ivan Mahonin b53a5c
    *a = (float)in.a * s;
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API void
Ivan Mahonin b53a5c
nk_color_fv(float *c, struct nk_color in)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    nk_color_f(&c[0], &c[1], &c[2], &c[3], in);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_colorf
Ivan Mahonin b53a5c
nk_color_cf(struct nk_color in)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    struct nk_colorf o;
Ivan Mahonin b53a5c
    nk_color_f(&o.r, &o.g, &o.b, &o.a, in);
Ivan Mahonin b53a5c
    return o;
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API void
Ivan Mahonin b53a5c
nk_color_d(double *r, double *g, double *b, double *a, struct nk_color in)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    NK_STORAGE const double s = 1.0/255.0;
Ivan Mahonin b53a5c
    *r = (double)in.r * s;
Ivan Mahonin b53a5c
    *g = (double)in.g * s;
Ivan Mahonin b53a5c
    *b = (double)in.b * s;
Ivan Mahonin b53a5c
    *a = (double)in.a * s;
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API void
Ivan Mahonin b53a5c
nk_color_dv(double *c, struct nk_color in)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    nk_color_d(&c[0], &c[1], &c[2], &c[3], in);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API void
Ivan Mahonin b53a5c
nk_color_hsv_f(float *out_h, float *out_s, float *out_v, struct nk_color in)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    float a;
Ivan Mahonin b53a5c
    nk_color_hsva_f(out_h, out_s, out_v, &a, in);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API void
Ivan Mahonin b53a5c
nk_color_hsv_fv(float *out, struct nk_color in)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    float a;
Ivan Mahonin b53a5c
    nk_color_hsva_f(&out[0], &out[1], &out[2], &a, in);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API void
Ivan Mahonin b53a5c
nk_colorf_hsva_f(float *out_h, float *out_s,
Ivan Mahonin b53a5c
    float *out_v, float *out_a, struct nk_colorf in)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    float chroma;
Ivan Mahonin b53a5c
    float K = 0.0f;
Ivan Mahonin b53a5c
    if (in.g < in.b) {
Ivan Mahonin b53a5c
        const float t = in.g; in.g = in.b; in.b = t;
Ivan Mahonin b53a5c
        K = -1.f;
Ivan Mahonin b53a5c
    }
Ivan Mahonin b53a5c
    if (in.r < in.g) {
Ivan Mahonin b53a5c
        const float t = in.r; in.r = in.g; in.g = t;
Ivan Mahonin b53a5c
        K = -2.f/6.0f - K;
Ivan Mahonin b53a5c
    }
Ivan Mahonin b53a5c
    chroma = in.r - ((in.g < in.b) ? in.g: in.b);
Ivan Mahonin b53a5c
    *out_h = NK_ABS(K + (in.g - in.b)/(6.0f * chroma + 1e-20f));
Ivan Mahonin b53a5c
    *out_s = chroma / (in.r + 1e-20f);
Ivan Mahonin b53a5c
    *out_v = in.r;
Ivan Mahonin b53a5c
    *out_a = in.a;
Ivan Mahonin b53a5c
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API void
Ivan Mahonin b53a5c
nk_colorf_hsva_fv(float *hsva, struct nk_colorf in)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    nk_colorf_hsva_f(&hsva[0], &hsva[1], &hsva[2], &hsva[3], in);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API void
Ivan Mahonin b53a5c
nk_color_hsva_f(float *out_h, float *out_s,
Ivan Mahonin b53a5c
    float *out_v, float *out_a, struct nk_color in)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    struct nk_colorf col;
Ivan Mahonin b53a5c
    nk_color_f(&col.r,&col.g,&col.b,&col.a, in);
Ivan Mahonin b53a5c
    nk_colorf_hsva_f(out_h, out_s, out_v, out_a, col);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API void
Ivan Mahonin b53a5c
nk_color_hsva_fv(float *out, struct nk_color in)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    nk_color_hsva_f(&out[0], &out[1], &out[2], &out[3], in);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API void
Ivan Mahonin b53a5c
nk_color_hsva_i(int *out_h, int *out_s, int *out_v,
Ivan Mahonin b53a5c
                int *out_a, struct nk_color in)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    float h,s,v,a;
Ivan Mahonin b53a5c
    nk_color_hsva_f(&h, &s, &v, &a, in);
Ivan Mahonin b53a5c
    *out_h = (nk_byte)(h * 255.0f);
Ivan Mahonin b53a5c
    *out_s = (nk_byte)(s * 255.0f);
Ivan Mahonin b53a5c
    *out_v = (nk_byte)(v * 255.0f);
Ivan Mahonin b53a5c
    *out_a = (nk_byte)(a * 255.0f);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API void
Ivan Mahonin b53a5c
nk_color_hsva_iv(int *out, struct nk_color in)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    nk_color_hsva_i(&out[0], &out[1], &out[2], &out[3], in);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API void
Ivan Mahonin b53a5c
nk_color_hsva_bv(nk_byte *out, struct nk_color in)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    int tmp[4];
Ivan Mahonin b53a5c
    nk_color_hsva_i(&tmp[0], &tmp[1], &tmp[2], &tmp[3], in);
Ivan Mahonin b53a5c
    out[0] = (nk_byte)tmp[0];
Ivan Mahonin b53a5c
    out[1] = (nk_byte)tmp[1];
Ivan Mahonin b53a5c
    out[2] = (nk_byte)tmp[2];
Ivan Mahonin b53a5c
    out[3] = (nk_byte)tmp[3];
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API void
Ivan Mahonin b53a5c
nk_color_hsva_b(nk_byte *h, nk_byte *s, nk_byte *v, nk_byte *a, struct nk_color in)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    int tmp[4];
Ivan Mahonin b53a5c
    nk_color_hsva_i(&tmp[0], &tmp[1], &tmp[2], &tmp[3], in);
Ivan Mahonin b53a5c
    *h = (nk_byte)tmp[0];
Ivan Mahonin b53a5c
    *s = (nk_byte)tmp[1];
Ivan Mahonin b53a5c
    *v = (nk_byte)tmp[2];
Ivan Mahonin b53a5c
    *a = (nk_byte)tmp[3];
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API void
Ivan Mahonin b53a5c
nk_color_hsv_i(int *out_h, int *out_s, int *out_v, struct nk_color in)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    int a;
Ivan Mahonin b53a5c
    nk_color_hsva_i(out_h, out_s, out_v, &a, in);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API void
Ivan Mahonin b53a5c
nk_color_hsv_b(nk_byte *out_h, nk_byte *out_s, nk_byte *out_v, struct nk_color in)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    int tmp[4];
Ivan Mahonin b53a5c
    nk_color_hsva_i(&tmp[0], &tmp[1], &tmp[2], &tmp[3], in);
Ivan Mahonin b53a5c
    *out_h = (nk_byte)tmp[0];
Ivan Mahonin b53a5c
    *out_s = (nk_byte)tmp[1];
Ivan Mahonin b53a5c
    *out_v = (nk_byte)tmp[2];
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API void
Ivan Mahonin b53a5c
nk_color_hsv_iv(int *out, struct nk_color in)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    nk_color_hsv_i(&out[0], &out[1], &out[2], in);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API void
Ivan Mahonin b53a5c
nk_color_hsv_bv(nk_byte *out, struct nk_color in)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    int tmp[4];
Ivan Mahonin b53a5c
    nk_color_hsv_i(&tmp[0], &tmp[1], &tmp[2], in);
Ivan Mahonin b53a5c
    out[0] = (nk_byte)tmp[0];
Ivan Mahonin b53a5c
    out[1] = (nk_byte)tmp[1];
Ivan Mahonin b53a5c
    out[2] = (nk_byte)tmp[2];
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c