gimp r27212 - in trunk: . app/core
- From: mitch svn gnome org
- To: svn-commits-list gnome org
- Subject: gimp r27212 - in trunk: . app/core
- Date: Fri, 10 Oct 2008 20:04:03 +0000 (UTC)
Author: mitch
Date: Fri Oct 10 20:04:03 2008
New Revision: 27212
URL: http://svn.gnome.org/viewvc/gimp?rev=27212&view=rev
Log:
2008-10-10 Michael Natterer <mitch gimp org>
* app/core/core-types.h
* app/core/Makefile.am
* app/core/gimpdrawablestack.[ch]: new GimpList subclass stub
which will manage the subgraphs of layers and channels and is also
the first step towards layer tree.
* app/core/gimpimage.c (gimp_image_init): keep the layers and
channels in GimpDrawableStacks instead of plain GimpLists.
Added:
trunk/app/core/gimpdrawablestack.c
trunk/app/core/gimpdrawablestack.h
Modified:
trunk/ChangeLog
trunk/app/core/Makefile.am
trunk/app/core/core-types.h
trunk/app/core/gimpimage.c
Modified: trunk/app/core/Makefile.am
==============================================================================
--- trunk/app/core/Makefile.am (original)
+++ trunk/app/core/Makefile.am Fri Oct 10 20:04:03 2008
@@ -156,6 +156,8 @@
gimpdrawable-transform.h \
gimpdrawablemodundo.c \
gimpdrawablemodundo.h \
+ gimpdrawablestack.c \
+ gimpdrawablestack.h \
gimpdrawableundo.c \
gimpdrawableundo.h \
gimpfloatingselundo.c \
Modified: trunk/app/core/core-types.h
==============================================================================
--- trunk/app/core/core-types.h (original)
+++ trunk/app/core/core-types.h Fri Oct 10 20:04:03 2008
@@ -70,6 +70,7 @@
typedef struct _GimpContainer GimpContainer;
typedef struct _GimpList GimpList;
typedef struct _GimpDocumentList GimpDocumentList;
+typedef struct _GimpDrawableStack GimpDrawableStack;
typedef struct _GimpToolPresets GimpToolPresets;
Added: trunk/app/core/gimpdrawablestack.c
==============================================================================
--- (empty file)
+++ trunk/app/core/gimpdrawablestack.c Fri Oct 10 20:04:03 2008
@@ -0,0 +1,107 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995-1997 Spencer Kimball and Peter Mattis
+ *
+ * gimpdrawablestack.c
+ * Copyright (C) 2008 Michael Natterer <mitch gimp org>
+ *
+ * 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 <gegl.h>
+
+#include "core-types.h"
+
+#include "gimpdrawable.h"
+#include "gimpdrawablestack.h"
+
+
+/* local function prototypes */
+
+static void gimp_drawable_stack_finalize (GObject *object);
+
+static void gimp_drawable_stack_add (GimpContainer *container,
+ GimpObject *object);
+static void gimp_drawable_stack_remove (GimpContainer *container,
+ GimpObject *object);
+static void gimp_drawable_stack_reorder (GimpContainer *container,
+ GimpObject *object,
+ gint new_index);
+
+
+G_DEFINE_TYPE (GimpDrawableStack, gimp_drawable_stack, GIMP_TYPE_LIST)
+
+#define parent_class gimp_drawable_stack_parent_class
+
+
+static void
+gimp_drawable_stack_class_init (GimpDrawableStackClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ GimpContainerClass *container_class = GIMP_CONTAINER_CLASS (klass);
+
+ object_class->finalize = gimp_drawable_stack_finalize;
+
+ container_class->add = gimp_drawable_stack_add;
+ container_class->remove = gimp_drawable_stack_remove;
+ container_class->reorder = gimp_drawable_stack_reorder;
+}
+
+static void
+gimp_drawable_stack_init (GimpDrawableStack *list)
+{
+}
+
+static void
+gimp_drawable_stack_finalize (GObject *object)
+{
+ G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+gimp_drawable_stack_add (GimpContainer *container,
+ GimpObject *object)
+{
+ GIMP_CONTAINER_CLASS (parent_class)->add (container, object);
+}
+
+static void
+gimp_drawable_stack_remove (GimpContainer *container,
+ GimpObject *object)
+{
+ GIMP_CONTAINER_CLASS (parent_class)->remove (container, object);
+}
+
+static void
+gimp_drawable_stack_reorder (GimpContainer *container,
+ GimpObject *object,
+ gint new_index)
+{
+ GIMP_CONTAINER_CLASS (parent_class)->reorder (container, object, new_index);
+}
+
+GimpContainer *
+gimp_drawable_stack_new (GType drawable_type)
+{
+ g_return_val_if_fail (g_type_is_a (drawable_type, GIMP_TYPE_DRAWABLE), NULL);
+
+ return g_object_new (GIMP_TYPE_DRAWABLE_STACK,
+ "name", g_type_name (drawable_type),
+ "children-type", drawable_type,
+ "policy", GIMP_CONTAINER_POLICY_STRONG,
+ "unique-names", TRUE,
+ NULL);
+}
Added: trunk/app/core/gimpdrawablestack.h
==============================================================================
--- (empty file)
+++ trunk/app/core/gimpdrawablestack.h Fri Oct 10 20:04:03 2008
@@ -0,0 +1,52 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995-1997 Spencer Kimball and Peter Mattis
+ *
+ * gimpdrawablestack.h
+ * Copyright (C) 2008 Michael Natterer <mitch gimp org>
+ *
+ * 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_DRAWABLE_STACK_H__
+#define __GIMP_DRAWABLE_STACK_H__
+
+#include "core/gimplist.h"
+
+
+#define GIMP_TYPE_DRAWABLE_STACK (gimp_drawable_stack_get_type ())
+#define GIMP_DRAWABLE_STACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_DRAWABLE_STACK, GimpDrawableStack))
+#define GIMP_DRAWABLE_STACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_DRAWABLE_STACK, GimpDrawableStackClass))
+#define GIMP_IS_DRAWABLE_STACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_DRAWABLE_STACK))
+#define GIMP_IS_DRAWABLE_STACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_DRAWABLE_STACK))
+
+
+typedef struct _GimpDrawableStackClass GimpDrawableStackClass;
+
+struct _GimpDrawableStack
+{
+ GimpList parent_instance;
+};
+
+struct _GimpDrawableStackClass
+{
+ GimpListClass parent_class;
+};
+
+
+GType gimp_drawable_stack_get_type (void) G_GNUC_CONST;
+GimpContainer * gimp_drawable_stack_new (GType drawable_type);
+
+
+#endif /* __GIMP_DRAWABLE_STACK_H__ */
Modified: trunk/app/core/gimpimage.c
==============================================================================
--- trunk/app/core/gimpimage.c (original)
+++ trunk/app/core/gimpimage.c Fri Oct 10 20:04:03 2008
@@ -38,6 +38,7 @@
#include "gimp-parasites.h"
#include "gimp-utils.h"
#include "gimpcontext.h"
+#include "gimpdrawablestack.h"
#include "gimpgrid.h"
#include "gimpguide.h"
#include "gimpimage.h"
@@ -631,8 +632,8 @@
image->grid = NULL;
image->sample_points = NULL;
- image->layers = gimp_list_new (GIMP_TYPE_LAYER, TRUE);
- image->channels = gimp_list_new (GIMP_TYPE_CHANNEL, TRUE);
+ image->layers = gimp_drawable_stack_new (GIMP_TYPE_LAYER);
+ image->channels = gimp_drawable_stack_new (GIMP_TYPE_CHANNEL);
image->vectors = gimp_list_new (GIMP_TYPE_VECTORS, TRUE);
image->layer_stack = NULL;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]