[gimp] Bug 680531 - Function gimp-context-get-brush-size takes size argument...



commit 01dffdc276af6047fee130954cb467a30ef8a5f9
Author: Michael Natterer <mitch gimp org>
Date:   Thu Jul 26 16:26:14 2012 +0200

    Bug 680531 - Function gimp-context-get-brush-size takes size argument...
    
    The context getters need PDB @outargs, not @inargs. This "API change"
    is OK in stable because the API was totally unusable before this fix.

 app/pdb/context-cmds.c       |  141 +++++++++++++++++++++--------------------
 libgimp/gimpcontext_pdb.c    |   45 ++++++-------
 libgimp/gimpcontext_pdb.h    |    6 +-
 tools/pdbgen/pdb/context.pdb |    6 +-
 4 files changed, 99 insertions(+), 99 deletions(-)
---
diff --git a/app/pdb/context-cmds.c b/app/pdb/context-cmds.c
index b5f6a98..bcb32cb 100644
--- a/app/pdb/context-cmds.c
+++ b/app/pdb/context-cmds.c
@@ -438,27 +438,28 @@ context_get_brush_size_invoker (GimpProcedure         *procedure,
                                 GError               **error)
 {
   gboolean success = TRUE;
-  gdouble size;
+  GimpValueArray *return_vals;
+  gdouble size = 0.0;
 
-  size = g_value_get_double (gimp_value_array_index (args, 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 (success)
-    {
-      /* 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-size", &size,
+                   NULL);
+  else
+    success = FALSE;
 
-      if (options)
-        g_object_get (options,
-                      "brush-size", &size,
-                       NULL);
-      else
-        success = FALSE;
-    }
+  return_vals = gimp_procedure_get_return_values (procedure, success,
+                                                  error ? *error : NULL);
 
-  return gimp_procedure_get_return_values (procedure, success,
-                                           error ? *error : NULL);
+  if (success)
+    g_value_set_double (gimp_value_array_index (return_vals, 1), size);
+
+  return return_vals;
 }
 
 static GimpValueArray *
@@ -538,27 +539,28 @@ context_get_brush_aspect_ratio_invoker (GimpProcedure         *procedure,
                                         GError               **error)
 {
   gboolean success = TRUE;
-  gdouble aspect;
+  GimpValueArray *return_vals;
+  gdouble aspect = 0.0;
 
-  aspect = g_value_get_double (gimp_value_array_index (args, 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 (success)
-    {
-      /* 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-aspect-ratio", &aspect,
+                  NULL);
+  else
+    success = FALSE;
 
-      if (options)
-        g_object_get (options,
-                      "brush-aspect-ratio", &aspect,
-                      NULL);
-      else
-        success = FALSE;
-    }
+  return_vals = gimp_procedure_get_return_values (procedure, success,
+                                                  error ? *error : NULL);
 
-  return gimp_procedure_get_return_values (procedure, success,
-                                           error ? *error : NULL);
+  if (success)
+    g_value_set_double (gimp_value_array_index (return_vals, 1), aspect);
+
+  return return_vals;
 }
 
 static GimpValueArray *
@@ -602,27 +604,28 @@ context_get_brush_angle_invoker (GimpProcedure         *procedure,
                                  GError               **error)
 {
   gboolean success = TRUE;
-  gdouble angle;
+  GimpValueArray *return_vals;
+  gdouble angle = 0.0;
 
-  angle = g_value_get_double (gimp_value_array_index (args, 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 (success)
-    {
-      /* 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-angle", &angle,
+                  NULL);
+  else
+    success = FALSE;
 
-      if (options)
-        g_object_get (options,
-                      "brush-angle", &angle,
-                      NULL);
-      else
-        success = FALSE;
-    }
+  return_vals = gimp_procedure_get_return_values (procedure, success,
+                                                  error ? *error : NULL);
 
-  return gimp_procedure_get_return_values (procedure, success,
-                                           error ? *error : NULL);
+  if (success)
+    g_value_set_double (gimp_value_array_index (return_vals, 1), angle);
+
+  return return_vals;
 }
 
 static GimpValueArray *
@@ -2408,12 +2411,12 @@ register_context_procs (GimpPDB *pdb)
                                      "Ed Swartz",
                                      "2012",
                                      NULL);
-  gimp_procedure_add_argument (procedure,
-                               g_param_spec_double ("size",
-                                                    "size",
-                                                    "brush size in pixels",
-                                                    0, G_MAXDOUBLE, 0,
-                                                    GIMP_PARAM_READWRITE));
+  gimp_procedure_add_return_value (procedure,
+                                   g_param_spec_double ("size",
+                                                        "size",
+                                                        "brush size in pixels",
+                                                        0, G_MAXDOUBLE, 0,
+                                                        GIMP_PARAM_READWRITE));
   gimp_pdb_register_procedure (pdb, procedure);
   g_object_unref (procedure);
 
@@ -2471,12 +2474,12 @@ register_context_procs (GimpPDB *pdb)
                                      "Ed Swartz",
                                      "2012",
                                      NULL);
-  gimp_procedure_add_argument (procedure,
-                               g_param_spec_double ("aspect",
-                                                    "aspect",
-                                                    "aspect ratio",
-                                                    -20, 20, -20,
-                                                    GIMP_PARAM_READWRITE));
+  gimp_procedure_add_return_value (procedure,
+                                   g_param_spec_double ("aspect",
+                                                        "aspect",
+                                                        "aspect ratio",
+                                                        -20, 20, -20,
+                                                        GIMP_PARAM_READWRITE));
   gimp_pdb_register_procedure (pdb, procedure);
   g_object_unref (procedure);
 
@@ -2517,12 +2520,12 @@ register_context_procs (GimpPDB *pdb)
                                      "Ed Swartz",
                                      "2012",
                                      NULL);
-  gimp_procedure_add_argument (procedure,
-                               g_param_spec_double ("angle",
-                                                    "angle",
-                                                    "angle in degrees",
-                                                    -180, 180, -180,
-                                                    GIMP_PARAM_READWRITE));
+  gimp_procedure_add_return_value (procedure,
+                                   g_param_spec_double ("angle",
+                                                        "angle",
+                                                        "angle in degrees",
+                                                        -180, 180, -180,
+                                                        GIMP_PARAM_READWRITE));
   gimp_pdb_register_procedure (pdb, procedure);
   g_object_unref (procedure);
 
diff --git a/libgimp/gimpcontext_pdb.c b/libgimp/gimpcontext_pdb.c
index a1b1b96..1e41d93 100644
--- a/libgimp/gimpcontext_pdb.c
+++ b/libgimp/gimpcontext_pdb.c
@@ -636,33 +636,32 @@ gimp_context_set_brush (const gchar *name)
 
 /**
  * gimp_context_get_brush_size:
- * @size: brush size in pixels.
  *
  * Get brush size in pixels.
  *
  * Get the brush size in pixels for brush based paint tools.
  *
- * Returns: TRUE on success.
+ * Returns: brush size in pixels.
  *
  * Since: GIMP 2.8
  **/
-gboolean
-gimp_context_get_brush_size (gdouble size)
+gdouble
+gimp_context_get_brush_size (void)
 {
   GimpParam *return_vals;
   gint nreturn_vals;
-  gboolean success = TRUE;
+  gdouble size = 0.0;
 
   return_vals = gimp_run_procedure ("gimp-context-get-brush-size",
                                     &nreturn_vals,
-                                    GIMP_PDB_FLOAT, size,
                                     GIMP_PDB_END);
 
-  success = return_vals[0].data.d_status == GIMP_PDB_SUCCESS;
+  if (return_vals[0].data.d_status == GIMP_PDB_SUCCESS)
+    size = return_vals[1].data.d_float;
 
   gimp_destroy_params (return_vals, nreturn_vals);
 
-  return success;
+  return size;
 }
 
 /**
@@ -728,33 +727,32 @@ gimp_context_set_brush_default_size (void)
 
 /**
  * gimp_context_get_brush_aspect_ratio:
- * @aspect: aspect ratio.
  *
  * Get brush aspect ratio.
  *
  * Set the aspect ratio for brush based paint tools.
  *
- * Returns: TRUE on success.
+ * Returns: aspect ratio.
  *
  * Since: GIMP 2.8
  **/
-gboolean
-gimp_context_get_brush_aspect_ratio (gdouble aspect)
+gdouble
+gimp_context_get_brush_aspect_ratio (void)
 {
   GimpParam *return_vals;
   gint nreturn_vals;
-  gboolean success = TRUE;
+  gdouble aspect = 0.0;
 
   return_vals = gimp_run_procedure ("gimp-context-get-brush-aspect-ratio",
                                     &nreturn_vals,
-                                    GIMP_PDB_FLOAT, aspect,
                                     GIMP_PDB_END);
 
-  success = return_vals[0].data.d_status == GIMP_PDB_SUCCESS;
+  if (return_vals[0].data.d_status == GIMP_PDB_SUCCESS)
+    aspect = return_vals[1].data.d_float;
 
   gimp_destroy_params (return_vals, nreturn_vals);
 
-  return success;
+  return aspect;
 }
 
 /**
@@ -790,33 +788,32 @@ gimp_context_set_brush_aspect_ratio (gdouble aspect)
 
 /**
  * gimp_context_get_brush_angle:
- * @angle: angle in degrees.
  *
  * Get brush angle in degrees.
  *
  * Set the angle in degrees for brush based paint tools.
  *
- * Returns: TRUE on success.
+ * Returns: angle in degrees.
  *
  * Since: GIMP 2.8
  **/
-gboolean
-gimp_context_get_brush_angle (gdouble angle)
+gdouble
+gimp_context_get_brush_angle (void)
 {
   GimpParam *return_vals;
   gint nreturn_vals;
-  gboolean success = TRUE;
+  gdouble angle = 0.0;
 
   return_vals = gimp_run_procedure ("gimp-context-get-brush-angle",
                                     &nreturn_vals,
-                                    GIMP_PDB_FLOAT, angle,
                                     GIMP_PDB_END);
 
-  success = return_vals[0].data.d_status == GIMP_PDB_SUCCESS;
+  if (return_vals[0].data.d_status == GIMP_PDB_SUCCESS)
+    angle = return_vals[1].data.d_float;
 
   gimp_destroy_params (return_vals, nreturn_vals);
 
-  return success;
+  return angle;
 }
 
 /**
diff --git a/libgimp/gimpcontext_pdb.h b/libgimp/gimpcontext_pdb.h
index 4c36eb3..6809e22 100644
--- a/libgimp/gimpcontext_pdb.h
+++ b/libgimp/gimpcontext_pdb.h
@@ -51,12 +51,12 @@ 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);
-gboolean               gimp_context_get_brush_size            (gdouble                   size);
+gdouble                gimp_context_get_brush_size            (void);
 gboolean               gimp_context_set_brush_size            (gdouble                   size);
 gboolean               gimp_context_set_brush_default_size    (void);
-gboolean               gimp_context_get_brush_aspect_ratio    (gdouble                   aspect);
+gdouble                gimp_context_get_brush_aspect_ratio    (void);
 gboolean               gimp_context_set_brush_aspect_ratio    (gdouble                   aspect);
-gboolean               gimp_context_get_brush_angle           (gdouble                   angle);
+gdouble                gimp_context_get_brush_angle           (void);
 gboolean               gimp_context_set_brush_angle           (gdouble                   angle);
 gchar*                 gimp_context_get_dynamics              (void);
 gboolean               gimp_context_set_dynamics              (const gchar              *name);
diff --git a/tools/pdbgen/pdb/context.pdb b/tools/pdbgen/pdb/context.pdb
index a314190..7369a31 100644
--- a/tools/pdbgen/pdb/context.pdb
+++ b/tools/pdbgen/pdb/context.pdb
@@ -493,7 +493,7 @@ sub context_get_brush_size {
 
     &ejs_pdb_misc('2012', '2.8');
 
-    @inargs = (
+    @outargs = (
         { name => "size", type => "0 < float",
           desc => "brush size in pixels" }
     );
@@ -622,7 +622,7 @@ sub context_get_brush_aspect_ratio {
 
     &ejs_pdb_misc('2012', '2.8');
 
-    @inargs = (
+    @outargs = (
         { name => "aspect", type => "-20 <= float <= 20",
           desc => "aspect ratio" }
     );
@@ -682,7 +682,7 @@ sub context_get_brush_angle {
 
     &ejs_pdb_misc('2012', '2.8');
 
-    @inargs = (
+    @outargs = (
 	{ name => "angle", type => "-180 <= float <= 180",
 	  desc => "angle in degrees" }
     );



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