[gimp/wip/Jehan/classy-GIMP: 5/55] libgimp: create and use gimp_image_new_by_id().
- From: Jehan <jehanp src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp/wip/Jehan/classy-GIMP: 5/55] libgimp: create and use gimp_image_new_by_id().
- Date: Tue, 20 Aug 2019 10:18:21 +0000 (UTC)
commit 3fec1a59c07b0727edef278fc9713352a62c124f
Author: Jehan <jehan girinstud io>
Date: Mon Aug 12 11:18:05 2019 +0200
libgimp: create and use gimp_image_new_by_id().
Simpler than using g_object_new() in a bunch of places.
libgimp/gimpedit_pdb.c | 4 ++--
libgimp/gimpfileops_pdb.c | 2 +-
libgimp/gimpimage.c | 24 ++++++++++++++++++++++++
libgimp/gimpimage.h | 1 +
libgimp/gimpimage_pdb.c | 6 +++---
libgimp/gimpimagecombobox.c | 4 ++--
libgimp/gimpitem_pdb.c | 2 +-
libgimp/gimpitemcombobox.c | 2 +-
libgimp/gimpparamspecs.c | 2 +-
pdb/pdb.pl | 2 +-
10 files changed, 37 insertions(+), 12 deletions(-)
---
diff --git a/libgimp/gimpedit_pdb.c b/libgimp/gimpedit_pdb.c
index a7bf1f89ab..7b59d6bb94 100644
--- a/libgimp/gimpedit_pdb.c
+++ b/libgimp/gimpedit_pdb.c
@@ -263,7 +263,7 @@ gimp_edit_paste_as_new_image (void)
gimp_value_array_unref (args);
if (g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS)
- image = g_object_new (GIMP_TYPE_IMAGE, "id", gimp_value_array_index (return_vals, 1), NULL);
+ image = gimp_image_new_by_id (g_value_get_int (gimp_value_array_index (return_vals, 1)));
gimp_value_array_unref (return_vals);
@@ -500,7 +500,7 @@ gimp_edit_named_paste_as_new_image (const gchar *buffer_name)
gimp_value_array_unref (args);
if (g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS)
- image = g_object_new (GIMP_TYPE_IMAGE, "id", gimp_value_array_index (return_vals, 1), NULL);
+ image = gimp_image_new_by_id (g_value_get_int (gimp_value_array_index (return_vals, 1)));
gimp_value_array_unref (return_vals);
diff --git a/libgimp/gimpfileops_pdb.c b/libgimp/gimpfileops_pdb.c
index 14aaa1cd82..f6dc0ca92f 100644
--- a/libgimp/gimpfileops_pdb.c
+++ b/libgimp/gimpfileops_pdb.c
@@ -78,7 +78,7 @@ gimp_file_load (GimpRunMode run_mode,
gimp_value_array_unref (args);
if (g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS)
- image = g_object_new (GIMP_TYPE_IMAGE, "id", gimp_value_array_index (return_vals, 1), NULL);
+ image = gimp_image_new_by_id (g_value_get_int (gimp_value_array_index (return_vals, 1)));
gimp_value_array_unref (return_vals);
diff --git a/libgimp/gimpimage.c b/libgimp/gimpimage.c
index 20c39693ee..696a0f10cf 100644
--- a/libgimp/gimpimage.c
+++ b/libgimp/gimpimage.c
@@ -134,6 +134,30 @@ gimp_image_get_id (GimpImage *image)
return image->priv->id;
}
+/**
+ * gimp_image_new_by_id:
+ * @image_id: The image id.
+ *
+ * Returns: (nullable) (transfer full): a #GimpImage for @image_id or
+ * %NULL if @image_id does not represent a valid image.
+ *
+ * Since: 3.0
+ **/
+GimpImage *
+gimp_image_new_by_id (gint32 image_id)
+{
+ GimpImage *image;
+
+ image = g_object_new (GIMP_TYPE_IMAGE,
+ "id", image_id,
+ NULL);
+
+ if (! gimp_image_is_valid (image))
+ g_clear_object (&image);
+
+ return image;
+}
+
/**
* gimp_image_get_colormap:
* @image: The image.
diff --git a/libgimp/gimpimage.h b/libgimp/gimpimage.h
index f10f2e0ed8..ed19c8f073 100644
--- a/libgimp/gimpimage.h
+++ b/libgimp/gimpimage.h
@@ -66,6 +66,7 @@ struct _GimpImageClass
GType gimp_image_get_type (void) G_GNUC_CONST;
gint32 gimp_image_get_id (GimpImage *image);
+GimpImage * gimp_image_new_by_id (gint32 image_id);
guchar * gimp_image_get_colormap (GimpImage *image,
gint *num_colors);
diff --git a/libgimp/gimpimage_pdb.c b/libgimp/gimpimage_pdb.c
index aaa2899284..3b9dc85723 100644
--- a/libgimp/gimpimage_pdb.c
+++ b/libgimp/gimpimage_pdb.c
@@ -169,7 +169,7 @@ gimp_image_new (gint width,
gimp_value_array_unref (args);
if (g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS)
- image = g_object_new (GIMP_TYPE_IMAGE, "id", gimp_value_array_index (return_vals, 1), NULL);
+ image = gimp_image_new_by_id (g_value_get_int (gimp_value_array_index (return_vals, 1)));
gimp_value_array_unref (return_vals);
@@ -223,7 +223,7 @@ gimp_image_new_with_precision (gint width,
gimp_value_array_unref (args);
if (g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS)
- image = g_object_new (GIMP_TYPE_IMAGE, "id", gimp_value_array_index (return_vals, 1), NULL);
+ image = gimp_image_new_by_id (g_value_get_int (gimp_value_array_index (return_vals, 1)));
gimp_value_array_unref (return_vals);
@@ -263,7 +263,7 @@ gimp_image_duplicate (GimpImage *image)
gimp_value_array_unref (args);
if (g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS)
- new_image = g_object_new (GIMP_TYPE_IMAGE, "id", gimp_value_array_index (return_vals, 1), NULL);
+ new_image = gimp_image_new_by_id (g_value_get_int (gimp_value_array_index (return_vals, 1)));
gimp_value_array_unref (return_vals);
diff --git a/libgimp/gimpimagecombobox.c b/libgimp/gimpimagecombobox.c
index de6ee5ad97..f6c339ff4a 100644
--- a/libgimp/gimpimagecombobox.c
+++ b/libgimp/gimpimagecombobox.c
@@ -209,7 +209,7 @@ gimp_image_combo_box_model_add (GtkListStore *store,
{
GimpImage *image;
- image = g_object_new (GIMP_TYPE_IMAGE, "id", images[i], NULL);
+ image = gimp_image_new_by_id (images[i]);
if (! constraint || (* constraint) (image, data))
{
gchar *image_name = gimp_image_get_name (image);
@@ -286,7 +286,7 @@ gimp_image_combo_box_changed (GimpImageComboBox *combo_box)
{
GimpImage *image;
- image = g_object_new (GIMP_TYPE_IMAGE, "id", image_ID, NULL);
+ image = gimp_image_new_by_id (image_ID);
if (! gimp_image_is_valid (image))
{
GtkTreeModel *model;
diff --git a/libgimp/gimpitem_pdb.c b/libgimp/gimpitem_pdb.c
index 0b456a5d98..5fbbedcaff 100644
--- a/libgimp/gimpitem_pdb.c
+++ b/libgimp/gimpitem_pdb.c
@@ -110,7 +110,7 @@ gimp_item_get_image (gint32 item_ID)
gimp_value_array_unref (args);
if (g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS)
- image = g_object_new (GIMP_TYPE_IMAGE, "id", gimp_value_array_index (return_vals, 1), NULL);
+ image = gimp_image_new_by_id (g_value_get_int (gimp_value_array_index (return_vals, 1)));
gimp_value_array_unref (return_vals);
diff --git a/libgimp/gimpitemcombobox.c b/libgimp/gimpitemcombobox.c
index 413ceb54f7..d7c5021c0d 100644
--- a/libgimp/gimpitemcombobox.c
+++ b/libgimp/gimpitemcombobox.c
@@ -401,7 +401,7 @@ gimp_item_combo_box_populate (GimpIntComboBox *combo_box)
gint32 *items;
gint num_items;
- image = g_object_new (GIMP_TYPE_IMAGE, "id", images[i], NULL);
+ image = gimp_image_new_by_id (images[i]);
if (GIMP_IS_DRAWABLE_COMBO_BOX (combo_box) ||
GIMP_IS_LAYER_COMBO_BOX (combo_box))
diff --git a/libgimp/gimpparamspecs.c b/libgimp/gimpparamspecs.c
index 63a4239f50..f5e3062511 100644
--- a/libgimp/gimpparamspecs.c
+++ b/libgimp/gimpparamspecs.c
@@ -122,7 +122,7 @@ gimp_param_image_id_validate (GParamSpec *pspec,
if (ispec->none_ok && (image_id == 0 || image_id == -1))
return FALSE;
- image = g_object_new (GIMP_TYPE_IMAGE, "id", image_id, NULL);
+ image = gimp_image_new_by_id (image_id);
if (! gimp_image_is_valid (image))
{
value->data[0].v_int = -1;
diff --git a/pdb/pdb.pl b/pdb/pdb.pl
index 947fb92045..03fcfeb84c 100644
--- a/pdb/pdb.pl
+++ b/pdb/pdb.pl
@@ -166,7 +166,7 @@ package Gimp::CodeGen::pdb;
init_value => 'NULL',
out_annotate => '(transfer full)',
get_value_func => '$var = gimp_value_get_image ($value, gimp)',
- dup_value_func => '$var = g_object_new (GIMP_TYPE_IMAGE, \"id\", $value, NULL)',
+ dup_value_func => '$var = gimp_image_new_by_id (g_value_get_int ($value))',
set_value_func => 'gimp_value_set_image_id ($value, gimp_image_get_id ($var))',
take_value_func => 'gimp_value_set_image ($value, $var)',
convert_func => 'gimp_image_get_id ($var)',
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]