[gimp] app: add accessors for GimpItem::parasites and move it to private
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: add accessors for GimpItem::parasites and move it to private
- Date: Mon, 31 Jan 2011 22:54:45 +0000 (UTC)
commit ad88eb55a27ce9771ffb1727b7b7315a555f738f
Author: Michael Natterer <mitch gimp org>
Date: Mon Jan 31 23:51:18 2011 +0100
app: add accessors for GimpItem::parasites and move it to private
app/core/gimpimage-merge.c | 34 +++++++++--------
app/core/gimpitem.c | 91 +++++++++++++++++++++++++++++++++-----------
app/core/gimpitem.h | 6 ++-
app/xcf/xcf-save.c | 27 ++++++++-----
4 files changed, 108 insertions(+), 50 deletions(-)
---
diff --git a/app/core/gimpimage-merge.c b/app/core/gimpimage-merge.c
index 43ecb18..6767df7 100644
--- a/app/core/gimpimage-merge.c
+++ b/app/core/gimpimage-merge.c
@@ -390,19 +390,20 @@ gimp_image_merge_layers (GimpImage *image,
GimpMergeType merge_type,
const gchar *undo_desc)
{
- GList *list;
- GSList *reverse_list = NULL;
- PixelRegion src1PR, src2PR, maskPR;
- PixelRegion *mask;
- GimpLayer *merge_layer;
- GimpLayer *layer;
- GimpLayer *bottom_layer;
- gint count;
- gint x1, y1, x2, y2;
- gint off_x, off_y;
- gint position;
- gchar *name;
- GimpLayer *parent;
+ GList *list;
+ GSList *reverse_list = NULL;
+ PixelRegion src1PR, src2PR, maskPR;
+ PixelRegion *mask;
+ GimpLayer *merge_layer;
+ GimpLayer *layer;
+ GimpLayer *bottom_layer;
+ GimpParasiteList *parasites;
+ gint count;
+ gint x1, y1, x2, y2;
+ gint off_x, off_y;
+ gint position;
+ gchar *name;
+ GimpLayer *parent;
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL);
@@ -570,9 +571,10 @@ gimp_image_merge_layers (GimpImage *image,
gimp_item_set_tattoo (GIMP_ITEM (merge_layer),
gimp_item_get_tattoo (GIMP_ITEM (bottom_layer)));
- g_object_unref (GIMP_ITEM (merge_layer)->parasites);
- GIMP_ITEM (merge_layer)->parasites =
- gimp_parasite_list_copy (GIMP_ITEM (bottom_layer)->parasites);
+ parasites = gimp_item_get_parasites (GIMP_ITEM (bottom_layer));
+ parasites = gimp_parasite_list_copy (parasites);
+ gimp_item_set_parasites (GIMP_ITEM (merge_layer), parasites);
+ g_object_unref (parasites);
while (reverse_list)
{
diff --git a/app/core/gimpitem.c b/app/core/gimpitem.c
index ea9ca7b..644e1e7 100644
--- a/app/core/gimpitem.c
+++ b/app/core/gimpitem.c
@@ -78,9 +78,7 @@ struct _GimpItemPrivate
GimpImage *image; /* item owner */
-#if 0
GimpParasiteList *parasites; /* Plug-in parasite data */
-#endif
#if 0
gint width, height; /* size in pixels */
@@ -295,7 +293,7 @@ gimp_item_init (GimpItem *item)
private->ID = 0;
private->tattoo = 0;
private->image = NULL;
- item->parasites = gimp_parasite_list_new ();
+ private->parasites = gimp_parasite_list_new ();
item->width = 0;
item->height = 0;
private->offset_x = 0;
@@ -367,7 +365,6 @@ gimp_item_get_property (GObject *object,
static void
gimp_item_finalize (GObject *object)
{
- GimpItem *item = GIMP_ITEM (object);
GimpItemPrivate *private = GET_PRIVATE (object);
if (private->node)
@@ -383,10 +380,10 @@ gimp_item_finalize (GObject *object)
private->image = NULL;
}
- if (item->parasites)
+ if (private->parasites)
{
- g_object_unref (item->parasites);
- item->parasites = NULL;
+ g_object_unref (private->parasites);
+ private->parasites = NULL;
}
G_OBJECT_CLASS (parent_class)->finalize (object);
@@ -396,10 +393,11 @@ static gint64
gimp_item_get_memsize (GimpObject *object,
gint64 *gui_size)
{
- GimpItem *item = GIMP_ITEM (object);
- gint64 memsize = 0;
+ GimpItemPrivate *private = GET_PRIVATE (object);
+ gint64 memsize = 0;
- memsize += gimp_object_get_memsize (GIMP_OBJECT (item->parasites), gui_size);
+ memsize += gimp_object_get_memsize (GIMP_OBJECT (private->parasites),
+ gui_size);
return memsize + GIMP_OBJECT_CLASS (parent_class)->get_memsize (object,
gui_size);
@@ -492,8 +490,8 @@ gimp_item_real_duplicate (GimpItem *item,
g_free (new_name);
- g_object_unref (new_item->parasites);
- new_item->parasites = gimp_parasite_list_copy (item->parasites);
+ g_object_unref (GET_PRIVATE (new_item)->parasites);
+ GET_PRIVATE (new_item)->parasites = gimp_parasite_list_copy (private->parasites);
gimp_item_set_visible (new_item, gimp_item_get_visible (item), FALSE);
gimp_item_set_linked (new_item, gimp_item_get_linked (item), FALSE);
@@ -1690,8 +1688,8 @@ gimp_item_replace_item (GimpItem *item,
gimp_item_set_tattoo (item, gimp_item_get_tattoo (replace));
gimp_item_set_tattoo (replace, 0);
- item->parasites = replace->parasites;
- replace->parasites = NULL;
+ private->parasites = GET_PRIVATE (replace)->parasites;
+ GET_PRIVATE (replace)->parasites = NULL;
gimp_item_get_offset (replace, &offset_x, &offset_y);
gimp_item_set_offset (item, offset_x, offset_y);
@@ -1705,6 +1703,52 @@ gimp_item_replace_item (GimpItem *item,
gimp_item_set_lock_content (item, gimp_item_get_lock_content (replace), FALSE);
}
+/**
+ * gimp_item_set_parasites:
+ * @item: a #GimpItem
+ * @parasites: a #GimpParasiteList
+ *
+ * Set an @item's #GimpParasiteList. It's usually never needed to
+ * fiddle with an item's parasite list directly. This function exists
+ * for special purposes only, like when creating items from unusual
+ * sources.
+ **/
+void
+gimp_item_set_parasites (GimpItem *item,
+ GimpParasiteList *parasites)
+{
+ GimpItemPrivate *private;
+
+ g_return_if_fail (GIMP_IS_ITEM (item));
+ g_return_if_fail (GIMP_IS_PARASITE_LIST (parasites));
+
+ private = GET_PRIVATE (item);
+
+ if (parasites != private->parasites)
+ {
+ g_object_unref (private->parasites);
+ private->parasites = g_object_ref (parasites);
+ }
+}
+
+/**
+ * gimp_item_get_parasites:
+ * @item: a #GimpItem
+ *
+ * Get an @item's #GimpParasiteList. It's usually never needed to
+ * fiddle with an item's parasite list directly. This function exists
+ * for special purposes only, like when saving an item to XCF.
+ *
+ * Return value: The @item's #GimpParasiteList.
+ **/
+GimpParasiteList *
+gimp_item_get_parasites (const GimpItem *item)
+{
+ g_return_val_if_fail (GIMP_IS_ITEM (item), NULL);
+
+ return GET_PRIVATE (item)->parasites;
+}
+
void
gimp_item_parasite_attach (GimpItem *item,
const GimpParasite *parasite,
@@ -1750,7 +1794,7 @@ gimp_item_parasite_attach (GimpItem *item,
}
}
- gimp_parasite_list_add (item->parasites, ©);
+ gimp_parasite_list_add (private->parasites, ©);
if (gimp_parasite_has_flag (©, GIMP_PARASITE_ATTACH_PARENT))
{
@@ -1784,7 +1828,7 @@ gimp_item_parasite_detach (GimpItem *item,
private = GET_PRIVATE (item);
- parasite = gimp_parasite_list_find (item->parasites, name);
+ parasite = gimp_parasite_list_find (private->parasites, name);
if (! parasite)
return;
@@ -1808,7 +1852,7 @@ gimp_item_parasite_detach (GimpItem *item,
}
}
- gimp_parasite_list_remove (item->parasites, name);
+ gimp_parasite_list_remove (private->parasites, name);
}
const GimpParasite *
@@ -1817,7 +1861,7 @@ gimp_item_parasite_find (const GimpItem *item,
{
g_return_val_if_fail (GIMP_IS_ITEM (item), NULL);
- return gimp_parasite_list_find (item->parasites, name);
+ return gimp_parasite_list_find (GET_PRIVATE (item)->parasites, name);
}
static void
@@ -1832,17 +1876,20 @@ gchar **
gimp_item_parasite_list (const GimpItem *item,
gint *count)
{
- gchar **list;
- gchar **cur;
+ GimpItemPrivate *private;
+ gchar **list;
+ gchar **cur;
g_return_val_if_fail (GIMP_IS_ITEM (item), NULL);
g_return_val_if_fail (count != NULL, NULL);
- *count = gimp_parasite_list_length (item->parasites);
+ private = GET_PRIVATE (item);
+
+ *count = gimp_parasite_list_length (private->parasites);
cur = list = g_new (gchar *, *count);
- gimp_parasite_list_foreach (item->parasites,
+ gimp_parasite_list_foreach (private->parasites,
(GHFunc) gimp_item_parasite_list_foreach_func,
&cur);
diff --git a/app/core/gimpitem.h b/app/core/gimpitem.h
index 82c7033..02fa8cc 100644
--- a/app/core/gimpitem.h
+++ b/app/core/gimpitem.h
@@ -36,8 +36,6 @@ struct _GimpItem
{
GimpViewable parent_instance;
- GimpParasiteList *parasites; /* Plug-in parasite data */
-
gint width, height; /* size in pixels */
};
@@ -274,6 +272,10 @@ void gimp_item_set_image (GimpItem *item,
void gimp_item_replace_item (GimpItem *item,
GimpItem *replace);
+void gimp_item_set_parasites (GimpItem *item,
+ GimpParasiteList *parasites);
+GimpParasiteList * gimp_item_get_parasites (const GimpItem *item);
+
void gimp_item_parasite_attach (GimpItem *item,
const GimpParasite *parasite,
gboolean push_undo);
diff --git a/app/xcf/xcf-save.c b/app/xcf/xcf-save.c
index e4b7486..e8f5e2e 100644
--- a/app/xcf/xcf-save.c
+++ b/app/xcf/xcf-save.c
@@ -455,8 +455,9 @@ xcf_save_layer_props (XcfInfo *info,
GimpLayer *layer,
GError **error)
{
- gint offset_x;
- gint offset_y;
+ GimpParasiteList *parasites;
+ gint offset_x;
+ gint offset_y;
if (gimp_viewable_get_children (GIMP_VIEWABLE (layer)))
xcf_check_error (xcf_save_prop (info, image, PROP_GROUP_ITEM, error));
@@ -535,10 +536,12 @@ xcf_save_layer_props (XcfInfo *info,
flags));
}
- if (gimp_parasite_list_length (GIMP_ITEM (layer)->parasites) > 0)
+ parasites = gimp_item_get_parasites (GIMP_ITEM (layer));
+
+ if (gimp_parasite_list_length (parasites) > 0)
{
xcf_check_error (xcf_save_prop (info, image, PROP_PARASITES, error,
- GIMP_ITEM (layer)->parasites));
+ parasites));
}
xcf_check_error (xcf_save_prop (info, image, PROP_END, error));
@@ -552,7 +555,8 @@ xcf_save_channel_props (XcfInfo *info,
GimpChannel *channel,
GError **error)
{
- guchar col[3];
+ GimpParasiteList *parasites;
+ guchar col[3];
if (channel == gimp_image_get_active_channel (image))
xcf_check_error (xcf_save_prop (info, image, PROP_ACTIVE_CHANNEL, error));
@@ -577,9 +581,13 @@ xcf_save_channel_props (XcfInfo *info,
xcf_check_error (xcf_save_prop (info, image, PROP_TATTOO, error,
gimp_item_get_tattoo (GIMP_ITEM (channel))));
- if (gimp_parasite_list_length (GIMP_ITEM (channel)->parasites) > 0)
- xcf_check_error (xcf_save_prop (info, image, PROP_PARASITES, error,
- GIMP_ITEM (channel)->parasites));
+ parasites = gimp_item_get_parasites (GIMP_ITEM (channel));
+
+ if (gimp_parasite_list_length (parasites) > 0)
+ {
+ xcf_check_error (xcf_save_prop (info, image, PROP_PARASITES, error,
+ parasites));
+ }
xcf_check_error (xcf_save_prop (info, image, PROP_END, error));
@@ -1798,12 +1806,11 @@ xcf_save_vectors (XcfInfo *info,
* then each stroke
*/
- parasites = GIMP_ITEM (vectors)->parasites;
-
name = gimp_object_get_name (vectors);
visible = gimp_item_get_visible (GIMP_ITEM (vectors));
linked = gimp_item_get_linked (GIMP_ITEM (vectors));
tattoo = gimp_item_get_tattoo (GIMP_ITEM (vectors));
+ parasites = gimp_item_get_parasites (GIMP_ITEM (vectors));
num_parasites = gimp_parasite_list_persistent_length (parasites);
num_strokes = g_list_length (vectors->strokes);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]