43
43
#include <string.h>
47
45
#include <libgimp/gimp.h>
48
46
#include <libgimp/gimpui.h>
50
48
#include "libgimp/stdplugins-intl.h"
51
#define PLUG_IN_PROC "plug-in-glasstile"
52
#define PLUG_IN_BINARY "glasstile"
52
55
/* --- Typedefs --- */
113
static GimpParamDef args[] =
116
static const GimpParamDef args[] =
115
{ GIMP_PDB_INT32, "run_mode", "Interactive, non-interactive" },
118
{ GIMP_PDB_INT32, "run-mode", "Interactive, non-interactive" },
116
119
{ GIMP_PDB_IMAGE, "image", "Input image (unused)" },
117
120
{ GIMP_PDB_DRAWABLE, "drawable", "Input drawable" },
118
121
{ GIMP_PDB_INT32, "tilex", "Tile width (10 - 50)" },
119
122
{ GIMP_PDB_INT32, "tiley", "Tile height (10 - 50)" }
122
gimp_install_procedure ("plug_in_glasstile",
123
"Divide the image into square glassblocks",
125
gimp_install_procedure (PLUG_IN_PROC,
126
N_("Simulate distortion caused by square glass tiles"),
124
127
"Divide the image into square glassblocks in "
125
128
"which the image is refracted.",
126
129
"Karl-Johan Andersson", /* Author */
132
135
G_N_ELEMENTS (args), 0,
135
gimp_plugin_menu_register ("plug_in_glasstile",
136
"<Image>/Filters/Glass Effects");
138
gimp_plugin_menu_register (PLUG_IN_PROC,
139
"<Image>/Filters/Light and Shadow/Glass");
167
170
case GIMP_RUN_INTERACTIVE:
168
171
/* Possibly retrieve data */
169
gimp_get_data ("plug_in_glasstile", >vals);
172
gimp_get_data (PLUG_IN_PROC, >vals);
171
174
/* First acquire information with a dialog */
172
175
if (! glasstile_dialog (drawable))
194
197
case GIMP_RUN_WITH_LAST_VALS:
195
198
/* Possibly retrieve data */
196
gimp_get_data ("plug_in_glasstile", >vals);
199
gimp_get_data (PLUG_IN_PROC, >vals);
206
209
if (gimp_drawable_is_rgb (drawable->drawable_id) ||
207
210
gimp_drawable_is_gray (drawable->drawable_id))
209
gimp_progress_init (_("Glass Tile..."));
212
gimp_progress_init (_("Glass Tile"));
211
214
glasstile (drawable, NULL);
216
219
if (run_mode == GIMP_RUN_INTERACTIVE)
218
gimp_set_data ("plug_in_glasstile", >vals,
219
sizeof (GlassValues));
221
gimp_set_data (PLUG_IN_PROC, >vals, sizeof (GlassValues));
245
247
gv->gval = >vals;
246
248
gtvals.constrain = TRUE;
248
gimp_ui_init ("glasstile", TRUE);
250
gimp_ui_init (PLUG_IN_BINARY, TRUE);
250
dialog = gimp_dialog_new (_("Glass Tile"), "glasstile",
252
dialog = gimp_dialog_new (_("Glass Tile"), PLUG_IN_BINARY,
252
gimp_standard_help_func, "plug-in-glasstile",
254
gimp_standard_help_func, PLUG_IN_PROC,
254
256
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
255
257
GTK_STOCK_OK, GTK_RESPONSE_OK,
261
gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog),
266
gimp_window_set_transient (GTK_WINDOW (dialog));
259
268
main_vbox = gtk_vbox_new (FALSE, 12);
260
269
gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12);
261
270
gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), main_vbox);
286
g_signal_connect (gv->xadj, "value_changed",
295
g_signal_connect (gv->xadj, "value-changed",
287
296
G_CALLBACK (glasstile_size_changed),
289
g_signal_connect_swapped (gv->xadj, "value_changed",
298
g_signal_connect_swapped (gv->xadj, "value-changed",
290
299
G_CALLBACK (gimp_preview_invalidate),
300
g_signal_connect (gv->yadj, "value_changed",
309
g_signal_connect (gv->yadj, "value-changed",
301
310
G_CALLBACK (glasstile_size_changed),
303
g_signal_connect_swapped (gv->yadj, "value_changed",
312
g_signal_connect_swapped (gv->yadj, "value-changed",
304
313
G_CALLBACK (gimp_preview_invalidate),