app: Clearly present Fade and Color dynamics options as such

This commit is contained in:
Alexia Death 2010-11-24 23:34:00 +02:00
parent d46b53f63d
commit 904048cdcb
4 changed files with 170 additions and 225 deletions

View File

@ -460,15 +460,11 @@ gimp_dynamics_output_get_linear_value (GimpDynamicsOutput *output,
factors++;
}
if ((output->use_fade) && (options))
if (output->use_fade)
{
GimpFadeOptions *fade_options = options->fade_options;
total += gimp_curve_map_value (output->fade_curve, fade_point);
if (fade_options->use_fade)
{
total += gimp_curve_map_value (output->fade_curve, fade_point);
factors++;
}
factors++;
}
if (factors > 0)
@ -565,15 +561,11 @@ gimp_dynamics_output_get_angular_value (GimpDynamicsOutput *output,
factors++;
}
if ((output->use_fade) && (options))
if (output->use_fade)
{
GimpFadeOptions *fade_options = options->fade_options;
total += gimp_curve_map_value (output->fade_curve, fade_point);
if (fade_options->use_fade)
{
total += gimp_curve_map_value (output->fade_curve, fade_point);
factors++;
}
factors++;
}
if (factors > 0)
@ -659,15 +651,11 @@ gimp_dynamics_output_get_aspect_value (GimpDynamicsOutput *output,
factors++;
}
if ((output->use_fade) && (options))
if (output->use_fade)
{
GimpFadeOptions *fade_options = options->fade_options;
total += gimp_curve_map_value (output->fade_curve, fade_point);
if (fade_options->use_fade)
{
total += gimp_curve_map_value (output->fade_curve, fade_point);
factors++;
}
factors++;
}
if (factors > 0)

View File

@ -44,16 +44,17 @@
#define DEFAULT_APPLICATION_MODE GIMP_PAINT_CONSTANT
#define DEFAULT_HARD FALSE
#define DEFAULT_USE_FADE FALSE
#define DEFAULT_USE_JITTER FALSE
#define DEFAULT_JITTER_AMOUNT 0.2
#define DEFAULT_DYNAMICS_EXPANDED FALSE
#define DEFAULT_FADE_LENGTH 100.0
#define DEFAULT_FADE_REVERSE FALSE
#define DEFAULT_FADE_REPEAT GIMP_REPEAT_NONE
#define DEFAULT_FADE_UNIT GIMP_UNIT_PIXEL
#define DEFAULT_USE_JITTER FALSE
#define DEFAULT_JITTER_AMOUNT 0.2
#define DEFAULT_USE_GRADIENT FALSE
#define DEFAULT_GRADIENT_REVERSE FALSE
#define DEFAULT_GRADIENT_REPEAT GIMP_REPEAT_TRIANGULAR
#define DEFAULT_GRADIENT_LENGTH 100.0
@ -75,16 +76,16 @@ enum
PROP_APPLICATION_MODE,
PROP_HARD,
PROP_USE_FADE,
PROP_USE_JITTER,
PROP_JITTER_AMOUNT,
PROP_DYNAMICS_EXPANDED,
PROP_FADE_LENGTH,
PROP_FADE_REVERSE,
PROP_FADE_REPEAT,
PROP_FADE_UNIT,
PROP_USE_JITTER,
PROP_JITTER_AMOUNT,
PROP_USE_GRADIENT,
PROP_GRADIENT_REVERSE,
PROP_BRUSH_VIEW_TYPE,
@ -108,8 +109,6 @@ static void gimp_paint_options_get_property (GObject *object,
guint property_id,
GValue *value,
GParamSpec *pspec);
static void gimp_paint_options_notify (GObject *object,
GParamSpec *pspec);
@ -127,7 +126,6 @@ gimp_paint_options_class_init (GimpPaintOptionsClass *klass)
object_class->finalize = gimp_paint_options_finalize;
object_class->set_property = gimp_paint_options_set_property;
object_class->get_property = gimp_paint_options_get_property;
object_class->notify = gimp_paint_options_notify;
g_object_class_install_property (object_class, PROP_PAINT_INFO,
g_param_spec_object ("paint-info",
@ -155,15 +153,27 @@ gimp_paint_options_class_init (GimpPaintOptionsClass *klass)
GIMP_TYPE_PAINT_APPLICATION_MODE,
DEFAULT_APPLICATION_MODE,
GIMP_PARAM_STATIC_STRINGS);
GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_HARD,
"hard", NULL,
DEFAULT_HARD,
GIMP_PARAM_STATIC_STRINGS);
GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_USE_FADE,
"use-fade", NULL,
DEFAULT_USE_FADE,
GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_USE_JITTER,
"use-jitter", NULL,
DEFAULT_USE_JITTER,
GIMP_PARAM_STATIC_STRINGS);
GIMP_CONFIG_INSTALL_PROP_DOUBLE (object_class, PROP_JITTER_AMOUNT,
"jitter-amount", NULL,
0.0, 50.0, DEFAULT_JITTER_AMOUNT,
GIMP_PARAM_STATIC_STRINGS);
GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_DYNAMICS_EXPANDED,
"dynamics-expanded", NULL,
DEFAULT_DYNAMICS_EXPANDED,
GIMP_PARAM_STATIC_STRINGS);
GIMP_CONFIG_INSTALL_PROP_DOUBLE (object_class, PROP_FADE_LENGTH,
"fade-length", NULL,
0.0, 32767.0, DEFAULT_FADE_LENGTH,
@ -182,18 +192,6 @@ gimp_paint_options_class_init (GimpPaintOptionsClass *klass)
DEFAULT_FADE_REPEAT,
GIMP_PARAM_STATIC_STRINGS);
GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_USE_JITTER,
"use-jitter", NULL,
DEFAULT_USE_JITTER,
GIMP_PARAM_STATIC_STRINGS);
GIMP_CONFIG_INSTALL_PROP_DOUBLE (object_class, PROP_JITTER_AMOUNT,
"jitter-amount", NULL,
0.0, 50.0, DEFAULT_JITTER_AMOUNT,
GIMP_PARAM_STATIC_STRINGS);
GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_USE_GRADIENT,
"use-gradient", NULL,
DEFAULT_USE_GRADIENT,
GIMP_PARAM_STATIC_STRINGS);
GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_GRADIENT_REVERSE,
"gradient-reverse", NULL,
DEFAULT_GRADIENT_REVERSE,
@ -321,8 +319,16 @@ gimp_paint_options_set_property (GObject *object,
options->hard = g_value_get_boolean (value);
break;
case PROP_USE_FADE:
fade_options->use_fade = g_value_get_boolean (value);
case PROP_USE_JITTER:
jitter_options->use_jitter = g_value_get_boolean (value);
break;
case PROP_JITTER_AMOUNT:
jitter_options->jitter_amount = g_value_get_double (value);
break;
case PROP_DYNAMICS_EXPANDED:
options->dynamics_expanded = g_value_get_boolean (value);
break;
case PROP_FADE_LENGTH:
@ -341,18 +347,6 @@ gimp_paint_options_set_property (GObject *object,
fade_options->fade_unit = g_value_get_int (value);
break;
case PROP_USE_JITTER:
jitter_options->use_jitter = g_value_get_boolean (value);
break;
case PROP_JITTER_AMOUNT:
jitter_options->jitter_amount = g_value_get_double (value);
break;
case PROP_USE_GRADIENT:
gradient_options->use_gradient = g_value_get_boolean (value);
break;
case PROP_GRADIENT_REVERSE:
gradient_options->gradient_reverse = g_value_get_boolean (value);
break;
@ -432,8 +426,16 @@ gimp_paint_options_get_property (GObject *object,
g_value_set_boolean (value, options->hard);
break;
case PROP_USE_FADE:
g_value_set_boolean (value, fade_options->use_fade);
case PROP_USE_JITTER:
g_value_set_boolean (value, jitter_options->use_jitter);
break;
case PROP_JITTER_AMOUNT:
g_value_set_double (value, jitter_options->jitter_amount);
break;
case PROP_DYNAMICS_EXPANDED:
g_value_set_boolean (value, options->dynamics_expanded);
break;
case PROP_FADE_LENGTH:
@ -452,18 +454,6 @@ gimp_paint_options_get_property (GObject *object,
g_value_set_int (value, fade_options->fade_unit);
break;
case PROP_USE_JITTER:
g_value_set_boolean (value, jitter_options->use_jitter);
break;
case PROP_JITTER_AMOUNT:
g_value_set_double (value, jitter_options->jitter_amount);
break;
case PROP_USE_GRADIENT:
g_value_set_boolean (value, gradient_options->use_gradient);
break;
case PROP_GRADIENT_REVERSE:
g_value_set_boolean (value, gradient_options->gradient_reverse);
break;
@ -506,30 +496,6 @@ gimp_paint_options_get_property (GObject *object,
}
}
static void
gimp_paint_options_notify (GObject *object,
GParamSpec *pspec)
{
GimpPaintOptions *options = GIMP_PAINT_OPTIONS (object);
if (pspec->param_id == PROP_USE_GRADIENT)
{
if (options->gradient_options->use_gradient)
{
options->application_mode_save = options->application_mode;
options->application_mode = GIMP_PAINT_INCREMENTAL;
}
else
{
options->application_mode = options->application_mode_save;
}
g_object_notify (object, "application-mode");
}
if (G_OBJECT_CLASS (parent_class)->notify)
G_OBJECT_CLASS (parent_class)->notify (object, pspec);
}
GimpPaintOptions *
gimp_paint_options_new (GimpPaintInfo *paint_info)
@ -553,7 +519,10 @@ gimp_paint_options_get_fade (GimpPaintOptions *paint_options,
gdouble pixel_dist)
{
GimpFadeOptions *fade_options;
gdouble z = -1.0;
gdouble z = -1.0;
gdouble fade_out = 0.0;
gdouble unit_factor;
gdouble pos;
g_return_val_if_fail (GIMP_IS_PAINT_OPTIONS (paint_options),
@ -562,66 +531,57 @@ gimp_paint_options_get_fade (GimpPaintOptions *paint_options,
fade_options = paint_options->fade_options;
if (fade_options->use_fade)
switch (fade_options->fade_unit)
{
gdouble fade_out = 0.0;
gdouble unit_factor;
gdouble pos;
case GIMP_UNIT_PIXEL:
fade_out = fade_options->fade_length;
break;
case GIMP_UNIT_PERCENT:
fade_out = (MAX (gimp_image_get_width (image),
gimp_image_get_height (image)) *
fade_options->fade_length / 100);
break;
switch (fade_options->fade_unit)
{
case GIMP_UNIT_PIXEL:
fade_out = fade_options->fade_length;
break;
default:
{
gdouble xres;
gdouble yres;
case GIMP_UNIT_PERCENT:
fade_out = (MAX (gimp_image_get_width (image),
gimp_image_get_height (image)) *
fade_options->fade_length / 100);
break;
gimp_image_get_resolution (image, &xres, &yres);
default:
{
gdouble xres;
gdouble yres;
gimp_image_get_resolution (image, &xres, &yres);
unit_factor = gimp_unit_get_factor (fade_options->fade_unit);
fade_out = (fade_options->fade_length *
MAX (xres, yres) / unit_factor);
}
break;
}
/* factor in the fade out value */
if (fade_out > 0.0)
{
pos = pixel_dist / fade_out;
}
else
pos = DYNAMIC_MAX_VALUE;
/* for no repeat, set pos close to 1.0 after the first chunk */
if (fade_options->fade_repeat == GIMP_REPEAT_NONE && pos >= DYNAMIC_MAX_VALUE)
pos = DYNAMIC_MAX_VALUE - 0.0000001;
if (((gint) pos & 1) &&
fade_options->fade_repeat != GIMP_REPEAT_SAWTOOTH)
pos = DYNAMIC_MAX_VALUE - (pos - (gint) pos);
else
pos = pos - (gint) pos;
z = pos;
if (fade_options->fade_reverse)
z = 1.0 - z;
return z; /* ln (1/255) */
unit_factor = gimp_unit_get_factor (fade_options->fade_unit);
fade_out = (fade_options->fade_length *
MAX (xres, yres) / unit_factor);
}
break;
}
return DYNAMIC_MIN_VALUE;
/* factor in the fade out value */
if (fade_out > 0.0)
{
pos = pixel_dist / fade_out;
}
else
pos = DYNAMIC_MAX_VALUE;
/* for no repeat, set pos close to 1.0 after the first chunk */
if (fade_options->fade_repeat == GIMP_REPEAT_NONE && pos >= DYNAMIC_MAX_VALUE)
pos = DYNAMIC_MAX_VALUE - 0.0000001;
if (((gint) pos & 1) &&
fade_options->fade_repeat != GIMP_REPEAT_SAWTOOTH)
pos = DYNAMIC_MAX_VALUE - (pos - (gint) pos);
else
pos = pos - (gint) pos;
z = pos;
if (fade_options->fade_reverse)
z = 1.0 - z;
return z; /* ln (1/255) */
}
gdouble
@ -663,7 +623,7 @@ gimp_paint_options_get_gradient_color (GimpPaintOptions *paint_options,
dynamics = gimp_context_get_dynamics (GIMP_CONTEXT (paint_options));
if (gimp_dynamics_output_is_enabled(dynamics->color_output) && gradient_options->use_gradient)
if (gimp_dynamics_output_is_enabled (dynamics->color_output))
{
gimp_gradient_get_color_at (gradient, GIMP_CONTEXT (paint_options),
NULL, grad_point,

View File

@ -37,7 +37,6 @@ typedef struct _GimpGradientOptions GimpGradientOptions;
struct _GimpFadeOptions
{
gboolean use_fade;
gboolean fade_reverse;
gdouble fade_length;
GimpUnit fade_unit;
@ -52,7 +51,6 @@ struct _GimpJitterOptions
struct _GimpGradientOptions
{
gboolean use_gradient;
gboolean gradient_reverse;
GimpRepeatMode gradient_repeat;
};
@ -83,6 +81,8 @@ struct _GimpPaintOptions
gboolean hard;
gboolean dynamics_expanded;
GimpFadeOptions *fade_options;
GimpJitterOptions *jitter_options;
GimpGradientOptions *gradient_options;

View File

@ -53,11 +53,9 @@
static GtkWidget * fade_options_gui (GimpPaintOptions *paint_options,
static GtkWidget * dynamics_options_gui (GimpPaintOptions *paint_options,
GType tool_type);
static GtkWidget * gradient_options_gui (GimpPaintOptions *paint_options,
GType tool_type,
GtkWidget *incremental_toggle);
static GtkWidget * jitter_options_gui (GimpPaintOptions *paint_options,
GType tool_type);
@ -122,13 +120,6 @@ gimp_paint_options_gui (GimpToolOptions *tool_options)
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
gtk_widget_show (button);
button = gimp_prop_dynamics_box_new (NULL, GIMP_CONTEXT (tool_options),
_("Dynamics"), 2,
"dynamics-view-type",
"dynamics-view-size");
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
gtk_widget_show (button);
hbox = gtk_hbox_new (FALSE, 2);
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
gtk_widget_show (hbox);
@ -164,11 +155,15 @@ gimp_paint_options_gui (GimpToolOptions *tool_options)
1.0, 5.0, 2);
gtk_box_pack_start (GTK_BOX (vbox), scale, FALSE, FALSE, 0);
gtk_widget_show (scale);
}
if (g_type_is_a (tool_type, GIMP_TYPE_BRUSH_TOOL))
{
frame = fade_options_gui (options, tool_type);
button = gimp_prop_dynamics_box_new (NULL, GIMP_CONTEXT (tool_options),
_("Dynamics"), 2,
"dynamics-view-type",
"dynamics-view-size");
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
gtk_widget_show (button);
frame = dynamics_options_gui (options, tool_type);
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
gtk_widget_show (frame);
@ -206,12 +201,7 @@ gimp_paint_options_gui (GimpToolOptions *tool_options)
gtk_widget_show (button);
}
if (g_type_is_a (tool_type, GIMP_TYPE_PAINTBRUSH_TOOL))
{
frame = gradient_options_gui (options, tool_type, incremental_toggle);
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
gtk_widget_show (frame);
}
return vbox;
}
@ -220,35 +210,49 @@ gimp_paint_options_gui (GimpToolOptions *tool_options)
/* private functions */
static GtkWidget *
fade_options_gui (GimpPaintOptions *paint_options,
GType tool_type)
dynamics_options_gui (GimpPaintOptions *paint_options,
GType tool_type)
{
GObject *config = G_OBJECT (paint_options);
GtkWidget *frame;
GtkWidget *table;
GtkWidget *inner_frame;
GtkWidget *fade_table;
GtkWidget *gradient_table;
GtkWidget *scale;
GtkWidget *menu;
GtkWidget *combo;
GtkWidget *checkbox;
GtkWidget *vbox;
GtkWidget *box;
table = gtk_table_new (3, 3, FALSE);
gtk_table_set_col_spacings (GTK_TABLE (table), 2);
gtk_table_set_row_spacings (GTK_TABLE (table), 2);
frame = gimp_prop_expander_new (config, "dynamics-expanded",
_("Dynamics options"));
frame = gimp_prop_expanding_frame_new (config, "use-fade",
_("Fade out"),
table, NULL);
vbox = gtk_vbox_new (FALSE, 2);
gtk_container_add (GTK_CONTAINER (frame), vbox);
gtk_widget_show (vbox);
inner_frame = gimp_frame_new (_("Fade options:"));
gtk_box_pack_start (GTK_BOX (vbox), inner_frame, FALSE, FALSE, 0);
gtk_widget_show (inner_frame);
fade_table = gtk_table_new (3, 3, FALSE);
gtk_table_set_col_spacings (GTK_TABLE (fade_table), 2);
gtk_table_set_row_spacings (GTK_TABLE (fade_table), 2);
gtk_container_add (GTK_CONTAINER (inner_frame), fade_table);
gtk_widget_show (fade_table);
/* the fade-out sizeentry */
scale = gimp_prop_spin_scale_new (config, "fade-length",
_("Length"), 1.0, 50.0, 0);
gtk_table_attach (GTK_TABLE (table), scale, 0, 2, 0, 1,
_("Fade length"), 1.0, 50.0, 0);
gtk_table_attach (GTK_TABLE (fade_table), scale, 0, 2, 0, 1,
GTK_EXPAND | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0);
gtk_widget_show (scale);
/* the fade-out unitmenu */
menu = gimp_prop_unit_combo_box_new (config, "fade-unit");
gtk_table_attach (GTK_TABLE (table), menu, 2, 3, 0, 1,
gtk_table_attach (GTK_TABLE (fade_table), menu, 2, 3, 0, 1,
GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0);
gtk_widget_show (menu);
@ -260,17 +264,42 @@ fade_options_gui (GimpPaintOptions *paint_options,
/* the repeat type */
combo = gimp_prop_enum_combo_box_new (config, "fade-repeat", 0, 0);
gimp_table_attach_aligned (GTK_TABLE (table), 0, 2,
gimp_table_attach_aligned (GTK_TABLE (fade_table), 0, 2,
_("Repeat:"), 0.0, 0.5,
combo, 2, FALSE);
checkbox = gimp_prop_check_button_new (config,
"fade-reverse",
_("Reverse"));
gtk_table_attach (GTK_TABLE (table), checkbox, 0, 2, 3, 4,
gtk_table_attach (GTK_TABLE (fade_table), checkbox, 0, 2, 3, 4,
GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0);
gtk_widget_show (checkbox);
/*Color UI*/
if (g_type_is_a (tool_type, GIMP_TYPE_PAINTBRUSH_TOOL))
{
inner_frame = gimp_frame_new (_("Color options:"));
gtk_box_pack_start (GTK_BOX (vbox), inner_frame, FALSE, FALSE, 0);
gtk_widget_show (inner_frame);
gradient_table = gtk_table_new (1, 3, FALSE);
gtk_table_set_col_spacings (GTK_TABLE (gradient_table), 2);
gtk_table_set_row_spacings (GTK_TABLE (gradient_table), 2);
gtk_container_add (GTK_CONTAINER (inner_frame), gradient_table);
gtk_widget_show (gradient_table);
box = gimp_prop_gradient_box_new (NULL, GIMP_CONTEXT (config),
_("Gradient"), 2,
"gradient-view-type",
"gradient-view-size",
"gradient-reverse");
gimp_table_attach_aligned (GTK_TABLE (gradient_table), 0, 1,
_("Colors:"), 0.0, 0.5,
box, 2, FALSE);
}
return frame;
}
@ -293,38 +322,6 @@ jitter_options_gui (GimpPaintOptions *paint_options,
return frame;
}
static GtkWidget *
gradient_options_gui (GimpPaintOptions *paint_options,
GType tool_type,
GtkWidget *incremental_toggle)
{
GObject *config = G_OBJECT (paint_options);
GtkWidget *frame;
GtkWidget *box;
GtkWidget *button;
/* the gradient view */
box = gimp_prop_gradient_box_new (NULL, GIMP_CONTEXT (config),
_("Gradient"), 2,
"gradient-view-type",
"gradient-view-size",
"gradient-reverse");
frame = gimp_prop_expanding_frame_new (config, "use-gradient",
_("Use color from gradient"),
box, &button);
if (incremental_toggle)
{
gtk_widget_set_sensitive (incremental_toggle,
! paint_options->gradient_options->use_gradient);
g_object_set_data (G_OBJECT (button), "inverse_sensitive",
incremental_toggle);
}
return frame;
}
static void
gimp_paint_options_gui_reset_size (GtkWidget *button,
GimpPaintOptions *paint_options)