[gdk-pixbuf] Add non-varargs versions of methods to save to stream
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gdk-pixbuf] Add non-varargs versions of methods to save to stream
- Date: Wed, 6 Apr 2016 17:05:42 +0000 (UTC)
commit c53c4701ef185e95a4905926aa7b31b110a85b15
Author: Cosimo Cecchi <cosimoc gnome org>
Date: Thu Aug 30 15:48:25 2012 -0400
Add non-varargs versions of methods to save to stream
This is useful when the set of options you want to use changes according
to specific conditions, and makes the stream-based API consistent with
the others.
https://bugzilla.gnome.org/show_bug.cgi?id=683063
docs/reference/gdk-pixbuf/gdk-pixbuf-sections.txt | 2 +
gdk-pixbuf/gdk-pixbuf-core.h | 17 +++
gdk-pixbuf/gdk-pixbuf-io.c | 149 ++++++++++++++++-----
gdk-pixbuf/gdk-pixbuf.symbols | 2 +
4 files changed, 136 insertions(+), 34 deletions(-)
---
diff --git a/docs/reference/gdk-pixbuf/gdk-pixbuf-sections.txt
b/docs/reference/gdk-pixbuf/gdk-pixbuf-sections.txt
index 274e9dd..d4a4100 100644
--- a/docs/reference/gdk-pixbuf/gdk-pixbuf-sections.txt
+++ b/docs/reference/gdk-pixbuf/gdk-pixbuf-sections.txt
@@ -91,7 +91,9 @@ gdk_pixbuf_save_to_callbackv
gdk_pixbuf_save_to_buffer
gdk_pixbuf_save_to_bufferv
gdk_pixbuf_save_to_stream
+gdk_pixbuf_save_to_streamv
gdk_pixbuf_save_to_stream_async
+gdk_pixbuf_save_to_streamv_async
gdk_pixbuf_save_to_stream_finish
</SECTION>
diff --git a/gdk-pixbuf/gdk-pixbuf-core.h b/gdk-pixbuf/gdk-pixbuf-core.h
index 5d41a15..2f67bd4 100644
--- a/gdk-pixbuf/gdk-pixbuf-core.h
+++ b/gdk-pixbuf/gdk-pixbuf-core.h
@@ -449,6 +449,23 @@ void gdk_pixbuf_save_to_stream_async (GdkPixbuf *pixbuf,
gboolean gdk_pixbuf_save_to_stream_finish (GAsyncResult *async_result,
GError **error);
+void gdk_pixbuf_save_to_streamv_async (GdkPixbuf *pixbuf,
+ GOutputStream *stream,
+ const gchar *type,
+ gchar **option_keys,
+ gchar **option_values,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean gdk_pixbuf_save_to_streamv (GdkPixbuf *pixbuf,
+ GOutputStream *stream,
+ const char *type,
+ char **option_keys,
+ char **option_values,
+ GCancellable *cancellable,
+ GError **error);
+
/* Adding an alpha channel */
GdkPixbuf *gdk_pixbuf_add_alpha (const GdkPixbuf *pixbuf, gboolean substitute_color,
guchar r, guchar g, guchar b);
diff --git a/gdk-pixbuf/gdk-pixbuf-io.c b/gdk-pixbuf/gdk-pixbuf-io.c
index 66beafd..3b84084 100644
--- a/gdk-pixbuf/gdk-pixbuf-io.c
+++ b/gdk-pixbuf/gdk-pixbuf-io.c
@@ -2874,7 +2874,47 @@ save_to_stream (const gchar *buffer,
return TRUE;
}
-/**
+/**
+ * gdk_pixbuf_save_to_streamv:
+ * @pixbuf: a #GdkPixbuf
+ * @stream: a #GOutputStream to save the pixbuf to
+ * @type: name of file format
+ * @option_keys: (array zero-terminated=1): name of options to set, %NULL-terminated
+ * @option_values: (array zero-terminated=1): values for named options
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore
+ * @error: (allow-none): return location for error, or %NULL
+ *
+ * Saves @pixbuf to an output stream.
+ *
+ * Supported file formats are currently "jpeg", "tiff", "png", "ico" or
+ * "bmp". See gdk_pixbuf_save_to_stream() for more details.
+ *
+ * Returns: %TRUE if the pixbuf was saved successfully, %FALSE if an
+ * error was set.
+ *
+ * Since: 2.36
+ */
+gboolean
+gdk_pixbuf_save_to_streamv (GdkPixbuf *pixbuf,
+ GOutputStream *stream,
+ const char *type,
+ char **option_keys,
+ char **option_values,
+ GCancellable *cancellable,
+ GError **error)
+{
+ SaveToStreamData data;
+
+ data.stream = stream;
+ data.cancellable = cancellable;
+
+ return gdk_pixbuf_save_to_callbackv (pixbuf, save_to_stream,
+ &data, type,
+ option_keys, option_values,
+ error);
+}
+
+/**
* gdk_pixbuf_save_to_stream:
* @pixbuf: a #GdkPixbuf
* @stream: a #GOutputStream to save the pixbuf to
@@ -2912,19 +2952,14 @@ gdk_pixbuf_save_to_stream (GdkPixbuf *pixbuf,
gchar **keys = NULL;
gchar **values = NULL;
va_list args;
- SaveToStreamData data;
va_start (args, error);
collect_save_options (args, &keys, &values);
va_end (args);
- data.stream = stream;
- data.cancellable = cancellable;
-
- res = gdk_pixbuf_save_to_callbackv (pixbuf, save_to_stream,
- &data, type,
- keys, values,
- error);
+ res = gdk_pixbuf_save_to_streamv (pixbuf, stream, type,
+ keys, values,
+ cancellable, error);
g_strfreev (keys);
g_strfreev (values);
@@ -2976,6 +3011,59 @@ save_to_stream_thread (GTask *task,
}
/**
+ * gdk_pixbuf_save_to_streamv_async:
+ * @pixbuf: a #GdkPixbuf
+ * @stream: a #GOutputStream to which to save the pixbuf
+ * @type: name of file format
+ * @option_keys: (array zero-terminated=1): name of options to set, %NULL-terminated
+ * @option_values: (array zero-terminated=1): values for named options
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore
+ * @callback: a #GAsyncReadyCallback to call when the the pixbuf is loaded
+ * @user_data: the data to pass to the callback function
+ *
+ * Saves @pixbuf to an output stream asynchronously.
+ *
+ * For more details see gdk_pixbuf_save_to_streamv(), which is the synchronous
+ * version of this function.
+ *
+ * When the operation is finished, @callback will be called in the main thread.
+ * You can then call gdk_pixbuf_save_to_stream_finish() to get the result of the operation.
+ *
+ * Since: 2.36
+ **/
+void
+gdk_pixbuf_save_to_streamv_async (GdkPixbuf *pixbuf,
+ GOutputStream *stream,
+ const gchar *type,
+ gchar **option_keys,
+ gchar **option_values,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GTask *task;
+ SaveToStreamAsyncData *data;
+
+ g_return_if_fail (GDK_IS_PIXBUF (pixbuf));
+ g_return_if_fail (G_IS_OUTPUT_STREAM (stream));
+ g_return_if_fail (type != NULL);
+ g_return_if_fail (callback != NULL);
+ g_return_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable));
+
+ data = g_slice_new (SaveToStreamAsyncData);
+ data->stream = g_object_ref (stream);
+ data->type = g_strdup (type);
+ data->keys = g_strdupv (option_keys);
+ data->values = g_strdupv (option_values);
+
+ task = g_task_new (pixbuf, cancellable, callback, user_data);
+ g_task_set_source_tag (task, gdk_pixbuf_save_to_streamv_async);
+ g_task_set_task_data (task, data, (GDestroyNotify) save_to_stream_async_data_free);
+ g_task_run_in_thread (task, (GTaskThreadFunc) save_to_stream_thread);
+ g_object_unref (task);
+}
+
+/**
* gdk_pixbuf_save_to_stream_async:
* @pixbuf: a #GdkPixbuf
* @stream: a #GOutputStream to which to save the pixbuf
@@ -3004,33 +3092,25 @@ gdk_pixbuf_save_to_stream_async (GdkPixbuf *pixbuf,
gpointer user_data,
...)
{
- GTask *task;
- gchar **keys = NULL;
- gchar **values = NULL;
- va_list args;
- SaveToStreamAsyncData *data;
-
- g_return_if_fail (GDK_IS_PIXBUF (pixbuf));
- g_return_if_fail (G_IS_OUTPUT_STREAM (stream));
- g_return_if_fail (type != NULL);
- g_return_if_fail (callback != NULL);
- g_return_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable));
+ gchar **keys = NULL;
+ gchar **values = NULL;
+ va_list args;
- va_start (args, user_data);
- collect_save_options (args, &keys, &values);
- va_end (args);
+ g_return_if_fail (GDK_IS_PIXBUF (pixbuf));
+ g_return_if_fail (G_IS_OUTPUT_STREAM (stream));
+ g_return_if_fail (type != NULL);
+ g_return_if_fail (callback != NULL);
+ g_return_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable));
- data = g_slice_new (SaveToStreamAsyncData);
- data->stream = g_object_ref (stream);
- data->type = g_strdup (type);
- data->keys = keys;
- data->values = values;
+ va_start (args, user_data);
+ collect_save_options (args, &keys, &values);
+ va_end (args);
- task = g_task_new (pixbuf, cancellable, callback, user_data);
- g_task_set_source_tag (task, gdk_pixbuf_save_to_stream_async);
- g_task_set_task_data (task, data, (GDestroyNotify) save_to_stream_async_data_free);
- g_task_run_in_thread (task, (GTaskThreadFunc) save_to_stream_thread);
- g_object_unref (task);
+ gdk_pixbuf_save_to_streamv_async (pixbuf, stream, type,
+ keys, values,
+ cancellable, callback, user_data);
+ g_strfreev (keys);
+ g_strfreev (values);
}
/**
@@ -3059,7 +3139,8 @@ gdk_pixbuf_save_to_stream_finish (GAsyncResult *async_result,
task = G_TASK (async_result);
g_return_val_if_fail (!error || (error && !*error), FALSE);
- g_warn_if_fail (g_task_get_source_tag (task) == gdk_pixbuf_save_to_stream_async);
+ g_warn_if_fail (g_task_get_source_tag (task) == gdk_pixbuf_save_to_stream_async ||
+ g_task_get_source_tag (task) == gdk_pixbuf_save_to_streamv_async);
return g_task_propagate_boolean (task, error);
}
diff --git a/gdk-pixbuf/gdk-pixbuf.symbols b/gdk-pixbuf/gdk-pixbuf.symbols
index 1532535..0d2c280 100644
--- a/gdk-pixbuf/gdk-pixbuf.symbols
+++ b/gdk-pixbuf/gdk-pixbuf.symbols
@@ -82,6 +82,8 @@ gdk_pixbuf_savev_utf8
gdk_pixbuf_save_to_stream
gdk_pixbuf_save_to_stream_async
gdk_pixbuf_save_to_stream_finish
+gdk_pixbuf_save_to_streamv
+gdk_pixbuf_save_to_streamv_async
#endif
#endif
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]