From 154eb38cf48362d75685f2336c1a779d3650fed0 Mon Sep 17 00:00:00 2001 From: Xavier Claessens Date: Tue, 16 Dec 2008 09:23:51 +0000 Subject: Move chat_view_get_avatar_pixbuf_with_cache to EmpathyThemeBoxes where it makes more sense. svn path=/trunk/; revision=1982 --- libempathy-gtk/empathy-chat-view.c | 96 -------------------------------------- 1 file changed, 96 deletions(-) (limited to 'libempathy-gtk/empathy-chat-view.c') diff --git a/libempathy-gtk/empathy-chat-view.c b/libempathy-gtk/empathy-chat-view.c index 4a5964389..0ccffc01a 100644 --- a/libempathy-gtk/empathy-chat-view.c +++ b/libempathy-gtk/empathy-chat-view.c @@ -22,11 +22,8 @@ #include "config.h" -#include - #include "empathy-chat-view.h" #include "empathy-smiley-manager.h" -#include "empathy-ui-utils.h" static void chat_view_base_init (gpointer klass); @@ -282,99 +279,6 @@ empathy_chat_view_get_last_contact (EmpathyChatView *view) return NULL; } -/* 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; -} - -typedef struct { - GdkPixbuf *pixbuf; - gchar *token; -} AvatarData; - -static void -chat_view_avatar_cache_data_free (gpointer ptr) -{ - AvatarData *data = ptr; - - g_object_unref (data->pixbuf); - g_free (data->token); - g_slice_free (AvatarData, data); -} - -GdkPixbuf * -empathy_chat_view_get_avatar_pixbuf_with_cache (EmpathyContact *contact) -{ - AvatarData *data; - EmpathyAvatar *avatar; - GdkPixbuf *tmp_pixbuf; - GdkPixbuf *pixbuf = NULL; - - /* Check if avatar is in cache and if it's up to date */ - avatar = empathy_contact_get_avatar (contact); - data = g_object_get_data (G_OBJECT (contact), "chat-view-avatar-cache"); - if (data) { - if (avatar && !tp_strdiff (avatar->token, data->token)) { - /* We have the avatar in cache */ - return data->pixbuf; - } - } - - /* Avatar not in cache, create pixbuf */ - tmp_pixbuf = empathy_pixbuf_avatar_from_contact_scaled (contact, 32, 32); - if (tmp_pixbuf) { - pixbuf = chat_view_pad_to_size (tmp_pixbuf, 32, 32, 6); - g_object_unref (tmp_pixbuf); - } - if (!pixbuf) { - return NULL; - } - - /* Insert new pixbuf in cache */ - data = g_slice_new0 (AvatarData); - data->token = g_strdup (avatar->token); - data->pixbuf = pixbuf; - - g_object_set_data_full (G_OBJECT (contact), "chat-view-avatar-cache", - data, chat_view_avatar_cache_data_free); - - return data->pixbuf; -} - GtkWidget * empathy_chat_view_get_smiley_menu (GCallback callback, gpointer user_data) -- cgit v1.2.3