static ALLEGRO_COLOR alpha_color(ALLEGRO_COLOR color, float alpha) { float r, g, b; al_unmap_rgb_f(color, &r, &g, &b); return al_map_rgba_f(r * alpha, g * alpha, b * alpha, alpha); }
void shal_unmap_rgb_f(float color_r, float color_g, float color_b, float color_a, float * r, float * g, float * b) { ALLEGRO_COLOR color; color.r = color_r; color.g = color_g; color.b = color_b; color.a = color_a; return al_unmap_rgb_f(color, r, g, b); }
static mrb_value color_unmap_rgb_f(mrb_state *mrb, mrb_value self) { ALLEGRO_COLOR *c; float r; float g; float b; mrb_value ary; c = mrb_data_get_ptr(mrb, self, &mrbal_color_data_type); al_unmap_rgb_f(*c, &r, &g, &b); ary = mrb_ary_new_capa(mrb, 3); mrb_ary_push(mrb, ary, mrb_float_value(mrb, r)); mrb_ary_push(mrb, ary, mrb_float_value(mrb, g)); mrb_ary_push(mrb, ary, mrb_float_value(mrb, b)); return ary; }