Thu, 10 Apr 2014 23:35:44 +0200
imgstore: rip from Pidgin (mostly gtkwebview)
| pidgin/gtkaccount.c | file | annotate | diff | comparison | revisions | |
| pidgin/gtkconv.c | file | annotate | diff | comparison | revisions | |
| pidgin/gtkrequest.c | file | annotate | diff | comparison | revisions | |
| pidgin/gtkutils.c | file | annotate | diff | comparison | revisions | |
| pidgin/gtkutils.h | file | annotate | diff | comparison | revisions | |
| pidgin/gtkwebview.c | file | annotate | diff | comparison | revisions |
--- a/pidgin/gtkaccount.c Thu Apr 10 23:20:49 2014 +0200 +++ b/pidgin/gtkaccount.c Thu Apr 10 23:35:44 2014 +0200 @@ -194,7 +194,7 @@ } if (dialog->icon_img != NULL) { - pixbuf = pidgin_pixbuf_from_imgstore(dialog->icon_img); + pixbuf = pidgin_pixbuf_from_image(dialog->icon_img); } if (pixbuf && dialog->prpl_info && @@ -2290,8 +2290,8 @@ if (img != NULL) { GdkPixbuf *buddyicon_pixbuf; - buddyicon_pixbuf = pidgin_pixbuf_from_imgstore(img); - purple_imgstore_unref(img); + buddyicon_pixbuf = pidgin_pixbuf_from_image(img); + g_object_unref(img); if (buddyicon_pixbuf != NULL) { buddyicon = gdk_pixbuf_scale_simple(buddyicon_pixbuf, 22, 22, GDK_INTERP_HYPER);
--- a/pidgin/gtkconv.c Thu Apr 10 23:20:49 2014 +0200 +++ b/pidgin/gtkconv.c Thu Apr 10 23:35:44 2014 +0200 @@ -3939,14 +3939,14 @@ static GtkWidget * e2ee_state_to_gtkimage(PurpleE2eeState *state) { - PurpleStoredImage *img; + PurpleImage *img; img = _pidgin_e2ee_stock_icon_get( purple_e2ee_state_get_stock_icon(state)); if (!img) return NULL; - return gtk_image_new_from_pixbuf(pidgin_pixbuf_from_imgstore(img)); + return gtk_image_new_from_pixbuf(pidgin_pixbuf_from_image(img)); } static void
--- a/pidgin/gtkrequest.c Thu Apr 10 23:20:49 2014 +0200 +++ b/pidgin/gtkrequest.c Thu Apr 10 23:35:44 2014 +0200 @@ -1616,7 +1616,7 @@ PIDGIN_PRPL_ICON_SMALL); } } else if (g_strcmp0(domain, "e2ee") == 0) { - image = pidgin_pixbuf_from_imgstore( + image = pidgin_pixbuf_from_image( _pidgin_e2ee_stock_icon_get(id)); } else { purple_debug_error("gtkrequest", "Unknown domain: %s", domain);
--- a/pidgin/gtkutils.c Thu Apr 10 23:20:49 2014 +0200 +++ b/pidgin/gtkutils.c Thu Apr 10 23:35:44 2014 +0200 @@ -3100,11 +3100,6 @@ return GDK_PIXBUF_ANIMATION(pidgin_pixbuf_from_data_helper(buf, count, TRUE)); } -GdkPixbuf *pidgin_pixbuf_from_imgstore(PurpleImage *image) -{ - return pidgin_pixbuf_from_image(image); /* TODO: remove it */ -} - GdkPixbuf * pidgin_pixbuf_from_image(PurpleImage *image) {
--- a/pidgin/gtkutils.h Thu Apr 10 23:20:49 2014 +0200 +++ b/pidgin/gtkutils.h Thu Apr 10 23:35:44 2014 +0200 @@ -858,13 +858,6 @@ GdkPixbufAnimation *pidgin_pixbuf_anim_from_data(const guchar *buf, gsize count); /** - * pidgin_pixbuf_from_imgstore: - * - * TODO: remove it! - */ -GdkPixbuf *pidgin_pixbuf_from_imgstore(PurpleImage *image); - -/** * pidgin_pixbuf_from_image: * @image: a PurpleImage. *
--- a/pidgin/gtkwebview.c Thu Apr 10 23:20:49 2014 +0200 +++ b/pidgin/gtkwebview.c Thu Apr 10 23:35:44 2014 +0200 @@ -23,6 +23,7 @@ #include "internal.h" #include "debug.h" #include "glibcompat.h" +#include "image-store.h" #include "pidgin.h" #include "pidginstock.h" @@ -36,8 +37,6 @@ #include "gtkinternal.h" #include "gtk3compat.h" -#include "imgstore.h" /* TODO: temp */ - #define MAX_FONT_SIZE 7 #define MAX_SCROLL_TIME 0.4 /* seconds */ #define SCROLL_DELAY 33 /* milliseconds */ @@ -140,24 +139,24 @@ gpointer user_data) { const gchar *uri; - PurpleStoredImage *img = NULL; - const char *filename; + PurpleImage *img = NULL; + const gchar *path; uri = webkit_network_request_get_uri(request); - if (purple_str_has_prefix(uri, PURPLE_STORED_IMAGE_PROTOCOL)) { - int id; + if (purple_str_has_prefix(uri, PURPLE_IMAGE_STORE_PROTOCOL)) { + guint id; - uri += sizeof(PURPLE_STORED_IMAGE_PROTOCOL) - 1; + uri += sizeof(PURPLE_IMAGE_STORE_PROTOCOL) - 1; id = strtoul(uri, NULL, 10); - img = purple_imgstore_find_by_id(id); + img = purple_image_store_get(id); if (!img) return; - } else if (purple_str_has_prefix(uri, PURPLE_STOCK_IMAGE_PROTOCOL)) { + } else if (purple_str_has_prefix(uri, PURPLE_IMAGE_STORE_STOCK_PROTOCOL)) { gchar *p_uri, *found; const gchar *domain, *stock_name; - uri += sizeof(PURPLE_STOCK_IMAGE_PROTOCOL) - 1; + uri += sizeof(PURPLE_IMAGE_STORE_STOCK_PROTOCOL) - 1; p_uri = g_strdup(uri); found = strchr(p_uri, '/'); @@ -184,24 +183,23 @@ return; if (img != NULL) { - filename = purple_imgstore_get_filename(img); - if (filename && g_path_is_absolute(filename)) { - gchar *tmp = g_filename_to_uri(filename, NULL, NULL); - webkit_network_request_set_uri(request, tmp); - g_free(tmp); + path = purple_image_get_path(img); + if (path) { + gchar *uri = g_filename_to_uri(path, NULL, NULL); + webkit_network_request_set_uri(request, uri); + g_free(uri); } else { - gchar *b64, *tmp; + gchar *b64, *src; const gchar *type; b64 = purple_base64_encode( - purple_imgstore_get_data(img), - purple_imgstore_get_size(img)); - type = purple_imgstore_get_extension(img); - tmp = g_strdup_printf("data:image/%s;base64,%s", - type, b64); - webkit_network_request_set_uri(request, tmp); + purple_image_get_data(img), + purple_image_get_size(img)); + type = purple_image_get_mimetype(img); + src = g_strdup_printf("data:%s;base64,%s", type, b64); g_free(b64); - g_free(tmp); + webkit_network_request_set_uri(request, src); + g_free(src); } } } @@ -213,7 +211,7 @@ PidginWebViewPriv *priv = PIDGIN_WEBVIEW_GET_PRIVATE(web_view); const gchar *uri; GString *data; - PurpleStoredImage *image; + PurpleImage *image; if (!purple_str_has_caseprefix( webkit_web_resource_get_mime_type(web_resource), "image/")) @@ -230,15 +228,15 @@ return; /* TODO: we could avoid copying data, if uri is a - * PURPLE_STORED_IMAGE_PROTOCOL or PURPLE_STOCK_IMAGE_PROTOCOL */ - image = purple_imgstore_new(g_memdup(data->str, data->len), - data->len, NULL); + * PURPLE_IMAGE_STORE_PROTOCOL */ + image = purple_image_new_from_data( + g_memdup(data->str, data->len), data->len); g_return_if_fail(image != NULL); g_hash_table_insert(priv->loaded_images, g_strdup(uri), image); } -static PurpleStoredImage * +static PurpleImage * webview_resource_get_loaded(WebKitWebView *web_view, const gchar *uri) { PidginWebViewPriv *priv = PIDGIN_WEBVIEW_GET_PRIVATE(web_view); @@ -570,9 +568,8 @@ static void webview_image_saved(GtkWidget *dialog, gint response, gpointer _unused) { - PurpleStoredImage *image; + PurpleImage *image; gchar *filename; - GError *error = NULL; if (response != GTK_RESPONSE_ACCEPT) { gtk_widget_destroy(dialog); @@ -586,11 +583,8 @@ g_return_if_fail(filename != NULL); g_return_if_fail(filename[0] != '\0'); - g_file_set_contents(filename, purple_imgstore_get_data(image), - purple_imgstore_get_size(image), &error); - if (error) { - purple_debug_error("gtkwebview", "Failed saving image: %s", - error->message); + if (!purple_image_save(image, filename)) { + purple_debug_error("gtkwebview", "Failed saving image"); /* TODO: we should display a notification here */ } @@ -603,7 +597,7 @@ { const gchar *src; WebKitWebView *webview; - PurpleStoredImage *image; + PurpleImage *image; GtkFileChooserDialog *dialog; gchar *filename; GtkWidget *parent; @@ -628,16 +622,16 @@ /* TODO: use image's file name, if there is one */ filename = g_strdup_printf(_("image.%s"), - purple_imgstore_get_extension(image)); + purple_image_get_extension(image)); gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), filename); g_free(filename); g_signal_connect(G_OBJECT(dialog), "response", G_CALLBACK(webview_image_saved), NULL); - purple_imgstore_ref(image); + g_object_ref(image); g_object_set_data_full(G_OBJECT(dialog), "pidgin-gtkwebview-image", - image, (GDestroyNotify)purple_imgstore_unref); + image, g_object_unref); gtk_widget_show(GTK_WIDGET(dialog)); } @@ -647,7 +641,7 @@ { const gchar *src; WebKitWebView *webview; - PurpleStoredImage *image; + PurpleImage *image; src = webkit_dom_html_image_element_get_src(image_node); webview = g_object_get_data(G_OBJECT(image_node), "pidgin-gtkwebview"); @@ -1307,7 +1301,7 @@ G_CALLBACK(webview_inspector_show), webview); priv->loaded_images = g_hash_table_new_full(g_str_hash, g_str_equal, - g_free, (GDestroyNotify)purple_imgstore_unref); + g_free, g_object_unref); } GType @@ -2069,7 +2063,7 @@ id = purple_image_store_add(image); priv = PIDGIN_WEBVIEW_GET_PRIVATE(webview); dom = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(webview)); - img = g_strdup_printf("<img src='" PURPLE_STORED_IMAGE_PROTOCOL + img = g_strdup_printf("<img src='" PURPLE_IMAGE_STORE_PROTOCOL "%u'/>", id); priv->edit.block_changed = TRUE;