File: script-fu-types.h

package info (click to toggle)
gimp 3.2.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 222,880 kB
  • sloc: ansic: 870,914; python: 10,965; lisp: 10,857; cpp: 7,355; perl: 4,536; sh: 1,753; xml: 972; yacc: 609; lex: 348; javascript: 150; makefile: 42
file content (140 lines) | stat: -rw-r--r-- 4,309 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/* GIMP - The GNU Image Manipulation Program
 * Copyright (C) 1995 Spencer Kimball and Peter Mattis
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

#ifndef __SCRIPT_FU_TYPES_H__
#define __SCRIPT_FU_TYPES_H__


#include "script-fu-enums.h"
#include "script-fu-color.h"
#include "script-fu-resource.h"


typedef struct
{
  gdouble           value;
  gdouble           lower;
  gdouble           upper;
  gdouble           step;
  gdouble           page;
  gint              digits;
  SFAdjustmentType  type;
} SFAdjustment;

typedef struct
{
  gchar  *filename;
} SFFilename;

typedef struct
{
  GSList *list;
  gint    history;
} SFOption;

typedef struct
{
  gchar *type_name;
  gint   history;
} SFEnum;

typedef union
{
  gint32         sfa_image;
  gint32         sfa_drawable;
  gint32         sfa_layer;
  gint32         sfa_channel;
  gint32         sfa_vectors;
  gint32         sfa_display;
  SFColorType    sfa_color;
  gint32         sfa_toggle;
  gchar         *sfa_value;
  SFAdjustment   sfa_adjustment;
  SFFilename     sfa_file;
  SFResourceType sfa_resource;
  SFOption       sfa_option;
  SFEnum         sfa_enum;
} SFArgValue;

typedef struct
{
  SFArgType   type;
  gchar      *label;         /* label on widget in dialog. Not unique. */
  gchar      *property_name; /* name of property of Procedure. Unique. */
  SFArgValue  default_value;
  SFArgValue  value;
} SFArg;

typedef struct
{
  gchar        *name;
  gchar        *menu_label;
  gchar        *blurb;
  gchar        *author;
  gchar        *copyright;
  gchar        *date;
  gchar        *image_types;
  gchar        *i18n_domain_name;
  gchar        *i18n_catalog_relative_path;

  gint          n_args;
  SFArg        *args;
  SFDrawableArity drawable_arity;
  GType           proc_class; /* GimpProcedure or GimpImageProcedure. */
  /* is declared using script-fu-register and dialog is old-style. */
  gboolean       is_old_style;
} SFScript;

/* ScriptFu keeps array of SFArg, it's private arg specs.
 * Scripts declare args except run_mode (SF hides it.)
 * A GimpConfig has two extra leading properties, for procedure and run_mode.
 * A set of GParamSpecs is derived from a config and also has two extra.
 * This defines the difference in length between SF's arg spec array and a config.
 */
#define SF_ARG_TO_CONFIG_OFFSET 2

typedef struct
{
  SFScript *script;   /* script which defined this menu path and label */
  gchar    *menu_path;
} SFMenu;

/* Declared here and defined in script-fu-color.c because use SFArg. */
gboolean   sf_color_arg_set_default_by_name  (SFArg       *arg,
                                              gchar       *name_of_default);
void       sf_color_arg_set_default_by_color (SFArg       *arg,
                                              GeglColor   *color);
GeglColor* sf_color_arg_get_default_color    (SFArg       *arg);

/* defined in script-fu-resource. c */
void          sf_resource_arg_set_name_default   (SFArg *arg,
                                                  GType  resource_type,
                                                  gchar *name_of_default);
gchar        *sf_resource_arg_get_name_default   (SFArg *arg);
GimpResource *sf_resource_arg_get_default        (SFArg *arg);
GimpResource *sf_resource_arg_get_value          (SFArg *arg);

void          sf_resource_arg_set                (SFArg *arg,
                                                  gint32 ID);

void          sf_resource_arg_free               (SFArg *arg);
void          sf_resource_arg_reset              (SFArg *arg);
gchar        *sf_resource_arg_get_repr           (SFArg *arg);
void          sf_resource_arg_init_current_value (SFArg *arg);


#endif /*  __SCRIPT_FU_TYPES__  */