diff options
author | Mario Sanchez Prada <msanchez@gnome.org> | 2012-12-04 20:31:52 +0800 |
---|---|---|
committer | Mario Sanchez Prada <msanchez@gnome.org> | 2012-12-04 20:02:40 +0800 |
commit | ab48808effad3a4d5e58be8877108071d8685a8a (patch) | |
tree | 91732637ea334c824e9139987d53e59c035f1b93 /lib/ephy-favicon-helpers.c | |
parent | 922083024453e10d90cc9819bd0bc6896636e780 (diff) | |
download | gsoc2013-epiphany-ab48808effad3a4d5e58be8877108071d8685a8a.tar gsoc2013-epiphany-ab48808effad3a4d5e58be8877108071d8685a8a.tar.gz gsoc2013-epiphany-ab48808effad3a4d5e58be8877108071d8685a8a.tar.bz2 gsoc2013-epiphany-ab48808effad3a4d5e58be8877108071d8685a8a.tar.lz gsoc2013-epiphany-ab48808effad3a4d5e58be8877108071d8685a8a.tar.xz gsoc2013-epiphany-ab48808effad3a4d5e58be8877108071d8685a8a.tar.zst gsoc2013-epiphany-ab48808effad3a4d5e58be8877108071d8685a8a.zip |
Add new helper functions WebKit2GTK+'s favicons API.
At the moment, just add one function to obtain a GdkPixbuf* with
specific dimensions from a cairo_surface_t*.
https://bugzilla.gnome.org/show_bug.cgi?id=679370
Diffstat (limited to 'lib/ephy-favicon-helpers.c')
-rw-r--r-- | lib/ephy-favicon-helpers.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/lib/ephy-favicon-helpers.c b/lib/ephy-favicon-helpers.c new file mode 100644 index 000000000..6ff236abd --- /dev/null +++ b/lib/ephy-favicon-helpers.c @@ -0,0 +1,49 @@ +/* + * Copyright © 2012 Igalia S.L. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ + +#include "config.h" +#include "ephy-favicon-helpers.h" + +#include <gdk/gdk.h> +#include <glib.h> + +GdkPixbuf * +ephy_pixbuf_get_from_surface_scaled (cairo_surface_t *surface, int width, int height) +{ + GdkPixbuf *pixbuf; + int favicon_width; + int favicon_height; + + /* Treat NULL surface cleanly. */ + if (!surface) + return NULL; + + favicon_width = cairo_image_surface_get_width (surface); + favicon_height = cairo_image_surface_get_height (surface); + pixbuf = gdk_pixbuf_get_from_surface (surface, 0, 0, favicon_width, favicon_height); + + /* A size of (0, 0) means the original size of the favicon. */ + if (width && height && (favicon_width != width || favicon_height != height)) { + GdkPixbuf *scaled_pixbuf = gdk_pixbuf_scale_simple (pixbuf, width, height, GDK_INTERP_BILINEAR); + g_object_unref (pixbuf); + pixbuf = scaled_pixbuf; + } + + return pixbuf; +} |