1
/* The GIMP -- an image manipulation program
1
/* GIMP - The GNU Image Manipulation Program
2
2
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
4
4
* This program is free software; you can redistribute it and/or modify
37
37
/* Some useful macros */
39
#define PLUG_IN_PROC "plug-in-softglow"
40
#define PLUG_IN_BINARY "softglow"
39
41
#define TILE_CACHE_SIZE 48
40
#define SIGMOIDAL_BASE 2
42
#define SIGMOIDAL_BASE 2
41
43
#define SIGMOIDAL_RANGE 20
43
45
#define INT_MULT(a,b,t) ((t) = (a) * (b) + 0x80, ((((t) >> 8) + (t)) >> 8))
109
static GimpParamDef args[] =
111
static const GimpParamDef args[] =
111
{ GIMP_PDB_INT32, "run_mode", "Interactive, non-interactive" },
112
{ GIMP_PDB_IMAGE, "image", "Input image (unused)" },
113
{ GIMP_PDB_DRAWABLE, "drawable", "Input drawable" },
114
{ GIMP_PDB_FLOAT, "glow_radius", "Glow radius (radius in pixels)" },
115
{ GIMP_PDB_FLOAT, "brightness", "Glow brightness (0.0 - 1.0)" },
116
{ GIMP_PDB_FLOAT, "sharpness", "Glow sharpness (0.0 - 1.0)" },
113
{ GIMP_PDB_INT32, "run-mode", "Interactive, non-interactive" },
114
{ GIMP_PDB_IMAGE, "image", "Input image (unused)" },
115
{ GIMP_PDB_DRAWABLE, "drawable", "Input drawable" },
116
{ GIMP_PDB_FLOAT, "glow-radius", "Glow radius (radius in pixels)" },
117
{ GIMP_PDB_FLOAT, "brightness", "Glow brightness (0.0 - 1.0)" },
118
{ GIMP_PDB_FLOAT, "sharpness", "Glow sharpness (0.0 - 1.0)" }
119
121
gchar *help_string =
128
130
"to image highlights. The sharpness parameter controls how defined or "
129
131
"alternatively, diffuse, the glow effect should be.";
131
gimp_install_procedure ("plug_in_softglow",
132
"Photographic 'softglow' effect by intensifying "
133
gimp_install_procedure (PLUG_IN_PROC,
134
N_("Simulate glow by making highlights intense and fuzzy"),
135
136
"Spencer Kimball",
136
137
"Bit Specialists, Inc.",
177
178
case GIMP_RUN_INTERACTIVE:
178
179
/* Possibly retrieve data */
179
gimp_get_data ("plug_in_softglow", &svals);
180
gimp_get_data (PLUG_IN_PROC, &svals);
181
182
/* First acquire information with a dialog */
182
183
if (! softglow_dialog (drawable))
192
193
case GIMP_RUN_WITH_LAST_VALS:
193
194
/* Possibly retrieve data */
194
gimp_get_data ("plug_in_softglow", &svals);
195
gimp_get_data (PLUG_IN_PROC, &svals);
204
205
if (gimp_drawable_is_rgb (drawable->drawable_id) ||
205
206
gimp_drawable_is_gray (drawable->drawable_id))
207
gimp_progress_init ("Softglow...");
208
gimp_progress_init ("Softglow");
209
210
softglow (drawable, NULL);
215
216
if (run_mode == GIMP_RUN_INTERACTIVE)
216
gimp_set_data ("plug_in_softglow", &svals, sizeof (SoftglowVals));
217
gimp_set_data (PLUG_IN_PROC, &svals, sizeof (SoftglowVals));
624
625
GtkObject *scale_data;
627
gimp_ui_init ("softglow", FALSE);
628
gimp_ui_init (PLUG_IN_BINARY, FALSE);
629
dialog = gimp_dialog_new (_("Softglow"), "softglow",
630
dialog = gimp_dialog_new (_("Softglow"), PLUG_IN_BINARY,
631
gimp_standard_help_func, "plug-in-softglow",
632
gimp_standard_help_func, PLUG_IN_PROC,
633
634
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
634
635
GTK_STOCK_OK, GTK_RESPONSE_OK,
639
gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog),
644
gimp_window_set_transient (GTK_WINDOW (dialog));
638
646
main_vbox = gtk_vbox_new (FALSE, 12);
639
647
gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12);
640
648
gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), main_vbox);
664
g_signal_connect (scale_data, "value_changed",
672
g_signal_connect (scale_data, "value-changed",
665
673
G_CALLBACK (gimp_double_adjustment_update),
666
674
&svals.glow_radius);
667
g_signal_connect_swapped (scale_data, "value_changed",
675
g_signal_connect_swapped (scale_data, "value-changed",
668
676
G_CALLBACK (gimp_preview_invalidate),
678
g_signal_connect (scale_data, "value_changed",
686
g_signal_connect (scale_data, "value-changed",
679
687
G_CALLBACK (gimp_double_adjustment_update),
680
688
&svals.brightness);
681
g_signal_connect_swapped (scale_data, "value_changed",
689
g_signal_connect_swapped (scale_data, "value-changed",
682
690
G_CALLBACK (gimp_preview_invalidate),
692
g_signal_connect (scale_data, "value_changed",
700
g_signal_connect (scale_data, "value-changed",
693
701
G_CALLBACK (gimp_double_adjustment_update),
694
702
&svals.sharpness);
695
g_signal_connect_swapped (scale_data, "value_changed",
703
g_signal_connect_swapped (scale_data, "value-changed",
696
704
G_CALLBACK (gimp_preview_invalidate),