[gimp] app, pdb, libgimp: add PDB API for layer blend space and compositing space
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app, pdb, libgimp: add PDB API for layer blend space and compositing space
- Date: Mon, 20 Feb 2017 00:18:16 +0000 (UTC)
commit 1dd2c52ed3bfe32023b38586f13baca65c2674d8
Author: Michael Natterer <mitch gimp org>
Date: Mon Feb 20 01:17:07 2017 +0100
app, pdb, libgimp: add PDB API for layer blend space and compositing space
app/operations/operations-enums.h | 4 +-
app/pdb/internal-procs.c | 2 +-
app/pdb/layer-cmds.c | 226 +++++++++++++++++++++++++++++++++++++
libgimp/gimp.def | 5 +
libgimp/gimpenums.c.tail | 2 +
libgimp/gimpenums.h | 12 ++
libgimp/gimplayer_pdb.c | 132 +++++++++++++++++++++
libgimp/gimplayer_pdb.h | 6 +
tools/pdbgen/enums.pl | 10 ++
tools/pdbgen/pdb/layer.pdb | 96 ++++++++++++++++
10 files changed, 492 insertions(+), 3 deletions(-)
---
diff --git a/app/operations/operations-enums.h b/app/operations/operations-enums.h
index 0d05799..011e17e 100644
--- a/app/operations/operations-enums.h
+++ b/app/operations/operations-enums.h
@@ -25,12 +25,12 @@
GType gimp_layer_color_space_get_type (void) G_GNUC_CONST;
-typedef enum /*< pdb-skip >*/
+typedef enum
{
GIMP_LAYER_COLOR_SPACE_AUTO, /*< desc="Auto" >*/
GIMP_LAYER_COLOR_SPACE_RGB_LINEAR, /*< desc="RGB (linear)" >*/
GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL, /*< desc="RGB (perceptual)" >*/
- GIMP_LAYER_COLOR_SPACE_LAB, /*< desc="LAB" >*/
+ GIMP_LAYER_COLOR_SPACE_LAB, /*< desc="LAB", pdb-skip >*/
} GimpLayerColorSpace;
diff --git a/app/pdb/internal-procs.c b/app/pdb/internal-procs.c
index ff75522..ebb1a62 100644
--- a/app/pdb/internal-procs.c
+++ b/app/pdb/internal-procs.c
@@ -28,7 +28,7 @@
#include "internal-procs.h"
-/* 804 procedures registered total */
+/* 808 procedures registered total */
void
internal_procs_init (GimpPDB *pdb)
diff --git a/app/pdb/layer-cmds.c b/app/pdb/layer-cmds.c
index b1ee60d..6739b50 100644
--- a/app/pdb/layer-cmds.c
+++ b/app/pdb/layer-cmds.c
@@ -1164,6 +1164,112 @@ layer_set_mode_invoker (GimpProcedure *procedure,
}
static GimpValueArray *
+layer_get_blend_space_invoker (GimpProcedure *procedure,
+ Gimp *gimp,
+ GimpContext *context,
+ GimpProgress *progress,
+ const GimpValueArray *args,
+ GError **error)
+{
+ gboolean success = TRUE;
+ GimpValueArray *return_vals;
+ GimpLayer *layer;
+ gint32 blend_space = 0;
+
+ layer = gimp_value_get_layer (gimp_value_array_index (args, 0), gimp);
+
+ if (success)
+ {
+ blend_space = gimp_layer_get_blend_space (layer);
+ }
+
+ return_vals = gimp_procedure_get_return_values (procedure, success,
+ error ? *error : NULL);
+
+ if (success)
+ g_value_set_enum (gimp_value_array_index (return_vals, 1), blend_space);
+
+ return return_vals;
+}
+
+static GimpValueArray *
+layer_set_blend_space_invoker (GimpProcedure *procedure,
+ Gimp *gimp,
+ GimpContext *context,
+ GimpProgress *progress,
+ const GimpValueArray *args,
+ GError **error)
+{
+ gboolean success = TRUE;
+ GimpLayer *layer;
+ gint32 blend_space;
+
+ layer = gimp_value_get_layer (gimp_value_array_index (args, 0), gimp);
+ blend_space = g_value_get_enum (gimp_value_array_index (args, 1));
+
+ if (success)
+ {
+ gimp_layer_set_blend_space (layer, blend_space, TRUE);
+ }
+
+ return gimp_procedure_get_return_values (procedure, success,
+ error ? *error : NULL);
+}
+
+static GimpValueArray *
+layer_get_composite_space_invoker (GimpProcedure *procedure,
+ Gimp *gimp,
+ GimpContext *context,
+ GimpProgress *progress,
+ const GimpValueArray *args,
+ GError **error)
+{
+ gboolean success = TRUE;
+ GimpValueArray *return_vals;
+ GimpLayer *layer;
+ gint32 composite_space = 0;
+
+ layer = gimp_value_get_layer (gimp_value_array_index (args, 0), gimp);
+
+ if (success)
+ {
+ composite_space = gimp_layer_get_composite_space (layer);
+ }
+
+ return_vals = gimp_procedure_get_return_values (procedure, success,
+ error ? *error : NULL);
+
+ if (success)
+ g_value_set_enum (gimp_value_array_index (return_vals, 1), composite_space);
+
+ return return_vals;
+}
+
+static GimpValueArray *
+layer_set_composite_space_invoker (GimpProcedure *procedure,
+ Gimp *gimp,
+ GimpContext *context,
+ GimpProgress *progress,
+ const GimpValueArray *args,
+ GError **error)
+{
+ gboolean success = TRUE;
+ GimpLayer *layer;
+ gint32 composite_space;
+
+ layer = gimp_value_get_layer (gimp_value_array_index (args, 0), gimp);
+ composite_space = g_value_get_enum (gimp_value_array_index (args, 1));
+
+ if (success)
+ {
+ gimp_layer_set_composite_space (layer, composite_space, TRUE);
+ }
+
+ return gimp_procedure_get_return_values (procedure, success,
+ error ? *error : NULL);
+}
+
+static GimpValueArray *
layer_get_composite_mode_invoker (GimpProcedure *procedure,
Gimp *gimp,
GimpContext *context,
@@ -2250,6 +2356,126 @@ register_layer_procs (GimpPDB *pdb)
g_object_unref (procedure);
/*
+ * gimp-layer-get-blend-space
+ */
+ procedure = gimp_procedure_new (layer_get_blend_space_invoker);
+ gimp_object_set_static_name (GIMP_OBJECT (procedure),
+ "gimp-layer-get-blend-space");
+ gimp_procedure_set_static_strings (procedure,
+ "gimp-layer-get-blend-space",
+ "Get the blend space of the specified layer.",
+ "This procedure returns the specified layer's blend space.",
+ "Ell",
+ "Ell",
+ "2017",
+ NULL);
+ gimp_procedure_add_argument (procedure,
+ gimp_param_spec_layer_id ("layer",
+ "layer",
+ "The layer",
+ pdb->gimp, FALSE,
+ GIMP_PARAM_READWRITE));
+ gimp_procedure_add_return_value (procedure,
+ g_param_spec_enum ("blend-space",
+ "blend space",
+ "The layer blend space",
+ GIMP_TYPE_LAYER_COLOR_SPACE,
+ GIMP_LAYER_COLOR_SPACE_AUTO,
+ GIMP_PARAM_READWRITE));
+ gimp_pdb_register_procedure (pdb, procedure);
+ g_object_unref (procedure);
+
+ /*
+ * gimp-layer-set-blend-space
+ */
+ procedure = gimp_procedure_new (layer_set_blend_space_invoker);
+ gimp_object_set_static_name (GIMP_OBJECT (procedure),
+ "gimp-layer-set-blend-space");
+ gimp_procedure_set_static_strings (procedure,
+ "gimp-layer-set-blend-space",
+ "Set the blend space of the specified layer.",
+ "This procedure sets the specified layer's blend space.",
+ "Ell",
+ "Ell",
+ "2017",
+ NULL);
+ gimp_procedure_add_argument (procedure,
+ gimp_param_spec_layer_id ("layer",
+ "layer",
+ "The layer",
+ pdb->gimp, FALSE,
+ GIMP_PARAM_READWRITE));
+ gimp_procedure_add_argument (procedure,
+ g_param_spec_enum ("blend-space",
+ "blend space",
+ "The new layer blend space",
+ GIMP_TYPE_LAYER_COLOR_SPACE,
+ GIMP_LAYER_COLOR_SPACE_AUTO,
+ GIMP_PARAM_READWRITE));
+ gimp_pdb_register_procedure (pdb, procedure);
+ g_object_unref (procedure);
+
+ /*
+ * gimp-layer-get-composite-space
+ */
+ procedure = gimp_procedure_new (layer_get_composite_space_invoker);
+ gimp_object_set_static_name (GIMP_OBJECT (procedure),
+ "gimp-layer-get-composite-space");
+ gimp_procedure_set_static_strings (procedure,
+ "gimp-layer-get-composite-space",
+ "Get the composite space of the specified layer.",
+ "This procedure returns the specified layer's composite space.",
+ "Ell",
+ "Ell",
+ "2017",
+ NULL);
+ gimp_procedure_add_argument (procedure,
+ gimp_param_spec_layer_id ("layer",
+ "layer",
+ "The layer",
+ pdb->gimp, FALSE,
+ GIMP_PARAM_READWRITE));
+ gimp_procedure_add_return_value (procedure,
+ g_param_spec_enum ("composite-space",
+ "composite space",
+ "The layer composite space",
+ GIMP_TYPE_LAYER_COLOR_SPACE,
+ GIMP_LAYER_COLOR_SPACE_AUTO,
+ GIMP_PARAM_READWRITE));
+ gimp_pdb_register_procedure (pdb, procedure);
+ g_object_unref (procedure);
+
+ /*
+ * gimp-layer-set-composite-space
+ */
+ procedure = gimp_procedure_new (layer_set_composite_space_invoker);
+ gimp_object_set_static_name (GIMP_OBJECT (procedure),
+ "gimp-layer-set-composite-space");
+ gimp_procedure_set_static_strings (procedure,
+ "gimp-layer-set-composite-space",
+ "Set the composite space of the specified layer.",
+ "This procedure sets the specified layer's composite space.",
+ "Ell",
+ "Ell",
+ "2017",
+ NULL);
+ gimp_procedure_add_argument (procedure,
+ gimp_param_spec_layer_id ("layer",
+ "layer",
+ "The layer",
+ pdb->gimp, FALSE,
+ GIMP_PARAM_READWRITE));
+ gimp_procedure_add_argument (procedure,
+ g_param_spec_enum ("composite-space",
+ "composite space",
+ "The new layer composite space",
+ GIMP_TYPE_LAYER_COLOR_SPACE,
+ GIMP_LAYER_COLOR_SPACE_AUTO,
+ GIMP_PARAM_READWRITE));
+ gimp_pdb_register_procedure (pdb, procedure);
+ g_object_unref (procedure);
+
+ /*
* gimp-layer-get-composite-mode
*/
procedure = gimp_procedure_new (layer_get_composite_mode_invoker);
diff --git a/libgimp/gimp.def b/libgimp/gimp.def
index f7eecdb..468f6e7 100644
--- a/libgimp/gimp.def
+++ b/libgimp/gimp.def
@@ -590,13 +590,16 @@ EXPORTS
gimp_item_transform_shear
gimp_layer_add_alpha
gimp_layer_add_mask
+ gimp_layer_color_space_get_type
gimp_layer_composite_mode_get_type
gimp_layer_copy
gimp_layer_create_mask
gimp_layer_flatten
gimp_layer_from_mask
gimp_layer_get_apply_mask
+ gimp_layer_get_blend_space
gimp_layer_get_composite_mode
+ gimp_layer_get_composite_space
gimp_layer_get_edit_mask
gimp_layer_get_lock_alpha
gimp_layer_get_mask
@@ -618,7 +621,9 @@ EXPORTS
gimp_layer_scale
gimp_layer_scale_full
gimp_layer_set_apply_mask
+ gimp_layer_set_blend_space
gimp_layer_set_composite_mode
+ gimp_layer_set_composite_space
gimp_layer_set_edit_mask
gimp_layer_set_lock_alpha
gimp_layer_set_mode
diff --git a/libgimp/gimpenums.c.tail b/libgimp/gimpenums.c.tail
index d81f076..fb5a684 100644
--- a/libgimp/gimpenums.c.tail
+++ b/libgimp/gimpenums.c.tail
@@ -35,6 +35,7 @@ static const GimpGetTypeFunc get_type_funcs[] =
gimp_ink_blob_type_get_type,
gimp_interpolation_type_get_type,
gimp_join_style_get_type,
+ gimp_layer_color_space_get_type,
gimp_layer_composite_mode_get_type,
gimp_layer_mode_get_type,
gimp_mask_apply_mode_get_type,
@@ -100,6 +101,7 @@ static const gchar * const type_names[] =
"GimpInkBlobType",
"GimpInterpolationType",
"GimpJoinStyle",
+ "GimpLayerColorSpace",
"GimpLayerCompositeMode",
"GimpLayerMode",
"GimpMaskApplyMode",
diff --git a/libgimp/gimpenums.h b/libgimp/gimpenums.h
index 417e41b..2992042 100644
--- a/libgimp/gimpenums.h
+++ b/libgimp/gimpenums.h
@@ -63,6 +63,18 @@ typedef enum
} GimpHistogramChannel;
+#define GIMP_TYPE_LAYER_COLOR_SPACE (gimp_layer_color_space_get_type ())
+
+GType gimp_layer_color_space_get_type (void) G_GNUC_CONST;
+
+typedef enum
+{
+ GIMP_LAYER_COLOR_SPACE_AUTO,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
+} GimpLayerColorSpace;
+
+
#define GIMP_TYPE_LAYER_COMPOSITE_MODE (gimp_layer_composite_mode_get_type ())
GType gimp_layer_composite_mode_get_type (void) G_GNUC_CONST;
diff --git a/libgimp/gimplayer_pdb.c b/libgimp/gimplayer_pdb.c
index c06c219..38d146e 100644
--- a/libgimp/gimplayer_pdb.c
+++ b/libgimp/gimplayer_pdb.c
@@ -1154,6 +1154,138 @@ gimp_layer_set_mode (gint32 layer_ID,
}
/**
+ * gimp_layer_get_blend_space:
+ * @layer_ID: The layer.
+ *
+ * Get the blend space of the specified layer.
+ *
+ * This procedure returns the specified layer's blend space.
+ *
+ * Returns: The layer blend space.
+ *
+ * Since: 2.10
+ **/
+GimpLayerColorSpace
+gimp_layer_get_blend_space (gint32 layer_ID)
+{
+ GimpParam *return_vals;
+ gint nreturn_vals;
+ GimpLayerColorSpace blend_space = 0;
+
+ return_vals = gimp_run_procedure ("gimp-layer-get-blend-space",
+ &nreturn_vals,
+ GIMP_PDB_LAYER, layer_ID,
+ GIMP_PDB_END);
+
+ if (return_vals[0].data.d_status == GIMP_PDB_SUCCESS)
+ blend_space = return_vals[1].data.d_int32;
+
+ gimp_destroy_params (return_vals, nreturn_vals);
+
+ return blend_space;
+}
+
+/**
+ * gimp_layer_set_blend_space:
+ * @layer_ID: The layer.
+ * @blend_space: The new layer blend space.
+ *
+ * Set the blend space of the specified layer.
+ *
+ * This procedure sets the specified layer's blend space.
+ *
+ * Returns: TRUE on success.
+ *
+ * Since: 2.10
+ **/
+gboolean
+gimp_layer_set_blend_space (gint32 layer_ID,
+ GimpLayerColorSpace blend_space)
+{
+ GimpParam *return_vals;
+ gint nreturn_vals;
+ gboolean success = TRUE;
+
+ return_vals = gimp_run_procedure ("gimp-layer-set-blend-space",
+ &nreturn_vals,
+ GIMP_PDB_LAYER, layer_ID,
+ GIMP_PDB_INT32, blend_space,
+ GIMP_PDB_END);
+
+ success = return_vals[0].data.d_status == GIMP_PDB_SUCCESS;
+
+ gimp_destroy_params (return_vals, nreturn_vals);
+
+ return success;
+}
+
+/**
+ * gimp_layer_get_composite_space:
+ * @layer_ID: The layer.
+ *
+ * Get the composite space of the specified layer.
+ *
+ * This procedure returns the specified layer's composite space.
+ *
+ * Returns: The layer composite space.
+ *
+ * Since: 2.10
+ **/
+GimpLayerColorSpace
+gimp_layer_get_composite_space (gint32 layer_ID)
+{
+ GimpParam *return_vals;
+ gint nreturn_vals;
+ GimpLayerColorSpace composite_space = 0;
+
+ return_vals = gimp_run_procedure ("gimp-layer-get-composite-space",
+ &nreturn_vals,
+ GIMP_PDB_LAYER, layer_ID,
+ GIMP_PDB_END);
+
+ if (return_vals[0].data.d_status == GIMP_PDB_SUCCESS)
+ composite_space = return_vals[1].data.d_int32;
+
+ gimp_destroy_params (return_vals, nreturn_vals);
+
+ return composite_space;
+}
+
+/**
+ * gimp_layer_set_composite_space:
+ * @layer_ID: The layer.
+ * @composite_space: The new layer composite space.
+ *
+ * Set the composite space of the specified layer.
+ *
+ * This procedure sets the specified layer's composite space.
+ *
+ * Returns: TRUE on success.
+ *
+ * Since: 2.10
+ **/
+gboolean
+gimp_layer_set_composite_space (gint32 layer_ID,
+ GimpLayerColorSpace composite_space)
+{
+ GimpParam *return_vals;
+ gint nreturn_vals;
+ gboolean success = TRUE;
+
+ return_vals = gimp_run_procedure ("gimp-layer-set-composite-space",
+ &nreturn_vals,
+ GIMP_PDB_LAYER, layer_ID,
+ GIMP_PDB_INT32, composite_space,
+ GIMP_PDB_END);
+
+ success = return_vals[0].data.d_status == GIMP_PDB_SUCCESS;
+
+ gimp_destroy_params (return_vals, nreturn_vals);
+
+ return success;
+}
+
+/**
* gimp_layer_get_composite_mode:
* @layer_ID: The layer.
*
diff --git a/libgimp/gimplayer_pdb.h b/libgimp/gimplayer_pdb.h
index d88b21d..a4584f0 100644
--- a/libgimp/gimplayer_pdb.h
+++ b/libgimp/gimplayer_pdb.h
@@ -98,6 +98,12 @@ gboolean gimp_layer_set_opacity (gint32
GimpLayerMode gimp_layer_get_mode (gint32 layer_ID);
gboolean gimp_layer_set_mode (gint32 layer_ID,
GimpLayerMode mode);
+GimpLayerColorSpace gimp_layer_get_blend_space (gint32 layer_ID);
+gboolean gimp_layer_set_blend_space (gint32 layer_ID,
+ GimpLayerColorSpace blend_space);
+GimpLayerColorSpace gimp_layer_get_composite_space (gint32 layer_ID);
+gboolean gimp_layer_set_composite_space (gint32 layer_ID,
+ GimpLayerColorSpace composite_space);
GimpLayerCompositeMode gimp_layer_get_composite_mode (gint32 layer_ID);
gboolean gimp_layer_set_composite_mode (gint32 layer_ID,
GimpLayerCompositeMode composite_mode);
diff --git a/tools/pdbgen/enums.pl b/tools/pdbgen/enums.pl
index dcbeee5..c8ca66e 100644
--- a/tools/pdbgen/enums.pl
+++ b/tools/pdbgen/enums.pl
@@ -669,6 +669,16 @@ package Gimp::CodeGen::enums;
GIMP_COLOR_RENDERING_INTENT_SATURATION => '2',
GIMP_COLOR_RENDERING_INTENT_ABSOLUTE_COLORIMETRIC => '3' }
},
+ GimpLayerColorSpace =>
+ { contig => 1,
+ header => 'operations/operations-enums.h',
+ symbols => [ qw(GIMP_LAYER_COLOR_SPACE_AUTO
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
+ GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL) ],
+ mapping => { GIMP_LAYER_COLOR_SPACE_AUTO => '0',
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR => '1',
+ GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL => '2' }
+ },
GimpLayerCompositeMode =>
{ contig => 1,
header => 'operations/operations-enums.h',
diff --git a/tools/pdbgen/pdb/layer.pdb b/tools/pdbgen/pdb/layer.pdb
index c0623f1..f1ef394 100644
--- a/tools/pdbgen/pdb/layer.pdb
+++ b/tools/pdbgen/pdb/layer.pdb
@@ -1210,6 +1210,100 @@ CODE
);
}
+sub layer_get_blend_space {
+ $blurb = 'Get the blend space of the specified layer.';
+ $help = "This procedure returns the specified layer's blend space.";
+
+ &ell_pdb_misc('2017', '2.10');
+
+ @inargs = (
+ { name => 'layer', type => 'layer',
+ desc => 'The layer' }
+ );
+
+ @outargs = (
+ { name => 'blend_space', type => 'enum GimpLayerColorSpace',
+ desc => 'The layer blend space' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ blend_space = gimp_layer_get_blend_space (layer);
+}
+CODE
+ );
+}
+
+sub layer_set_blend_space {
+ $blurb = 'Set the blend space of the specified layer.';
+ $help = "This procedure sets the specified layer's blend space.";
+
+ &ell_pdb_misc('2017', '2.10');
+
+ @inargs = (
+ { name => 'layer', type => 'layer',
+ desc => 'The layer' },
+ { name => 'blend_space', type => 'enum GimpLayerColorSpace',
+ desc => 'The new layer blend space' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ gimp_layer_set_blend_space (layer, blend_space, TRUE);
+}
+CODE
+ );
+}
+
+sub layer_get_composite_space {
+ $blurb = 'Get the composite space of the specified layer.';
+ $help = "This procedure returns the specified layer's composite space.";
+
+ &ell_pdb_misc('2017', '2.10');
+
+ @inargs = (
+ { name => 'layer', type => 'layer',
+ desc => 'The layer' }
+ );
+
+ @outargs = (
+ { name => 'composite_space', type => 'enum GimpLayerColorSpace',
+ desc => 'The layer composite space' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ composite_space = gimp_layer_get_composite_space (layer);
+}
+CODE
+ );
+}
+
+sub layer_set_composite_space {
+ $blurb = 'Set the composite space of the specified layer.';
+ $help = "This procedure sets the specified layer's composite space.";
+
+ &ell_pdb_misc('2017', '2.10');
+
+ @inargs = (
+ { name => 'layer', type => 'layer',
+ desc => 'The layer' },
+ { name => 'composite_space', type => 'enum GimpLayerColorSpace',
+ desc => 'The new layer composite space' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ gimp_layer_set_composite_space (layer, composite_space, TRUE);
+}
+CODE
+ );
+}
+
sub layer_get_composite_mode {
$blurb = 'Get the composite mode of the specified layer.';
$help = "This procedure returns the specified layer's composite mode.";
@@ -1295,6 +1389,8 @@ CODE
layer_get_edit_mask layer_set_edit_mask
layer_get_opacity layer_set_opacity
layer_get_mode layer_set_mode
+ layer_get_blend_space layer_set_blend_space
+ layer_get_composite_space layer_set_composite_space
layer_get_composite_mode layer_set_composite_mode);
%exports = (app => [@procs], lib => [@procs]);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]