Class: Cairo::RecordingSurface
- Defined in:
- ext/cairo/rb_cairo_surface.c
Instance Method Summary collapse
- #extents ⇒ Object
-
#initialize ⇒ Object
constructor
recording surface functions.
- #ink_extents ⇒ Object
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?, 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
recording surface functions
1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 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 |
# File 'ext/cairo/rb_cairo_surface.c', line 1570
static VALUE
cr_recording_surface_initialize (int argc, VALUE *argv, VALUE self)
{
VALUE arg1, arg2, arg3, arg4, arg5;
cairo_surface_t *surface;
cairo_content_t content = CAIRO_CONTENT_COLOR_ALPHA;
cairo_rectangle_t extents;
const char *error_message =
"invalid argument (expect "
"(x, y, width, height), "
"([x, y, width, height]),"
"(x, y, width, height, content) or "
"([x, y, width, height], content)): %s";
rb_scan_args (argc, argv, "14", &arg1, &arg2, &arg3, &arg4, &arg5);
if (argc == 1 || argc == 2)
{
VALUE rb_extents;
rb_extents = rb_check_array_type (arg1);
if (RARRAY_LEN (rb_extents) != 4)
rb_raise (rb_eArgError, error_message, rb_cairo__inspect (arg1));
extents.x = NUM2DBL (RARRAY_PTR (rb_extents)[0]);
extents.y = NUM2DBL (RARRAY_PTR (rb_extents)[1]);
extents.width = NUM2DBL (RARRAY_PTR (rb_extents)[2]);
extents.height = NUM2DBL (RARRAY_PTR (rb_extents)[3]);
if (!NIL_P (arg2))
content = RVAL2CRCONTENT (arg2);
}
else if (argc == 4 || argc == 5)
{
extents.x = NUM2DBL (arg1);
extents.y = NUM2DBL (arg2);
extents.width = NUM2DBL (arg3);
extents.height = NUM2DBL (arg4);
if (!NIL_P (arg5))
content = RVAL2CRCONTENT (arg5);
}
else
{
rb_raise (rb_eArgError, error_message,
rb_cairo__inspect (rb_ary_new4 (argc, argv)));
}
surface = cairo_recording_surface_create (content, &extents);
rb_cairo_surface_check_status (surface);
DATA_PTR (self) = surface;
if (rb_block_given_p ())
rb_cairo__surface_yield_and_finish (self);
return Qnil;
}
|
Instance Method Details
#extents ⇒ Object
1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 |
# File 'ext/cairo/rb_cairo_surface.c', line 1637
static VALUE
cr_recording_surface_get_extents (VALUE self)
{
cairo_surface_t *surface;
cairo_rectangle_t extents;
surface = _SELF;
cairo_recording_surface_get_extents (surface, &extents);
rb_cairo_surface_check_status (surface);
return rb_ary_new3 (4,
rb_float_new (extents.x),
rb_float_new (extents.y),
rb_float_new (extents.width),
rb_float_new (extents.height));
}
|
#ink_extents ⇒ Object
1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 |
# File 'ext/cairo/rb_cairo_surface.c', line 1622
static VALUE
cr_recording_surface_get_ink_extents (VALUE self)
{
cairo_surface_t *surface;
double x, y, width, height;
surface = _SELF;
cairo_recording_surface_ink_extents (surface, &x, &y, &width, &height);
rb_cairo_surface_check_status (surface);
return rb_ary_new3 (4,
rb_float_new (x), rb_float_new (y),
rb_float_new (width), rb_float_new (height));
}
|