Object
Return a new Imlib2::Gradient.
Examples:
# create a blue to green gradient
grad = Imlib2::Gradient.new
grad.add_color 0, Imlib2::Color::BLUE
grad.add_color 100, Imlib2::Color::GREEN
# create a red to yellow to black gradient
colors = [ [0, Imlib2::Color::RED ],
[100, Imlib2::Color::YELLOW ],
[200, Imlib2::Color::BLACK ] ]
grad = Imlib2::Gradient.new *colors
VALUE gradient_new(int argc, VALUE *argv, VALUE klass) {
Imlib_Color_Range *range;
VALUE g_o;
range = malloc(sizeof(Imlib_Color_Range*));
*range = imlib_create_color_range();
g_o = Data_Wrap_Struct(klass, 0, gradient_free, range);
rb_obj_call_init(g_o, argc, argv);
return g_o;
}
Add a color at the given distance
Examples:
# add the context color with a 100 pixel offset grad.add_color 100 # add white at a 100 pixel offset grad.add_color 100, Imlib2::Color::WHITE
static VALUE gradient_add_color(int argc, VALUE *argv, VALUE self) {
Imlib_Color_Range *grad;
VALUE color = Qnil;
int distance;
switch (argc) {
case 1:
distance = NUM2INT(argv[0]);
break;
case 2:
distance = NUM2INT(argv[0]);
color = argv[1];
break;
default:
rb_raise(rb_eTypeError, "Invalid argument count (not 1 or 2)");
}
Data_Get_Struct(self, Imlib_Color_Range, grad);
imlib_context_set_color_range(*grad);
if (color != Qnil)
set_context_color(color);
imlib_add_color_to_color_range(distance);
return self;
}
Generated with the Darkfish Rdoc Generator 2.