class Cairo::ScriptSurface
script surface
Public Class Methods
new(*args)
click to toggle source
script surface functions
static VALUE
cr_script_surface_initialize (int argc, VALUE *argv, VALUE self)
{
cairo_surface_t *surface = NULL, *target = NULL;
cairo_device_t *device;
double width = 0.0, height = 0.0;
cairo_content_t content = CAIRO_CONTENT_COLOR_ALPHA;
VALUE arg1, arg2, arg3, arg4;
rb_scan_args (argc, argv, "22", &arg1, &arg2, &arg3, &arg4);
device = RVAL2CRDEVICE (arg1);
if (argc == 2)
{
target = RVAL2CRSURFACE (arg2);
}
else
{
width = NUM2DBL (arg2);
height = NUM2DBL (arg3);
switch (TYPE (arg4))
{
case T_NIL:
break;
case T_STRING:
case T_SYMBOL:
case T_FIXNUM:
content = RVAL2CRCONTENT (arg4);
break;
default:
rb_raise (rb_eArgError,
"invalid argument (expect "
"(device, width, height), "
"(device, width, height, content) or "
"(device, surface)): %s",
rb_cairo__inspect (rb_ary_new4 (argc, argv)));
break;
}
}
if (target)
surface = cairo_script_surface_create_for_target (device, target);
else
surface = cairo_script_surface_create (device, content, width, height);
rb_cairo_surface_check_status (surface);
RTYPEDDATA_DATA (self) = surface;
if (rb_block_given_p ())
rb_cairo__surface_yield_and_finish (self);
return Qnil;
}