All pastes #131626 Raw Edit

Someone

public c v1 · immutable
#131626 ·published 2006-08-14 16:09 UTC
rendered paste body
voiddraw_buffer (GnomeScanPreviewArea *area){  GnomeScanPreviewAreaPrivate *priv = GET_PRIVATE (area);  GdkRectangle *r, *i, *a;  GtkWidget *da = priv->da;  GdkPixbuf *pb;  gint hpos;  cairo_t *cr;  cairo_surface_t *cs;  if (!GDK_IS_PIXBUF (priv->pixbuf))    return;  pb = priv->pixbuf;  /* area rectangle */  r = priv->roi;  a = g_new0 (GdkRectangle, 1);  a->x = r->x - 1;  a->y = r->y - 1;  a->width = r->width + 2;  a->height = r->height + 2;  i = g_new0 (GdkRectangle, 1);  i->x = 0;  i->y = 0;  i->width = gdk_pixbuf_get_width (pb);  i->height = gdk_pixbuf_get_height (pb);  /* DRAW */  cr = gdk_cairo_create (da->window);  cs = cairo_get_target (cr);  priv->cs = cairo_surface_create_similar (cs,					   CAIRO_CONTENT_COLOR,					   gdk_pixbuf_get_width (pb),					   gdk_pixbuf_get_height (pb));  cairo_set_source_surface (cr, priv->cs, 0, 0);  cairo_paint (cr);  /* draw pixbuf */  gdk_cairo_set_source_pixbuf (cr, pb, 0, 0);  cairo_paint (cr);  /* draw shaded white */  cairo_set_source_rgba (cr, 0xff, 0xff, 0xff, 0.5);  cairo_new_path (cr);  gdk_cairo_rectangle (cr, i);  cairo_close_path (cr);  cairo_paint (cr);  /* draw border */  cairo_set_source_rgba (cr, 0, 0, 0, 1);  cairo_new_path (cr);  gdk_cairo_rectangle (cr, a);  cairo_close_path (cr);  cairo_clip (cr);  cairo_paint (cr);  /* draw area pixbuf */  gdk_cairo_set_source_pixbuf (cr, pb, 0, 0);  cairo_new_path (cr);  gdk_cairo_rectangle (cr, r);  cairo_close_path (cr);  cairo_clip (cr);  cairo_paint (cr);  for (hpos = 0; hpos < N_ANCHOR; hpos++) {    draw_handle (da, cr, r, hpos);  }  g_debug ("writing %p to png", priv->cs);  cairo_surface_write_to_png (priv->cs, "/home/bersace/test.png");  cairo_destroy (cr);}gbooleanexpose_drawing_area (GtkWidget *da,		     GdkEventExpose *event,		     GnomeScanPreviewArea *area){  GnomeScanPreviewAreaPrivate *priv = GET_PRIVATE (area);  g_debug ("%s %p", __FUNCTION__, priv->cs);  cairo_t *cr;  cairo_surface_t *cs;  if (!priv->cs) {    return TRUE;  }  cr = gdk_cairo_create (da->window);  cairo_set_source_surface (cr, priv->cs, 0, 0);  gdk_cairo_rectangle (cr, priv->area);  cairo_clip (cr);  cairo_paint (cr);  cairo_destroy (cr);  return TRUE;}