1 /* -*- Mode: C; c-basic-offset: 4 -*-
2 * Gimp-Python - allows the writing of Gimp plugins in Python.
3 * Copyright (C) 2005 Manish Singh <yosh@gimp.org>
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 3 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 */
18
19 #ifdef HAVE_CONFIG_H
20 # include <config.h>
21 #endif
22
23 #include <Python.h>
24
25 #include <glib-object.h>
26
27 #include <pygobject.h>
28
29 #include "pygimp-api.h"
30 #include "pygimp-util.h"
31 #include "libgimp/gimpui.h"
32
33 static void
add_misc_enums(PyObject * m)34 add_misc_enums(PyObject *m)
35 {
36 PyModule_AddIntConstant(m, "PARASITE_PERSISTENT",
37 GIMP_PARASITE_PERSISTENT);
38 PyModule_AddIntConstant(m, "PARASITE_UNDOABLE",
39 GIMP_PARASITE_UNDOABLE);
40 PyModule_AddIntConstant(m, "PARASITE_ATTACH_PARENT",
41 GIMP_PARASITE_ATTACH_PARENT);
42 PyModule_AddIntConstant(m, "PARASITE_PARENT_PERSISTENT",
43 GIMP_PARASITE_PARENT_PERSISTENT);
44 PyModule_AddIntConstant(m, "PARASITE_PARENT_UNDOABLE",
45 GIMP_PARASITE_PARENT_UNDOABLE);
46 PyModule_AddIntConstant(m, "PARASITE_ATTACH_GRANDPARENT",
47 GIMP_PARASITE_ATTACH_GRANDPARENT);
48 PyModule_AddIntConstant(m, "PARASITE_GRANDPARENT_PERSISTENT",
49 GIMP_PARASITE_GRANDPARENT_PERSISTENT);
50 PyModule_AddIntConstant(m, "PARASITE_GRANDPARENT_UNDOABLE",
51 GIMP_PARASITE_GRANDPARENT_UNDOABLE);
52
53 PyModule_AddIntConstant(m, "UNIT_PIXEL",
54 GIMP_UNIT_PIXEL);
55 PyModule_AddIntConstant(m, "UNIT_INCH",
56 GIMP_UNIT_INCH);
57 PyModule_AddIntConstant(m, "UNIT_MM",
58 GIMP_UNIT_MM);
59 PyModule_AddIntConstant(m, "UNIT_POINT",
60 GIMP_UNIT_POINT);
61 PyModule_AddIntConstant(m, "UNIT_PICA",
62 GIMP_UNIT_PICA);
63
64 PyModule_AddIntConstant(m, "MIN_IMAGE_SIZE",
65 GIMP_MIN_IMAGE_SIZE);
66 PyModule_AddIntConstant(m, "MAX_IMAGE_SIZE",
67 GIMP_MAX_IMAGE_SIZE);
68
69 PyModule_AddObject(m, "MIN_RESOLUTION",
70 PyFloat_FromDouble(GIMP_MIN_RESOLUTION));
71 PyModule_AddObject(m, "MAX_RESOLUTION",
72 PyFloat_FromDouble(GIMP_MAX_RESOLUTION));
73
74 PyModule_AddObject(m, "MAX_MEMSIZE",
75 PyLong_FromUnsignedLongLong(GIMP_MAX_MEMSIZE));
76
77 PyModule_AddIntConstant(m, "PIXEL_FETCHER_EDGE_NONE",
78 GIMP_PIXEL_FETCHER_EDGE_NONE);
79 PyModule_AddIntConstant(m, "PIXEL_FETCHER_EDGE_WRAP",
80 GIMP_PIXEL_FETCHER_EDGE_WRAP);
81 PyModule_AddIntConstant(m, "PIXEL_FETCHER_EDGE_SMEAR",
82 GIMP_PIXEL_FETCHER_EDGE_SMEAR);
83 PyModule_AddIntConstant(m, "PIXEL_FETCHER_EDGE_BLACK",
84 GIMP_PIXEL_FETCHER_EDGE_BLACK);
85 PyModule_AddIntConstant(m, "PIXEL_FETCHER_EDGE_BACKGROUND",
86 GIMP_PIXEL_FETCHER_EDGE_BACKGROUND);
87 }
88
89 static void
add_compat_enums(PyObject * m)90 add_compat_enums(PyObject *m)
91 {
92 PyModule_AddIntConstant(m, "EXPORT_CAN_HANDLE_RGB",
93 GIMP_EXPORT_CAN_HANDLE_RGB);
94 PyModule_AddIntConstant(m, "EXPORT_CAN_HANDLE_GRAY",
95 GIMP_EXPORT_CAN_HANDLE_GRAY);
96 PyModule_AddIntConstant(m, "EXPORT_CAN_HANDLE_INDEXED",
97 GIMP_EXPORT_CAN_HANDLE_INDEXED);
98 PyModule_AddIntConstant(m, "EXPORT_CAN_HANDLE_BITMAP",
99 GIMP_EXPORT_CAN_HANDLE_BITMAP);
100 PyModule_AddIntConstant(m, "EXPORT_CAN_HANDLE_ALPHA",
101 GIMP_EXPORT_CAN_HANDLE_ALPHA);
102 PyModule_AddIntConstant(m, "EXPORT_CAN_HANDLE_LAYERS",
103 GIMP_EXPORT_CAN_HANDLE_LAYERS);
104 PyModule_AddIntConstant(m, "EXPORT_CAN_HANDLE_LAYERS_AS_ANIMATION",
105 GIMP_EXPORT_CAN_HANDLE_LAYERS_AS_ANIMATION);
106 PyModule_AddIntConstant(m, "EXPORT_CAN_HANDLE_LAYER_MASKS",
107 GIMP_EXPORT_CAN_HANDLE_LAYER_MASKS);
108 PyModule_AddIntConstant(m, "EXPORT_NEEDS_ALPHA",
109 GIMP_EXPORT_NEEDS_ALPHA);
110
111 PyModule_AddIntConstant(m, "EXPORT_CANCEL",
112 GIMP_EXPORT_CANCEL);
113 PyModule_AddIntConstant(m, "EXPORT_IGNORE",
114 GIMP_EXPORT_IGNORE);
115 PyModule_AddIntConstant(m, "EXPORT_EXPORT",
116 GIMP_EXPORT_EXPORT);
117 }
118
119 static void
add_registered_enums(PyObject * m)120 add_registered_enums(PyObject *m)
121 {
122 gint num_names, i;
123 const gchar **names;
124 GQuark quark = g_quark_from_static_string ("gimp-compat-enum");
125
126 names = gimp_enums_get_type_names (&num_names);
127
128 pyg_enum_add_constants (m, GIMP_TYPE_CHECK_SIZE, "GIMP_");
129 pyg_enum_add_constants (m, GIMP_TYPE_CHECK_TYPE, "GIMP_");
130
131 for (i = 0; i < num_names; i++)
132 {
133 GType enum_type = g_type_from_name (names[i]);
134
135 pyg_enum_add_constants (m, enum_type, "GIMP_");
136
137 enum_type = (GType) g_type_get_qdata (enum_type, quark);
138
139 if (enum_type)
140 pyg_enum_add_constants (m, enum_type, "GIMP_");
141 }
142 }
143
144
145 /* Initialization function for the module (*must* be called initgimpenums) */
146
147 static char gimpenums_doc[] =
148 "This module provides interfaces to allow you to write gimp plug-ins"
149 ;
150
151 void init_gimpenums(void);
152
153 PyMODINIT_FUNC
init_gimpenums(void)154 init_gimpenums(void)
155 {
156 PyObject *m;
157
158 pygimp_init_pygobject();
159
160 init_pygimp();
161
162 gimp_enums_init();
163
164 /* Create the module and add the functions */
165 m = Py_InitModule3("_gimpenums", NULL, gimpenums_doc);
166
167 add_misc_enums(m);
168 add_compat_enums(m);
169 add_registered_enums(m);
170
171 /* Check for errors */
172 if (PyErr_Occurred())
173 Py_FatalError("can't initialize module _gimpenums");
174 }
175