Class: Cairo::ScriptSurface
- Defined in:
- ext/cairo/rb_cairo_surface.c
Instance Method Summary collapse
-
#initialize ⇒ Object
constructor
script surface functions.
Methods inherited from Surface
#clone, #content, #copy_page, #create_similar, #create_similar_image, #destroy, #device, #device_offset, #device_scale, #dup, #fallback_resolution, #finish, #flush, #font_options, #get_mime_data, gl_supported?, gl_texture_supported?, image_supported?, #map_to_image, #mark_dirty, pdf_supported?, ps_supported?, quartz_image_supported?, quartz_supported?, recording_supported?, #reference_count, script_supported?, #set_device_offset, #set_device_scale, #set_fallback_resolution, #set_mime_data, #show_page, #sub_rectangle_surface, supported?, #supported_mime_type?, svg_supported?, tee_supported?, #unmap_image, win32_printing_supported?, win32_supported?, #write_to_png, xml_supported?
Constructor Details
#initialize ⇒ Object
script surface functions
1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 |
# File 'ext/cairo/rb_cairo_surface.c', line 1527
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);
DATA_PTR (self) = surface;
if (rb_block_given_p ())
rb_cairo__surface_yield_and_finish (self);
return Qnil;
}
|