From 9e76c5a4bcd41b3c14f3dce8a86ce3f3df58fcb9 Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Tue, 31 Aug 2004 13:20:57 +0000 Subject: [PATCH] added "GimpPaintInfo *paint_info" member and construct property. Changed 2004-08-31 Michael Natterer * app/paint/gimppaintoptions.[ch]: added "GimpPaintInfo *paint_info" member and construct property. Changed gimp_paint_options_new() to take only a GimpPaintInfo parameter. * app/core/gimpitem.c (gimp_item_stroke) * app/core/gimppaintinfo.c (gimp_paint_info_new): changed accordingly. * app/core/gimpchannel.c (gimp_channel_stroke) * app/vectors/gimpvectors.c (gimp_vectors_stroke): use paint_options->paint_info->paint_type directly instead of casting to GimpToolOptions and using tool_options->tool_info->paint_info->paint_type (eek). Fixes crash when stroking via the PDB because newly created GimpToolOptions instances have no "tool_info" pointer yet. * tools/pdbgen/pdb/paint_tools.pdb: changed all paint PDB wrappers accordingly. * app/pdb/paint_tools_cmds.c: regenerated. --- ChangeLog | 22 +++ app/core/gimpchannel.c | 4 +- app/core/gimpitem.c | 5 +- app/core/gimppaintinfo.c | 6 +- app/paint/gimppaintoptions.c | 32 ++++- app/paint/gimppaintoptions.h | 5 +- app/pdb/paint_tools_cmds.c | 194 ++++++++++++++------------- app/vectors/gimpvectors.c | 4 +- tools/pdbgen/pdb/paint_tools.pdb | 222 +++++++++++++++---------------- 9 files changed, 261 insertions(+), 233 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5254d4cac0..5f674bf97c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,25 @@ +2004-08-31 Michael Natterer + + * app/paint/gimppaintoptions.[ch]: added "GimpPaintInfo *paint_info" + member and construct property. Changed gimp_paint_options_new() + to take only a GimpPaintInfo parameter. + + * app/core/gimpitem.c (gimp_item_stroke) + * app/core/gimppaintinfo.c (gimp_paint_info_new): changed accordingly. + + * app/core/gimpchannel.c (gimp_channel_stroke) + * app/vectors/gimpvectors.c (gimp_vectors_stroke): use + paint_options->paint_info->paint_type directly instead of casting + to GimpToolOptions and using + tool_options->tool_info->paint_info->paint_type (eek). Fixes crash + when stroking via the PDB because newly created GimpToolOptions + instances have no "tool_info" pointer yet. + + * tools/pdbgen/pdb/paint_tools.pdb: changed all paint PDB wrappers + accordingly. + + * app/pdb/paint_tools_cmds.c: regenerated. + 2004-08-31 Michael Natterer * app/config/gimpconfig.c (gimp_config_iface_duplicate): set diff --git a/app/core/gimpchannel.c b/app/core/gimpchannel.c index f69aea0b54..7ba90fdc44 100644 --- a/app/core/gimpchannel.c +++ b/app/core/gimpchannel.c @@ -52,8 +52,6 @@ #include "gimppaintinfo.h" #include "gimpprojection.h" #include "gimpstrokeoptions.h" -#include "gimptoolinfo.h" -#include "gimptooloptions.h" #include "gimp-intl.h" @@ -627,7 +625,7 @@ gimp_channel_stroke (GimpItem *item, GimpPaintOptions *paint_options = GIMP_PAINT_OPTIONS (stroke_desc); GimpPaintCore *core; - core = g_object_new (GIMP_TOOL_OPTIONS (paint_options)->tool_info->paint_info->paint_type, NULL); + core = g_object_new (paint_options->paint_info->paint_type, NULL); retval = gimp_paint_core_stroke_boundary (core, drawable, paint_options, diff --git a/app/core/gimpitem.c b/app/core/gimpitem.c index 9ca52b7f8a..c14cb93010 100644 --- a/app/core/gimpitem.c +++ b/app/core/gimpitem.c @@ -1003,15 +1003,12 @@ gimp_item_stroke (GimpItem *item, } else if (GIMP_IS_PAINT_INFO (stroke_desc)) { - GimpImage *gimage = gimp_item_get_image (item); GimpPaintInfo *paint_info = GIMP_PAINT_INFO (stroke_desc); GimpPaintOptions *paint_options; if (use_default_values) { - paint_options = - gimp_paint_options_new (gimage->gimp, - paint_info->paint_options_type); + paint_options = gimp_paint_options_new (paint_info); /* undefine the paint-relevant context properties and get them * from the passed context diff --git a/app/core/gimppaintinfo.c b/app/core/gimppaintinfo.c index f1cd03d0f2..16fedd7780 100644 --- a/app/core/gimppaintinfo.c +++ b/app/core/gimppaintinfo.c @@ -22,6 +22,8 @@ #include "core-types.h" +#include "paint/gimppaintoptions.h" + #include "gimp.h" #include "gimppaintinfo.h" @@ -144,9 +146,7 @@ gimp_paint_info_new (Gimp *gimp, paint_info->paint_options_type = paint_options_type; paint_info->blurb = g_strdup (blurb); - paint_info->paint_options = g_object_new (paint_info->paint_options_type, - "gimp", gimp, - NULL); + paint_info->paint_options = gimp_paint_options_new (paint_info); return paint_info; } diff --git a/app/paint/gimppaintoptions.c b/app/paint/gimppaintoptions.c index 4fe8a61308..c026591028 100644 --- a/app/paint/gimppaintoptions.c +++ b/app/paint/gimppaintoptions.c @@ -30,6 +30,7 @@ #include "core/gimp.h" #include "core/gimpimage.h" #include "core/gimpgradient.h" +#include "core/gimppaintinfo.h" #include "gimppaintoptions.h" @@ -57,6 +58,7 @@ enum { PROP_0, + PROP_PAINT_INFO, PROP_APPLICATION_MODE, PROP_HARD, PROP_PRESSURE_OPACITY, @@ -136,6 +138,13 @@ gimp_paint_options_class_init (GimpPaintOptionsClass *klass) 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", + NULL, NULL, + GIMP_TYPE_PAINT_INFO, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + GIMP_CONFIG_INSTALL_PROP_ENUM (object_class, PROP_APPLICATION_MODE, "application-mode", NULL, GIMP_TYPE_PAINT_APPLICATION_MODE, @@ -216,6 +225,9 @@ gimp_paint_options_finalize (GObject *object) { GimpPaintOptions *options = GIMP_PAINT_OPTIONS (object); + if (options->paint_info) + g_object_unref (options->paint_info); + g_free (options->pressure_options); g_free (options->fade_options); g_free (options->gradient_options); @@ -242,6 +254,10 @@ gimp_paint_options_set_property (GObject *object, switch (property_id) { + case PROP_PAINT_INFO: + options->paint_info = (GimpPaintInfo *) g_value_dup_object (value); + break; + case PROP_APPLICATION_MODE: options->application_mode = g_value_get_enum (value); break; @@ -316,6 +332,10 @@ gimp_paint_options_get_property (GObject *object, switch (property_id) { + case PROP_PAINT_INFO: + g_value_set_object (value, options->paint_info); + break; + case PROP_APPLICATION_MODE: g_value_set_enum (value, options->application_mode); break; @@ -399,17 +419,15 @@ gimp_paint_options_notify (GObject *object, } GimpPaintOptions * -gimp_paint_options_new (Gimp *gimp, - GType options_type) +gimp_paint_options_new (GimpPaintInfo *paint_info) { GimpPaintOptions *options; - g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL); - g_return_val_if_fail (g_type_is_a (options_type, GIMP_TYPE_PAINT_OPTIONS), - NULL); + g_return_val_if_fail (GIMP_IS_PAINT_INFO (paint_info), NULL); - options = g_object_new (options_type, - "gimp", gimp, + options = g_object_new (paint_info->paint_options_type, + "gimp", paint_info->gimp, + "paint-info", paint_info, NULL); return options; diff --git a/app/paint/gimppaintoptions.h b/app/paint/gimppaintoptions.h index 13cd745634..4fe3c1db99 100644 --- a/app/paint/gimppaintoptions.h +++ b/app/paint/gimppaintoptions.h @@ -74,6 +74,8 @@ struct _GimpPaintOptions { GimpToolOptions parent_instance; + GimpPaintInfo *paint_info; + GimpPaintApplicationMode application_mode; GimpPaintApplicationMode application_mode_save; @@ -92,8 +94,7 @@ struct _GimpPaintOptionsClass GType gimp_paint_options_get_type (void) G_GNUC_CONST; -GimpPaintOptions * gimp_paint_options_new (Gimp *gimp, - GType options_type); +GimpPaintOptions * gimp_paint_options_new (GimpPaintInfo *paint_info); gdouble gimp_paint_options_get_fade (GimpPaintOptions *paint_options, GimpImage *gimage, diff --git a/app/pdb/paint_tools_cmds.c b/app/pdb/paint_tools_cmds.c index fd79d6fefa..d648cbd338 100644 --- a/app/pdb/paint_tools_cmds.c +++ b/app/pdb/paint_tools_cmds.c @@ -29,23 +29,11 @@ #include "procedural_db.h" #include "core/gimp.h" +#include "core/gimpcontainer.h" #include "core/gimpdrawable.h" -#include "paint/gimpairbrush.h" -#include "paint/gimpairbrushoptions.h" -#include "paint/gimpclone.h" -#include "paint/gimpcloneoptions.h" -#include "paint/gimpconvolve.h" -#include "paint/gimpconvolveoptions.h" -#include "paint/gimpdodgeburn.h" -#include "paint/gimpdodgeburnoptions.h" -#include "paint/gimperaser.h" -#include "paint/gimperaseroptions.h" -#include "paint/gimppaintbrush.h" +#include "core/gimppaintinfo.h" #include "paint/gimppaintcore-stroke.h" -#include "paint/gimppencil.h" -#include "paint/gimppenciloptions.h" -#include "paint/gimpsmudge.h" -#include "paint/gimpsmudgeoptions.h" +#include "paint/gimppaintoptions.h" #include "paint/paint-types.h" static ProcRecord airbrush_proc; @@ -87,7 +75,6 @@ register_paint_tools_procs (Gimp *gimp) static gboolean paint_tools_stroke (Gimp *gimp, GimpContext *context, - GType core_type, GimpPaintOptions *options, GimpDrawable *drawable, gint n_strokes, @@ -106,7 +93,7 @@ paint_tools_stroke (Gimp *gimp, FALSE); gimp_context_set_parent (GIMP_CONTEXT (options), context); - core = g_object_new (core_type, NULL); + core = g_object_new (options->paint_info->paint_type, NULL); coords = g_new (GimpCoords, n_strokes); @@ -142,6 +129,7 @@ airbrush_invoker (Gimp *gimp, gdouble pressure; gint32 num_strokes; gdouble *strokes; + GimpPaintInfo *info; GimpPaintOptions *options; drawable = (GimpDrawable *) gimp_item_get_by_ID (gimp, args[0].value.pdb_int); @@ -162,14 +150,16 @@ airbrush_invoker (Gimp *gimp, if (success) { - options = gimp_paint_options_new (gimp, GIMP_TYPE_AIRBRUSH_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpAirbrush"); - GIMP_AIRBRUSH_OPTIONS (options)->pressure = pressure; + options = gimp_paint_options_new (info); - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_AIRBRUSH, - options, - drawable, + g_object_set (options, + "pressure", pressure, + NULL); + + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } @@ -226,6 +216,7 @@ airbrush_default_invoker (Gimp *gimp, GimpDrawable *drawable; gint32 num_strokes; gdouble *strokes; + GimpPaintInfo *info; GimpPaintOptions *options; drawable = (GimpDrawable *) gimp_item_get_by_ID (gimp, args[0].value.pdb_int); @@ -242,12 +233,12 @@ airbrush_default_invoker (Gimp *gimp, if (success) { - options = gimp_paint_options_new (gimp, GIMP_TYPE_AIRBRUSH_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpAirbrush"); - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_AIRBRUSH, - options, - drawable, + options = gimp_paint_options_new (info); + + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } @@ -303,6 +294,7 @@ clone_invoker (Gimp *gimp, gdouble src_y; gint32 num_strokes; gdouble *strokes; + GimpPaintInfo *info; GimpPaintOptions *options; drawable = (GimpDrawable *) gimp_item_get_by_ID (gimp, args[0].value.pdb_int); @@ -331,9 +323,14 @@ clone_invoker (Gimp *gimp, if (success) { - options = gimp_paint_options_new (gimp, GIMP_TYPE_CLONE_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpClone"); - GIMP_CLONE_OPTIONS (options)->clone_type = clone_type; + options = gimp_paint_options_new (info); + + g_object_set (options, + "clone-type", clone_type, + NULL); #ifdef __GNUC__ #warning FIXME: re-enable clone src_drawable @@ -346,10 +343,7 @@ clone_invoker (Gimp *gimp, core->src_y = src_y; #endif - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_CLONE, - options, - drawable, + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } @@ -421,6 +415,7 @@ clone_default_invoker (Gimp *gimp, GimpDrawable *drawable; gint32 num_strokes; gdouble *strokes; + GimpPaintInfo *info; GimpPaintOptions *options; drawable = (GimpDrawable *) gimp_item_get_by_ID (gimp, args[0].value.pdb_int); @@ -437,12 +432,12 @@ clone_default_invoker (Gimp *gimp, if (success) { - options = gimp_paint_options_new (gimp, GIMP_TYPE_CLONE_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpClone"); - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_CLONE, - options, - drawable, + options = gimp_paint_options_new (info); + + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } @@ -496,6 +491,7 @@ convolve_invoker (Gimp *gimp, gint32 convolve_type; gint32 num_strokes; gdouble *strokes; + GimpPaintInfo *info; GimpPaintOptions *options; drawable = (GimpDrawable *) gimp_item_get_by_ID (gimp, args[0].value.pdb_int); @@ -520,17 +516,17 @@ convolve_invoker (Gimp *gimp, if (success) { - options = gimp_paint_options_new (gimp, GIMP_TYPE_CONVOLVE_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpConvolve"); + + options = gimp_paint_options_new (info); g_object_set (options, "type", convolve_type, "rate", pressure, NULL); - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_CONVOLVE, - options, - drawable, + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } @@ -592,6 +588,7 @@ convolve_default_invoker (Gimp *gimp, GimpDrawable *drawable; gint32 num_strokes; gdouble *strokes; + GimpPaintInfo *info; GimpPaintOptions *options; drawable = (GimpDrawable *) gimp_item_get_by_ID (gimp, args[0].value.pdb_int); @@ -608,12 +605,12 @@ convolve_default_invoker (Gimp *gimp, if (success) { - options = gimp_paint_options_new (gimp, GIMP_TYPE_CONVOLVE_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpConvolve"); - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_CONVOLVE, - options, - drawable, + options = gimp_paint_options_new (info); + + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } @@ -668,6 +665,7 @@ dodgeburn_invoker (Gimp *gimp, gint32 dodgeburn_mode; gint32 num_strokes; gdouble *strokes; + GimpPaintInfo *info; GimpPaintOptions *options; drawable = (GimpDrawable *) gimp_item_get_by_ID (gimp, args[0].value.pdb_int); @@ -696,7 +694,10 @@ dodgeburn_invoker (Gimp *gimp, if (success) { - options = gimp_paint_options_new (gimp, GIMP_TYPE_DODGE_BURN_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpDodgeBurn"); + + options = gimp_paint_options_new (info); g_object_set (options, "type", dodgeburn_type, @@ -704,10 +705,7 @@ dodgeburn_invoker (Gimp *gimp, "exposure", exposure, NULL); - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_DODGE_BURN, - options, - drawable, + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } @@ -774,6 +772,7 @@ dodgeburn_default_invoker (Gimp *gimp, GimpDrawable *drawable; gint32 num_strokes; gdouble *strokes; + GimpPaintInfo *info; GimpPaintOptions *options; drawable = (GimpDrawable *) gimp_item_get_by_ID (gimp, args[0].value.pdb_int); @@ -790,12 +789,12 @@ dodgeburn_default_invoker (Gimp *gimp, if (success) { - options = gimp_paint_options_new (gimp, GIMP_TYPE_DODGE_BURN_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpDodgeBurn"); - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_DODGE_BURN, - options, - drawable, + options = gimp_paint_options_new (info); + + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } @@ -849,6 +848,7 @@ eraser_invoker (Gimp *gimp, gdouble *strokes; gint32 hardness; gint32 method; + GimpPaintInfo *info; GimpPaintOptions *options; drawable = (GimpDrawable *) gimp_item_get_by_ID (gimp, args[0].value.pdb_int); @@ -873,17 +873,17 @@ eraser_invoker (Gimp *gimp, if (success) { - options = gimp_paint_options_new (gimp, GIMP_TYPE_ERASER_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpEraser"); + + options = gimp_paint_options_new (info); g_object_set (options, "application-mode", method, "hard", hardness, NULL); - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_ERASER, - options, - drawable, + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } @@ -945,6 +945,7 @@ eraser_default_invoker (Gimp *gimp, GimpDrawable *drawable; gint32 num_strokes; gdouble *strokes; + GimpPaintInfo *info; GimpPaintOptions *options; drawable = (GimpDrawable *) gimp_item_get_by_ID (gimp, args[0].value.pdb_int); @@ -961,12 +962,12 @@ eraser_default_invoker (Gimp *gimp, if (success) { - options = gimp_paint_options_new (gimp, GIMP_TYPE_ERASER_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpEraser"); - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_ERASER, - options, - drawable, + options = gimp_paint_options_new (info); + + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } @@ -1021,6 +1022,7 @@ paintbrush_invoker (Gimp *gimp, gdouble *strokes; gint32 method; gdouble gradient_length; + GimpPaintInfo *info; GimpPaintOptions *options; drawable = (GimpDrawable *) gimp_item_get_by_ID (gimp, args[0].value.pdb_int); @@ -1049,7 +1051,10 @@ paintbrush_invoker (Gimp *gimp, if (success) { - options = gimp_paint_options_new (gimp, GIMP_TYPE_PAINT_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpPaintbrush"); + + options = gimp_paint_options_new (info); g_object_set (options, "application-mode", method, @@ -1059,10 +1064,7 @@ paintbrush_invoker (Gimp *gimp, "gradient-length", gradient_length, NULL); - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_PAINTBRUSH, - options, - drawable, + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } @@ -1129,6 +1131,7 @@ paintbrush_default_invoker (Gimp *gimp, GimpDrawable *drawable; gint32 num_strokes; gdouble *strokes; + GimpPaintInfo *info; GimpPaintOptions *options; drawable = (GimpDrawable *) gimp_item_get_by_ID (gimp, args[0].value.pdb_int); @@ -1145,12 +1148,12 @@ paintbrush_default_invoker (Gimp *gimp, if (success) { - options = gimp_paint_options_new (gimp, GIMP_TYPE_PAINT_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpPaintbrush"); - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_PAINTBRUSH, - options, - drawable, + options = gimp_paint_options_new (info); + + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } @@ -1202,6 +1205,7 @@ pencil_invoker (Gimp *gimp, GimpDrawable *drawable; gint32 num_strokes; gdouble *strokes; + GimpPaintInfo *info; GimpPaintOptions *options; drawable = (GimpDrawable *) gimp_item_get_by_ID (gimp, args[0].value.pdb_int); @@ -1218,12 +1222,12 @@ pencil_invoker (Gimp *gimp, if (success) { - options = gimp_paint_options_new (gimp, GIMP_TYPE_PENCIL_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpPencil"); - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_PENCIL, - options, - drawable, + options = gimp_paint_options_new (info); + + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } @@ -1276,6 +1280,7 @@ smudge_invoker (Gimp *gimp, gdouble pressure; gint32 num_strokes; gdouble *strokes; + GimpPaintInfo *info; GimpPaintOptions *options; drawable = (GimpDrawable *) gimp_item_get_by_ID (gimp, args[0].value.pdb_int); @@ -1296,16 +1301,16 @@ smudge_invoker (Gimp *gimp, if (success) { - options = gimp_paint_options_new (gimp, GIMP_TYPE_SMUDGE_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpSmudge"); + + options = gimp_paint_options_new (info); g_object_set (options, "rate", pressure, NULL); - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_SMUDGE, - options, - drawable, + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } @@ -1362,6 +1367,7 @@ smudge_default_invoker (Gimp *gimp, GimpDrawable *drawable; gint32 num_strokes; gdouble *strokes; + GimpPaintInfo *info; GimpPaintOptions *options; drawable = (GimpDrawable *) gimp_item_get_by_ID (gimp, args[0].value.pdb_int); @@ -1378,12 +1384,12 @@ smudge_default_invoker (Gimp *gimp, if (success) { - options = gimp_paint_options_new (gimp, GIMP_TYPE_SMUDGE_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpSmudge"); - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_SMUDGE, - options, - drawable, + options = gimp_paint_options_new (info); + + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } diff --git a/app/vectors/gimpvectors.c b/app/vectors/gimpvectors.c index ffc6d2bfb5..7930bb6d0d 100644 --- a/app/vectors/gimpvectors.c +++ b/app/vectors/gimpvectors.c @@ -37,8 +37,6 @@ #include "core/gimpmarshal.h" #include "core/gimppaintinfo.h" #include "core/gimpstrokeoptions.h" -#include "core/gimptoolinfo.h" -#include "core/gimptooloptions.h" #include "paint/gimppaintcore-stroke.h" #include "paint/gimppaintoptions.h" @@ -583,7 +581,7 @@ gimp_vectors_stroke (GimpItem *item, GimpPaintOptions *paint_options = GIMP_PAINT_OPTIONS (stroke_desc); GimpPaintCore *core; - core = g_object_new (GIMP_TOOL_OPTIONS (paint_options)->tool_info->paint_info->paint_type, NULL); + core = g_object_new (paint_options->paint_info->paint_type, NULL); retval = gimp_paint_core_stroke_vectors (core, drawable, paint_options, diff --git a/tools/pdbgen/pdb/paint_tools.pdb b/tools/pdbgen/pdb/paint_tools.pdb index 82b8d3e259..a8e3372290 100644 --- a/tools/pdbgen/pdb/paint_tools.pdb +++ b/tools/pdbgen/pdb/paint_tools.pdb @@ -68,18 +68,19 @@ HELP ); %invoke = ( - headers => [ qw("paint/gimpairbrush.h" "paint/gimpairbrushoptions.h") ], - vars => [ "GimpPaintOptions *options" ], + vars => [ "GimpPaintInfo *info", "GimpPaintOptions *options" ], code => <<'CODE' { - options = gimp_paint_options_new (gimp, GIMP_TYPE_AIRBRUSH_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpAirbrush"); - GIMP_AIRBRUSH_OPTIONS (options)->pressure = pressure; + options = gimp_paint_options_new (info); - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_AIRBRUSH, - options, - drawable, + g_object_set (options, + "pressure", pressure, + NULL); + + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } CODE @@ -107,16 +108,15 @@ HELP ); %invoke = ( - headers => [ qw("paint/gimpairbrush.h") ], - vars => [ "GimpPaintOptions *options" ], + vars => [ "GimpPaintInfo *info", "GimpPaintOptions *options" ], code => <<'CODE' { - options = gimp_paint_options_new (gimp, GIMP_TYPE_AIRBRUSH_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpAirbrush"); - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_AIRBRUSH, - options, - drawable, + options = gimp_paint_options_new (info); + + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } CODE @@ -158,13 +158,17 @@ HELP ); %invoke = ( - headers => [ qw("paint/gimpclone.h" "paint/gimpcloneoptions.h") ], - vars => [ "GimpPaintOptions *options" ], + vars => [ "GimpPaintInfo *info", "GimpPaintOptions *options" ], code => <<'CODE' { - options = gimp_paint_options_new (gimp, GIMP_TYPE_CLONE_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpClone"); - GIMP_CLONE_OPTIONS (options)->clone_type = clone_type; + options = gimp_paint_options_new (info); + + g_object_set (options, + "clone-type", clone_type, + NULL); #ifdef __GNUC__ #warning FIXME: re-enable clone src_drawable @@ -177,10 +181,7 @@ HELP core->src_y = src_y; #endif - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_CLONE, - options, - drawable, + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } CODE @@ -209,16 +210,15 @@ HELP ); %invoke = ( - headers => [ qw("paint/gimpclone.h" "paint/gimpcloneoptions.h") ], - vars => [ "GimpPaintOptions *options" ], + vars => [ "GimpPaintInfo *info", "GimpPaintOptions *options" ], code => <<'CODE' { - options = gimp_paint_options_new (gimp, GIMP_TYPE_CLONE_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpClone"); - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_CLONE, - options, - drawable, + options = gimp_paint_options_new (info); + + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } CODE @@ -246,16 +246,15 @@ HELP ); %invoke = ( - headers => [ qw("paint/gimpconvolve.h" "paint/gimpconvolveoptions.h") ], - vars => [ "GimpPaintOptions *options" ], + vars => [ "GimpPaintInfo *info", "GimpPaintOptions *options" ], code => <<'CODE' { - options = gimp_paint_options_new (gimp, GIMP_TYPE_CONVOLVE_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpConvolve"); - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_CONVOLVE, - options, - drawable, + options = gimp_paint_options_new (info); + + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } CODE @@ -284,21 +283,20 @@ HELP ); %invoke = ( - headers => [ qw("paint/gimpconvolve.h" "paint/gimpconvolveoptions.h") ], - vars => [ "GimpPaintOptions *options" ], + vars => [ "GimpPaintInfo *info", "GimpPaintOptions *options" ], code => <<'CODE' { - options = gimp_paint_options_new (gimp, GIMP_TYPE_CONVOLVE_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpConvolve"); + + options = gimp_paint_options_new (info); g_object_set (options, "type", convolve_type, "rate", pressure, NULL); - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_CONVOLVE, - options, - drawable, + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } CODE @@ -324,16 +322,15 @@ HELP ); %invoke = ( - headers => [ qw("paint/gimperaser.h" "paint/gimperaseroptions.h") ], - vars => [ "GimpPaintOptions *options" ], + vars => [ "GimpPaintInfo *info", "GimpPaintOptions *options" ], code => <<'CODE' { - options = gimp_paint_options_new (gimp, GIMP_TYPE_ERASER_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpEraser"); - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_ERASER, - options, - drawable, + options = gimp_paint_options_new (info); + + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } CODE @@ -363,21 +360,20 @@ HELP ); %invoke = ( - headers => [ qw("paint/gimperaser.h" "paint/gimperaseroptions.h") ], - vars => [ "GimpPaintOptions *options" ], + vars => [ "GimpPaintInfo *info", "GimpPaintOptions *options" ], code => <<'CODE' { - options = gimp_paint_options_new (gimp, GIMP_TYPE_ERASER_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpEraser"); + + options = gimp_paint_options_new (info); g_object_set (options, "application-mode", method, "hard", hardness, NULL); - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_ERASER, - options, - drawable, + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } CODE @@ -407,11 +403,13 @@ HELP ); %invoke = ( - headers => [ qw("paint/gimperaser.h" "paint/gimperaseroptions.h") ], - vars => [ "GimpPaintOptions *options" ], + vars => [ "GimpPaintInfo *info", "GimpPaintOptions *options" ], code => <<'CODE' { - options = gimp_paint_options_new (gimp, GIMP_TYPE_ERASER_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpEraser"); + + options = gimp_paint_options_new (info); g_object_set (options, "application-mode", method, @@ -419,10 +417,7 @@ HELP "anti-erase", TRUE, NULL); - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_ERASER, - options, - drawable, + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } CODE @@ -460,11 +455,13 @@ HELP ); %invoke = ( - headers => [ qw("paint/gimppaintbrush.h") ], - vars => [ "GimpPaintOptions *options" ], + vars => [ "GimpPaintInfo *info", "GimpPaintOptions *options" ], code => <<'CODE' { - options = gimp_paint_options_new (gimp, GIMP_TYPE_PAINT_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpPaintbrush"); + + options = gimp_paint_options_new (info); g_object_set (options, "application-mode", method, @@ -474,10 +471,7 @@ HELP "gradient-length", gradient_length, NULL); - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_PAINTBRUSH, - options, - drawable, + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } CODE @@ -513,16 +507,15 @@ HELP ); %invoke = ( - headers => [ qw("paint/gimppaintbrush.h") ], - vars => [ "GimpPaintOptions *options" ], + vars => [ "GimpPaintInfo *info", "GimpPaintOptions *options" ], code => <<'CODE' { - options = gimp_paint_options_new (gimp, GIMP_TYPE_PAINT_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpPaintbrush"); - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_PAINTBRUSH, - options, - drawable, + options = gimp_paint_options_new (info); + + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } CODE @@ -548,16 +541,15 @@ HELP ); %invoke = ( - headers => [ qw("paint/gimppencil.h" "paint/gimppenciloptions.h") ], - vars => [ "GimpPaintOptions *options" ], + vars => [ "GimpPaintInfo *info", "GimpPaintOptions *options" ], code => <<'CODE' { - options = gimp_paint_options_new (gimp, GIMP_TYPE_PENCIL_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpPencil"); - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_PENCIL, - options, - drawable, + options = gimp_paint_options_new (info); + + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } CODE @@ -584,20 +576,19 @@ HELP ); %invoke = ( - headers => [ qw("paint/gimpsmudge.h" "paint/gimpsmudgeoptions.h") ], - vars => [ "GimpPaintOptions *options" ], + vars => [ "GimpPaintInfo *info", "GimpPaintOptions *options" ], code => <<'CODE' { - options = gimp_paint_options_new (gimp, GIMP_TYPE_SMUDGE_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpSmudge"); + + options = gimp_paint_options_new (info); g_object_set (options, "rate", pressure, NULL); - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_SMUDGE, - options, - drawable, + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } CODE @@ -625,16 +616,15 @@ HELP ); %invoke = ( - headers => [ qw("paint/gimpsmudge.h" "paint/gimpsmudgeoptions.h") ], - vars => [ "GimpPaintOptions *options" ], + vars => [ "GimpPaintInfo *info", "GimpPaintOptions *options" ], code => <<'CODE' { - options = gimp_paint_options_new (gimp, GIMP_TYPE_SMUDGE_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpSmudge"); - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_SMUDGE, - options, - drawable, + options = gimp_paint_options_new (info); + + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } CODE @@ -666,11 +656,13 @@ HELP ); %invoke = ( - headers => [ qw("paint/gimpdodgeburn.h" "paint/gimpdodgeburnoptions.h") ], - vars => [ "GimpPaintOptions *options" ], + vars => [ "GimpPaintInfo *info", "GimpPaintOptions *options" ], code => <<'CODE' { - options = gimp_paint_options_new (gimp, GIMP_TYPE_DODGE_BURN_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpDodgeBurn"); + + options = gimp_paint_options_new (info); g_object_set (options, "type", dodgeburn_type, @@ -678,10 +670,7 @@ HELP "exposure", exposure, NULL); - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_DODGE_BURN, - options, - drawable, + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } CODE @@ -708,16 +697,15 @@ HELP ); %invoke = ( - headers => [ qw("paint/gimpdodgeburn.h" "paint/gimpdodgeburnoptions.h") ], - vars => [ "GimpPaintOptions *options" ], + vars => [ "GimpPaintInfo *info", "GimpPaintOptions *options" ], code => <<'CODE' { - options = gimp_paint_options_new (gimp, GIMP_TYPE_DODGE_BURN_OPTIONS); + info = (GimpPaintInfo *) + gimp_container_get_child_by_name (gimp->paint_info_list, "GimpDodgeBurn"); - success = paint_tools_stroke (gimp, context, - GIMP_TYPE_DODGE_BURN, - options, - drawable, + options = gimp_paint_options_new (info); + + success = paint_tools_stroke (gimp, context, options, drawable, num_strokes, strokes); } CODE @@ -741,13 +729,13 @@ sub ink { } @headers = qw("libgimpmath/gimpmath.h" "paint/paint-types.h" - "paint/gimppaintcore-stroke.h" "core/gimp.h"); + "paint/gimppaintcore-stroke.h" "paint/gimppaintoptions.h" + "core/gimp.h" "core/gimpcontainer.h" "core/gimppaintinfo.h"); $extra{app}->{code} = <<'CODE'; static gboolean paint_tools_stroke (Gimp *gimp, GimpContext *context, - GType core_type, GimpPaintOptions *options, GimpDrawable *drawable, gint n_strokes, @@ -766,7 +754,7 @@ paint_tools_stroke (Gimp *gimp, FALSE); gimp_context_set_parent (GIMP_CONTEXT (options), context); - core = g_object_new (core_type, NULL); + core = g_object_new (options->paint_info->paint_type, NULL); coords = g_new (GimpCoords, n_strokes);