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, #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
1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 |
# File 'ext/cairo/rb_cairo_surface.c', line 1582
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;
}
|