From 67a5eaea687b9b7e53a0f037992cb9f5b5ea89a4 Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Thu, 23 Oct 2008 21:18:39 +0000 Subject: [PATCH] Merge a part of SOC 2006's vector layer branch: 2008-10-23 Michael Natterer Merge a part of SOC 2006's vector layer branch: * app/core/Makefile.am * app/core/core-types.h * app/core/gimpfilloptions.[ch]: new GimpContext subclass factored out of GimpStrokeOptions. Has "style" and "antialias" properties. * app/core/gimpstrokeoptions.[ch]: derive from GimpFillOptions and remove said properties. * app/core/gimpdrawable-stroke.c (gimp_drawable_stroke_scan_convert): changed accordingly. svn path=/trunk/; revision=27378 --- ChangeLog | 17 ++++- app/core/Makefile.am | 2 + app/core/core-types.h | 1 + app/core/gimpdrawable-stroke.c | 4 +- app/core/gimpfilloptions.c | 124 +++++++++++++++++++++++++++++++++ app/core/gimpfilloptions.h | 57 +++++++++++++++ app/core/gimpstrokeoptions.c | 23 +----- app/core/gimpstrokeoptions.h | 12 ++-- 8 files changed, 207 insertions(+), 33 deletions(-) create mode 100644 app/core/gimpfilloptions.c create mode 100644 app/core/gimpfilloptions.h diff --git a/ChangeLog b/ChangeLog index 4823f43dcb..35b81d5c1a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2008-10-23 Michael Natterer + + Merge a part of SOC 2006's vector layer branch: + + * app/core/Makefile.am + * app/core/core-types.h + * app/core/gimpfilloptions.[ch]: new GimpContext subclass factored + out of GimpStrokeOptions. Has "style" and "antialias" properties. + + * app/core/gimpstrokeoptions.[ch]: derive from GimpFillOptions + and remove said properties. + + * app/core/gimpdrawable-stroke.c + (gimp_drawable_stroke_scan_convert): changed accordingly. + 2008-10-23 Michael Natterer * app/plug-in/gimppluginprocframe.c @@ -1103,7 +1118,7 @@ 2008-10-03 Hans Breuer * plug-ins/common/web-browser.c : when ShellExecute() is failing give - the detailed (currently intentionally untranslated) error message via + the detailed (currently intentionally untranslated) error message via g_message() * **/makefie.msc gimpdefs.msc app/gimpcore.def : updated diff --git a/app/core/Makefile.am b/app/core/Makefile.am index 144dbf254c..4e4ca26233 100644 --- a/app/core/Makefile.am +++ b/app/core/Makefile.am @@ -162,6 +162,8 @@ libappcore_a_sources = \ gimpdrawablestack.h \ gimpdrawableundo.c \ gimpdrawableundo.h \ + gimpfilloptions.c \ + gimpfilloptions.h \ gimpfloatingselundo.c \ gimpfloatingselundo.h \ gimpgradient.c \ diff --git a/app/core/core-types.h b/app/core/core-types.h index 908f659449..efe45c7949 100644 --- a/app/core/core-types.h +++ b/app/core/core-types.h @@ -77,6 +77,7 @@ typedef struct _GimpToolPresets GimpToolPresets; /* context objects */ typedef struct _GimpContext GimpContext; +typedef struct _GimpFillOptions GimpFillOptions; typedef struct _GimpStrokeOptions GimpStrokeOptions; typedef struct _GimpToolOptions GimpToolOptions; diff --git a/app/core/gimpdrawable-stroke.c b/app/core/gimpdrawable-stroke.c index e599973ed3..bc97418666 100644 --- a/app/core/gimpdrawable-stroke.c +++ b/app/core/gimpdrawable-stroke.c @@ -271,7 +271,7 @@ gimp_drawable_stroke_scan_convert (GimpDrawable *drawable, /* render the stroke into it */ gimp_scan_convert_render (scan_convert, mask, x + off_x, y + off_y, - options->antialias); + GIMP_FILL_OPTIONS (options)->antialias); bytes = gimp_drawable_bytes_with_alpha (drawable); @@ -279,7 +279,7 @@ gimp_drawable_stroke_scan_convert (GimpDrawable *drawable, pixel_region_init (&basePR, base, 0, 0, w, h, TRUE); pixel_region_init (&maskPR, mask, 0, 0, w, h, FALSE); - switch (options->style) + switch (GIMP_FILL_OPTIONS (options)->style) { case GIMP_STROKE_STYLE_SOLID: { diff --git a/app/core/gimpfilloptions.c b/app/core/gimpfilloptions.c new file mode 100644 index 0000000000..a46d4275ca --- /dev/null +++ b/app/core/gimpfilloptions.c @@ -0,0 +1,124 @@ +/* The GIMP -- an image manipulation program + * Copyright (C) 1995-1999 Spencer Kimball and Peter Mattis + * + * gimpfilloptions.c + * Copyright (C) 2003 Simon Budig + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#include "config.h" + +#include + +#include "libgimpbase/gimpbase.h" +#include "libgimpconfig/gimpconfig.h" + +#include "core-types.h" + +#include "gimpfilloptions.h" + + +enum +{ + PROP_0, + PROP_STYLE, + PROP_ANTIALIAS +}; + + +static void gimp_fill_options_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec); +static void gimp_fill_options_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec); + + +G_DEFINE_TYPE (GimpFillOptions, gimp_fill_options, GIMP_TYPE_CONTEXT) + + +static void +gimp_fill_options_class_init (GimpFillOptionsClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->set_property = gimp_fill_options_set_property; + object_class->get_property = gimp_fill_options_get_property; + + GIMP_CONFIG_INSTALL_PROP_ENUM (object_class, PROP_STYLE, + "style", NULL, + GIMP_TYPE_STROKE_STYLE, + GIMP_STROKE_STYLE_SOLID, + GIMP_PARAM_STATIC_STRINGS); + + GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_ANTIALIAS, + "antialias", NULL, + TRUE, + GIMP_PARAM_STATIC_STRINGS); +} + +static void +gimp_fill_options_init (GimpFillOptions *options) +{ +} + +static void +gimp_fill_options_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + GimpFillOptions *options = GIMP_FILL_OPTIONS (object); + + switch (property_id) + { + case PROP_STYLE: + options->style = g_value_get_enum (value); + break; + case PROP_ANTIALIAS: + options->antialias = g_value_get_boolean (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +gimp_fill_options_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + GimpFillOptions *options = GIMP_FILL_OPTIONS (object); + + switch (property_id) + { + case PROP_STYLE: + g_value_set_enum (value, options->style); + break; + case PROP_ANTIALIAS: + g_value_set_boolean (value, options->antialias); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} diff --git a/app/core/gimpfilloptions.h b/app/core/gimpfilloptions.h new file mode 100644 index 0000000000..293c5e2c99 --- /dev/null +++ b/app/core/gimpfilloptions.h @@ -0,0 +1,57 @@ +/* The GIMP -- an image manipulation program + * Copyright (C) 1995-1999 Spencer Kimball and Peter Mattis + * + * gimpfilloptions.h + * Copyright (C) 2003 Simon Budig + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef __GIMP_FILL_OPTIONS_H__ +#define __GIMP_FILL_OPTIONS_H__ + + +#include "gimpcontext.h" + + +#define GIMP_TYPE_FILL_OPTIONS (gimp_fill_options_get_type ()) +#define GIMP_FILL_OPTIONS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_FILL_OPTIONS, GimpFillOptions)) +#define GIMP_FILL_OPTIONS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_FILL_OPTIONS, GimpFillOptionsClass)) +#define GIMP_IS_FILL_OPTIONS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_FILL_OPTIONS)) +#define GIMP_IS_FILL_OPTIONS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_FILL_OPTIONS)) +#define GIMP_FILL_OPTIONS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_FILL_OPTIONS, GimpFillOptionsClass)) + + +typedef struct _GimpFillOptionsClass GimpFillOptionsClass; + +struct _GimpFillOptions +{ + GimpContext parent_instance; + + GimpStrokeStyle style; + + gboolean antialias; +}; + +struct _GimpFillOptionsClass +{ + GimpContextClass parent_class; +}; + + +GType gimp_fill_options_get_type (void) G_GNUC_CONST; + + +#endif /* __GIMP_FILL_OPTIONS_H__ */ diff --git a/app/core/gimpstrokeoptions.c b/app/core/gimpstrokeoptions.c index 6afa8695b9..68a4e3c987 100644 --- a/app/core/gimpstrokeoptions.c +++ b/app/core/gimpstrokeoptions.c @@ -67,7 +67,7 @@ static void gimp_stroke_options_get_property (GObject *object, GParamSpec *pspec); -G_DEFINE_TYPE (GimpStrokeOptions, gimp_stroke_options, GIMP_TYPE_CONTEXT) +G_DEFINE_TYPE (GimpStrokeOptions, gimp_stroke_options, GIMP_TYPE_FILL_OPTIONS) static guint stroke_options_signals[LAST_SIGNAL] = { 0 }; @@ -93,11 +93,6 @@ gimp_stroke_options_class_init (GimpStrokeOptionsClass *klass) G_TYPE_NONE, 1, GIMP_TYPE_DASH_PRESET); - GIMP_CONFIG_INSTALL_PROP_ENUM (object_class, PROP_STYLE, - "style", NULL, - GIMP_TYPE_STROKE_STYLE, - GIMP_STROKE_STYLE_SOLID, - GIMP_PARAM_STATIC_STRINGS); GIMP_CONFIG_INSTALL_PROP_DOUBLE (object_class, PROP_WIDTH, "width", NULL, 0.0, 2000.0, 6.0, @@ -122,10 +117,6 @@ gimp_stroke_options_class_init (GimpStrokeOptionsClass *klass) "line-width from the actual join point."), 0.0, 100.0, 10.0, GIMP_PARAM_STATIC_STRINGS); - GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_ANTIALIAS, - "antialias", NULL, - TRUE, - GIMP_PARAM_STATIC_STRINGS); GIMP_CONFIG_INSTALL_PROP_DOUBLE (object_class, PROP_DASH_OFFSET, "dash-offset", NULL, 0.0, 2000.0, 0.0, @@ -156,9 +147,6 @@ gimp_stroke_options_set_property (GObject *object, switch (property_id) { - case PROP_STYLE: - options->style = g_value_get_enum (value); - break; case PROP_WIDTH: options->width = g_value_get_double (value); break; @@ -174,9 +162,6 @@ gimp_stroke_options_set_property (GObject *object, case PROP_MITER_LIMIT: options->miter_limit = g_value_get_double (value); break; - case PROP_ANTIALIAS: - options->antialias = g_value_get_boolean (value); - break; case PROP_DASH_OFFSET: options->dash_offset = g_value_get_double (value); break; @@ -207,9 +192,6 @@ gimp_stroke_options_get_property (GObject *object, switch (property_id) { - case PROP_STYLE: - g_value_set_enum (value, options->style); - break; case PROP_WIDTH: g_value_set_double (value, options->width); break; @@ -225,9 +207,6 @@ gimp_stroke_options_get_property (GObject *object, case PROP_MITER_LIMIT: g_value_set_double (value, options->miter_limit); break; - case PROP_ANTIALIAS: - g_value_set_boolean (value, options->antialias); - break; case PROP_DASH_OFFSET: g_value_set_double (value, options->dash_offset); break; diff --git a/app/core/gimpstrokeoptions.h b/app/core/gimpstrokeoptions.h index c41af32008..e72940f91d 100644 --- a/app/core/gimpstrokeoptions.h +++ b/app/core/gimpstrokeoptions.h @@ -23,7 +23,7 @@ #define __GIMP_STROKE_OPTIONS_H__ -#include "gimpcontext.h" +#include "gimpfilloptions.h" #define GIMP_TYPE_STROKE_OPTIONS (gimp_stroke_options_get_type ()) @@ -38,9 +38,7 @@ typedef struct _GimpStrokeOptionsClass GimpStrokeOptionsClass; struct _GimpStrokeOptions { - GimpContext parent_instance; - - GimpStrokeStyle style; + GimpFillOptions parent_instance; gdouble width; GimpUnit unit; @@ -50,15 +48,13 @@ struct _GimpStrokeOptions gdouble miter_limit; - gboolean antialias; - gdouble dash_offset; GArray *dash_info; }; struct _GimpStrokeOptionsClass { - GimpContextClass parent_class; + GimpFillOptionsClass parent_class; void (* dash_info_changed) (GimpStrokeOptions *stroke_options, GimpDashPreset preset); @@ -72,4 +68,4 @@ void gimp_stroke_options_take_dash_pattern (GimpStrokeOptions *options, GArray *pattern); -#endif /* __GIMP_STROKE_OPTIONS_H__ */ +#endif /* __GIMP_STROKE_OPTIONS_H__ */