[gimp] app: new gimp_extension_get_screenshot() screenshot.
- From: Jehan <jehanp src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: new gimp_extension_get_screenshot() screenshot.
- Date: Mon, 27 May 2019 15:31:54 +0000 (UTC)
commit cc7af306b67a96ca1f9444990af720d324f259c7
Author: Jehan <jehan girinstud io>
Date: Mon May 27 17:23:15 2019 +0200
app: new gimp_extension_get_screenshot() screenshot.
This first version of this API only returns the default screenshot.
Further improvements should allow to return all the available extension
screenshots.
app/core/gimpextension.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++
app/core/gimpextension.h | 4 ++++
2 files changed, 62 insertions(+)
---
diff --git a/app/core/gimpextension.c b/app/core/gimpextension.c
index 89f929b6a5..6bb3a1f25e 100644
--- a/app/core/gimpextension.c
+++ b/app/core/gimpextension.c
@@ -255,6 +255,64 @@ gimp_extension_get_description (GimpExtension *extension)
as_app_get_description (extension->p->app, NULL);
}
+GdkPixbuf *
+gimp_extension_get_screenshot (GimpExtension *extension,
+ gint width,
+ gint height,
+ const gchar **caption)
+{
+ GdkPixbuf *pixbuf = NULL;
+ AsScreenshot *screenshot;
+
+ g_return_val_if_fail (extension->p->app != NULL, NULL);
+
+ screenshot = as_app_get_screenshot_default (extension->p->app);
+ if (screenshot)
+ {
+ AsImage *image;
+
+ image = as_screenshot_get_image_for_locale (screenshot, g_getenv ("LANGUAGE"), width, height);
+ if (! image)
+ image = as_screenshot_get_image_for_locale (screenshot, NULL, width, height);
+
+ pixbuf = as_image_get_pixbuf (image);
+ if (pixbuf)
+ {
+ g_object_ref (pixbuf);
+ }
+ else
+ {
+ GFile *file;
+ GFileInputStream *istream;
+ GError *error = NULL;
+
+ file = g_file_new_for_uri (as_image_get_url (image));
+ istream = g_file_read (file, NULL, &error);
+ if (istream)
+ {
+ pixbuf = gdk_pixbuf_new_from_stream (G_INPUT_STREAM (istream), NULL, &error);
+ g_object_unref (istream);
+ }
+
+ if (error)
+ {
+ g_printerr ("%s: %s\n", G_STRFUNC, error->message);
+ g_error_free (error);
+ }
+ g_object_unref (file);
+ }
+
+ if (caption)
+ {
+ *caption = as_screenshot_get_caption (screenshot, g_getenv ("LANGUAGE"));
+ if (*caption == NULL)
+ *caption = as_screenshot_get_caption (screenshot, NULL);
+ }
+ }
+
+ return pixbuf;
+}
+
const gchar *
gimp_extension_get_path (GimpExtension *extension)
{
diff --git a/app/core/gimpextension.h b/app/core/gimpextension.h
index bfb3531cee..4d71be649b 100644
--- a/app/core/gimpextension.h
+++ b/app/core/gimpextension.h
@@ -55,6 +55,10 @@ GimpExtension * gimp_extension_new (const gchar *dir,
const gchar * gimp_extension_get_name (GimpExtension *extension);
const gchar * gimp_extension_get_comment (GimpExtension *extension);
const gchar * gimp_extension_get_description (GimpExtension *extension);
+GdkPixbuf * gimp_extension_get_screenshot (GimpExtension *extension,
+ gint width,
+ gint height,
+ const gchar **caption);
const gchar * gimp_extension_get_path (GimpExtension *extension);
gchar * gimp_extension_get_markup_description (GimpExtension *extension);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]