[gimp] Use the new item iter API instead of the image APIs in some straightforward places
- From: Michael Natterer <mitch src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gimp] Use the new item iter API instead of the image APIs in some straightforward places
- Date: Sat, 1 Aug 2009 21:08:47 +0000 (UTC)
commit 01c77b18d5f23262886fc6e9a5bf1f46e16f0195
Author: Michael Natterer <mitch gimp org>
Date: Sat Aug 1 23:07:07 2009 +0200
Use the new item iter API instead of the image APIs in some straightforward places
app/core/gimpimage.c | 63 +++++++++++++++++++++--------------
app/display/gimpdisplayshell-draw.c | 9 +++--
app/tools/gimpdrawtool.c | 11 ++++--
app/widgets/gimplayertreeview.c | 9 +++--
4 files changed, 58 insertions(+), 34 deletions(-)
---
diff --git a/app/core/gimpimage.c b/app/core/gimpimage.c
index 717f78a..841732e 100644
--- a/app/core/gimpimage.c
+++ b/app/core/gimpimage.c
@@ -1067,30 +1067,31 @@ static void
gimp_image_size_changed (GimpViewable *viewable)
{
GimpImage *image = GIMP_IMAGE (viewable);
+ GList *all_items;
GList *list;
if (GIMP_VIEWABLE_CLASS (parent_class)->size_changed)
GIMP_VIEWABLE_CLASS (parent_class)->size_changed (viewable);
- gimp_container_foreach (image->layers,
- (GFunc) gimp_viewable_size_changed,
- NULL);
- gimp_container_foreach (image->channels,
- (GFunc) gimp_viewable_size_changed,
- NULL);
- gimp_container_foreach (image->vectors,
- (GFunc) gimp_viewable_size_changed,
- NULL);
-
- for (list = gimp_image_get_layer_iter (image);
- list;
- list = g_list_next (list))
+ all_items = gimp_image_get_layer_list (image);
+ for (list = all_items; list; list = g_list_next (list))
{
GimpLayerMask *mask = gimp_layer_get_mask (GIMP_LAYER (list->data));
+ gimp_viewable_size_changed (GIMP_VIEWABLE (list->data));
+
if (mask)
gimp_viewable_size_changed (GIMP_VIEWABLE (mask));
}
+ g_list_free (all_items);
+
+ all_items = gimp_image_get_channel_list (image);
+ g_list_foreach (all_items, (GFunc) gimp_viewable_size_changed, NULL);
+ g_list_free (all_items);
+
+ all_items = gimp_image_get_vectors_list (image);
+ g_list_foreach (all_items, (GFunc) gimp_viewable_size_changed, NULL);
+ g_list_free (all_items);
gimp_viewable_size_changed (GIMP_VIEWABLE (gimp_image_get_mask (image)));
@@ -2542,6 +2543,7 @@ gboolean
gimp_image_set_tattoo_state (GimpImage *image,
GimpTattoo val)
{
+ GList *all_items;
GList *list;
gboolean retval = TRUE;
GimpTattoo maxval = 0;
@@ -2549,9 +2551,9 @@ gimp_image_set_tattoo_state (GimpImage *image,
g_return_val_if_fail (GIMP_IS_IMAGE (image), FALSE);
/* Check that the layer tattoos don't overlap with channel or vector ones */
- for (list = gimp_image_get_layer_iter (image);
- list;
- list = g_list_next (list))
+ all_items = gimp_image_get_layer_list (image);
+
+ for (list = all_items; list; list = g_list_next (list))
{
GimpTattoo ltattoo;
@@ -2566,10 +2568,12 @@ gimp_image_set_tattoo_state (GimpImage *image,
retval = FALSE; /* Oopps duplicated tattoo in vectors */
}
+ g_list_free (all_items);
+
/* Now check that the channel and vectors tattoos don't overlap */
- for (list = gimp_image_get_channel_iter (image);
- list;
- list = g_list_next (list))
+ all_items = gimp_image_get_channel_list (image);
+
+ for (list = all_items; list; list = g_list_next (list))
{
GimpTattoo ctattoo;
@@ -2581,10 +2585,12 @@ gimp_image_set_tattoo_state (GimpImage *image,
retval = FALSE; /* Oopps duplicated tattoo in vectors */
}
+ g_list_free (all_items);
+
/* Find the max tattoo value in the vectors */
- for (list = gimp_image_get_vectors_iter (image);
- list;
- list = g_list_next (list))
+ all_items = gimp_image_get_vectors_list (image);
+
+ for (list = all_items; list; list = g_list_next (list))
{
GimpTattoo vtattoo;
@@ -2593,6 +2599,8 @@ gimp_image_set_tattoo_state (GimpImage *image,
maxval = vtattoo;
}
+ g_list_free (all_items);
+
if (val < maxval)
retval = FALSE;
@@ -3818,13 +3826,14 @@ gimp_image_pick_correlate_layer (const GimpImage *image,
gint x,
gint y)
{
+ GList *all_layers;
GList *list;
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
- for (list = gimp_image_get_layer_iter (image);
- list;
- list = g_list_next (list))
+ all_layers = gimp_image_get_layer_list (image);
+
+ for (list = all_layers; list; list = g_list_next (list))
{
GimpLayer *layer = list->data;
gint off_x, off_y;
@@ -3834,10 +3843,14 @@ gimp_image_pick_correlate_layer (const GimpImage *image,
if (gimp_pickable_get_opacity_at (GIMP_PICKABLE (layer),
x - off_x, y - off_y) > 63)
{
+ g_list_free (all_layers);
+
return layer;
}
}
+ g_list_free (all_layers);
+
return NULL;
}
diff --git a/app/display/gimpdisplayshell-draw.c b/app/display/gimpdisplayshell-draw.c
index 5c95aa0..a80eb00 100644
--- a/app/display/gimpdisplayshell-draw.c
+++ b/app/display/gimpdisplayshell-draw.c
@@ -534,17 +534,20 @@ gimp_display_shell_draw_vectors (const GimpDisplayShell *shell)
if (shell->display->image &&
TRUE /* gimp_display_shell_get_show_vectors (shell) */)
{
+ GList *all_vectors;
GList *list;
- for (list = gimp_image_get_vectors_iter (shell->display->image);
- list;
- list = list->next)
+ all_vectors = gimp_image_get_vectors_list (shell->display->image);
+
+ for (list = all_vectors; list; list = list->next)
{
GimpVectors *vectors = list->data;
if (gimp_item_get_visible (GIMP_ITEM (vectors)))
gimp_display_shell_draw_vector (shell, vectors);
}
+
+ g_list_free (all_vectors);
}
}
diff --git a/app/tools/gimpdrawtool.c b/app/tools/gimpdrawtool.c
index b7427a7..00133a8 100644
--- a/app/tools/gimpdrawtool.c
+++ b/app/tools/gimpdrawtool.c
@@ -1799,6 +1799,7 @@ gimp_draw_tool_on_vectors (GimpDrawTool *draw_tool,
GimpStroke **ret_stroke,
GimpVectors **ret_vectors)
{
+ GList *all_vectors;
GList *list;
if (ret_coords) *ret_coords = *coords;
@@ -1808,9 +1809,9 @@ gimp_draw_tool_on_vectors (GimpDrawTool *draw_tool,
if (ret_stroke) *ret_stroke = NULL;
if (ret_vectors) *ret_vectors = NULL;
- for (list = gimp_image_get_vectors_iter (display->image);
- list;
- list = g_list_next (list))
+ all_vectors = gimp_image_get_vectors_list (display->image);
+
+ for (list = all_vectors; list; list = g_list_next (list))
{
GimpVectors *vectors = list->data;
@@ -1830,10 +1831,14 @@ gimp_draw_tool_on_vectors (GimpDrawTool *draw_tool,
if (ret_vectors)
*ret_vectors = vectors;
+ g_list_free (all_vectors);
+
return TRUE;
}
}
+ g_list_free (all_vectors);
+
return FALSE;
}
diff --git a/app/widgets/gimplayertreeview.c b/app/widgets/gimplayertreeview.c
index e413c4b..3fccc65 100644
--- a/app/widgets/gimplayertreeview.c
+++ b/app/widgets/gimplayertreeview.c
@@ -902,11 +902,12 @@ gimp_layer_tree_view_floating_selection_changed (GimpImage *image,
}
else
{
+ GList *all_layers;
GList *list;
- for (list = gimp_image_get_layer_iter (image);
- list;
- list = g_list_next (list))
+ all_layers = gimp_image_get_layer_list (image);
+
+ for (list = all_layers; list; list = g_list_next (list))
{
GimpDrawable *drawable = list->data;
@@ -919,6 +920,8 @@ gimp_layer_tree_view_floating_selection_changed (GimpImage *image,
NULL : layer_view->priv->bold_attrs,
-1);
}
+
+ g_list_free (all_layers);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]