[gimp] app: make spacing override part of paint options



commit 0c6848e79ee8d63b0f9be5aa04bd2679865ad559
Author: Alexia Death <alexiadeath gmail com>
Date:   Thu Nov 13 00:05:37 2014 +0200

    app: make spacing override part of paint options

 app/paint/gimpbrushcore.c        |    2 +-
 app/paint/gimppaintoptions.c     |   35 ++++++++++++++++++++++++++++++++++
 app/paint/gimppaintoptions.h     |   10 +++++++-
 app/tools/gimppaintoptions-gui.c |   39 ++++++++++++++++++++++++++++++++++++++
 4 files changed, 83 insertions(+), 3 deletions(-)
---
diff --git a/app/paint/gimpbrushcore.c b/app/paint/gimpbrushcore.c
index 5229f6d..1ddae7e 100644
--- a/app/paint/gimpbrushcore.c
+++ b/app/paint/gimpbrushcore.c
@@ -402,7 +402,7 @@ gimp_brush_core_start (GimpPaintCore     *paint_core,
                                                coords);
     }
 
-  core->spacing = (gdouble) gimp_brush_get_spacing (core->main_brush) / 100.0;
+  core->spacing = (gdouble) paint_options->brush_spacing / 100;
 
   core->brush = core->main_brush;
 
diff --git a/app/paint/gimppaintoptions.c b/app/paint/gimppaintoptions.c
index e0c7a67..1b4636b 100644
--- a/app/paint/gimppaintoptions.c
+++ b/app/paint/gimppaintoptions.c
@@ -42,6 +42,7 @@
 #define DEFAULT_BRUSH_SIZE             20.0
 #define DEFAULT_BRUSH_ASPECT_RATIO     0.0
 #define DEFAULT_BRUSH_ANGLE            0.0
+#define DEFAULT_BRUSH_SPACING          10.0
 
 #define DEFAULT_APPLICATION_MODE       GIMP_PAINT_CONSTANT
 #define DEFAULT_HARD                   FALSE
@@ -79,6 +80,7 @@ enum
   PROP_BRUSH_SIZE,
   PROP_BRUSH_ASPECT_RATIO,
   PROP_BRUSH_ANGLE,
+  PROP_BRUSH_SPACING,
 
   PROP_APPLICATION_MODE,
   PROP_HARD,
@@ -161,11 +163,17 @@ gimp_paint_options_class_init (GimpPaintOptionsClass *klass)
                                    "brush-aspect-ratio", _("Brush Aspect Ratio"),
                                    -20.0, 20.0, DEFAULT_BRUSH_ASPECT_RATIO,
                                    GIMP_PARAM_STATIC_STRINGS);
+
   GIMP_CONFIG_INSTALL_PROP_DOUBLE (object_class, PROP_BRUSH_ANGLE,
                                    "brush-angle", _("Brush Angle"),
                                    -180.0, 180.0, DEFAULT_BRUSH_ANGLE,
                                    GIMP_PARAM_STATIC_STRINGS);
 
+  GIMP_CONFIG_INSTALL_PROP_DOUBLE (object_class, PROP_BRUSH_SPACING,
+                                   "brush-spacing", _("Brush spacing"),
+                                   1.0, 5000.0, DEFAULT_BRUSH_SPACING,
+                                   GIMP_PARAM_STATIC_STRINGS);
+
   GIMP_CONFIG_INSTALL_PROP_ENUM (object_class, PROP_APPLICATION_MODE,
                                  "application-mode", _("Every stamp has its own opacity"),
                                  GIMP_TYPE_PAINT_APPLICATION_MODE,
@@ -352,6 +360,10 @@ gimp_paint_options_set_property (GObject      *object,
       options->brush_angle = - 1.0 * g_value_get_double (value) / 360.0; /* let's make the angle 
mathematically correct */
       break;
 
+    case PROP_BRUSH_SPACING:
+      options->brush_spacing = g_value_get_double (value);
+      break;
+
     case PROP_APPLICATION_MODE:
       options->application_mode = g_value_get_enum (value);
       break;
@@ -476,6 +488,10 @@ gimp_paint_options_get_property (GObject    *object,
       g_value_set_double (value, - 1.0 * options->brush_angle * 360.0); /* mathematically correct -> 
intuitively correct */
       break;
 
+    case PROP_BRUSH_SPACING:
+      g_value_set_double (value, options->brush_spacing);
+      break;
+
     case PROP_APPLICATION_MODE:
       g_value_set_enum (value, options->application_mode);
       break;
@@ -757,6 +773,25 @@ gimp_paint_options_set_default_brush_size (GimpPaintOptions *paint_options,
 }
 
 void
+gimp_paint_options_set_default_brush_spacing (GimpPaintOptions *paint_options,
+                                              GimpBrush        *brush)
+{
+  g_return_if_fail (GIMP_IS_PAINT_OPTIONS (paint_options));
+  g_return_if_fail (brush == NULL || GIMP_IS_BRUSH (brush));
+
+  if (! brush)
+    brush = gimp_context_get_brush (GIMP_CONTEXT (paint_options));
+
+  if (brush)
+    {
+
+      g_object_set (paint_options,
+                    "brush-spacing", (gdouble) gimp_brush_get_spacing (brush),
+                    NULL);
+    }
+}
+
+void
 gimp_paint_options_copy_brush_props (GimpPaintOptions *src,
                                      GimpPaintOptions *dest)
 {
diff --git a/app/paint/gimppaintoptions.h b/app/paint/gimppaintoptions.h
index 2b23604..945609d 100644
--- a/app/paint/gimppaintoptions.h
+++ b/app/paint/gimppaintoptions.h
@@ -85,6 +85,7 @@ struct _GimpPaintOptions
   gdouble                   brush_size;
   gdouble                   brush_angle;
   gdouble                   brush_aspect_ratio;
+  gdouble                   brush_spacing;
 
   GimpPaintApplicationMode  application_mode;
   GimpPaintApplicationMode  application_mode_save;
@@ -132,9 +133,14 @@ gboolean gimp_paint_options_get_gradient_color (GimpPaintOptions *paint_options,
                                                 GimpRGB          *color);
 
 GimpBrushApplicationMode
-             gimp_paint_options_get_brush_mode (GimpPaintOptions *paint_options);
+        gimp_paint_options_get_brush_mode      (GimpPaintOptions *paint_options);
 
-void gimp_paint_options_set_default_brush_size (GimpPaintOptions *paint_options,
+void    gimp_paint_options_set_default_brush_size
+                                               (GimpPaintOptions *paint_options,
+                                                GimpBrush        *brush);
+
+void    gimp_paint_options_set_default_brush_spacing
+                                               (GimpPaintOptions *paint_options,
                                                 GimpBrush        *brush);
 
 void    gimp_paint_options_copy_brush_props    (GimpPaintOptions *src,
diff --git a/app/tools/gimppaintoptions-gui.c b/app/tools/gimppaintoptions-gui.c
index 7b355dd..a63377e 100644
--- a/app/tools/gimppaintoptions-gui.c
+++ b/app/tools/gimppaintoptions-gui.c
@@ -52,6 +52,9 @@
 
 static void gimp_paint_options_gui_reset_size  (GtkWidget        *button,
                                                 GimpPaintOptions *paint_options);
+static void gimp_paint_options_gui_reset_spacing
+                                               (GtkWidget        *button,
+                                                GimpPaintOptions *paint_options);
 static void gimp_paint_options_gui_reset_aspect_ratio
                                                (GtkWidget        *button,
                                                 GimpPaintOptions *paint_options);
@@ -203,6 +206,32 @@ gimp_paint_options_gui (GimpToolOptions *tool_options)
       gimp_help_set_help_data (button,
                                _("Reset angle to zero"), NULL);
 
+      hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2);
+      gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
+      gtk_widget_show (hbox);
+
+      scale = gimp_prop_spin_scale_new (config, "brush-spacing",
+                                        _("Spacing"),
+                                        1.0, 10.0, 2);
+      gimp_spin_scale_set_scale_limits (GIMP_SPIN_SCALE (scale), 1.0, 200.0);
+      gimp_spin_scale_set_gamma (GIMP_SPIN_SCALE (scale), 1.7);
+      gtk_box_pack_start (GTK_BOX (hbox), scale, TRUE, TRUE, 0);
+      gtk_widget_show (scale);
+
+      button = gimp_icon_button_new (GIMP_STOCK_RESET, NULL);
+      gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
+      gtk_image_set_from_icon_name (GTK_IMAGE (gtk_bin_get_child (GTK_BIN (button))),
+                                    GIMP_STOCK_RESET, GTK_ICON_SIZE_MENU);
+      gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
+      gtk_widget_show (button);
+
+      g_signal_connect (button, "clicked",
+                        G_CALLBACK (gimp_paint_options_gui_reset_spacing),
+                        options);
+
+      gimp_help_set_help_data (button,
+                               _("Reset size to brush's native spacing"), NULL);
+
       button = gimp_prop_dynamics_box_new (NULL, GIMP_CONTEXT (tool_options),
                                            _("Dynamics"), 2,
                                            "dynamics-view-type",
@@ -412,6 +441,16 @@ gimp_paint_options_gui_reset_size (GtkWidget        *button,
 }
 
 static void
+gimp_paint_options_gui_reset_spacing (GtkWidget        *button,
+                                   GimpPaintOptions *paint_options)
+{
+ GimpBrush *brush = gimp_context_get_brush (GIMP_CONTEXT (paint_options));
+
+ if (brush)
+   gimp_paint_options_set_default_brush_spacing (paint_options, brush);
+}
+
+static void
 gimp_paint_options_gui_reset_aspect_ratio (GtkWidget        *button,
                                            GimpPaintOptions *paint_options)
 {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]