#include "rgba.h" duk_ret_t compare_rgba(duk_context * ctx) { unsigned int color1 = get_color(ctx, 0); unsigned int color2 = get_color(ctx, 1); duk_push_boolean(ctx, color1 == color2); return 1; } duk_ret_t rgba(duk_context * ctx) { int r = duk_get_number(ctx, 0); int g = duk_get_number(ctx, 1); int b = duk_get_number(ctx, 2); int a = duk_get_number(ctx, 3); if (r > 255 || g > 255 || b > 255 || a > 255) { return duk_error(ctx, DUK_ERR_ERROR, "You can't use a number bigger then 255."); } unsigned char * buffer; buffer = duk_push_fixed_buffer(ctx, 4); buffer[0] = r; buffer[1] = g; buffer[2] = b; buffer[3] = a; return 1; } unsigned int get_color(duk_context * ctx, duk_idx_t index) { size_t rgba_size; unsigned char * rgba = duk_get_buffer(ctx, index, &rgba_size); return rgba[0] << 24 | rgba[1] << 16 | rgba[2] << 8 | rgba[3]; }