[glide] Add support for printing images



commit ec22c918f3ad8252ed679a22f18341a5fd21d462
Author: Robert Carr <racarr Valentine localdomain>
Date:   Mon Apr 26 19:29:42 2010 -0400

    Add support for printing images

 src/glide-image.c |   22 ++++++++++++++++++++++
 src/glide-slide.c |   11 +++++++++++
 2 files changed, 33 insertions(+), 0 deletions(-)
---
diff --git a/src/glide-image.c b/src/glide-image.c
index c5fcefc..411c4f6 100644
--- a/src/glide-image.c
+++ b/src/glide-image.c
@@ -266,6 +266,27 @@ glide_image_deserialize (GlideActor *actor, JsonObject *actor_obj)
 }
 
 static void
+glide_image_print (GlideActor *actor,
+		   cairo_t *cr)
+{
+  GlideImage *image = GLIDE_IMAGE (actor);
+  GdkPixbuf *p;
+  gfloat width, height, x, y;
+  
+  clutter_actor_get_size (CLUTTER_ACTOR (image), &width, &height);
+  clutter_actor_get_position (CLUTTER_ACTOR (image), &x, &y);
+  
+  // TODO: Error
+  p = gdk_pixbuf_new_from_file_at_size (image->priv->filename, width, height, NULL);
+  gdk_cairo_set_source_pixbuf (cr, p, x, y);
+  
+  cairo_rectangle (cr, x, y, width, height);
+  cairo_fill (cr);
+  
+  g_object_unref (G_OBJECT (p));
+}
+
+static void
 glide_image_class_init (GlideImageClass *klass)
 {
   GlideActorClass *glide_actor_class = GLIDE_ACTOR_CLASS (klass);
@@ -283,6 +304,7 @@ glide_image_class_init (GlideImageClass *klass)
   
   glide_actor_class->serialize = glide_image_serialize;
   glide_actor_class->deserialize = glide_image_deserialize;
+  glide_actor_class->print = glide_image_print;
 
   
   object_class->finalize = glide_image_finalize;
diff --git a/src/glide-slide.c b/src/glide-slide.c
index 392d6c9..73b47ca 100644
--- a/src/glide-slide.c
+++ b/src/glide-slide.c
@@ -496,6 +496,9 @@ glide_slide_print_background_image (GlideSlide *s,
   GdkPixbuf *p;
   gfloat width, height;
   
+  if (!s->priv->background)
+    return;
+  
   clutter_actor_get_size (CLUTTER_ACTOR (s), &width, &height);
   
   // TODO: Error
@@ -528,8 +531,16 @@ glide_slide_print (GlideActor *a,
 		   cairo_t *cr)
 {
   GlideSlide *s = GLIDE_SLIDE (a);
+  GList *t;
   
   glide_slide_print_background (s, cr);
+  
+  for (t = clutter_container_get_children (CLUTTER_CONTAINER (s->priv->contents_group));
+       t; t = t->next)
+    {
+      GlideActor *actor = (GlideActor *)t->data;
+      glide_actor_print (actor, cr);
+    }
 }
 
 static void



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]