Ejemplo n.º 1
0
/* 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;
}
Ejemplo n.º 2
0
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);
}
Ejemplo n.º 3
0
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);
}
Ejemplo n.º 4
0
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);
}
Ejemplo n.º 5
0
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);
}
Ejemplo n.º 6
0
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);
}
Ejemplo n.º 7
0
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;
}
Ejemplo n.º 8
0
static VALUE
rg_get_image(VALUE self, VALUE image_id)
{
    return CRSURFACE2RVAL(poppler_page_get_image(SELF(self), NUM2INT(image_id)));
}
Ejemplo n.º 9
0
static VALUE
rg_thumbnail(VALUE self)
{
    return CRSURFACE2RVAL(poppler_page_get_thumbnail(SELF(self)));
}