diff --git a/gdk-pixbuf/ChangeLog b/gdk-pixbuf/ChangeLog index 2e25a59e40..c13270fef3 100644 --- a/gdk-pixbuf/ChangeLog +++ b/gdk-pixbuf/ChangeLog @@ -1,3 +1,10 @@ +1999-11-02 Larry Ewing + + * src/gnome-canvas-pixbuf.c (gnome_canvas_pixbuf_render): add aa + render function. + (gnome_canvas_pixbuf_class_init): add gnome_canvas_pixbuf_render + to class. + 1999-11-02 Federico Mena Quintero * src/gnome-canvas-pixbuf.c (compute_render_affine): Moved the diff --git a/gdk-pixbuf/gnome-canvas-pixbuf.c b/gdk-pixbuf/gnome-canvas-pixbuf.c index aea5334c43..7f77eda8d8 100644 --- a/gdk-pixbuf/gnome-canvas-pixbuf.c +++ b/gdk-pixbuf/gnome-canvas-pixbuf.c @@ -24,6 +24,7 @@ #include #include "gdk-pixbuf.h" #include "gnome-canvas-pixbuf.h" +#include "libart_lgpl/art_rgb_pixbuf_affine.h" @@ -79,6 +80,7 @@ static double gnome_canvas_pixbuf_point (GnomeCanvasItem *item, double x, double GnomeCanvasItem **actual_item); static void gnome_canvas_pixbuf_bounds (GnomeCanvasItem *item, double *x1, double *y1, double *x2, double *y2); +static void gnome_canvas_pixbuf_render (GnomeCanvasItem *item, GnomeCanvasBuf *buf); static GnomeCanvasItemClass *parent_class; @@ -152,6 +154,7 @@ gnome_canvas_pixbuf_class_init (GnomeCanvasPixbufClass *class) item_class->draw = gnome_canvas_pixbuf_draw; item_class->point = gnome_canvas_pixbuf_point; item_class->bounds = gnome_canvas_pixbuf_bounds; + item_class->render = gnome_canvas_pixbuf_render; } /* Object initialization function for the pixbuf canvas item */ @@ -671,6 +674,34 @@ transform_pixbuf (guchar *dest, int x, int y, int width, int height, int rowstri } } +/* Render for the pixbuf canvas item */ +static void +gnome_canvas_pixbuf_render (GnomeCanvasItem *item, GnomeCanvasBuf *buf) +{ + GnomeCanvasPixbuf *gcp; + PixbufPrivate *priv; + double i2c[6], render_affine[6]; + + gcp = GNOME_CANVAS_PIXBUF (item); + priv = gcp->priv; + + if (!priv->pixbuf) + return; + + gnome_canvas_item_i2c_affine (item, i2c); + compute_render_affine (gcp, render_affine, i2c); + gnome_canvas_buf_ensure_buf (buf); + + art_rgb_pixbuf_affine (buf->buf, + buf->rect.x0, buf->rect.y0, buf->rect.x1, buf->rect.y1, + buf->buf_rowstride, + priv->pixbuf->art_pixbuf, + render_affine, + ART_FILTER_NEAREST, NULL); + + buf->is_bg = 0; +} + /* Draw handler for the pixbuf canvas item */ static void gnome_canvas_pixbuf_draw (GnomeCanvasItem *item, GdkDrawable *drawable,