mirror of https://github.com/GNOME/gimp.git
added the ability to select the gradient repeat mode from the gui. Made
Sun Mar 28 00:28:57 EST 1999 Adrian Likins <adrian@gimp.org> * app/paintbrush.c: added the ability to select the gradient repeat mode from the gui. Made the gradient length slider hopefully a bit more useful (ie, a more useful range) -adrian
This commit is contained in:
parent
fc2018d235
commit
21b5cd4467
|
@ -1,3 +1,11 @@
|
||||||
|
Sun Mar 28 00:28:57 EST 1999 Adrian Likins <adrian@gimp.org>
|
||||||
|
|
||||||
|
* app/paintbrush.c: added the ability to select the
|
||||||
|
gradient repeat mode from the gui. Made the gradient
|
||||||
|
length slider hopefully a bit more useful (ie, a
|
||||||
|
more useful range)
|
||||||
|
|
||||||
|
|
||||||
1999-03-27 Michael Natterer <mitschel@cs.tu-berlin.de>
|
1999-03-27 Michael Natterer <mitschel@cs.tu-berlin.de>
|
||||||
|
|
||||||
* app/brush_select.c
|
* app/brush_select.c
|
||||||
|
|
|
@ -34,12 +34,12 @@
|
||||||
#include "libgimp/gimpintl.h"
|
#include "libgimp/gimpintl.h"
|
||||||
|
|
||||||
/* forward function declarations */
|
/* forward function declarations */
|
||||||
static void paintbrush_motion (PaintCore *, GimpDrawable *, double, double, gboolean);
|
static void paintbrush_motion (PaintCore *, GimpDrawable *, double, double, gboolean, int);
|
||||||
static Argument * paintbrush_invoker (Argument *);
|
static Argument * paintbrush_invoker (Argument *);
|
||||||
static Argument * paintbrush_extended_invoker (Argument *);
|
static Argument * paintbrush_extended_invoker (Argument *);
|
||||||
static Argument * paintbrush_extended_gradient_invoker (Argument *);
|
static Argument * paintbrush_extended_gradient_invoker (Argument *);
|
||||||
static double non_gui_fade_out,non_gui_gradient_length, non_gui_incremental;
|
static double non_gui_fade_out,non_gui_gradient_length, non_gui_incremental;
|
||||||
|
static int gradient_type;
|
||||||
|
|
||||||
/* defines */
|
/* defines */
|
||||||
#define PAINT_LEFT_THRESHOLD 0.05
|
#define PAINT_LEFT_THRESHOLD 0.05
|
||||||
|
@ -74,9 +74,15 @@ static void
|
||||||
paintbrush_scale_update (GtkAdjustment *adjustment,
|
paintbrush_scale_update (GtkAdjustment *adjustment,
|
||||||
PaintOptions *options)
|
PaintOptions *options)
|
||||||
{
|
{
|
||||||
options->gradient_length = adjustment->value;
|
|
||||||
if(options->gradient_length > 0.0)
|
if(adjustment->value != 0)
|
||||||
|
options->gradient_length = exp(adjustment->value/10);
|
||||||
|
else
|
||||||
|
options->gradient_length = 0.0;
|
||||||
|
|
||||||
|
if(options->gradient_length > 0.0){
|
||||||
options->incremental = INCREMENTAL;
|
options->incremental = INCREMENTAL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -86,6 +92,15 @@ paintbrush_fade_update (GtkAdjustment *adjustment,
|
||||||
options->fade_out = adjustment->value;
|
options->fade_out = adjustment->value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
paintbrush_gradient_type_callback (GtkWidget *w,
|
||||||
|
gpointer client_data)
|
||||||
|
{
|
||||||
|
gradient_type = (int) client_data;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static PaintOptions *
|
static PaintOptions *
|
||||||
create_paint_options (void)
|
create_paint_options (void)
|
||||||
{
|
{
|
||||||
|
@ -99,6 +114,19 @@ create_paint_options (void)
|
||||||
GtkObject *gradient_length_scale_data;
|
GtkObject *gradient_length_scale_data;
|
||||||
GtkWidget *incremental_toggle;
|
GtkWidget *incremental_toggle;
|
||||||
|
|
||||||
|
GSList *group = NULL;
|
||||||
|
GtkWidget *radio_frame;
|
||||||
|
GtkWidget *radio_box;
|
||||||
|
GtkWidget *radio_button;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
char *gradient_types[4] =
|
||||||
|
{
|
||||||
|
N_("Once Forward"),
|
||||||
|
N_("Once Backward"),
|
||||||
|
N_("Loop Sawtooth"),
|
||||||
|
N_("Loop Triangle")
|
||||||
|
};
|
||||||
|
|
||||||
/* the new options structure */
|
/* the new options structure */
|
||||||
options = (PaintOptions *) g_malloc (sizeof (PaintOptions));
|
options = (PaintOptions *) g_malloc (sizeof (PaintOptions));
|
||||||
|
@ -148,7 +176,7 @@ create_paint_options (void)
|
||||||
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
|
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
|
||||||
gtk_widget_show (label);
|
gtk_widget_show (label);
|
||||||
|
|
||||||
gradient_length_scale_data = gtk_adjustment_new (0.0, 0.0, 1000.0, 1.0, 1.0, 0.0);
|
gradient_length_scale_data = gtk_adjustment_new (0.0, 0.0, 50.0,1.1, 0.1, 0.0);
|
||||||
gradient_length_scale = gtk_hscale_new (GTK_ADJUSTMENT (gradient_length_scale_data));
|
gradient_length_scale = gtk_hscale_new (GTK_ADJUSTMENT (gradient_length_scale_data));
|
||||||
gtk_box_pack_start (GTK_BOX (vbox), gradient_length_scale, TRUE, TRUE, 0);
|
gtk_box_pack_start (GTK_BOX (vbox), gradient_length_scale, TRUE, TRUE, 0);
|
||||||
gtk_scale_set_value_pos (GTK_SCALE (gradient_length_scale), GTK_POS_TOP);
|
gtk_scale_set_value_pos (GTK_SCALE (gradient_length_scale), GTK_POS_TOP);
|
||||||
|
@ -159,6 +187,32 @@ create_paint_options (void)
|
||||||
gtk_widget_show (gradient_length_scale);
|
gtk_widget_show (gradient_length_scale);
|
||||||
gtk_widget_show (hbox);
|
gtk_widget_show (hbox);
|
||||||
|
|
||||||
|
/* the radio frame and box */
|
||||||
|
radio_frame = gtk_frame_new (_("Gradient Type"));
|
||||||
|
gtk_box_pack_start (GTK_BOX (vbox), radio_frame, FALSE, FALSE, 0);
|
||||||
|
|
||||||
|
radio_box = gtk_vbox_new (FALSE, 1);
|
||||||
|
gtk_container_add (GTK_CONTAINER (radio_frame), radio_box);
|
||||||
|
|
||||||
|
/* the radio buttons */
|
||||||
|
group = NULL;
|
||||||
|
for (i = 0; i < 4; i++)
|
||||||
|
{
|
||||||
|
radio_button = gtk_radio_button_new_with_label (group, gradient_types[i]);
|
||||||
|
group = gtk_radio_button_group (GTK_RADIO_BUTTON (radio_button));
|
||||||
|
gtk_signal_connect (GTK_OBJECT (radio_button), "toggled",
|
||||||
|
(GtkSignalFunc) paintbrush_gradient_type_callback,
|
||||||
|
(void *)((long) i));
|
||||||
|
gtk_box_pack_start (GTK_BOX (radio_box), radio_button, FALSE, FALSE, 0);
|
||||||
|
gtk_widget_show (radio_button);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio_button), TRUE);
|
||||||
|
gtk_widget_show (radio_box);
|
||||||
|
gtk_widget_show (radio_frame);
|
||||||
|
|
||||||
|
|
||||||
/* the incremental toggle */
|
/* the incremental toggle */
|
||||||
incremental_toggle = gtk_check_button_new_with_label (_("Incremental"));
|
incremental_toggle = gtk_check_button_new_with_label (_("Incremental"));
|
||||||
gtk_box_pack_start (GTK_BOX (vbox), incremental_toggle, FALSE, FALSE, 0);
|
gtk_box_pack_start (GTK_BOX (vbox), incremental_toggle, FALSE, FALSE, 0);
|
||||||
|
@ -206,7 +260,8 @@ paintbrush_paint_func (PaintCore *paint_core,
|
||||||
paintbrush_motion (paint_core, drawable,
|
paintbrush_motion (paint_core, drawable,
|
||||||
paint_options->fade_out,
|
paint_options->fade_out,
|
||||||
paint_options->gradient_length,
|
paint_options->gradient_length,
|
||||||
paint_options->incremental);
|
paint_options->incremental,
|
||||||
|
gradient_type);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FINISH_PAINT :
|
case FINISH_PAINT :
|
||||||
|
@ -258,7 +313,8 @@ paintbrush_motion (PaintCore *paint_core,
|
||||||
GimpDrawable *drawable,
|
GimpDrawable *drawable,
|
||||||
double fade_out,
|
double fade_out,
|
||||||
double gradient_length,
|
double gradient_length,
|
||||||
gboolean incremental)
|
gboolean incremental,
|
||||||
|
int gradient_type)
|
||||||
{
|
{
|
||||||
GImage *gimage;
|
GImage *gimage;
|
||||||
TempBuf * area;
|
TempBuf * area;
|
||||||
|
@ -298,7 +354,7 @@ paintbrush_motion (PaintCore *paint_core,
|
||||||
|
|
||||||
/* hard core to mode LOOP_TRIANGLE */
|
/* hard core to mode LOOP_TRIANGLE */
|
||||||
/* need to maek a gui to handle this */
|
/* need to maek a gui to handle this */
|
||||||
mode = LOOP_TRIANGLE;
|
mode = gradient_type;
|
||||||
|
|
||||||
if(gradient_length)
|
if(gradient_length)
|
||||||
{
|
{
|
||||||
|
@ -336,7 +392,7 @@ paintbrush_non_gui_paint_func (PaintCore *paint_core,
|
||||||
GimpDrawable *drawable,
|
GimpDrawable *drawable,
|
||||||
int state)
|
int state)
|
||||||
{
|
{
|
||||||
paintbrush_motion (paint_core, drawable, non_gui_fade_out,non_gui_gradient_length, non_gui_incremental);
|
paintbrush_motion (paint_core, drawable, non_gui_fade_out,non_gui_gradient_length, non_gui_incremental, gradient_type);
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,12 +34,12 @@
|
||||||
#include "libgimp/gimpintl.h"
|
#include "libgimp/gimpintl.h"
|
||||||
|
|
||||||
/* forward function declarations */
|
/* forward function declarations */
|
||||||
static void paintbrush_motion (PaintCore *, GimpDrawable *, double, double, gboolean);
|
static void paintbrush_motion (PaintCore *, GimpDrawable *, double, double, gboolean, int);
|
||||||
static Argument * paintbrush_invoker (Argument *);
|
static Argument * paintbrush_invoker (Argument *);
|
||||||
static Argument * paintbrush_extended_invoker (Argument *);
|
static Argument * paintbrush_extended_invoker (Argument *);
|
||||||
static Argument * paintbrush_extended_gradient_invoker (Argument *);
|
static Argument * paintbrush_extended_gradient_invoker (Argument *);
|
||||||
static double non_gui_fade_out,non_gui_gradient_length, non_gui_incremental;
|
static double non_gui_fade_out,non_gui_gradient_length, non_gui_incremental;
|
||||||
|
static int gradient_type;
|
||||||
|
|
||||||
/* defines */
|
/* defines */
|
||||||
#define PAINT_LEFT_THRESHOLD 0.05
|
#define PAINT_LEFT_THRESHOLD 0.05
|
||||||
|
@ -74,9 +74,15 @@ static void
|
||||||
paintbrush_scale_update (GtkAdjustment *adjustment,
|
paintbrush_scale_update (GtkAdjustment *adjustment,
|
||||||
PaintOptions *options)
|
PaintOptions *options)
|
||||||
{
|
{
|
||||||
options->gradient_length = adjustment->value;
|
|
||||||
if(options->gradient_length > 0.0)
|
if(adjustment->value != 0)
|
||||||
|
options->gradient_length = exp(adjustment->value/10);
|
||||||
|
else
|
||||||
|
options->gradient_length = 0.0;
|
||||||
|
|
||||||
|
if(options->gradient_length > 0.0){
|
||||||
options->incremental = INCREMENTAL;
|
options->incremental = INCREMENTAL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -86,6 +92,15 @@ paintbrush_fade_update (GtkAdjustment *adjustment,
|
||||||
options->fade_out = adjustment->value;
|
options->fade_out = adjustment->value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
paintbrush_gradient_type_callback (GtkWidget *w,
|
||||||
|
gpointer client_data)
|
||||||
|
{
|
||||||
|
gradient_type = (int) client_data;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static PaintOptions *
|
static PaintOptions *
|
||||||
create_paint_options (void)
|
create_paint_options (void)
|
||||||
{
|
{
|
||||||
|
@ -99,6 +114,19 @@ create_paint_options (void)
|
||||||
GtkObject *gradient_length_scale_data;
|
GtkObject *gradient_length_scale_data;
|
||||||
GtkWidget *incremental_toggle;
|
GtkWidget *incremental_toggle;
|
||||||
|
|
||||||
|
GSList *group = NULL;
|
||||||
|
GtkWidget *radio_frame;
|
||||||
|
GtkWidget *radio_box;
|
||||||
|
GtkWidget *radio_button;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
char *gradient_types[4] =
|
||||||
|
{
|
||||||
|
N_("Once Forward"),
|
||||||
|
N_("Once Backward"),
|
||||||
|
N_("Loop Sawtooth"),
|
||||||
|
N_("Loop Triangle")
|
||||||
|
};
|
||||||
|
|
||||||
/* the new options structure */
|
/* the new options structure */
|
||||||
options = (PaintOptions *) g_malloc (sizeof (PaintOptions));
|
options = (PaintOptions *) g_malloc (sizeof (PaintOptions));
|
||||||
|
@ -148,7 +176,7 @@ create_paint_options (void)
|
||||||
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
|
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
|
||||||
gtk_widget_show (label);
|
gtk_widget_show (label);
|
||||||
|
|
||||||
gradient_length_scale_data = gtk_adjustment_new (0.0, 0.0, 1000.0, 1.0, 1.0, 0.0);
|
gradient_length_scale_data = gtk_adjustment_new (0.0, 0.0, 50.0,1.1, 0.1, 0.0);
|
||||||
gradient_length_scale = gtk_hscale_new (GTK_ADJUSTMENT (gradient_length_scale_data));
|
gradient_length_scale = gtk_hscale_new (GTK_ADJUSTMENT (gradient_length_scale_data));
|
||||||
gtk_box_pack_start (GTK_BOX (vbox), gradient_length_scale, TRUE, TRUE, 0);
|
gtk_box_pack_start (GTK_BOX (vbox), gradient_length_scale, TRUE, TRUE, 0);
|
||||||
gtk_scale_set_value_pos (GTK_SCALE (gradient_length_scale), GTK_POS_TOP);
|
gtk_scale_set_value_pos (GTK_SCALE (gradient_length_scale), GTK_POS_TOP);
|
||||||
|
@ -159,6 +187,32 @@ create_paint_options (void)
|
||||||
gtk_widget_show (gradient_length_scale);
|
gtk_widget_show (gradient_length_scale);
|
||||||
gtk_widget_show (hbox);
|
gtk_widget_show (hbox);
|
||||||
|
|
||||||
|
/* the radio frame and box */
|
||||||
|
radio_frame = gtk_frame_new (_("Gradient Type"));
|
||||||
|
gtk_box_pack_start (GTK_BOX (vbox), radio_frame, FALSE, FALSE, 0);
|
||||||
|
|
||||||
|
radio_box = gtk_vbox_new (FALSE, 1);
|
||||||
|
gtk_container_add (GTK_CONTAINER (radio_frame), radio_box);
|
||||||
|
|
||||||
|
/* the radio buttons */
|
||||||
|
group = NULL;
|
||||||
|
for (i = 0; i < 4; i++)
|
||||||
|
{
|
||||||
|
radio_button = gtk_radio_button_new_with_label (group, gradient_types[i]);
|
||||||
|
group = gtk_radio_button_group (GTK_RADIO_BUTTON (radio_button));
|
||||||
|
gtk_signal_connect (GTK_OBJECT (radio_button), "toggled",
|
||||||
|
(GtkSignalFunc) paintbrush_gradient_type_callback,
|
||||||
|
(void *)((long) i));
|
||||||
|
gtk_box_pack_start (GTK_BOX (radio_box), radio_button, FALSE, FALSE, 0);
|
||||||
|
gtk_widget_show (radio_button);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio_button), TRUE);
|
||||||
|
gtk_widget_show (radio_box);
|
||||||
|
gtk_widget_show (radio_frame);
|
||||||
|
|
||||||
|
|
||||||
/* the incremental toggle */
|
/* the incremental toggle */
|
||||||
incremental_toggle = gtk_check_button_new_with_label (_("Incremental"));
|
incremental_toggle = gtk_check_button_new_with_label (_("Incremental"));
|
||||||
gtk_box_pack_start (GTK_BOX (vbox), incremental_toggle, FALSE, FALSE, 0);
|
gtk_box_pack_start (GTK_BOX (vbox), incremental_toggle, FALSE, FALSE, 0);
|
||||||
|
@ -206,7 +260,8 @@ paintbrush_paint_func (PaintCore *paint_core,
|
||||||
paintbrush_motion (paint_core, drawable,
|
paintbrush_motion (paint_core, drawable,
|
||||||
paint_options->fade_out,
|
paint_options->fade_out,
|
||||||
paint_options->gradient_length,
|
paint_options->gradient_length,
|
||||||
paint_options->incremental);
|
paint_options->incremental,
|
||||||
|
gradient_type);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FINISH_PAINT :
|
case FINISH_PAINT :
|
||||||
|
@ -258,7 +313,8 @@ paintbrush_motion (PaintCore *paint_core,
|
||||||
GimpDrawable *drawable,
|
GimpDrawable *drawable,
|
||||||
double fade_out,
|
double fade_out,
|
||||||
double gradient_length,
|
double gradient_length,
|
||||||
gboolean incremental)
|
gboolean incremental,
|
||||||
|
int gradient_type)
|
||||||
{
|
{
|
||||||
GImage *gimage;
|
GImage *gimage;
|
||||||
TempBuf * area;
|
TempBuf * area;
|
||||||
|
@ -298,7 +354,7 @@ paintbrush_motion (PaintCore *paint_core,
|
||||||
|
|
||||||
/* hard core to mode LOOP_TRIANGLE */
|
/* hard core to mode LOOP_TRIANGLE */
|
||||||
/* need to maek a gui to handle this */
|
/* need to maek a gui to handle this */
|
||||||
mode = LOOP_TRIANGLE;
|
mode = gradient_type;
|
||||||
|
|
||||||
if(gradient_length)
|
if(gradient_length)
|
||||||
{
|
{
|
||||||
|
@ -336,7 +392,7 @@ paintbrush_non_gui_paint_func (PaintCore *paint_core,
|
||||||
GimpDrawable *drawable,
|
GimpDrawable *drawable,
|
||||||
int state)
|
int state)
|
||||||
{
|
{
|
||||||
paintbrush_motion (paint_core, drawable, non_gui_fade_out,non_gui_gradient_length, non_gui_incremental);
|
paintbrush_motion (paint_core, drawable, non_gui_fade_out,non_gui_gradient_length, non_gui_incremental, gradient_type);
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue