app: move all GimpStrokeOptions members to private

This commit is contained in:
Michael Natterer
2011-03-05 21:00:28 +01:00
parent 5ad45dae03
commit fc7bd98d92
8 changed files with 228 additions and 89 deletions

View File

@ -731,7 +731,7 @@ gimp_channel_stroke (GimpItem *item,
gimp_item_get_offset (GIMP_ITEM (channel), &offset_x, &offset_y);
switch (stroke_options->method)
switch (gimp_stroke_options_get_method (stroke_options))
{
case GIMP_STROKE_METHOD_LIBART:
gimp_drawable_stroke_boundary (drawable,
@ -744,16 +744,21 @@ gimp_channel_stroke (GimpItem *item,
case GIMP_STROKE_METHOD_PAINT_CORE:
{
GimpPaintInfo *paint_info;
GimpPaintCore *core;
GimpPaintInfo *paint_info;
GimpPaintCore *core;
GimpPaintOptions *paint_options;
gboolean emulate_dynamics;
paint_info = gimp_context_get_paint_info (GIMP_CONTEXT (stroke_options));
core = g_object_new (paint_info->paint_type, NULL);
paint_options = gimp_stroke_options_get_paint_options (stroke_options);
emulate_dynamics = gimp_stroke_options_get_emulate_dynamics (stroke_options);
retval = gimp_paint_core_stroke_boundary (core, drawable,
stroke_options->paint_options,
stroke_options->emulate_dynamics,
paint_options,
emulate_dynamics,
segs_in, n_segs_in,
offset_x, offset_y,
push_undo, error);

View File

@ -371,9 +371,13 @@ gimp_drawable_stroke_scan_convert (GimpDrawable *drawable,
if (do_stroke)
{
GimpStrokeOptions *stroke_options = GIMP_STROKE_OPTIONS (options);
gdouble width = stroke_options->width;
gdouble width;
GimpUnit unit;
if (stroke_options->unit != GIMP_UNIT_PIXEL)
width = gimp_stroke_options_get_width (stroke_options);
unit = gimp_stroke_options_get_unit (stroke_options);
if (unit != GIMP_UNIT_PIXEL)
{
gdouble xres;
gdouble yres;
@ -382,16 +386,15 @@ gimp_drawable_stroke_scan_convert (GimpDrawable *drawable,
gimp_scan_convert_set_pixel_ratio (scan_convert, yres / xres);
width = gimp_units_to_pixels (stroke_options->width,
stroke_options->unit, yres);
width = gimp_units_to_pixels (width, unit, yres);
}
gimp_scan_convert_stroke (scan_convert, width,
stroke_options->join_style,
stroke_options->cap_style,
stroke_options->miter_limit,
stroke_options->dash_offset,
stroke_options->dash_info);
gimp_stroke_options_get_join_style (stroke_options),
gimp_stroke_options_get_cap_style (stroke_options),
gimp_stroke_options_get_miter_limit (stroke_options),
gimp_stroke_options_get_dash_offset (stroke_options),
gimp_stroke_options_get_dash_info (stroke_options));
}
/* fill a 1-bpp Tilemanager with black, this will describe the shape

View File

@ -70,6 +70,35 @@ enum
};
typedef struct _GimpStrokeOptionsPrivate GimpStrokeOptionsPrivate;
struct _GimpStrokeOptionsPrivate
{
GimpStrokeMethod method;
/* options for medhod == LIBART */
gdouble width;
GimpUnit unit;
GimpCapStyle cap_style;
GimpJoinStyle join_style;
gdouble miter_limit;
gdouble dash_offset;
GArray *dash_info;
/* options for method == PAINT_TOOL */
GimpPaintOptions *paint_options;
gboolean emulate_dynamics;
};
#define GET_PRIVATE(options) \
G_TYPE_INSTANCE_GET_PRIVATE (options, \
GIMP_TYPE_STROKE_OPTIONS, \
GimpStrokeOptionsPrivate)
static void gimp_stroke_options_config_iface_init (gpointer iface,
gpointer iface_data);
@ -178,6 +207,8 @@ gimp_stroke_options_class_init (GimpStrokeOptionsClass *klass)
"emulate-brush-dynamics", NULL,
FALSE,
GIMP_PARAM_STATIC_STRINGS);
g_type_class_add_private (klass, sizeof (GimpStrokeOptionsPrivate));
}
static void
@ -202,12 +233,12 @@ gimp_stroke_options_init (GimpStrokeOptions *options)
static void
gimp_stroke_options_finalize (GObject *object)
{
GimpStrokeOptions *options = GIMP_STROKE_OPTIONS (object);
GimpStrokeOptionsPrivate *private = GET_PRIVATE (object);
if (options->paint_options)
if (private->paint_options)
{
g_object_unref (options->paint_options);
options->paint_options = NULL;
g_object_unref (private->paint_options);
private->paint_options = NULL;
}
G_OBJECT_CLASS (parent_class)->finalize (object);
@ -219,31 +250,32 @@ gimp_stroke_options_set_property (GObject *object,
const GValue *value,
GParamSpec *pspec)
{
GimpStrokeOptions *options = GIMP_STROKE_OPTIONS (object);
GimpStrokeOptions *options = GIMP_STROKE_OPTIONS (object);
GimpStrokeOptionsPrivate *private = GET_PRIVATE (object);
switch (property_id)
{
case PROP_METHOD:
options->method = g_value_get_enum (value);
private->method = g_value_get_enum (value);
break;
case PROP_WIDTH:
options->width = g_value_get_double (value);
private->width = g_value_get_double (value);
break;
case PROP_UNIT:
options->unit = g_value_get_int (value);
private->unit = g_value_get_int (value);
break;
case PROP_CAP_STYLE:
options->cap_style = g_value_get_enum (value);
private->cap_style = g_value_get_enum (value);
break;
case PROP_JOIN_STYLE:
options->join_style = g_value_get_enum (value);
private->join_style = g_value_get_enum (value);
break;
case PROP_MITER_LIMIT:
options->miter_limit = g_value_get_double (value);
private->miter_limit = g_value_get_double (value);
break;
case PROP_DASH_OFFSET:
options->dash_offset = g_value_get_double (value);
private->dash_offset = g_value_get_double (value);
break;
case PROP_DASH_INFO:
{
@ -257,12 +289,12 @@ gimp_stroke_options_set_property (GObject *object,
break;
case PROP_PAINT_OPTIONS:
if (options->paint_options)
g_object_unref (options->paint_options);
options->paint_options = g_value_dup_object (value);
if (private->paint_options)
g_object_unref (private->paint_options);
private->paint_options = g_value_dup_object (value);
break;
case PROP_EMULATE_DYNAMICS:
options->emulate_dynamics = g_value_get_boolean (value);
private->emulate_dynamics = g_value_get_boolean (value);
break;
default:
@ -277,46 +309,46 @@ gimp_stroke_options_get_property (GObject *object,
GValue *value,
GParamSpec *pspec)
{
GimpStrokeOptions *options = GIMP_STROKE_OPTIONS (object);
GimpStrokeOptionsPrivate *private = GET_PRIVATE (object);
switch (property_id)
{
case PROP_METHOD:
g_value_set_enum (value, options->method);
g_value_set_enum (value, private->method);
break;
case PROP_WIDTH:
g_value_set_double (value, options->width);
g_value_set_double (value, private->width);
break;
case PROP_UNIT:
g_value_set_int (value, options->unit);
g_value_set_int (value, private->unit);
break;
case PROP_CAP_STYLE:
g_value_set_enum (value, options->cap_style);
g_value_set_enum (value, private->cap_style);
break;
case PROP_JOIN_STYLE:
g_value_set_enum (value, options->join_style);
g_value_set_enum (value, private->join_style);
break;
case PROP_MITER_LIMIT:
g_value_set_double (value, options->miter_limit);
g_value_set_double (value, private->miter_limit);
break;
case PROP_DASH_OFFSET:
g_value_set_double (value, options->dash_offset);
g_value_set_double (value, private->dash_offset);
break;
case PROP_DASH_INFO:
{
GValueArray *value_array;
value_array = gimp_dash_pattern_to_value_array (options->dash_info);
value_array = gimp_dash_pattern_to_value_array (private->dash_info);
g_value_take_boxed (value, value_array);
}
break;
case PROP_PAINT_OPTIONS:
g_value_set_object (value, options->paint_options);
g_value_set_object (value, private->paint_options);
break;
case PROP_EMULATE_DYNAMICS:
g_value_set_boolean (value, options->emulate_dynamics);
g_value_set_boolean (value, private->emulate_dynamics);
break;
default:
@ -328,16 +360,17 @@ gimp_stroke_options_get_property (GObject *object,
static GimpConfig *
gimp_stroke_options_duplicate (GimpConfig *config)
{
GimpStrokeOptions *options = GIMP_STROKE_OPTIONS (config);
GimpStrokeOptions *new_options;
GimpStrokeOptions *options = GIMP_STROKE_OPTIONS (config);
GimpStrokeOptionsPrivate *private = GET_PRIVATE (options);
GimpStrokeOptions *new_options;
new_options = GIMP_STROKE_OPTIONS (parent_config_iface->duplicate (config));
if (options->paint_options)
if (private->paint_options)
{
GObject *paint_options;
paint_options = gimp_config_duplicate (GIMP_CONFIG (options->paint_options));
paint_options = gimp_config_duplicate (GIMP_CONFIG (private->paint_options));
g_object_set (new_options, "paint-options", paint_options, NULL);
g_object_unref (paint_options);
}
@ -384,6 +417,87 @@ gimp_stroke_options_new (Gimp *gimp,
return options;
}
GimpStrokeMethod
gimp_stroke_options_get_method (GimpStrokeOptions *options)
{
g_return_val_if_fail (GIMP_IS_STROKE_OPTIONS (options),
GIMP_STROKE_METHOD_LIBART);
return GET_PRIVATE (options)->method;
}
gdouble
gimp_stroke_options_get_width (GimpStrokeOptions *options)
{
g_return_val_if_fail (GIMP_IS_STROKE_OPTIONS (options), 1.0);
return GET_PRIVATE (options)->width;
}
GimpUnit
gimp_stroke_options_get_unit (GimpStrokeOptions *options)
{
g_return_val_if_fail (GIMP_IS_STROKE_OPTIONS (options), GIMP_UNIT_PIXEL);
return GET_PRIVATE (options)->unit;
}
GimpCapStyle
gimp_stroke_options_get_cap_style (GimpStrokeOptions *options)
{
g_return_val_if_fail (GIMP_IS_STROKE_OPTIONS (options), GIMP_CAP_BUTT);
return GET_PRIVATE (options)->cap_style;
}
GimpJoinStyle
gimp_stroke_options_get_join_style (GimpStrokeOptions *options)
{
g_return_val_if_fail (GIMP_IS_STROKE_OPTIONS (options), GIMP_JOIN_MITER);
return GET_PRIVATE (options)->join_style;
}
gdouble
gimp_stroke_options_get_miter_limit (GimpStrokeOptions *options)
{
g_return_val_if_fail (GIMP_IS_STROKE_OPTIONS (options), 1.0);
return GET_PRIVATE (options)->miter_limit;
}
gdouble
gimp_stroke_options_get_dash_offset (GimpStrokeOptions *options)
{
g_return_val_if_fail (GIMP_IS_STROKE_OPTIONS (options), 0.0);
return GET_PRIVATE (options)->dash_offset;
}
GArray *
gimp_stroke_options_get_dash_info (GimpStrokeOptions *options)
{
g_return_val_if_fail (GIMP_IS_STROKE_OPTIONS (options), NULL);
return GET_PRIVATE (options)->dash_info;
}
GimpPaintOptions *
gimp_stroke_options_get_paint_options (GimpStrokeOptions *options)
{
g_return_val_if_fail (GIMP_IS_STROKE_OPTIONS (options), NULL);
return GET_PRIVATE (options)->paint_options;
}
gboolean
gimp_stroke_options_get_emulate_dynamics (GimpStrokeOptions *options)
{
g_return_val_if_fail (GIMP_IS_STROKE_OPTIONS (options), FALSE);
return GET_PRIVATE (options)->emulate_dynamics;
}
/**
* gimp_stroke_options_take_dash_pattern:
* @options: a #GimpStrokeOptions object
@ -400,16 +514,20 @@ gimp_stroke_options_take_dash_pattern (GimpStrokeOptions *options,
GimpDashPreset preset,
GArray *pattern)
{
GimpStrokeOptionsPrivate *private;
g_return_if_fail (GIMP_IS_STROKE_OPTIONS (options));
g_return_if_fail (preset == GIMP_DASH_CUSTOM || pattern == NULL);
private = GET_PRIVATE (options);
if (preset != GIMP_DASH_CUSTOM)
pattern = gimp_dash_pattern_new_from_preset (preset);
if (options->dash_info)
gimp_dash_pattern_free (options->dash_info);
if (private->dash_info)
gimp_dash_pattern_free (private->dash_info);
options->dash_info = pattern;
private->dash_info = pattern;
g_object_notify (G_OBJECT (options), "dash-info");
@ -422,10 +540,14 @@ gimp_stroke_options_prepare (GimpStrokeOptions *options,
GimpContext *context,
gboolean use_default_values)
{
GimpStrokeOptionsPrivate *private;
g_return_if_fail (GIMP_IS_STROKE_OPTIONS (options));
g_return_if_fail (GIMP_IS_CONTEXT (context));
switch (options->method)
private = GET_PRIVATE (options);
switch (private->method)
{
case GIMP_STROKE_METHOD_LIBART:
break;

View File

@ -37,25 +37,7 @@ typedef struct _GimpStrokeOptionsClass GimpStrokeOptionsClass;
struct _GimpStrokeOptions
{
GimpFillOptions parent_instance;
GimpStrokeMethod method;
/* options for medhod == LIBART */
gdouble width;
GimpUnit unit;
GimpCapStyle cap_style;
GimpJoinStyle join_style;
gdouble miter_limit;
gdouble dash_offset;
GArray *dash_info;
/* options for method == PAINT_TOOL */
GimpPaintOptions *paint_options;
gboolean emulate_dynamics;
GimpFillOptions parent_instance;
};
struct _GimpStrokeOptionsClass
@ -67,19 +49,33 @@ struct _GimpStrokeOptionsClass
};
GType gimp_stroke_options_get_type (void) G_GNUC_CONST;
GType gimp_stroke_options_get_type (void) G_GNUC_CONST;
GimpStrokeOptions * gimp_stroke_options_new (Gimp *gimp,
GimpContext *context,
gboolean use_context_color);
void gimp_stroke_options_take_dash_pattern (GimpStrokeOptions *options,
GimpDashPreset preset,
GArray *pattern);
GimpStrokeOptions * gimp_stroke_options_new (Gimp *gimp,
GimpContext *context,
gboolean use_context_color);
void gimp_stroke_options_prepare (GimpStrokeOptions *options,
GimpContext *context,
gboolean use_default_values);
void gimp_stroke_options_finish (GimpStrokeOptions *options);
GimpStrokeMethod gimp_stroke_options_get_method (GimpStrokeOptions *options);
gdouble gimp_stroke_options_get_width (GimpStrokeOptions *options);
GimpUnit gimp_stroke_options_get_unit (GimpStrokeOptions *options);
GimpCapStyle gimp_stroke_options_get_cap_style (GimpStrokeOptions *options);
GimpJoinStyle gimp_stroke_options_get_join_style (GimpStrokeOptions *options);
gdouble gimp_stroke_options_get_miter_limit (GimpStrokeOptions *options);
gdouble gimp_stroke_options_get_dash_offset (GimpStrokeOptions *options);
GArray * gimp_stroke_options_get_dash_info (GimpStrokeOptions *options);
GimpPaintOptions * gimp_stroke_options_get_paint_options (GimpStrokeOptions *options);
gboolean gimp_stroke_options_get_emulate_dynamics (GimpStrokeOptions *options);
void gimp_stroke_options_take_dash_pattern (GimpStrokeOptions *options,
GimpDashPreset preset,
GArray *pattern);
void gimp_stroke_options_prepare (GimpStrokeOptions *options,
GimpContext *context,
gboolean use_default_values);
void gimp_stroke_options_finish (GimpStrokeOptions *options);
#endif /* __GIMP_STROKE_OPTIONS_H__ */

View File

@ -182,7 +182,8 @@ stroke_dialog_new (GimpItem *item,
gtk_widget_show (stroke_editor);
gtk_widget_set_sensitive (stroke_editor,
options->method == GIMP_STROKE_METHOD_LIBART);
gimp_stroke_options_get_method (options) ==
GIMP_STROKE_METHOD_LIBART);
g_object_set_data (G_OBJECT (libart_radio), "set_sensitive", stroke_editor);
}
@ -212,7 +213,8 @@ stroke_dialog_new (GimpItem *item,
gtk_widget_show (vbox);
gtk_widget_set_sensitive (vbox,
options->method == GIMP_STROKE_METHOD_PAINT_CORE);
gimp_stroke_options_get_method (options) ==
GIMP_STROKE_METHOD_PAINT_CORE);
g_object_set_data (G_OBJECT (paint_radio), "set_sensitive", vbox);
hbox = gtk_hbox_new (FALSE, 6);

View File

@ -558,7 +558,7 @@ gimp_vectors_stroke (GimpItem *item,
return FALSE;
}
switch (stroke_options->method)
switch (gimp_stroke_options_get_method (stroke_options))
{
case GIMP_STROKE_METHOD_LIBART:
retval = gimp_drawable_stroke_vectors (drawable,
@ -568,16 +568,21 @@ gimp_vectors_stroke (GimpItem *item,
case GIMP_STROKE_METHOD_PAINT_CORE:
{
GimpPaintInfo *paint_info;
GimpPaintCore *core;
GimpPaintInfo *paint_info;
GimpPaintCore *core;
GimpPaintOptions *paint_options;
gboolean emulate_dynamics;
paint_info = gimp_context_get_paint_info (GIMP_CONTEXT (stroke_options));
core = g_object_new (paint_info->paint_type, NULL);
paint_options = gimp_stroke_options_get_paint_options (stroke_options);
emulate_dynamics = gimp_stroke_options_get_emulate_dynamics (stroke_options);
retval = gimp_paint_core_stroke_vectors (core, drawable,
stroke_options->paint_options,
stroke_options->emulate_dynamics,
paint_options,
emulate_dynamics,
vectors, push_undo, error);
g_object_unref (core);

View File

@ -464,6 +464,8 @@ gimp_dash_editor_shift_left (GimpDashEditor *editor)
static void
update_segments_from_options (GimpDashEditor *editor)
{
GArray *dash_info;
if (editor->stroke_options == NULL || editor->segments == NULL)
return;
@ -471,7 +473,9 @@ update_segments_from_options (GimpDashEditor *editor)
gtk_widget_queue_draw (GTK_WIDGET (editor));
gimp_dash_pattern_fill_segments (editor->stroke_options->dash_info,
dash_info = gimp_stroke_options_get_dash_info (editor->stroke_options);
gimp_dash_pattern_fill_segments (dash_info,
editor->segments, editor->n_segments);
}

View File

@ -372,7 +372,8 @@ gimp_stroke_editor_combo_update (GtkTreeModel *model,
if (gimp_int_store_lookup_by_value (model, GIMP_DASH_CUSTOM, &iter))
{
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
GIMP_INT_STORE_USER_DATA, options->dash_info,
GIMP_INT_STORE_USER_DATA,
gimp_stroke_options_get_dash_info (options),
-1);
}
}
@ -398,7 +399,8 @@ gimp_stroke_editor_combo_fill (GimpStrokeOptions *options,
if (value == GIMP_DASH_CUSTOM)
{
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
GIMP_INT_STORE_USER_DATA, options->dash_info,
GIMP_INT_STORE_USER_DATA,
gimp_stroke_options_get_dash_info (options),
-1);
g_signal_connect_object (options, "notify::dash-info",