/* Cairo::RasterSourcePattern */ static cairo_surface_t * cr_raster_source_acquire_callback (cairo_pattern_t *pattern, void *callback_data, cairo_surface_t *target, const cairo_rectangle_int_t *extents) { VALUE rb_pattern; VALUE rb_acquire; cairo_surface_t *acquired_surface = NULL; rb_pattern = POINTER2RVAL (callback_data); rb_acquire = rb_iv_get (rb_pattern, "@acquire"); if (!NIL_P (rb_acquire)) { VALUE rb_acquired_surface; VALUE rb_target; VALUE rb_extents; rb_target = CRSURFACE2RVAL (target); rb_extents = rb_funcall (rb_cCairo_Rectangle, id_new, 4, INT2NUM (extents->x), INT2NUM (extents->y), INT2NUM (extents->width), INT2NUM (extents->height)); rb_acquired_surface = rb_funcall (rb_acquire, id_call, 3, rb_pattern, rb_target, rb_extents); if (!NIL_P (rb_acquired_surface)) acquired_surface = RVAL2CRSURFACE (rb_acquired_surface); } return acquired_surface; }
static VALUE cr_surface_pattern_get_surface (VALUE self) { cairo_surface_t *surface; rb_cairo_check_status (cairo_pattern_get_surface (_SELF (self), &surface)); return CRSURFACE2RVAL (surface); }
static VALUE pj_get_surface(VALUE self) { cairo_surface_t *surface; GError *error = NULL; surface = gtk_print_job_get_surface(_SELF(self), &error); if (error) RAISE_GERROR(error); return CRSURFACE2RVAL(surface); }
static VALUE cr_get_group_target (VALUE self) { cairo_surface_t *surface; surface = cairo_get_group_target (_SELF); if (!surface) return Qnil; rb_cairo_check_status (cairo_surface_status (surface)); return CRSURFACE2RVAL (surface); }
static VALUE cr_quartz_image_surface_get_image (VALUE self) { cairo_surface_t *surface; surface = cairo_quartz_image_surface_get_image (_SELF); if (!surface) return Qnil; cr_surface_check_status (surface); return CRSURFACE2RVAL (surface); }
static void cr_raster_source_release_callback (cairo_pattern_t *pattern, void *callback_data, cairo_surface_t *surface) { VALUE rb_pattern; VALUE rb_release; VALUE rb_surface; rb_pattern = POINTER2RVAL (callback_data); rb_release = rb_iv_get (rb_pattern, "@release"); if (NIL_P (rb_release)) return; rb_surface = CRSURFACE2RVAL (surface); rb_funcall (rb_release, id_call, 2, rb_pattern, rb_surface); }
static VALUE cr_get_target (VALUE self) { cairo_surface_t *surface; VALUE rb_surface; surface = cairo_get_target (_SELF); rb_cairo_check_status (cairo_surface_status (surface)); rb_surface = rb_ivar_get (self, cr_id_surface); if (NIL_P (rb_surface) || RVAL2CRSURFACE (rb_surface) != surface) { rb_surface = CRSURFACE2RVAL (surface); rb_ivar_set (self, cr_id_surface, rb_surface); } return rb_surface; }
static VALUE rg_get_image(VALUE self, VALUE image_id) { return CRSURFACE2RVAL(poppler_page_get_image(SELF(self), NUM2INT(image_id))); }
static VALUE rg_thumbnail(VALUE self) { return CRSURFACE2RVAL(poppler_page_get_thumbnail(SELF(self))); }