296
307
settings = { 1, 1, 1 };
299
static inline void vset (GimpVector4 *v,
303
static void restartrender (void);
304
static void drawcolor1 (GtkWidget *widget);
305
static void drawcolor2 (GtkWidget *widget);
306
static void render (void);
307
static void realrender (GimpDrawable *drawable);
308
static void fileselect (GtkFileChooserAction action,
310
static gint traceray (ray *r,
314
static gdouble turbulence (gdouble *point,
310
static inline void vset (GimpVector4 *v,
314
static void restartrender (void);
315
static void drawcolor1 (GtkWidget *widget);
316
static void drawcolor2 (GtkWidget *widget);
317
static gboolean render (void);
318
static void realrender (GimpDrawable *drawable);
319
static void fileselect (GtkFileChooserAction action,
321
static gint traceray (ray *r,
325
static gdouble turbulence (gdouble *point,
319
330
#define COLORBUTTONWIDTH 30
2560
gtk_dialog_set_alternative_button_order (GTK_DIALOG (window),
2563
GTK_RESPONSE_CANCEL,
2566
gimp_window_set_transient (GTK_WINDOW (window));
2492
2568
g_signal_connect (window, "response",
2493
2569
G_CALLBACK (sphere_response),
2572
main_vbox = gtk_vbox_new (FALSE, 12);
2573
gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12);
2574
gtk_container_add (GTK_CONTAINER (GTK_DIALOG (window)->vbox), main_vbox);
2575
gtk_widget_show (main_vbox);
2496
2577
main_hbox = gtk_hbox_new (FALSE, 12);
2497
gtk_container_set_border_width (GTK_CONTAINER (main_hbox), 12);
2498
gtk_container_add (GTK_CONTAINER (GTK_DIALOG (window)->vbox), main_hbox);
2578
gtk_box_pack_start (GTK_BOX (main_vbox), main_hbox, TRUE, TRUE, 0);
2499
2579
gtk_widget_show (main_hbox);
2501
vbox = gtk_vbox_new (FALSE, 6);
2581
vbox = gtk_vbox_new (FALSE, 12);
2502
2582
gtk_box_pack_start (GTK_BOX (main_hbox), vbox, FALSE, FALSE, 0);
2503
2583
gtk_widget_show (vbox);
2682
2762
_("Turbulence:"),
2683
2763
100, -1, 1.0, 0.0, 10.0, 0.1, 1.0, 1,
2684
2764
TRUE, 0.0, 0.0, NULL, NULL);
2685
g_signal_connect (turbulencescale, "value_changed",
2765
g_signal_connect (turbulencescale, "value-changed",
2686
2766
G_CALLBACK (getscales),
2689
2769
amountscale = gimp_scale_entry_new (GTK_TABLE (table), 0, 5, _("Amount:"),
2690
2770
100, -1, 1.0, 0.0, 1.0, 0.01, 0.1, 2,
2691
2771
TRUE, 0.0, 0.0, NULL, NULL);
2692
g_signal_connect (amountscale, "value_changed",
2772
g_signal_connect (amountscale, "value-changed",
2693
2773
G_CALLBACK (getscales),
2696
2776
expscale = gimp_scale_entry_new (GTK_TABLE (table), 0, 6, _("Exp.:"),
2697
2777
100, -1, 1.0, 0.0, 1.0, 0.01, 0.1, 2,
2698
2778
TRUE, 0.0, 0.0, NULL, NULL);
2699
g_signal_connect (expscale, "value_changed",
2779
g_signal_connect (expscale, "value-changed",
2700
2780
G_CALLBACK (getscales),
2703
frame = gimp_frame_new (_("Texture Transformations"));
2783
frame = gimp_frame_new (_("Transformations"));
2704
2784
gtk_box_pack_start (GTK_BOX (main_hbox), frame, TRUE, TRUE, 0);
2705
2785
gtk_widget_show (frame);
2719
2799
scalexscale = gimp_scale_entry_new (GTK_TABLE (table), 0, 0, _("Scale X:"),
2720
2800
100, -1, 1.0, 0.0, 10.0, 0.1, 1.0, 2,
2721
2801
TRUE, 0.0, 0.0, NULL, NULL);
2722
g_signal_connect (scalexscale, "value_changed",
2802
g_signal_connect (scalexscale, "value-changed",
2723
2803
G_CALLBACK (getscales),
2726
2806
scaleyscale = gimp_scale_entry_new (GTK_TABLE (table), 0, 1, _("Scale Y:"),
2727
2807
100, -1, 1.0, 0.0, 10.0, 0.1, 1.0, 2,
2728
2808
TRUE, 0.0, 0.0, NULL, NULL);
2729
g_signal_connect (scaleyscale, "value_changed",
2809
g_signal_connect (scaleyscale, "value-changed",
2730
2810
G_CALLBACK (getscales),
2732
2812
scalezscale = gimp_scale_entry_new (GTK_TABLE (table), 0, 2, _("Scale Z:"),
2733
2813
100, -1, 1.0, 0.0, 10.0, 0.1, 1.0, 2,
2734
2814
TRUE, 0.0, 0.0, NULL, NULL);
2735
g_signal_connect (scalezscale, "value_changed",
2815
g_signal_connect (scalezscale, "value-changed",
2736
2816
G_CALLBACK (getscales),
2739
2819
rotxscale = gimp_scale_entry_new (GTK_TABLE (table), 0, 3, _("Rotate X:"),
2740
2820
100, -1, 0.0, 0.0, 360.0, 1.0, 10.0, 1,
2741
2821
TRUE, 0.0, 0.0, NULL, NULL);
2742
g_signal_connect (rotxscale, "value_changed",
2822
g_signal_connect (rotxscale, "value-changed",
2743
2823
G_CALLBACK (getscales),
2746
2826
rotyscale = gimp_scale_entry_new (GTK_TABLE (table), 0, 4, _("Rotate Y:"),
2747
2827
100, -1, 0.0, 0.0, 360.0, 1.0, 10.0, 1,
2748
2828
TRUE, 0.0, 0.0, NULL, NULL);
2749
g_signal_connect (rotyscale, "value_changed",
2829
g_signal_connect (rotyscale, "value-changed",
2750
2830
G_CALLBACK (getscales),
2753
2833
rotzscale = gimp_scale_entry_new (GTK_TABLE (table), 0, 5, _("Rotate Z:"),
2754
2834
100, -1, 0.0, 0.0, 360.0, 1.0, 10.0, 1,
2755
2835
TRUE, 0.0, 0.0, NULL, NULL);
2756
g_signal_connect (rotzscale, "value_changed",
2836
g_signal_connect (rotzscale, "value-changed",
2757
2837
G_CALLBACK (getscales),
2760
2840
posxscale = gimp_scale_entry_new (GTK_TABLE (table), 0, 6, _("Position X:"),
2761
2841
100, -1, 0.0, -20.0, 20.0, 0.1, 1.0, 1,
2762
2842
TRUE, 0.0, 0.0, NULL, NULL);
2763
g_signal_connect (rotxscale, "value_changed",
2843
g_signal_connect (posxscale, "value-changed",
2764
2844
G_CALLBACK (getscales),
2767
2847
posyscale = gimp_scale_entry_new (GTK_TABLE (table), 0, 7, _("Position Y:"),
2768
2848
100, -1, 0.0, -20.0, 20.0, 0.1, 1.0, 1,
2769
2849
TRUE, 0.0, 0.0, NULL, NULL);
2770
g_signal_connect (rotyscale, "value_changed",
2850
g_signal_connect (posyscale, "value-changed",
2771
2851
G_CALLBACK (getscales),
2774
2854
poszscale = gimp_scale_entry_new (GTK_TABLE (table), 0, 8, _("Position Z:"),
2775
2855
100, -1, 0.0, -20.0, 20.0, 0.1, 1.0, 1,
2776
2856
TRUE, 0.0, 0.0, NULL, NULL);
2777
g_signal_connect (rotzscale, "value_changed",
2857
g_signal_connect (poszscale, "value-changed",
2778
2858
G_CALLBACK (getscales),
2964
static GimpParamDef args[] =
3011
static const GimpParamDef args[] =
2966
{ GIMP_PDB_INT32, "run_mode", "Interactive, non-interactive" },
3013
{ GIMP_PDB_INT32, "run-mode", "Interactive, non-interactive" },
2967
3014
{ GIMP_PDB_IMAGE, "image", "Input image (unused)" },
2968
3015
{ GIMP_PDB_DRAWABLE, "drawable", "Input drawable" }
2971
gimp_install_procedure ("plug_in_spheredesigner",
2972
"Renders textures spheres",
3018
gimp_install_procedure (PLUG_IN_PROC,
3019
N_("Create an image of a textured sphere"),
2973
3020
"This plugin can be used to create textured and/or "
2974
3021
"bumpmapped spheres, and uses a small lightweight "
2975
3022
"raytracer to perform the task with good quality",