30
30
#include "config.h"
37
32
#include <libgimp/gimp.h>
38
33
#include <libgimp/gimpui.h>
40
35
#include "libgimp/stdplugins-intl.h"
38
#define PLUG_IN_PROC "plug-in-sinus"
39
#define PLUG_IN_BINARY "sinus"
43
43
* This structure is used for persistent data.
164
static GimpParamDef args[] =
164
static const GimpParamDef args[] =
166
{ GIMP_PDB_INT32, "run_mode", "Interactive, non-interactive" },
166
{ GIMP_PDB_INT32, "run-mode", "Interactive, non-interactive" },
167
167
{ GIMP_PDB_IMAGE, "image", "Input image (unused)" },
168
168
{ GIMP_PDB_DRAWABLE, "drawable", "Input drawable" },
179
179
{ GIMP_PDB_FLOAT, "alpha1", "alpha for the first color (used if the drawable has an alpha chanel)" },
180
180
{ GIMP_PDB_FLOAT, "alpha2", "alpha for the second color (used if the drawable has an alpha chanel)" },
181
181
{ GIMP_PDB_INT32, "blend", "0= linear, 1= bilinear, 2= sinusoidal" },
182
{ GIMP_PDB_FLOAT, "blend_power", "Power used to strech the blend" }
182
{ GIMP_PDB_FLOAT, "blend-power", "Power used to strech the blend" }
185
gimp_install_procedure ("plug_in_sinus",
186
"Generates a texture with sinus functions",
185
gimp_install_procedure (PLUG_IN_PROC,
186
N_("Generate complex sinusoidal textures"),
187
187
"FIX ME: sinus help",
188
188
"Xavier Bouchoux",
189
189
"Xavier Bouchoux",
223
223
case GIMP_RUN_INTERACTIVE:
224
224
/* Possibly retrieve data */
225
gimp_get_data ("plug_in_sinus", &svals);
225
gimp_get_data (PLUG_IN_PROC, &svals);
227
227
/* In order to prepare the dialog I need to know wether it's grayscale or not */
228
228
drawable = gimp_drawable_get (param[2].data.d_drawable);
264
264
case GIMP_RUN_WITH_LAST_VALS:
265
265
/* Possibly retrieve data */
266
gimp_get_data ("plug_in_sinus", &svals);
266
gimp_get_data (PLUG_IN_PROC, &svals);
268
268
if (svals.random_seed)
269
269
svals.seed = g_random_int ();
644
gimp_ui_init ("sinus", TRUE);
644
gimp_ui_init (PLUG_IN_BINARY, TRUE);
646
646
/* Create Main window with a vbox */
647
647
/* ============================== */
648
dlg = gimp_dialog_new (_("Sinus"), "sinus",
648
dlg = gimp_dialog_new (_("Sinus"), PLUG_IN_BINARY,
650
gimp_standard_help_func, "plug-in-sinus",
650
gimp_standard_help_func, PLUG_IN_PROC,
652
652
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
653
653
GTK_STOCK_OK, GTK_RESPONSE_OK,
657
gtk_dialog_set_alternative_button_order (GTK_DIALOG (dlg),
662
gimp_window_set_transient (GTK_WINDOW (dlg));
657
664
main_hbox = gtk_hbox_new (FALSE, 12);
658
665
gtk_container_set_border_width (GTK_CONTAINER (main_hbox), 12);
659
666
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), main_hbox,
690
697
gtk_container_add (GTK_CONTAINER(frame), table);
692
699
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 0,
693
_("_X Scale:"), 140, 8,
700
_("_X scale:"), 140, 8,
694
701
svals.scalex, 0.0001, 100.0, 0.0001, 5, 4,
697
g_signal_connect (adj, "value_changed",
704
g_signal_connect (adj, "value-changed",
698
705
G_CALLBACK (sinus_double_adjustment_update),
701
708
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 1,
702
_("_Y Scale:"), 140, 8,
709
_("_Y scale:"), 140, 8,
703
710
svals.scaley, 0.0001, 100.0, 0.0001, 5, 4,
706
g_signal_connect (adj, "value_changed",
713
g_signal_connect (adj, "value-changed",
707
714
G_CALLBACK (sinus_double_adjustment_update),
712
719
svals.cmplx, 0.0, 15.0, 0.01, 5, 2,
715
g_signal_connect (adj, "value_changed",
722
g_signal_connect (adj, "value-changed",
716
723
G_CALLBACK (sinus_double_adjustment_update),
737
744
GIMP_RANDOM_SEED_SPINBUTTON (hbox));
739
746
g_signal_connect (GIMP_RANDOM_SEED_SPINBUTTON_ADJ (hbox),
740
"value_changed", G_CALLBACK (sinus_random_update), NULL);
747
"value-changed", G_CALLBACK (sinus_random_update), NULL);
741
748
gtk_widget_show (table);
743
750
toggle = gtk_check_button_new_with_mnemonic (_("_Force tiling?"));
815
822
gtk_box_pack_start (GTK_BOX (hbox), push_col1, FALSE, FALSE, 0);
816
823
gtk_widget_show (push_col1);
818
g_signal_connect (push_col1, "color_changed",
825
g_signal_connect (push_col1, "color-changed",
819
826
G_CALLBACK (gimp_color_button_get_color),
825
832
gtk_box_pack_start (GTK_BOX (hbox), push_col2, FALSE, FALSE, 0);
826
833
gtk_widget_show (push_col2);
828
g_signal_connect (push_col2, "color_changed",
835
g_signal_connect (push_col2, "color-changed",
829
836
G_CALLBACK (gimp_color_button_get_color),
845
852
gtk_container_add (GTK_CONTAINER (frame), table);
847
854
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 0,
848
_("F_irst Color:"), 0, 0,
855
_("F_irst color:"), 0, 0,
849
856
svals.col1.a, 0.0, 1.0, 0.01, 0.1, 2,
853
g_signal_connect (adj, "value_changed",
860
g_signal_connect (adj, "value-changed",
854
861
G_CALLBACK (alpha_scale_cb),
858
g_signal_connect (push_col1, "color_changed",
865
g_signal_connect (push_col1, "color-changed",
859
866
G_CALLBACK (alpha_scale_update),
862
869
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 1,
863
_("S_econd Color:"), 0, 0,
870
_("S_econd color:"), 0, 0,
864
871
svals.col2.a, 0.0, 1.0, 0.01, 0.1, 2,
868
g_signal_connect (adj, "value_changed",
875
g_signal_connect (adj, "value-changed",
869
876
G_CALLBACK (alpha_scale_cb),
873
g_signal_connect (push_col2, "color_changed",
880
g_signal_connect (push_col2, "color-changed",
874
881
G_CALLBACK (alpha_scale_update),
916
923
svals.blend_power, -7.5, 7.5, 0.01, 5.0, 2,
919
g_signal_connect (adj, "value_changed",
926
g_signal_connect (adj, "value-changed",
920
927
G_CALLBACK (sinus_double_adjustment_update),
921
928
&svals.blend_power);
1039
1046
gtk_container_add (GTK_CONTAINER (frame), preview);
1040
1047
gtk_widget_show (preview);
1042
button = gtk_check_button_new_with_mnemonic (_("Do _Preview"));
1049
button = gtk_check_button_new_with_mnemonic (_("Do _preview"));
1043
1050
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), do_preview);
1044
1051
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
1045
1052
gtk_widget_show (button);