35
37
#include "core/gimplist.h"
36
38
#include "core/gimppattern.h"
38
static ProcRecord patterns_refresh_proc;
39
static ProcRecord patterns_get_list_proc;
40
static ProcRecord patterns_get_pattern_proc;
41
static ProcRecord patterns_get_pattern_data_proc;
44
register_patterns_procs (Gimp *gimp)
46
procedural_db_register (gimp, &patterns_refresh_proc);
47
procedural_db_register (gimp, &patterns_get_list_proc);
48
procedural_db_register (gimp, &patterns_get_pattern_proc);
49
procedural_db_register (gimp, &patterns_get_pattern_data_proc);
53
patterns_refresh_invoker (Gimp *gimp,
55
GimpProgress *progress,
58
gimp_data_factory_data_save (gimp->pattern_factory);
59
gimp_data_factory_data_init (gimp->pattern_factory, FALSE);
60
return procedural_db_return_args (&patterns_refresh_proc, TRUE);
63
static ProcRecord patterns_refresh_proc =
65
"gimp_patterns_refresh",
66
"Refresh current patterns. This function always succeeds.",
67
"This procedure retrieves all patterns currently in the user's pattern path and updates all pattern dialogs accordingly.",
77
{ { patterns_refresh_invoker } }
81
patterns_get_list_invoker (Gimp *gimp,
83
GimpProgress *progress,
40
#include "internal_procs.h"
44
patterns_refresh_invoker (GimpProcedure *procedure,
47
GimpProgress *progress,
48
const GValueArray *args)
50
gimp_data_factory_data_refresh (gimp->pattern_factory);
51
return gimp_procedure_get_return_values (procedure, TRUE);
55
patterns_get_list_invoker (GimpProcedure *procedure,
58
GimpProgress *progress,
59
const GValueArray *args)
86
61
gboolean success = TRUE;
87
Argument *return_args;
62
GValueArray *return_vals;
64
gint32 num_patterns = 0;
90
65
gchar **pattern_list = NULL;
92
filter = (gchar *) args[0].value.pdb_pointer;
93
if (filter && !g_utf8_validate (filter, -1, NULL))
67
filter = g_value_get_string (&args->values[0]);
71
pattern_list = gimp_container_get_filtered_name_array (gimp->pattern_factory->container,
72
filter, &num_patterns);
75
return_vals = gimp_procedure_get_return_values (procedure, success);
79
g_value_set_int (&return_vals->values[1], num_patterns);
80
gimp_value_take_stringarray (&return_vals->values[2], pattern_list, num_patterns);
87
patterns_get_pattern_invoker (GimpProcedure *procedure,
90
GimpProgress *progress,
91
const GValueArray *args)
93
gboolean success = TRUE;
94
GValueArray *return_vals;
99
GimpPattern *pattern = gimp_context_get_pattern (context);
103
name = g_strdup (gimp_object_get_name (GIMP_OBJECT (pattern)));
104
width = pattern->mask->width;
105
height = pattern->mask->height;
97
pattern_list = gimp_container_get_filtered_name_array (gimp->pattern_factory->container, filter, &num_patterns);
99
return_args = procedural_db_return_args (&patterns_get_list_proc, success);
103
return_args[1].value.pdb_int = num_patterns;
104
return_args[2].value.pdb_pointer = pattern_list;
110
static ProcArg patterns_get_list_inargs[] =
115
"An optional regular expression used to filter the list"
119
static ProcArg patterns_get_list_outargs[] =
124
"The number of patterns in the pattern list"
127
GIMP_PDB_STRINGARRAY,
129
"The list of pattern names"
133
static ProcRecord patterns_get_list_proc =
135
"gimp_patterns_get_list",
136
"Retrieve a complete listing of the available patterns.",
137
"This procedure returns a complete listing of available GIMP patterns. Each name returned can be used as input to the 'gimp_context_set_pattern'.",
138
"Spencer Kimball & Peter Mattis",
139
"Spencer Kimball & Peter Mattis",
144
patterns_get_list_inargs,
146
patterns_get_list_outargs,
147
{ { patterns_get_list_invoker } }
151
patterns_get_pattern_invoker (Gimp *gimp,
152
GimpContext *context,
153
GimpProgress *progress,
156
gboolean success = TRUE;
157
Argument *return_args;
158
GimpPattern *pattern;
160
success = (pattern = gimp_context_get_pattern (context)) != NULL;
162
return_args = procedural_db_return_args (&patterns_get_pattern_proc, success);
166
return_args[1].value.pdb_pointer = g_strdup (GIMP_OBJECT (pattern)->name);
167
return_args[2].value.pdb_int = pattern->mask->width;
168
return_args[3].value.pdb_int = pattern->mask->height;
174
static ProcArg patterns_get_pattern_outargs[] =
193
static ProcRecord patterns_get_pattern_proc =
195
"gimp_patterns_get_pattern",
196
"This procedure is deprecated! Use 'gimp_context_get_pattern' instead.",
197
"This procedure is deprecated! Use 'gimp_context_get_pattern' instead.",
201
"gimp_context_get_pattern",
206
patterns_get_pattern_outargs,
207
{ { patterns_get_pattern_invoker } }
211
patterns_get_pattern_data_invoker (Gimp *gimp,
212
GimpContext *context,
213
GimpProgress *progress,
216
gboolean success = TRUE;
217
Argument *return_args;
110
return_vals = gimp_procedure_get_return_values (procedure, success);
114
g_value_take_string (&return_vals->values[1], name);
115
g_value_set_int (&return_vals->values[2], width);
116
g_value_set_int (&return_vals->values[3], height);
123
patterns_get_pattern_data_invoker (GimpProcedure *procedure,
125
GimpContext *context,
126
GimpProgress *progress,
127
const GValueArray *args)
129
gboolean success = TRUE;
130
GValueArray *return_vals;
132
gchar *actual_name = NULL;
219
136
gint32 length = 0;
220
137
guint8 *mask_data = NULL;
221
GimpPattern *pattern = NULL;
223
name = (gchar *) args[0].value.pdb_pointer;
224
if (name && !g_utf8_validate (name, -1, NULL))
139
name = g_value_get_string (&args->values[0]);
143
GimpPattern *pattern;
229
145
if (name && strlen (name))
231
147
pattern = (GimpPattern *)
242
length = pattern->mask->height * pattern->mask->width *
243
pattern->mask->bytes;
244
mask_data = g_memdup (temp_buf_data (pattern->mask), length);
158
actual_name = g_strdup (gimp_object_get_name (GIMP_OBJECT (pattern)));
159
width = pattern->mask->width;
160
height = pattern->mask->height;
161
mask_bpp = pattern->mask->bytes;
162
length = pattern->mask->height * pattern->mask->width *
163
pattern->mask->bytes;
164
mask_data = g_memdup (temp_buf_data (pattern->mask), length);
250
return_args = procedural_db_return_args (&patterns_get_pattern_data_proc, success);
170
return_vals = gimp_procedure_get_return_values (procedure, success);
254
return_args[1].value.pdb_pointer = g_strdup (GIMP_OBJECT (pattern)->name);
255
return_args[2].value.pdb_int = pattern->mask->width;
256
return_args[3].value.pdb_int = pattern->mask->height;
257
return_args[4].value.pdb_int = pattern->mask->bytes;
258
return_args[5].value.pdb_int = length;
259
return_args[6].value.pdb_pointer = mask_data;
174
g_value_take_string (&return_vals->values[1], actual_name);
175
g_value_set_int (&return_vals->values[2], width);
176
g_value_set_int (&return_vals->values[3], height);
177
g_value_set_int (&return_vals->values[4], mask_bpp);
178
g_value_set_int (&return_vals->values[5], length);
179
gimp_value_take_int8array (&return_vals->values[6], mask_data, length);
265
static ProcArg patterns_get_pattern_data_inargs[] =
270
"The pattern name (\"\" means currently active pattern)"
274
static ProcArg patterns_get_pattern_data_outargs[] =
294
"Pattern bytes per pixel"
299
"Length of pattern mask data"
304
"The pattern mask data"
308
static ProcRecord patterns_get_pattern_data_proc =
310
"gimp_patterns_get_pattern_data",
311
"This procedure is deprecated! Use 'gimp_pattern_get_pixels' instead.",
312
"This procedure is deprecated! Use 'gimp_pattern_get_pixels' instead.",
316
"gimp_pattern_get_pixels",
319
patterns_get_pattern_data_inargs,
321
patterns_get_pattern_data_outargs,
322
{ { patterns_get_pattern_data_invoker } }
186
register_patterns_procs (GimpPDB *pdb)
188
GimpProcedure *procedure;
191
* gimp-patterns-refresh
193
procedure = gimp_procedure_new (patterns_refresh_invoker);
194
gimp_object_set_static_name (GIMP_OBJECT (procedure), "gimp-patterns-refresh");
195
gimp_procedure_set_static_strings (procedure,
196
"gimp-patterns-refresh",
197
"Refresh current patterns. This function always succeeds.",
198
"This procedure retrieves all patterns currently in the user's pattern path and updates all pattern dialogs accordingly.",
199
"Michael Natterer <mitch@gimp.org>",
203
gimp_pdb_register_procedure (pdb, procedure);
204
g_object_unref (procedure);
207
* gimp-patterns-get-list
209
procedure = gimp_procedure_new (patterns_get_list_invoker);
210
gimp_object_set_static_name (GIMP_OBJECT (procedure), "gimp-patterns-get-list");
211
gimp_procedure_set_static_strings (procedure,
212
"gimp-patterns-get-list",
213
"Retrieve a complete listing of the available patterns.",
214
"This procedure returns a complete listing of available GIMP patterns. Each name returned can be used as input to the 'gimp-context-set-pattern'.",
215
"Spencer Kimball & Peter Mattis",
216
"Spencer Kimball & Peter Mattis",
219
gimp_procedure_add_argument (procedure,
220
gimp_param_spec_string ("filter",
222
"An optional regular expression used to filter the list",
225
GIMP_PARAM_READWRITE));
226
gimp_procedure_add_return_value (procedure,
227
gimp_param_spec_int32 ("num-patterns",
229
"The number of patterns in the pattern list",
231
GIMP_PARAM_READWRITE));
232
gimp_procedure_add_return_value (procedure,
233
gimp_param_spec_string_array ("pattern-list",
235
"The list of pattern names",
236
GIMP_PARAM_READWRITE));
237
gimp_pdb_register_procedure (pdb, procedure);
238
g_object_unref (procedure);
241
* gimp-patterns-get-pattern
243
procedure = gimp_procedure_new (patterns_get_pattern_invoker);
244
gimp_object_set_static_name (GIMP_OBJECT (procedure), "gimp-patterns-get-pattern");
245
gimp_procedure_set_static_strings (procedure,
246
"gimp-patterns-get-pattern",
247
"This procedure is deprecated! Use 'gimp-context-get-pattern' instead.",
248
"This procedure is deprecated! Use 'gimp-context-get-pattern' instead.",
252
"gimp-context-get-pattern");
253
gimp_procedure_add_return_value (procedure,
254
gimp_param_spec_string ("name",
259
GIMP_PARAM_READWRITE));
260
gimp_procedure_add_return_value (procedure,
261
gimp_param_spec_int32 ("width",
264
G_MININT32, G_MAXINT32, 0,
265
GIMP_PARAM_READWRITE));
266
gimp_procedure_add_return_value (procedure,
267
gimp_param_spec_int32 ("height",
269
"The pattern height",
270
G_MININT32, G_MAXINT32, 0,
271
GIMP_PARAM_READWRITE));
272
gimp_pdb_register_procedure (pdb, procedure);
273
g_object_unref (procedure);
276
* gimp-patterns-get-pattern-data
278
procedure = gimp_procedure_new (patterns_get_pattern_data_invoker);
279
gimp_object_set_static_name (GIMP_OBJECT (procedure), "gimp-patterns-get-pattern-data");
280
gimp_procedure_set_static_strings (procedure,
281
"gimp-patterns-get-pattern-data",
282
"This procedure is deprecated! Use 'gimp-pattern-get-pixels' instead.",
283
"This procedure is deprecated! Use 'gimp-pattern-get-pixels' instead.",
287
"gimp-pattern-get-pixels");
288
gimp_procedure_add_argument (procedure,
289
gimp_param_spec_string ("name",
291
"The pattern name (\"\" means currently active pattern)",
294
GIMP_PARAM_READWRITE));
295
gimp_procedure_add_return_value (procedure,
296
gimp_param_spec_string ("actual-name",
301
GIMP_PARAM_READWRITE));
302
gimp_procedure_add_return_value (procedure,
303
gimp_param_spec_int32 ("width",
306
G_MININT32, G_MAXINT32, 0,
307
GIMP_PARAM_READWRITE));
308
gimp_procedure_add_return_value (procedure,
309
gimp_param_spec_int32 ("height",
311
"The pattern height",
312
G_MININT32, G_MAXINT32, 0,
313
GIMP_PARAM_READWRITE));
314
gimp_procedure_add_return_value (procedure,
315
gimp_param_spec_int32 ("mask-bpp",
317
"Pattern bytes per pixel",
318
G_MININT32, G_MAXINT32, 0,
319
GIMP_PARAM_READWRITE));
320
gimp_procedure_add_return_value (procedure,
321
gimp_param_spec_int32 ("length",
323
"Length of pattern mask data",
325
GIMP_PARAM_READWRITE));
326
gimp_procedure_add_return_value (procedure,
327
gimp_param_spec_int8_array ("mask-data",
329
"The pattern mask data",
330
GIMP_PARAM_READWRITE));
331
gimp_pdb_register_procedure (pdb, procedure);
332
g_object_unref (procedure);