[darcs-to-svn @ move some code from GossipPrivateChat to GossipChatView]
authorXavier Claessens <xclaesse@src.gnome.org>
Tue, 1 May 2007 16:21:04 +0000 (16:21 +0000)
committerXavier Claessens <xclaesse@src.gnome.org>
Tue, 1 May 2007 16:21:04 +0000 (16:21 +0000)
svn path=/trunk/; revision=18

libempathy-gtk/gossip-chat-view.c
libempathy-gtk/gossip-private-chat.c

index cc6482e..046a550 100644 (file)
@@ -246,6 +246,10 @@ static void     chat_view_append_irc_message         (GossipChatView           *
                                                      GossipMessage            *msg);
 static void     chat_view_append_fancy_message       (GossipChatView           *view,
                                                      GossipMessage            *msg);
+static GdkPixbuf *chat_view_pad_to_size              (GdkPixbuf                *pixbuf,
+                                                     gint                      width,
+                                                     gint                      height,
+                                                     gint                      extra_padding_right);
 
 G_DEFINE_TYPE (GossipChatView, gossip_chat_view, GTK_TYPE_TEXT_VIEW);
 
@@ -1055,7 +1059,8 @@ chat_view_maybe_append_fancy_header (GossipChatView *view,
        const gchar        *line_top_tag;
        const gchar        *line_bottom_tag;
        gboolean            from_self;
-       GdkPixbuf          *avatar;
+       GdkPixbuf          *pixbuf = NULL;
+       GdkPixbuf          *avatar = NULL;
 
        priv = GET_PRIV (view);
 
@@ -1111,7 +1116,12 @@ chat_view_maybe_append_fancy_header (GossipChatView *view,
                                                  line_top_tag,
                                                  NULL);
 
-       avatar = gossip_pixbuf_avatar_from_contact_scaled (sender, 32, 32);
+       /* FIXME: we should have a cash of avatar pixbufs */
+       pixbuf = gossip_pixbuf_avatar_from_contact_scaled (sender, 32, 32);
+       if (pixbuf) {
+               avatar = chat_view_pad_to_size (pixbuf, 32, 32, 6);
+               g_object_unref (pixbuf);
+       }
 
        if (avatar) {
                GtkTextIter start;
@@ -1369,6 +1379,45 @@ chat_view_theme_changed_cb (GossipThemeManager *manager,
        gossip_theme_manager_update_show_avatars (manager, view, show_avatars);
 }
 
+/* Pads a pixbuf to the specified size, by centering it in a larger transparent
+ * pixbuf. Returns a new ref.
+ */
+static GdkPixbuf *
+chat_view_pad_to_size (GdkPixbuf *pixbuf,
+                      gint       width,
+                      gint       height,
+                      gint       extra_padding_right)
+{
+       gint       src_width, src_height;
+       GdkPixbuf *padded;
+       gint       x_offset, y_offset;
+
+       src_width = gdk_pixbuf_get_width (pixbuf);
+       src_height = gdk_pixbuf_get_height (pixbuf);
+
+       x_offset = (width - src_width) / 2;
+       y_offset = (height - src_height) / 2;
+
+       padded = gdk_pixbuf_new (gdk_pixbuf_get_colorspace (pixbuf),
+                                TRUE, /* alpha */
+                                gdk_pixbuf_get_bits_per_sample (pixbuf),
+                                width + extra_padding_right,
+                                height);
+
+       gdk_pixbuf_fill (padded, 0);
+
+       gdk_pixbuf_copy_area (pixbuf,
+                             0, /* source coords */
+                             0,
+                             src_width,
+                             src_height,
+                             padded,
+                             x_offset, /* dest coords */
+                             y_offset);
+
+       return padded;
+}
+
 GossipChatView *
 gossip_chat_view_new (void)
 {
index c9a44bf..17c55b1 100644 (file)
@@ -453,45 +453,3 @@ gossip_private_chat_new_with_channel (GossipContact *contact,
        return chat;
 }
 
-/* Pads a pixbuf to the specified size, by centering it in a larger transparent
- * pixbuf. Returns a new ref.
- */
-#if 0
-FIXME:
-static GdkPixbuf *
-private_chat_pad_to_size (GdkPixbuf *pixbuf,
-                         gint       width,
-                         gint       height,
-                         gint       extra_padding_right)
-{
-       gint       src_width, src_height;
-       GdkPixbuf *padded;
-       gint       x_offset, y_offset;
-
-       src_width = gdk_pixbuf_get_width (pixbuf);
-       src_height = gdk_pixbuf_get_height (pixbuf);
-
-       x_offset = (width - src_width) / 2;
-       y_offset = (height - src_height) / 2;
-
-       padded = gdk_pixbuf_new (gdk_pixbuf_get_colorspace (pixbuf),
-                                TRUE, /* alpha */
-                                gdk_pixbuf_get_bits_per_sample (pixbuf),
-                                width + extra_padding_right,
-                                height);
-
-       gdk_pixbuf_fill (padded, 0);
-
-       gdk_pixbuf_copy_area (pixbuf,
-                             0, /* source coords */
-                             0,
-                             src_width,
-                             src_height,
-                             padded,
-                             x_offset, /* dest coords */
-                             y_offset);
-
-       return padded;
-}
-#endif
-