class Cairo::MeshPattern
Public Class Methods
new()
click to toggle source
static VALUE cr_mesh_pattern_initialize (VALUE self) { cairo_pattern_t *pattern; pattern = cairo_pattern_create_mesh (); cr_pattern_check_status (pattern); DATA_PTR (self) = pattern; return Qnil; }
Public Instance Methods
begin_patch()
click to toggle source
static VALUE cr_mesh_pattern_begin_patch (VALUE self) { cairo_pattern_t *pattern; pattern = _SELF (self); cairo_mesh_pattern_begin_patch (pattern); cr_pattern_check_status (pattern); if (rb_block_given_p ()) return rb_ensure (rb_yield, self, cr_mesh_pattern_end_patch, self); else return self; }
curve_to(p1, p2, p3, p4, p5, p6)
click to toggle source
static VALUE cr_mesh_pattern_curve_to (VALUE self, VALUE x1, VALUE y1, VALUE x2, VALUE y2, VALUE x3, VALUE y3) { cairo_pattern_t *pattern; pattern = _SELF (self); cairo_mesh_pattern_curve_to (pattern, NUM2DBL (x1), NUM2DBL (y1), NUM2DBL (x2), NUM2DBL (y2), NUM2DBL (x3), NUM2DBL (y3)); cr_pattern_check_status (pattern); return self; }
end_patch()
click to toggle source
static VALUE cr_mesh_pattern_end_patch (VALUE self) { cairo_pattern_t *pattern; pattern = _SELF (self); cairo_mesh_pattern_end_patch (pattern); cr_pattern_check_status (pattern); return self; }
get_control_point(p1, p2)
click to toggle source
static VALUE cr_mesh_pattern_get_control_point (VALUE self, VALUE rb_nth_patch, VALUE rb_nth_point) { cairo_pattern_t *pattern; unsigned int nth_patch, nth_point; double x, y; cairo_status_t status; nth_patch = NUM2UINT (rb_nth_patch); nth_point = NUM2UINT (rb_nth_point); if (nth_point > 3) { VALUE inspected; inspected = rb_funcall (rb_ary_new3 (2, rb_nth_patch, rb_nth_point), id_inspect, 0); rb_raise (rb_eArgError, "nth_point must be 0, 1, 2 or 3: <%u>: <%s>", nth_point, RVAL2CSTR (inspected)); } pattern = _SELF (self); status = cairo_mesh_pattern_get_control_point (pattern, nth_patch, nth_point, &x, &y); rb_cairo_check_status (status); return rb_ary_new3 (2, rb_float_new (x), rb_float_new (y)); }
get_corner_color(p1, p2)
click to toggle source
static VALUE cr_mesh_pattern_get_corner_color (VALUE self, VALUE rb_nth_patch, VALUE rb_nth_corner) { cairo_pattern_t *pattern; unsigned int nth_patch, nth_corner; double red, green, blue, alpha; cairo_status_t status; nth_patch = NUM2UINT (rb_nth_patch); nth_corner = NUM2UINT (rb_nth_corner); if (nth_corner > 3) { VALUE inspected; inspected = rb_funcall (rb_ary_new3 (2, rb_nth_patch, rb_nth_corner), id_inspect, 0); rb_raise (rb_eArgError, "nth_corner must be 0, 1, 2 or 3: <%u>: <%s>", nth_corner, RVAL2CSTR (inspected)); } pattern = _SELF (self); status = cairo_mesh_pattern_get_corner_color_rgba (pattern, nth_patch, nth_corner, &red, &green, &blue, &alpha); rb_cairo_check_status (status); return rb_ary_new3 (4, rb_float_new (red), rb_float_new (green), rb_float_new (blue), rb_float_new (alpha)); }
get_path(p1)
click to toggle source
static VALUE cr_mesh_pattern_get_path (VALUE self, VALUE nth_patch) { cairo_pattern_t *pattern; cairo_path_t *path; pattern = _SELF (self); path = cairo_mesh_pattern_get_path (pattern, NUM2UINT (nth_patch)); rb_cairo_check_status (path->status); return CRPATH2RVAL (path); }
line_to(p1, p2)
click to toggle source
static VALUE cr_mesh_pattern_line_to (VALUE self, VALUE x, VALUE y) { cairo_pattern_t *pattern; pattern = _SELF (self); cairo_mesh_pattern_line_to (pattern, NUM2DBL (x), NUM2DBL (y)); cr_pattern_check_status (pattern); return self; }
move_to(p1, p2)
click to toggle source
static VALUE cr_mesh_pattern_move_to (VALUE self, VALUE x, VALUE y) { cairo_pattern_t *pattern; pattern = _SELF (self); cairo_mesh_pattern_move_to (pattern, NUM2DBL (x), NUM2DBL (y)); cr_pattern_check_status (pattern); return self; }
patch_count()
click to toggle source
static VALUE cr_mesh_pattern_get_patch_count (VALUE self) { cairo_pattern_t *pattern; unsigned int count; cairo_status_t status; pattern = _SELF (self); status = cairo_mesh_pattern_get_patch_count (pattern, &count); rb_cairo_check_status (status); return UINT2NUM (count); }
set_control_point(p1, p2, p3)
click to toggle source
static VALUE cr_mesh_pattern_set_control_point (VALUE self, VALUE rb_nth_point, VALUE rb_x, VALUE rb_y) { cairo_pattern_t *pattern; unsigned int nth_point; pattern = _SELF (self); nth_point = NUM2UINT (rb_nth_point); if (nth_point <= 3) { cairo_mesh_pattern_set_control_point (pattern, nth_point, NUM2DBL (rb_x), NUM2DBL (rb_y)); } else { VALUE inspected; inspected = rb_funcall (rb_ary_new3 (3, rb_nth_point, rb_x, rb_y), id_inspect, 0); rb_raise (rb_eArgError, "nth_point must be 0, 1, 2 or 3: <%u>: <%s>", nth_point, RVAL2CSTR (inspected)); } cr_pattern_check_status (pattern); return self; }
set_corner_color(*args)
click to toggle source
static VALUE cr_mesh_pattern_set_corner_color_generic (int argc, VALUE *argv, VALUE self) { cairo_pattern_t *pattern; VALUE rb_nth_corner, rb_red, rb_green, rb_blue, rb_alpha; unsigned int nth_corner; double red, green, blue, alpha; rb_scan_args (argc, argv, "41", &rb_nth_corner, &rb_red, &rb_green, &rb_blue, &rb_alpha); nth_corner = NUM2UINT (rb_nth_corner); if (nth_corner > 3) { VALUE inspected; inspected = rb_funcall (rb_ary_new4 (argc, argv), id_inspect, 0); rb_raise (rb_eArgError, "nth_corner must be 0, 1, 2 or 3: <%u>: <%s>", nth_corner, RVAL2CSTR (inspected)); } pattern = _SELF (self); red = NUM2DBL (rb_red); green = NUM2DBL (rb_green); blue = NUM2DBL (rb_blue); if (NIL_P (rb_alpha)) { cairo_mesh_pattern_set_corner_color_rgb (pattern, nth_corner, red, green, blue); } else { alpha = NUM2DBL (rb_alpha); cairo_mesh_pattern_set_corner_color_rgba (pattern, nth_corner, red, green, blue, alpha); } cr_pattern_check_status (pattern); return self; }
Also aliased as: set_corner_color_rgb, set_corner_color_rgba