mirror of https://github.com/GNOME/gimp.git
Add functions for getting lists of all an image's items
* app/core/gimpitemstack.[ch]: add gimp_item_stack_get_item_list() which returns a GList of all the stack's items, in depth-first order if the stack is in fact a tree. * app/core/gimpimage.[ch]: add gimp_image_get_layer_list(), channel_list(), vectors_list() which use above new function.
This commit is contained in:
parent
2f018dfcc2
commit
571d26a198
|
@ -2665,6 +2665,30 @@ gimp_image_get_vectors_iter (const GimpImage *image)
|
|||
return GIMP_LIST (image->vectors)->list;
|
||||
}
|
||||
|
||||
GList *
|
||||
gimp_image_get_layer_list (const GimpImage *image)
|
||||
{
|
||||
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
||||
|
||||
return gimp_item_stack_get_item_list (GIMP_ITEM_STACK (image->layers));
|
||||
}
|
||||
|
||||
GList *
|
||||
gimp_image_get_channel_list (const GimpImage *image)
|
||||
{
|
||||
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
||||
|
||||
return gimp_item_stack_get_item_list (GIMP_ITEM_STACK (image->channels));
|
||||
}
|
||||
|
||||
GList *
|
||||
gimp_image_get_vectors_list (const GimpImage *image)
|
||||
{
|
||||
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
||||
|
||||
return gimp_item_stack_get_item_list (GIMP_ITEM_STACK (image->vectors));
|
||||
}
|
||||
|
||||
GimpDrawable *
|
||||
gimp_image_get_active_drawable (const GimpImage *image)
|
||||
{
|
||||
|
|
|
@ -425,6 +425,10 @@ GList * gimp_image_get_layer_iter (const GimpImage *image);
|
|||
GList * gimp_image_get_channel_iter (const GimpImage *image);
|
||||
GList * gimp_image_get_vectors_iter (const GimpImage *image);
|
||||
|
||||
GList * gimp_image_get_layer_list (const GimpImage *image);
|
||||
GList * gimp_image_get_channel_list (const GimpImage *image);
|
||||
GList * gimp_image_get_vectors_list (const GimpImage *image);
|
||||
|
||||
GimpDrawable * gimp_image_get_active_drawable (const GimpImage *image);
|
||||
GimpLayer * gimp_image_get_active_layer (const GimpImage *image);
|
||||
GimpChannel * gimp_image_get_active_channel (const GimpImage *image);
|
||||
|
|
|
@ -114,6 +114,43 @@ gimp_item_stack_new (GType item_type)
|
|||
NULL);
|
||||
}
|
||||
|
||||
GList *
|
||||
gimp_item_stack_get_item_list (GimpItemStack *stack)
|
||||
{
|
||||
GList *list;
|
||||
GList *result = NULL;
|
||||
|
||||
g_return_val_if_fail (GIMP_IS_ITEM_STACK (stack), NULL);
|
||||
|
||||
for (list = GIMP_LIST (stack)->list;
|
||||
list;
|
||||
list = g_list_next (list))
|
||||
{
|
||||
GimpViewable *viewable = list->data;
|
||||
GimpContainer *children;
|
||||
|
||||
result = g_list_prepend (result, viewable);
|
||||
|
||||
children = gimp_viewable_get_children (viewable);
|
||||
|
||||
if (children)
|
||||
{
|
||||
GList *child_list;
|
||||
|
||||
child_list = gimp_item_stack_get_item_list (GIMP_ITEM_STACK (children));
|
||||
|
||||
while (child_list)
|
||||
{
|
||||
result = g_list_prepend (result, child_list->data);
|
||||
|
||||
child_list = g_list_remove (child_list, child_list->data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return g_list_reverse (result);
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_item_stack_invalidate_preview (GimpViewable *viewable)
|
||||
{
|
||||
|
|
|
@ -47,6 +47,8 @@ struct _GimpItemStackClass
|
|||
GType gimp_item_stack_get_type (void) G_GNUC_CONST;
|
||||
GimpContainer * gimp_item_stack_new (GType item_type);
|
||||
|
||||
GList * gimp_item_stack_get_item_list (GimpItemStack *stack);
|
||||
|
||||
void gimp_item_stack_invalidate_previews (GimpItemStack *stack);
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue