[gimp] libgimpbase: add support for arrays of object IDs to gimpprotocol
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] libgimpbase: add support for arrays of object IDs to gimpprotocol
- Date: Thu, 5 Sep 2019 11:01:38 +0000 (UTC)
commit 85591eb799822c5758623ac3d97325ac63cbe78c
Author: Michael Natterer <mitch gimp org>
Date: Thu Sep 5 11:34:54 2019 +0200
libgimpbase: add support for arrays of object IDs to gimpprotocol
libgimpbase/gimpprotocol.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++
libgimpbase/gimpprotocol.h | 20 ++++++++++++++-
2 files changed, 81 insertions(+), 1 deletion(-)
---
diff --git a/libgimpbase/gimpprotocol.c b/libgimpbase/gimpprotocol.c
index b3c5175c07..bc35fe0fca 100644
--- a/libgimpbase/gimpprotocol.c
+++ b/libgimpbase/gimpprotocol.c
@@ -1133,6 +1133,13 @@ _gp_param_def_read (GIOChannel *channel,
return FALSE;
break;
+ case GP_PARAM_DEF_TYPE_ID_ARRAY:
+ if (! _gimp_wire_read_string (channel,
+ ¶m_def->meta.m_id_array.type_name, 1,
+ user_data))
+ return FALSE;
+ break;
+
case GP_PARAM_DEF_TYPE_PARAM_DEF:
if (! _gimp_wire_read_string (channel,
¶m_def->meta.m_param_def.type_name, 1,
@@ -1175,6 +1182,10 @@ _gp_param_def_destroy (GPParamDef *param_def)
case GP_PARAM_DEF_TYPE_ID:
break;
+ case GP_PARAM_DEF_TYPE_ID_ARRAY:
+ g_free (param_def->meta.m_id_array.type_name);
+ break;
+
case GP_PARAM_DEF_TYPE_PARAM_DEF:
g_free (param_def->meta.m_param_def.type_name);
break;
@@ -1411,6 +1422,13 @@ _gp_param_def_write (GIOChannel *channel,
return FALSE;
break;
+ case GP_PARAM_DEF_TYPE_ID_ARRAY:
+ if (! _gimp_wire_write_string (channel,
+ ¶m_def->meta.m_id_array.type_name, 1,
+ user_data))
+ return FALSE;
+ break;
+
case GP_PARAM_DEF_TYPE_PARAM_DEF:
if (! _gimp_wire_write_string (channel,
¶m_def->meta.m_param_def.type_name, 1,
@@ -1704,6 +1722,31 @@ _gp_params_read (GIOChannel *channel,
}
break;
+ case GP_PARAM_TYPE_ID_ARRAY:
+ if (! _gimp_wire_read_string (channel,
+ &(*params)[i].data.d_id_array.type_name, 1,
+ user_data))
+ goto cleanup;
+
+ if (! _gimp_wire_read_int32 (channel,
+ &(*params)[i].data.d_id_array.size, 1,
+ user_data))
+ goto cleanup;
+
+ (*params)[i].data.d_id_array.data = g_new0 (gint32,
+ (*params)[i].data.d_id_array.size);
+
+ if (! _gimp_wire_read_int32 (channel,
+ (guint32 *) (*params)[i].data.d_id_array.data,
+ (*params)[i].data.d_id_array.size,
+ user_data))
+ {
+ g_free ((*params)[i].data.d_id_array.data);
+ (*params)[i].data.d_id_array.data = NULL;
+ goto cleanup;
+ }
+ break;
+
case GP_PARAM_TYPE_PARASITE:
if (! _gimp_wire_read_string (channel,
&(*params)[i].data.d_parasite.name, 1,
@@ -1833,6 +1876,20 @@ _gp_params_write (GIOChannel *channel,
return;
break;
+ case GP_PARAM_TYPE_ID_ARRAY:
+ if (! _gimp_wire_write_string (channel,
+ ¶ms[i].data.d_id_array.type_name, 1,
+ user_data) ||
+ ! _gimp_wire_write_int32 (channel,
+ (const guint32 *) ¶ms[i].data.d_id_array.size, 1,
+ user_data) ||
+ ! _gimp_wire_write_int32 (channel,
+ (const guint32 *) params[i].data.d_id_array.data,
+ params[i].data.d_id_array.size,
+ user_data))
+ return;
+ break;
+
case GP_PARAM_TYPE_PARASITE:
{
GimpParasite *p = ¶ms[i].data.d_parasite;
@@ -1909,6 +1966,11 @@ _gp_params_destroy (GPParam *params,
}
break;
+ case GP_PARAM_TYPE_ID_ARRAY:
+ g_free (params[i].data.d_id_array.type_name);
+ g_free (params[i].data.d_id_array.data);
+ break;
+
case GP_PARAM_TYPE_PARASITE:
if (params[i].data.d_parasite.name)
g_free (params[i].data.d_parasite.name);
diff --git a/libgimpbase/gimpprotocol.h b/libgimpbase/gimpprotocol.h
index 35a45da96e..81405097ef 100644
--- a/libgimpbase/gimpprotocol.h
+++ b/libgimpbase/gimpprotocol.h
@@ -57,6 +57,7 @@ typedef enum
GP_PARAM_DEF_TYPE_STRING,
GP_PARAM_DEF_TYPE_COLOR,
GP_PARAM_DEF_TYPE_ID,
+ GP_PARAM_DEF_TYPE_ID_ARRAY,
GP_PARAM_DEF_TYPE_PARAM_DEF
} GPParamDefType;
@@ -69,6 +70,7 @@ typedef enum
GP_PARAM_TYPE_PARASITE,
GP_PARAM_TYPE_ARRAY,
GP_PARAM_TYPE_STRING_ARRAY,
+ GP_PARAM_TYPE_ID_ARRAY,
GP_PARAM_TYPE_PARAM_DEF
} GPParamType;
@@ -86,10 +88,12 @@ typedef struct _GPParamDefFloat GPParamDefFloat;
typedef struct _GPParamDefString GPParamDefString;
typedef struct _GPParamDefColor GPParamDefColor;
typedef struct _GPParamDefID GPParamDefID;
+typedef struct _GPParamDefIDArray GPParamDefIDArray;
typedef struct _GPParamDefParamDef GPParamDefParamDef;
typedef struct _GPParam GPParam;
typedef struct _GPParamArray GPParamArray;
typedef struct _GPParamStringArray GPParamStringArray;
+typedef struct _GPParamIDArray GPParamIDArray;
typedef struct _GPProcRun GPProcRun;
typedef struct _GPProcReturn GPProcReturn;
typedef struct _GPProcInstall GPProcInstall;
@@ -175,7 +179,7 @@ struct _GPParamDefFloat
struct _GPParamDefString
{
- gchar *default_val;
+ gchar *default_val;
};
struct _GPParamDefColor
@@ -189,6 +193,11 @@ struct _GPParamDefID
gint32 none_ok;
};
+struct _GPParamDefIDArray
+{
+ gchar *type_name;
+};
+
struct _GPParamDefParamDef
{
gchar *type_name;
@@ -213,6 +222,7 @@ struct _GPParamDef
GPParamDefString m_string;
GPParamDefColor m_color;
GPParamDefID m_id;
+ GPParamDefIDArray m_id_array;
GPParamDefParamDef m_param_def;
} meta;
};
@@ -229,6 +239,13 @@ struct _GPParamStringArray
gchar **data;
};
+struct _GPParamIDArray
+{
+ gchar *type_name;
+ guint32 size;
+ gint32 *data;
+};
+
struct _GPParam
{
GPParamType param_type;
@@ -243,6 +260,7 @@ struct _GPParam
GimpParasite d_parasite;
GPParamArray d_array;
GPParamStringArray d_string_array;
+ GPParamIDArray d_id_array;
GPParamDef d_param_def;
} data;
};
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]