summaryrefslogtreecommitdiff
path: root/libappstream-glib/as-image.c
diff options
context:
space:
mode:
authorRichard Hughes <richard@hughsie.com>2014-05-16 15:02:03 +0100
committerRichard Hughes <richard@hughsie.com>2014-05-16 15:14:13 +0100
commite0748af5348fda0b61d158a7d5a7975296643e8e (patch)
tree34bda320d8dd95aad45d22e37118f8675612abaa /libappstream-glib/as-image.c
parent18a94a423484340a0e442b54bb89c819a68feb8f (diff)
downloadappstream-glib-e0748af5348fda0b61d158a7d5a7975296643e8e.tar.gz
Add as_image_get_basename()
Diffstat (limited to 'libappstream-glib/as-image.c')
-rw-r--r--libappstream-glib/as-image.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/libappstream-glib/as-image.c b/libappstream-glib/as-image.c
index 730da46..b2e88d3 100644
--- a/libappstream-glib/as-image.c
+++ b/libappstream-glib/as-image.c
@@ -44,6 +44,7 @@ struct _AsImagePrivate
AsImageKind kind;
gchar *url;
gchar *md5;
+ gchar *basename;
guint width;
guint height;
GdkPixbuf *pixbuf;
@@ -66,6 +67,7 @@ as_image_finalize (GObject *object)
g_object_unref (priv->pixbuf);
g_free (priv->url);
g_free (priv->md5);
+ g_free (priv->basename);
G_OBJECT_CLASS (as_image_parent_class)->finalize (object);
}
@@ -147,6 +149,23 @@ as_image_get_url (AsImage *image)
}
/**
+ * as_image_get_basename:
+ * @image: a #AsImage instance.
+ *
+ * Gets the suggested basename the image, including file extension.
+ *
+ * Returns: filename
+ *
+ * Since: 0.1.6
+ **/
+const gchar *
+as_image_get_basename (AsImage *image)
+{
+ AsImagePrivate *priv = GET_PRIVATE (image);
+ return priv->basename;
+}
+
+/**
* as_image_get_md5:
* @image: a #AsImage instance.
*
@@ -250,6 +269,23 @@ as_image_set_url (AsImage *image, const gchar *url, gssize url_len)
}
/**
+ * as_image_set_basename:
+ * @image: a #AsImage instance.
+ * @basename: the new filename basename.
+ *
+ * Sets the image basename filename.
+ *
+ * Since: 0.1.6
+ **/
+void
+as_image_set_basename (AsImage *image, const gchar *basename)
+{
+ AsImagePrivate *priv = GET_PRIVATE (image);
+ g_free (priv->basename);
+ priv->basename = g_strdup (basename);
+}
+
+/**
* as_image_set_width:
* @image: a #AsImage instance.
* @width: the width in pixels.
@@ -408,6 +444,9 @@ as_image_node_parse (AsImage *image, GNode *node, GError **error)
*
* Reads a pixbuf from a file.
*
+ * NOTE: This function also sets the suggested filename which can be retrieved
+ * using as_image_get_basename(). This can be overridden if required.
+ *
* Returns: %TRUE for success
*
* Since: 0.1.6
@@ -420,6 +459,7 @@ as_image_load_filename (AsImage *image,
AsImagePrivate *priv = GET_PRIVATE (image);
GdkPixbuf *pixbuf = NULL;
gboolean ret = TRUE;
+ gchar *basename = NULL;
gchar *data = NULL;
gsize len;
@@ -439,10 +479,13 @@ as_image_load_filename (AsImage *image,
}
/* set */
+ basename = g_path_get_basename (filename);
+ as_image_set_basename (image, basename);
as_image_set_pixbuf (image, pixbuf);
out:
if (pixbuf != NULL)
g_object_unref (pixbuf);
+ g_free (basename);
g_free (data);
return ret;
}