[gimp] app: a first step trying to tidying up the line art bucket fill options.
- From: Jehan <jehanp src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: a first step trying to tidying up the line art bucket fill options.
- Date: Thu, 3 Mar 2022 17:45:42 +0000 (UTC)
commit b896b337e20df0fd76672fc0133e3e3523deed68
Author: Jehan <jehan girinstud io>
Date: Tue Mar 1 20:08:41 2022 +0100
app: a first step trying to tidying up the line art bucket fill options.
There are clearly 3 types of settings:
1. How the line art is detected.
2. How do we additionally close line art.
3. How to handle fill borders.
Additionally I am rewording some options:
- "Allow closing lines in selected layer" -> "Manual closure in fill
layer"
- Adding the "Maximum gap length" into an "Automatic closure" frame to
hopefully make a parallel with the "manual" closure settings.
- "Allow completely transparent regions to be filled" -> "Detect opacity
rather than grayscale" (only within the context of the line art bucket
fill) because the main idea of this option is really here that we
detect lines as being opaque pixels, rather than detecting lines are
being dark pixels.
Finally don't hide the manual closure frame when in a configuration
where it won't be taken into account. Only make it insensitive. Having
options disappear is not so nice. Usually you want to gray them out to
have people realize they are simply not always usable.
app/tools/gimpbucketfilloptions.c | 93 +++++++++++++++++++++++++++------------
1 file changed, 66 insertions(+), 27 deletions(-)
---
diff --git a/app/tools/gimpbucketfilloptions.c b/app/tools/gimpbucketfilloptions.c
index fd9567d379..e86822dadd 100644
--- a/app/tools/gimpbucketfilloptions.c
+++ b/app/tools/gimpbucketfilloptions.c
@@ -73,6 +73,8 @@ struct _GimpBucketFillOptionsPrivate
GtkWidget *similar_color_frame;
GtkWidget *line_art_frame;
+ GtkWidget *line_art_frame2;
+ GtkWidget *line_art_frame3;
GtkWidget *fill_as_line_art_frame;
};
@@ -190,7 +192,7 @@ gimp_bucket_fill_options_class_init (GimpBucketFillOptionsClass *klass)
GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_FILL_COLOR_AS_LINE_ART,
"fill-color-as-line-art",
- _("Allow closing lines in selected layer"),
+ _("Manual closure in fill layer"),
_("Consider pixels of selected layer and filled with the fill color as line art
closure"),
FALSE,
GIMP_PARAM_STATIC_STRINGS);
@@ -421,21 +423,22 @@ gimp_bucket_fill_options_update_area (GimpBucketFillOptions *options)
case GIMP_BUCKET_FILL_LINE_ART:
gtk_widget_hide (options->priv->similar_color_frame);
gtk_widget_show (options->priv->line_art_frame);
+ gtk_widget_show (options->priv->line_art_frame2);
+ gtk_widget_show (options->priv->line_art_frame3);
if ((options->fill_mode == GIMP_BUCKET_FILL_FG ||
options->fill_mode == GIMP_BUCKET_FILL_BG) &&
(options->line_art_source == GIMP_LINE_ART_SOURCE_LOWER_LAYER ||
options->line_art_source == GIMP_LINE_ART_SOURCE_UPPER_LAYER))
- gtk_widget_show (options->priv->fill_as_line_art_frame);
+ gtk_widget_set_sensitive (options->priv->fill_as_line_art_frame, TRUE);
else
- gtk_widget_hide (options->priv->fill_as_line_art_frame);
+ gtk_widget_set_sensitive (options->priv->fill_as_line_art_frame, FALSE);
break;
case GIMP_BUCKET_FILL_SIMILAR_COLORS:
- gtk_widget_show (options->priv->similar_color_frame);
- gtk_widget_hide (options->priv->line_art_frame);
- break;
default:
gtk_widget_hide (options->priv->similar_color_frame);
gtk_widget_hide (options->priv->line_art_frame);
+ gtk_widget_hide (options->priv->line_art_frame2);
+ gtk_widget_hide (options->priv->line_art_frame3);
break;
}
}
@@ -549,7 +552,41 @@ gimp_bucket_fill_options_gui (GimpToolOptions *tool_options)
gimp_int_combo_box_set_label (GIMP_INT_COMBO_BOX (combo), _("Source"));
gtk_box_pack_start (GTK_BOX (box2), combo, FALSE, FALSE, 0);
- /* Line Art: fill as line art */
+ /* the fill transparent areas toggle */
+ widget = gimp_prop_check_button_new (config, "fill-transparent",
+ _("Detect opacity rather than grayscale"));
+ gtk_box_pack_start (GTK_BOX (box2), widget, FALSE, FALSE, 0);
+
+ /* Line Art: stroke threshold */
+ scale = gimp_prop_spin_scale_new (config, "line-art-threshold",
+ 0.05, 0.1, 2);
+ gtk_box_pack_start (GTK_BOX (box2), scale, FALSE, FALSE, 0);
+
+ /* Line Art Closure frame */
+ frame = gimp_frame_new (NULL);
+ gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
+ options->priv->line_art_frame2 = frame;
+ gtk_widget_show (frame);
+
+ /* Line Art Closure: frame label */
+ widget = gtk_label_new (_("Line Art Closure"));
+ gtk_frame_set_label_widget (GTK_FRAME (frame), widget);
+ gtk_widget_show (widget);
+
+ box2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+ gtk_container_add (GTK_CONTAINER (frame), box2);
+ gtk_widget_show (box2);
+
+ /* Line Art Closure: max gap length */
+ frame = gimp_frame_new (_("Automatic closure"));
+ gtk_box_pack_start (GTK_BOX (box2), frame, FALSE, FALSE, 0);
+ gtk_widget_show (frame);
+
+ scale = gimp_prop_spin_scale_new (config, "line-art-max-gap-length",
+ 1, 5, 0);
+ gtk_container_add (GTK_CONTAINER (frame), scale);
+
+ /* Line Art Closure: manual line art closure */
scale = gimp_prop_spin_scale_new (config, "fill-color-as-line-art-threshold",
1.0, 16.0, 1);
@@ -558,11 +595,28 @@ gimp_bucket_fill_options_gui (GimpToolOptions *tool_options)
gtk_box_pack_start (GTK_BOX (box2), frame, FALSE, FALSE, 0);
options->priv->fill_as_line_art_frame = frame;
- /* the fill transparent areas toggle */
- widget = gimp_prop_check_button_new (config, "fill-transparent", NULL);
- gtk_box_pack_start (GTK_BOX (box2), widget, FALSE, FALSE, 0);
+ /* Line Art Borders frame */
+
+ frame = gimp_frame_new (NULL);
+ gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
+ options->priv->line_art_frame3 = frame;
+ gtk_widget_show (frame);
+
+ /* Line Art Borders: frame label */
+ widget = gtk_label_new (_("Fill borders"));
+ gtk_frame_set_label_widget (GTK_FRAME (frame), widget);
+ gtk_widget_show (widget);
+
+ box2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+ gtk_container_add (GTK_CONTAINER (frame), box2);
+ gtk_widget_show (box2);
+
+ /* Line Art Borders: max growing size */
+ scale = gimp_prop_spin_scale_new (config, "line-art-max-grow",
+ 1, 5, 0);
+ gtk_box_pack_start (GTK_BOX (box2), scale, FALSE, FALSE, 0);
- /* Line Art: feather radius scale */
+ /* Line Art Borders: feather radius scale */
scale = gimp_prop_spin_scale_new (config, "feather-radius",
1.0, 10.0, 1);
@@ -570,25 +624,10 @@ gimp_bucket_fill_options_gui (GimpToolOptions *tool_options)
scale, NULL);
gtk_box_pack_start (GTK_BOX (box2), frame, FALSE, FALSE, 0);
- /* Line Art: max growing size */
- scale = gimp_prop_spin_scale_new (config, "line-art-max-grow",
- 1, 5, 0);
- gtk_box_pack_start (GTK_BOX (box2), scale, FALSE, FALSE, 0);
-
- /* Line Art: stroke border with paint brush */
+ /* Line Art Borders: stroke border with paint brush */
widget = gimp_prop_check_button_new (config, "line-art-stroke-border", NULL);
gtk_box_pack_start (GTK_BOX (box2), widget, FALSE, FALSE, 0);
- /* Line Art: stroke threshold */
- scale = gimp_prop_spin_scale_new (config, "line-art-threshold",
- 0.05, 0.1, 2);
- gtk_box_pack_start (GTK_BOX (box2), scale, FALSE, FALSE, 0);
-
- /* Line Art: max gap length */
- scale = gimp_prop_spin_scale_new (config, "line-art-max-gap-length",
- 1, 5, 0);
- gtk_box_pack_start (GTK_BOX (box2), scale, FALSE, FALSE, 0);
-
gimp_bucket_fill_options_update_area (options);
return vbox;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]