[gimp] pdb: add pdb calls for hardness and force



commit 60cf10f581336df4e84dd7e517e53e26b279f239
Author: Alexia Death <alexiadeath gmail com>
Date:   Mon Nov 17 15:22:39 2014 +0200

    pdb: add pdb calls for hardness and force

 app/pdb/context-cmds.c       |  271 ++++++++++++++++++++++++++++++++++++++++++
 app/pdb/internal-procs.c     |    2 +-
 libgimp/gimpcontext_pdb.c    |  152 +++++++++++++++++++++++
 libgimp/gimpcontext_pdb.h    |  167 +++++++++++++-------------
 tools/pdbgen/pdb/context.pdb |  253 +++++++++++++++++++++++++++++++++++++++
 5 files changed, 763 insertions(+), 82 deletions(-)
---
diff --git a/app/pdb/context-cmds.c b/app/pdb/context-cmds.c
index c2b4687..3e250d9 100644
--- a/app/pdb/context-cmds.c
+++ b/app/pdb/context-cmds.c
@@ -753,6 +753,168 @@ context_set_brush_default_spacing_invoker (GimpProcedure         *procedure,
 }
 
 static GimpValueArray *
+context_get_brush_hardness_invoker (GimpProcedure         *procedure,
+                                    Gimp                  *gimp,
+                                    GimpContext           *context,
+                                    GimpProgress          *progress,
+                                    const GimpValueArray  *args,
+                                    GError               **error)
+{
+  gboolean success = TRUE;
+  GimpValueArray *return_vals;
+  gdouble hardness = 0.0;
+
+  /* all options should have the same value, so pick a random one */
+  GimpPaintOptions *options =
+    gimp_pdb_context_get_paint_options (GIMP_PDB_CONTEXT (context),
+                                        "gimp-paintbrush");
+
+  if (options)
+    g_object_get (options,
+                  "brush-hardness", &hardness,
+                   NULL);
+  else
+    success = FALSE;
+
+  return_vals = gimp_procedure_get_return_values (procedure, success,
+                                                  error ? *error : NULL);
+
+  if (success)
+    g_value_set_double (gimp_value_array_index (return_vals, 1), hardness);
+
+  return return_vals;
+}
+
+static GimpValueArray *
+context_set_brush_hardness_invoker (GimpProcedure         *procedure,
+                                    Gimp                  *gimp,
+                                    GimpContext           *context,
+                                    GimpProgress          *progress,
+                                    const GimpValueArray  *args,
+                                    GError               **error)
+{
+  gboolean success = TRUE;
+  gdouble hardness;
+
+  hardness = g_value_get_double (gimp_value_array_index (args, 0));
+
+  if (success)
+    {
+      GList *options;
+      GList *list;
+
+      options = gimp_pdb_context_get_brush_options (GIMP_PDB_CONTEXT (context));
+
+      for (list = options; list; list = g_list_next (list))
+        g_object_set (list->data,
+                      "brush-spacing", (gdouble) hardness,
+                       NULL);
+
+      g_list_free (options);
+    }
+
+  return gimp_procedure_get_return_values (procedure, success,
+                                           error ? *error : NULL);
+}
+
+static GimpValueArray *
+context_set_brush_default_hardness_invoker (GimpProcedure         *procedure,
+                                            Gimp                  *gimp,
+                                            GimpContext           *context,
+                                            GimpProgress          *progress,
+                                            const GimpValueArray  *args,
+                                            GError               **error)
+{
+  gboolean success = TRUE;
+  GimpBrush *brush = gimp_context_get_brush (context);
+
+  if (brush)
+    {
+      GList *options;
+      GList *list;
+
+      options = gimp_pdb_context_get_brush_options (GIMP_PDB_CONTEXT (context));
+
+      for (list = options; list; list = g_list_next (list))
+        gimp_paint_options_set_default_brush_hardness (list->data, brush);
+
+      g_list_free (options);
+    }
+  else
+    {
+      success = FALSE;
+    }
+
+  return gimp_procedure_get_return_values (procedure, success,
+                                           error ? *error : NULL);
+}
+
+static GimpValueArray *
+context_get_brush_force_invoker (GimpProcedure         *procedure,
+                                 Gimp                  *gimp,
+                                 GimpContext           *context,
+                                 GimpProgress          *progress,
+                                 const GimpValueArray  *args,
+                                 GError               **error)
+{
+  gboolean success = TRUE;
+  GimpValueArray *return_vals;
+  gdouble force = 0.0;
+
+  /* all options should have the same value, so pick a random one */
+  GimpPaintOptions *options =
+    gimp_pdb_context_get_paint_options (GIMP_PDB_CONTEXT (context),
+                                        "gimp-paintbrush");
+
+  if (options)
+    g_object_get (options,
+                  "brush-force", &force,
+                   NULL);
+  else
+    success = FALSE;
+
+  return_vals = gimp_procedure_get_return_values (procedure, success,
+                                                  error ? *error : NULL);
+
+  if (success)
+    g_value_set_double (gimp_value_array_index (return_vals, 1), force);
+
+  return return_vals;
+}
+
+static GimpValueArray *
+context_set_brush_force_invoker (GimpProcedure         *procedure,
+                                 Gimp                  *gimp,
+                                 GimpContext           *context,
+                                 GimpProgress          *progress,
+                                 const GimpValueArray  *args,
+                                 GError               **error)
+{
+  gboolean success = TRUE;
+  gdouble force;
+
+  force = g_value_get_double (gimp_value_array_index (args, 0));
+
+  if (success)
+    {
+      GList *options;
+      GList *list;
+
+      options = gimp_pdb_context_get_brush_options (GIMP_PDB_CONTEXT (context));
+
+      for (list = options; list; list = g_list_next (list))
+        g_object_set (list->data,
+                      "brush-spacing", (gdouble) force,
+                       NULL);
+
+      g_list_free (options);
+    }
+
+  return gimp_procedure_get_return_values (procedure, success,
+                                           error ? *error : NULL);
+}
+
+static GimpValueArray *
 context_get_dynamics_invoker (GimpProcedure         *procedure,
                               Gimp                  *gimp,
                               GimpContext           *context,
@@ -2698,6 +2860,115 @@ register_context_procs (GimpPDB *pdb)
   g_object_unref (procedure);
 
   /*
+   * gimp-context-get-brush-hardness
+   */
+  procedure = gimp_procedure_new (context_get_brush_hardness_invoker);
+  gimp_object_set_static_name (GIMP_OBJECT (procedure),
+                               "gimp-context-get-brush-hardness");
+  gimp_procedure_set_static_strings (procedure,
+                                     "gimp-context-get-brush-hardness",
+                                     "Get brush hardness in paint options.",
+                                     "Get the brush hardness for brush based paint tools.",
+                                     "Alexia Death",
+                                     "Alexia Death",
+                                     "2014",
+                                     NULL);
+  gimp_procedure_add_return_value (procedure,
+                                   g_param_spec_double ("hardness",
+                                                        "hardness",
+                                                        "brush hardness",
+                                                        0, G_MAXDOUBLE, 0,
+                                                        GIMP_PARAM_READWRITE));
+  gimp_pdb_register_procedure (pdb, procedure);
+  g_object_unref (procedure);
+
+  /*
+   * gimp-context-set-brush-hardness
+   */
+  procedure = gimp_procedure_new (context_set_brush_hardness_invoker);
+  gimp_object_set_static_name (GIMP_OBJECT (procedure),
+                               "gimp-context-set-brush-hardness");
+  gimp_procedure_set_static_strings (procedure,
+                                     "gimp-context-set-brush-hardness",
+                                     "Set brush hardness.",
+                                     "Set the brush hardness for brush based paint tools.",
+                                     "Alexia Death",
+                                     "Alexia Death",
+                                     "2014",
+                                     NULL);
+  gimp_procedure_add_argument (procedure,
+                               g_param_spec_double ("hardness",
+                                                    "hardness",
+                                                    "brush hardness",
+                                                    0, G_MAXDOUBLE, 0,
+                                                    GIMP_PARAM_READWRITE));
+  gimp_pdb_register_procedure (pdb, procedure);
+  g_object_unref (procedure);
+
+  /*
+   * gimp-context-set-brush-default-hardness
+   */
+  procedure = gimp_procedure_new (context_set_brush_default_hardness_invoker);
+  gimp_object_set_static_name (GIMP_OBJECT (procedure),
+                               "gimp-context-set-brush-default-hardness");
+  gimp_procedure_set_static_strings (procedure,
+                                     "gimp-context-set-brush-default-hardness",
+                                     "Set brush spacing to its default.",
+                                     "Set the brush spacing to the default for paintbrush, airbrush, or 
pencil tools.",
+                                     "Alexia Death",
+                                     "Alexia Death",
+                                     "2014",
+                                     NULL);
+  gimp_pdb_register_procedure (pdb, procedure);
+  g_object_unref (procedure);
+
+  /*
+   * gimp-context-get-brush-force
+   */
+  procedure = gimp_procedure_new (context_get_brush_force_invoker);
+  gimp_object_set_static_name (GIMP_OBJECT (procedure),
+                               "gimp-context-get-brush-force");
+  gimp_procedure_set_static_strings (procedure,
+                                     "gimp-context-get-brush-force",
+                                     "Get brush force in paint options.",
+                                     "Get the brush application force for brush based paint tools.",
+                                     "Alexia Death",
+                                     "Alexia Death",
+                                     "2014",
+                                     NULL);
+  gimp_procedure_add_return_value (procedure,
+                                   g_param_spec_double ("force",
+                                                        "force",
+                                                        "brush application force",
+                                                        0, G_MAXDOUBLE, 0,
+                                                        GIMP_PARAM_READWRITE));
+  gimp_pdb_register_procedure (pdb, procedure);
+  g_object_unref (procedure);
+
+  /*
+   * gimp-context-set-brush-force
+   */
+  procedure = gimp_procedure_new (context_set_brush_force_invoker);
+  gimp_object_set_static_name (GIMP_OBJECT (procedure),
+                               "gimp-context-set-brush-force");
+  gimp_procedure_set_static_strings (procedure,
+                                     "gimp-context-set-brush-force",
+                                     "Set brush application force.",
+                                     "Set the brush application force for brush based paint tools.",
+                                     "Alexia Death",
+                                     "Alexia Death",
+                                     "2014",
+                                     NULL);
+  gimp_procedure_add_argument (procedure,
+                               g_param_spec_double ("force",
+                                                    "force",
+                                                    "brush application force",
+                                                    0, G_MAXDOUBLE, 0,
+                                                    GIMP_PARAM_READWRITE));
+  gimp_pdb_register_procedure (pdb, procedure);
+  g_object_unref (procedure);
+
+  /*
    * gimp-context-get-dynamics
    */
   procedure = gimp_procedure_new (context_get_dynamics_invoker);
diff --git a/app/pdb/internal-procs.c b/app/pdb/internal-procs.c
index bf6325c..f21006e 100644
--- a/app/pdb/internal-procs.c
+++ b/app/pdb/internal-procs.c
@@ -28,7 +28,7 @@
 #include "internal-procs.h"
 
 
-/* 738 procedures registered total */
+/* 742 procedures registered total */
 
 void
 internal_procs_init (GimpPDB *pdb)
diff --git a/libgimp/gimpcontext_pdb.c b/libgimp/gimpcontext_pdb.c
index 973c442..9546297 100644
--- a/libgimp/gimpcontext_pdb.c
+++ b/libgimp/gimpcontext_pdb.c
@@ -942,6 +942,158 @@ gimp_context_set_brush_default_spacing (void)
 }
 
 /**
+ * gimp_context_get_brush_hardness:
+ *
+ * Get brush hardness in paint options.
+ *
+ * Get the brush hardness for brush based paint tools.
+ *
+ * Returns: brush hardness.
+ *
+ * Since: GIMP 2.10
+ **/
+gdouble
+gimp_context_get_brush_hardness (void)
+{
+  GimpParam *return_vals;
+  gint nreturn_vals;
+  gdouble hardness = 0.0;
+
+  return_vals = gimp_run_procedure ("gimp-context-get-brush-hardness",
+                                    &nreturn_vals,
+                                    GIMP_PDB_END);
+
+  if (return_vals[0].data.d_status == GIMP_PDB_SUCCESS)
+    hardness = return_vals[1].data.d_float;
+
+  gimp_destroy_params (return_vals, nreturn_vals);
+
+  return hardness;
+}
+
+/**
+ * gimp_context_set_brush_hardness:
+ * @hardness: brush hardness.
+ *
+ * Set brush hardness.
+ *
+ * Set the brush hardness for brush based paint tools.
+ *
+ * Returns: TRUE on success.
+ *
+ * Since: GIMP 2.10
+ **/
+gboolean
+gimp_context_set_brush_hardness (gdouble hardness)
+{
+  GimpParam *return_vals;
+  gint nreturn_vals;
+  gboolean success = TRUE;
+
+  return_vals = gimp_run_procedure ("gimp-context-set-brush-hardness",
+                                    &nreturn_vals,
+                                    GIMP_PDB_FLOAT, hardness,
+                                    GIMP_PDB_END);
+
+  success = return_vals[0].data.d_status == GIMP_PDB_SUCCESS;
+
+  gimp_destroy_params (return_vals, nreturn_vals);
+
+  return success;
+}
+
+/**
+ * gimp_context_set_brush_default_hardness:
+ *
+ * Set brush spacing to its default.
+ *
+ * Set the brush spacing to the default for paintbrush, airbrush, or
+ * pencil tools.
+ *
+ * Returns: TRUE on success.
+ *
+ * Since: GIMP 2.10
+ **/
+gboolean
+gimp_context_set_brush_default_hardness (void)
+{
+  GimpParam *return_vals;
+  gint nreturn_vals;
+  gboolean success = TRUE;
+
+  return_vals = gimp_run_procedure ("gimp-context-set-brush-default-hardness",
+                                    &nreturn_vals,
+                                    GIMP_PDB_END);
+
+  success = return_vals[0].data.d_status == GIMP_PDB_SUCCESS;
+
+  gimp_destroy_params (return_vals, nreturn_vals);
+
+  return success;
+}
+
+/**
+ * gimp_context_get_brush_force:
+ *
+ * Get brush force in paint options.
+ *
+ * Get the brush application force for brush based paint tools.
+ *
+ * Returns: brush application force.
+ *
+ * Since: GIMP 2.10
+ **/
+gdouble
+gimp_context_get_brush_force (void)
+{
+  GimpParam *return_vals;
+  gint nreturn_vals;
+  gdouble force = 0.0;
+
+  return_vals = gimp_run_procedure ("gimp-context-get-brush-force",
+                                    &nreturn_vals,
+                                    GIMP_PDB_END);
+
+  if (return_vals[0].data.d_status == GIMP_PDB_SUCCESS)
+    force = return_vals[1].data.d_float;
+
+  gimp_destroy_params (return_vals, nreturn_vals);
+
+  return force;
+}
+
+/**
+ * gimp_context_set_brush_force:
+ * @force: brush application force.
+ *
+ * Set brush application force.
+ *
+ * Set the brush application force for brush based paint tools.
+ *
+ * Returns: TRUE on success.
+ *
+ * Since: GIMP 2.10
+ **/
+gboolean
+gimp_context_set_brush_force (gdouble force)
+{
+  GimpParam *return_vals;
+  gint nreturn_vals;
+  gboolean success = TRUE;
+
+  return_vals = gimp_run_procedure ("gimp-context-set-brush-force",
+                                    &nreturn_vals,
+                                    GIMP_PDB_FLOAT, force,
+                                    GIMP_PDB_END);
+
+  success = return_vals[0].data.d_status == GIMP_PDB_SUCCESS;
+
+  gimp_destroy_params (return_vals, nreturn_vals);
+
+  return success;
+}
+
+/**
  * gimp_context_get_dynamics:
  *
  * Retrieve the currently active paint dynamics.
diff --git a/libgimp/gimpcontext_pdb.h b/libgimp/gimpcontext_pdb.h
index ccbeba5..58960c3 100644
--- a/libgimp/gimpcontext_pdb.h
+++ b/libgimp/gimpcontext_pdb.h
@@ -32,89 +32,94 @@ G_BEGIN_DECLS
 /* For information look into the C source or the html documentation */
 
 
-gboolean               gimp_context_push                      (void);
-gboolean               gimp_context_pop                       (void);
-gboolean               gimp_context_set_defaults              (void);
-gboolean               gimp_context_list_paint_methods        (gint                     *num_paint_methods,
-                                                               gchar                  ***paint_methods);
-gchar*                 gimp_context_get_paint_method          (void);
-gboolean               gimp_context_set_paint_method          (const gchar              *name);
-gboolean               gimp_context_get_foreground            (GimpRGB                  *foreground);
-gboolean               gimp_context_set_foreground            (const GimpRGB            *foreground);
-gboolean               gimp_context_get_background            (GimpRGB                  *background);
-gboolean               gimp_context_set_background            (const GimpRGB            *background);
-gboolean               gimp_context_set_default_colors        (void);
-gboolean               gimp_context_swap_colors               (void);
-gdouble                gimp_context_get_opacity               (void);
-gboolean               gimp_context_set_opacity               (gdouble                   opacity);
-GimpLayerModeEffects   gimp_context_get_paint_mode            (void);
-gboolean               gimp_context_set_paint_mode            (GimpLayerModeEffects      paint_mode);
-gchar*                 gimp_context_get_brush                 (void);
-gboolean               gimp_context_set_brush                 (const gchar              *name);
-gdouble                gimp_context_get_brush_size            (void);
-gboolean               gimp_context_set_brush_size            (gdouble                   size);
-gboolean               gimp_context_set_brush_default_size    (void);
-gdouble                gimp_context_get_brush_aspect_ratio    (void);
-gboolean               gimp_context_set_brush_aspect_ratio    (gdouble                   aspect);
-gdouble                gimp_context_get_brush_angle           (void);
-gboolean               gimp_context_set_brush_angle           (gdouble                   angle);
-gdouble                gimp_context_get_brush_spacing         (void);
-gboolean               gimp_context_set_brush_spacing         (gdouble                   spacing);
-gboolean               gimp_context_set_brush_default_spacing (void);
-gchar*                 gimp_context_get_dynamics              (void);
-gboolean               gimp_context_set_dynamics              (const gchar              *name);
-gchar*                 gimp_context_get_pattern               (void);
-gboolean               gimp_context_set_pattern               (const gchar              *name);
-gchar*                 gimp_context_get_gradient              (void);
-gboolean               gimp_context_set_gradient              (const gchar              *name);
-gchar*                 gimp_context_get_palette               (void);
-gboolean               gimp_context_set_palette               (const gchar              *name);
-gchar*                 gimp_context_get_font                  (void);
-gboolean               gimp_context_set_font                  (const gchar              *name);
-gboolean               gimp_context_get_antialias             (void);
-gboolean               gimp_context_set_antialias             (gboolean                  antialias);
-gboolean               gimp_context_get_feather               (void);
-gboolean               gimp_context_set_feather               (gboolean                  feather);
-gboolean               gimp_context_get_feather_radius        (gdouble                  *feather_radius_x,
-                                                               gdouble                  *feather_radius_y);
-gboolean               gimp_context_set_feather_radius        (gdouble                   feather_radius_x,
-                                                               gdouble                   feather_radius_y);
-gboolean               gimp_context_get_sample_merged         (void);
-gboolean               gimp_context_set_sample_merged         (gboolean                  sample_merged);
-GimpSelectCriterion    gimp_context_get_sample_criterion      (void);
-gboolean               gimp_context_set_sample_criterion      (GimpSelectCriterion       sample_criterion);
-gdouble                gimp_context_get_sample_threshold      (void);
-gboolean               gimp_context_set_sample_threshold      (gdouble                   sample_threshold);
-gint                   gimp_context_get_sample_threshold_int  (void);
-gboolean               gimp_context_set_sample_threshold_int  (gint                      sample_threshold);
-gboolean               gimp_context_get_sample_transparent    (void);
-gboolean               gimp_context_set_sample_transparent    (gboolean                  sample_transparent);
-GimpInterpolationType  gimp_context_get_interpolation         (void);
-gboolean               gimp_context_set_interpolation         (GimpInterpolationType     interpolation);
-GimpTransformDirection gimp_context_get_transform_direction   (void);
-gboolean               gimp_context_set_transform_direction   (GimpTransformDirection    
transform_direction);
-GimpTransformResize    gimp_context_get_transform_resize      (void);
-gboolean               gimp_context_set_transform_resize      (GimpTransformResize       transform_resize);
+gboolean               gimp_context_push                       (void);
+gboolean               gimp_context_pop                        (void);
+gboolean               gimp_context_set_defaults               (void);
+gboolean               gimp_context_list_paint_methods         (gint                     *num_paint_methods,
+                                                                gchar                  ***paint_methods);
+gchar*                 gimp_context_get_paint_method           (void);
+gboolean               gimp_context_set_paint_method           (const gchar              *name);
+gboolean               gimp_context_get_foreground             (GimpRGB                  *foreground);
+gboolean               gimp_context_set_foreground             (const GimpRGB            *foreground);
+gboolean               gimp_context_get_background             (GimpRGB                  *background);
+gboolean               gimp_context_set_background             (const GimpRGB            *background);
+gboolean               gimp_context_set_default_colors         (void);
+gboolean               gimp_context_swap_colors                (void);
+gdouble                gimp_context_get_opacity                (void);
+gboolean               gimp_context_set_opacity                (gdouble                   opacity);
+GimpLayerModeEffects   gimp_context_get_paint_mode             (void);
+gboolean               gimp_context_set_paint_mode             (GimpLayerModeEffects      paint_mode);
+gchar*                 gimp_context_get_brush                  (void);
+gboolean               gimp_context_set_brush                  (const gchar              *name);
+gdouble                gimp_context_get_brush_size             (void);
+gboolean               gimp_context_set_brush_size             (gdouble                   size);
+gboolean               gimp_context_set_brush_default_size     (void);
+gdouble                gimp_context_get_brush_aspect_ratio     (void);
+gboolean               gimp_context_set_brush_aspect_ratio     (gdouble                   aspect);
+gdouble                gimp_context_get_brush_angle            (void);
+gboolean               gimp_context_set_brush_angle            (gdouble                   angle);
+gdouble                gimp_context_get_brush_spacing          (void);
+gboolean               gimp_context_set_brush_spacing          (gdouble                   spacing);
+gboolean               gimp_context_set_brush_default_spacing  (void);
+gdouble                gimp_context_get_brush_hardness         (void);
+gboolean               gimp_context_set_brush_hardness         (gdouble                   hardness);
+gboolean               gimp_context_set_brush_default_hardness (void);
+gdouble                gimp_context_get_brush_force            (void);
+gboolean               gimp_context_set_brush_force            (gdouble                   force);
+gchar*                 gimp_context_get_dynamics               (void);
+gboolean               gimp_context_set_dynamics               (const gchar              *name);
+gchar*                 gimp_context_get_pattern                (void);
+gboolean               gimp_context_set_pattern                (const gchar              *name);
+gchar*                 gimp_context_get_gradient               (void);
+gboolean               gimp_context_set_gradient               (const gchar              *name);
+gchar*                 gimp_context_get_palette                (void);
+gboolean               gimp_context_set_palette                (const gchar              *name);
+gchar*                 gimp_context_get_font                   (void);
+gboolean               gimp_context_set_font                   (const gchar              *name);
+gboolean               gimp_context_get_antialias              (void);
+gboolean               gimp_context_set_antialias              (gboolean                  antialias);
+gboolean               gimp_context_get_feather                (void);
+gboolean               gimp_context_set_feather                (gboolean                  feather);
+gboolean               gimp_context_get_feather_radius         (gdouble                  *feather_radius_x,
+                                                                gdouble                  *feather_radius_y);
+gboolean               gimp_context_set_feather_radius         (gdouble                   feather_radius_x,
+                                                                gdouble                   feather_radius_y);
+gboolean               gimp_context_get_sample_merged          (void);
+gboolean               gimp_context_set_sample_merged          (gboolean                  sample_merged);
+GimpSelectCriterion    gimp_context_get_sample_criterion       (void);
+gboolean               gimp_context_set_sample_criterion       (GimpSelectCriterion       sample_criterion);
+gdouble                gimp_context_get_sample_threshold       (void);
+gboolean               gimp_context_set_sample_threshold       (gdouble                   sample_threshold);
+gint                   gimp_context_get_sample_threshold_int   (void);
+gboolean               gimp_context_set_sample_threshold_int   (gint                      sample_threshold);
+gboolean               gimp_context_get_sample_transparent     (void);
+gboolean               gimp_context_set_sample_transparent     (gboolean                  
sample_transparent);
+GimpInterpolationType  gimp_context_get_interpolation          (void);
+gboolean               gimp_context_set_interpolation          (GimpInterpolationType     interpolation);
+GimpTransformDirection gimp_context_get_transform_direction    (void);
+gboolean               gimp_context_set_transform_direction    (GimpTransformDirection    
transform_direction);
+GimpTransformResize    gimp_context_get_transform_resize       (void);
+gboolean               gimp_context_set_transform_resize       (GimpTransformResize       transform_resize);
 GIMP_DEPRECATED
-gint                   gimp_context_get_transform_recursion   (void);
+gint                   gimp_context_get_transform_recursion    (void);
 GIMP_DEPRECATED
-gboolean               gimp_context_set_transform_recursion   (gint                      
transform_recursion);
-gdouble                gimp_context_get_ink_size              (void);
-gboolean               gimp_context_set_ink_size              (gdouble                   size);
-gdouble                gimp_context_get_ink_angle             (void);
-gboolean               gimp_context_set_ink_angle             (gdouble                   angle);
-gdouble                gimp_context_get_ink_size_sensitivity  (void);
-gboolean               gimp_context_set_ink_size_sensitivity  (gdouble                   size);
-gdouble                gimp_context_get_ink_tilt_sensitivity  (void);
-gboolean               gimp_context_set_ink_tilt_sensitivity  (gdouble                   tilt);
-gdouble                gimp_context_get_ink_speed_sensitivity (void);
-gboolean               gimp_context_set_ink_speed_sensitivity (gdouble                   speed);
-GimpInkBlobType        gimp_context_get_ink_blob_type         (void);
-gboolean               gimp_context_set_ink_blob_type         (GimpInkBlobType           type);
-gdouble                gimp_context_get_ink_blob_aspect_ratio (void);
-gboolean               gimp_context_set_ink_blob_aspect_ratio (gdouble                   aspect);
-gdouble                gimp_context_get_ink_blob_angle        (void);
-gboolean               gimp_context_set_ink_blob_angle        (gdouble                   angle);
+gboolean               gimp_context_set_transform_recursion    (gint                      
transform_recursion);
+gdouble                gimp_context_get_ink_size               (void);
+gboolean               gimp_context_set_ink_size               (gdouble                   size);
+gdouble                gimp_context_get_ink_angle              (void);
+gboolean               gimp_context_set_ink_angle              (gdouble                   angle);
+gdouble                gimp_context_get_ink_size_sensitivity   (void);
+gboolean               gimp_context_set_ink_size_sensitivity   (gdouble                   size);
+gdouble                gimp_context_get_ink_tilt_sensitivity   (void);
+gboolean               gimp_context_set_ink_tilt_sensitivity   (gdouble                   tilt);
+gdouble                gimp_context_get_ink_speed_sensitivity  (void);
+gboolean               gimp_context_set_ink_speed_sensitivity  (gdouble                   speed);
+GimpInkBlobType        gimp_context_get_ink_blob_type          (void);
+gboolean               gimp_context_set_ink_blob_type          (GimpInkBlobType           type);
+gdouble                gimp_context_get_ink_blob_aspect_ratio  (void);
+gboolean               gimp_context_set_ink_blob_aspect_ratio  (gdouble                   aspect);
+gdouble                gimp_context_get_ink_blob_angle         (void);
+gboolean               gimp_context_set_ink_blob_angle         (gdouble                   angle);
 
 
 G_END_DECLS
diff --git a/tools/pdbgen/pdb/context.pdb b/tools/pdbgen/pdb/context.pdb
index 6d9fd63..cf57dcb 100644
--- a/tools/pdbgen/pdb/context.pdb
+++ b/tools/pdbgen/pdb/context.pdb
@@ -797,6 +797,255 @@ CODE
     );
 }
 
+sub context_get_brush_spacing {
+    $blurb = 'Get brush spacing as percent of size.';
+    $help = 'Get the brush spacing as percent of size for brush based paint tools.';
+
+
+    @outargs = (
+        { name => "spacing", type => "0 < float",
+          desc => "brush spacing as percent of size" }
+    );
+
+    %invoke = (
+       code => <<'CODE'
+{
+  /* all options should have the same value, so pick a random one */
+  GimpPaintOptions *options =
+    gimp_pdb_context_get_paint_options (GIMP_PDB_CONTEXT (context),
+                                        "gimp-paintbrush");
+
+  if (options)
+    g_object_get (options,
+                  "brush-spacing", &spacing,
+                   NULL);
+  else
+    success = FALSE;
+}
+CODE
+    );
+}
+
+sub context_set_brush_spacing {
+    $blurb = 'Set brush spacing as percent of size.';
+    $help = 'Set the brush spacing as percent of size for brush based paint tools.';
+
+    &adeath_pdb_misc('2014', '2.10');
+
+    @inargs = (
+        { name => "spacing", type => "0 < float",
+          desc => "brush spacing as percent of size" }
+    );
+
+    %invoke = (
+       code => <<'CODE'
+{
+  GList *options;
+  GList *list;
+
+  options = gimp_pdb_context_get_brush_options (GIMP_PDB_CONTEXT (context));
+
+  for (list = options; list; list = g_list_next (list))
+    g_object_set (list->data,
+                  "brush-spacing", (gdouble) spacing,
+                   NULL);
+
+  g_list_free (options);
+}
+CODE
+    );
+}
+
+sub context_set_brush_default_spacing {
+    $blurb = 'Set brush spacing to its default.';
+    $help = <<'HELP';
+Set the brush spacing to the default  for
+paintbrush, airbrush, or pencil tools.
+HELP
+
+    &adeath_pdb_misc('2014', '2.10');
+
+    %invoke = (
+       code => <<'CODE'
+{
+  GimpBrush *brush = gimp_context_get_brush (context);
+
+  if (brush)
+    {
+      GList *options;
+      GList *list;
+
+      options = gimp_pdb_context_get_brush_options (GIMP_PDB_CONTEXT (context));
+
+      for (list = options; list; list = g_list_next (list))
+        gimp_paint_options_set_default_brush_spacing (list->data, brush);
+
+      g_list_free (options);
+    }
+  else
+    {
+      success = FALSE;
+    }
+}
+CODE
+    );
+}
+
+sub context_get_brush_hardness {
+    $blurb = 'Get brush hardness in paint options.';
+    $help = 'Get the brush hardness for brush based paint tools.';
+
+    &adeath_pdb_misc('2014', '2.10');
+
+    @outargs = (
+        { name => "hardness", type => "0 < float",
+          desc => "brush hardness" }
+    );
+
+    %invoke = (
+       code => <<'CODE'
+{
+  /* all options should have the same value, so pick a random one */
+  GimpPaintOptions *options =
+    gimp_pdb_context_get_paint_options (GIMP_PDB_CONTEXT (context),
+                                        "gimp-paintbrush");
+
+  if (options)
+    g_object_get (options,
+                  "brush-hardness", &hardness,
+                   NULL);
+  else
+    success = FALSE;
+}
+CODE
+    );
+}
+
+sub context_set_brush_hardness {
+    $blurb = 'Set brush hardness.';
+    $help = 'Set the brush hardness for brush based paint tools.';
+
+    &adeath_pdb_misc('2014', '2.10');
+
+    @inargs = (
+        { name => "hardness", type => "0 < float",
+          desc => "brush hardness" }
+    );
+
+    %invoke = (
+       code => <<'CODE'
+{
+  GList *options;
+  GList *list;
+
+  options = gimp_pdb_context_get_brush_options (GIMP_PDB_CONTEXT (context));
+
+  for (list = options; list; list = g_list_next (list))
+    g_object_set (list->data,
+                  "brush-spacing", (gdouble) hardness,
+                   NULL);
+
+  g_list_free (options);
+}
+CODE
+    );
+}
+
+sub context_set_brush_default_hardness {
+    $blurb = 'Set brush spacing to its default.';
+    $help = <<'HELP';
+Set the brush spacing to the default  for
+paintbrush, airbrush, or pencil tools.
+HELP
+
+    &adeath_pdb_misc('2014', '2.10');
+
+    %invoke = (
+       code => <<'CODE'
+{
+  GimpBrush *brush = gimp_context_get_brush (context);
+
+  if (brush)
+    {
+      GList *options;
+      GList *list;
+
+      options = gimp_pdb_context_get_brush_options (GIMP_PDB_CONTEXT (context));
+
+      for (list = options; list; list = g_list_next (list))
+        gimp_paint_options_set_default_brush_hardness (list->data, brush);
+
+      g_list_free (options);
+    }
+  else
+    {
+      success = FALSE;
+    }
+}
+CODE
+    );
+}
+
+sub context_get_brush_force {
+    $blurb = 'Get brush force in paint options.';
+    $help = 'Get the brush application force for brush based paint tools.';
+
+    &adeath_pdb_misc('2014', '2.10');
+
+    @outargs = (
+        { name => "force", type => "0 < float",
+          desc => "brush application force" }
+    );
+
+    %invoke = (
+       code => <<'CODE'
+{
+  /* all options should have the same value, so pick a random one */
+  GimpPaintOptions *options =
+    gimp_pdb_context_get_paint_options (GIMP_PDB_CONTEXT (context),
+                                        "gimp-paintbrush");
+
+  if (options)
+    g_object_get (options,
+                  "brush-force", &force,
+                   NULL);
+  else
+    success = FALSE;
+}
+CODE
+    );
+}
+
+sub context_set_brush_force {
+    $blurb = 'Set brush application force.';
+    $help = 'Set the brush application force for brush based paint tools.';
+
+    &adeath_pdb_misc('2014', '2.10');
+
+    @inargs = (
+        { name => "force", type => "0 < float",
+          desc => "brush application force" }
+    );
+
+    %invoke = (
+       code => <<'CODE'
+{
+  GList *options;
+  GList *list;
+
+  options = gimp_pdb_context_get_brush_options (GIMP_PDB_CONTEXT (context));
+
+  for (list = options; list; list = g_list_next (list))
+    g_object_set (list->data,
+                  "brush-spacing", (gdouble) force,
+                   NULL);
+
+  g_list_free (options);
+}
+CODE
+    );
+}
+
 sub context_get_dynamics {
     $blurb = 'Retrieve the currently active paint dynamics.';
 
@@ -2285,6 +2534,10 @@ CODE
             context_get_brush_angle context_set_brush_angle
             context_get_brush_spacing
             context_set_brush_spacing context_set_brush_default_spacing
+            context_get_brush_hardness
+            context_set_brush_hardness context_set_brush_default_hardness
+            context_get_brush_force
+            context_set_brush_force
             context_get_dynamics context_set_dynamics
             context_get_pattern context_set_pattern
             context_get_gradient context_set_gradient



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