added "GimpPaintInfo *paint_info" member and construct property. Changed

2004-08-31  Michael Natterer  <mitch@gimp.org>

	* 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.
This commit is contained in:
Michael Natterer 2004-08-31 13:20:57 +00:00 committed by Michael Natterer
parent 6965b0b881
commit 9e76c5a4bc
9 changed files with 261 additions and 233 deletions

View File

@ -1,3 +1,25 @@
2004-08-31 Michael Natterer <mitch@gimp.org>
* 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 <mitch@gimp.org>
* app/config/gimpconfig.c (gimp_config_iface_duplicate): set

View File

@ -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,

View File

@ -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

View File

@ -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;
}

View File

@ -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;

View File

@ -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,

View File

@ -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);
}

View File

@ -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,

View File

@ -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);