[gtk+] GtkAboutDialog: Use surfaces for logo
- From: Alexander Larsson <alexl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] GtkAboutDialog: Use surfaces for logo
- Date: Sun, 22 Oct 2017 21:03:55 +0000 (UTC)
commit a4f7d0c0e0ab7a63e60a05b587e9c1eae1db8092
Author: Alexander Larsson <alexl redhat com>
Date: Sun Oct 22 23:03:19 2017 +0200
GtkAboutDialog: Use surfaces for logo
gtk/gtkaboutdialog.c | 51 ++++++++++++++++++++++++++-----------------------
gtk/gtkaboutdialog.h | 4 +-
2 files changed, 29 insertions(+), 26 deletions(-)
---
diff --git a/gtk/gtkaboutdialog.c b/gtk/gtkaboutdialog.c
index 1f09c02..c34a2a9 100644
--- a/gtk/gtkaboutdialog.c
+++ b/gtk/gtkaboutdialog.c
@@ -30,6 +30,8 @@
#include <string.h>
+#include <cairo-gobject.h>
+
#include "gtkaboutdialog.h"
#include "gtkbutton.h"
#include "gtkbbox.h"
@@ -91,9 +93,10 @@
* as shown in the following example:
* |[<!-- language="C" -->
* GdkPixbuf *example_logo = gdk_pixbuf_new_from_file ("./logo.png", NULL);
+ * cairo_surface_t *example_surface = gdk_cairo_surface_create_from_pixbuf (example_logo, 1, NULL);
* gtk_show_about_dialog (NULL,
* "program-name", "ExampleCode",
- * "logo", example_logo,
+ * "logo", example_surface,
* "title", _("About ExampleCode"),
* NULL);
* ]|
@@ -583,7 +586,7 @@ gtk_about_dialog_class_init (GtkAboutDialogClass *klass)
g_param_spec_object ("logo",
P_("Logo"),
P_("A logo for the about box. If this is not set, it defaults to
gtk_window_get_default_icon_list()"),
- GDK_TYPE_PIXBUF,
+ CAIRO_GOBJECT_TYPE_SURFACE,
GTK_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
/**
@@ -908,7 +911,7 @@ gtk_about_dialog_set_property (GObject *object,
gtk_about_dialog_set_copyright (about, g_value_get_string (value));
break;
case PROP_LOGO:
- gtk_about_dialog_set_logo (about, g_value_get_object (value));
+ gtk_about_dialog_set_logo (about, g_value_get_boxed (value));
break;
case PROP_AUTHORS:
gtk_about_dialog_set_authors (about, (const gchar**)g_value_get_boxed (value));
@@ -985,8 +988,8 @@ gtk_about_dialog_get_property (GObject *object,
g_value_set_boxed (value, priv->artists);
break;
case PROP_LOGO:
- if (gtk_image_get_storage_type (GTK_IMAGE (priv->logo_image)) == GTK_IMAGE_PIXBUF)
- g_value_set_object (value, gtk_image_get_pixbuf (GTK_IMAGE (priv->logo_image)));
+ if (gtk_image_get_storage_type (GTK_IMAGE (priv->logo_image)) == GTK_IMAGE_SURFACE)
+ g_value_set_object (value, gtk_image_get_surface (GTK_IMAGE (priv->logo_image)));
else
g_value_set_object (value, NULL);
break;
@@ -1807,15 +1810,15 @@ gtk_about_dialog_set_translator_credits (GtkAboutDialog *about,
* gtk_about_dialog_get_logo:
* @about: a #GtkAboutDialog
*
- * Returns the pixbuf displayed as logo in the about dialog.
+ * Returns the surface displayed as logo in the about dialog.
*
- * Returns: (transfer none): the pixbuf displayed as logo. The
- * pixbuf is owned by the about dialog. If you want to keep a
- * reference to it, you have to call g_object_ref() on it.
+ * Returns: (transfer none): the surface displayed as logo. The
+ * surface is owned by the about dialog. If you want to keep a
+ * reference to it, you have to call cairo_surface_reference() on it.
*
* Since: 2.6
*/
-GdkPixbuf *
+cairo_surface_t *
gtk_about_dialog_get_logo (GtkAboutDialog *about)
{
GtkAboutDialogPrivate *priv;
@@ -1824,8 +1827,8 @@ gtk_about_dialog_get_logo (GtkAboutDialog *about)
priv = about->priv;
- if (gtk_image_get_storage_type (GTK_IMAGE (priv->logo_image)) == GTK_IMAGE_PIXBUF)
- return gtk_image_get_pixbuf (GTK_IMAGE (priv->logo_image));
+ if (gtk_image_get_storage_type (GTK_IMAGE (priv->logo_image)) == GTK_IMAGE_SURFACE)
+ return gtk_image_get_surface (GTK_IMAGE (priv->logo_image));
else
return NULL;
}
@@ -1833,9 +1836,9 @@ gtk_about_dialog_get_logo (GtkAboutDialog *about)
/**
* gtk_about_dialog_set_logo:
* @about: a #GtkAboutDialog
- * @logo: (allow-none): a #GdkPixbuf, or %NULL
+ * @logo: (allow-none): a #cairo_surface_t, or %NULL
*
- * Sets the pixbuf to be displayed as logo in the about dialog.
+ * Sets the surface to be displayed as logo in the about dialog.
* If it is %NULL, the default window icon set with
* gtk_window_set_default_icon() will be used.
*
@@ -1843,7 +1846,7 @@ gtk_about_dialog_get_logo (GtkAboutDialog *about)
*/
void
gtk_about_dialog_set_logo (GtkAboutDialog *about,
- GdkPixbuf *logo)
+ cairo_surface_t *logo)
{
GtkAboutDialogPrivate *priv;
@@ -1857,17 +1860,17 @@ gtk_about_dialog_set_logo (GtkAboutDialog *about,
g_object_notify_by_pspec (G_OBJECT (about), props[PROP_LOGO_ICON_NAME]);
if (logo != NULL)
- gtk_image_set_from_pixbuf (GTK_IMAGE (priv->logo_image), logo);
+ gtk_image_set_from_surface (GTK_IMAGE (priv->logo_image), logo);
else
{
- GList *pixbufs = gtk_window_get_default_icon_list ();
+ GList *surfaces = gtk_window_get_default_icon_list ();
- if (pixbufs != NULL)
+ if (surfaces != NULL)
{
- gtk_image_set_from_pixbuf (GTK_IMAGE (priv->logo_image),
- GDK_PIXBUF (pixbufs->data));
+ gtk_image_set_from_surface (GTK_IMAGE (priv->logo_image),
+ (cairo_surface_t *) (surfaces->data));
- g_list_free (pixbufs);
+ g_list_free (surfaces);
}
}
@@ -1909,7 +1912,7 @@ gtk_about_dialog_get_logo_icon_name (GtkAboutDialog *about)
* @about: a #GtkAboutDialog
* @icon_name: (allow-none): an icon name, or %NULL
*
- * Sets the pixbuf to be displayed as logo in the about dialog.
+ * Sets the surface to be displayed as logo in the about dialog.
* If it is %NULL, the default window icon set with
* gtk_window_set_default_icon() will be used.
*
@@ -1928,7 +1931,7 @@ gtk_about_dialog_set_logo_icon_name (GtkAboutDialog *about,
g_object_freeze_notify (G_OBJECT (about));
- if (gtk_image_get_storage_type (GTK_IMAGE (priv->logo_image)) == GTK_IMAGE_PIXBUF)
+ if (gtk_image_get_storage_type (GTK_IMAGE (priv->logo_image)) == GTK_IMAGE_SURFACE)
g_object_notify_by_pspec (G_OBJECT (about), props[PROP_LOGO]);
if (icon_name)
@@ -1965,7 +1968,7 @@ gtk_about_dialog_set_logo_icon_name (GtkAboutDialog *about,
}
else if ((icons = gtk_window_get_default_icon_list ()))
{
- gtk_image_set_from_pixbuf (GTK_IMAGE (priv->logo_image), icons->data);
+ gtk_image_set_from_surface (GTK_IMAGE (priv->logo_image), icons->data);
g_list_free (icons);
}
else
diff --git a/gtk/gtkaboutdialog.h b/gtk/gtkaboutdialog.h
index 98a532e..7077413 100644
--- a/gtk/gtkaboutdialog.h
+++ b/gtk/gtkaboutdialog.h
@@ -198,10 +198,10 @@ GDK_AVAILABLE_IN_ALL
void gtk_about_dialog_set_translator_credits (GtkAboutDialog *about,
const gchar *translator_credits);
GDK_AVAILABLE_IN_ALL
-GdkPixbuf *gtk_about_dialog_get_logo (GtkAboutDialog *about);
+cairo_surface_t *gtk_about_dialog_get_logo (GtkAboutDialog *about);
GDK_AVAILABLE_IN_ALL
void gtk_about_dialog_set_logo (GtkAboutDialog *about,
- GdkPixbuf *logo);
+ cairo_surface_t *logo);
GDK_AVAILABLE_IN_ALL
const gchar * gtk_about_dialog_get_logo_icon_name (GtkAboutDialog *about);
GDK_AVAILABLE_IN_ALL
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]