Commit c5a8b438 authored by jaycox's avatar jaycox

Modified Files: ChangeLog app/Makefile.am app/channel.c app/channel.h


 Modified Files:
 	ChangeLog app/Makefile.am app/channel.c app/channel.h
 	app/channel_cmds.c app/channel_cmds.h app/drawable_cmds.c
 	app/gimage_cmds.c app/gimpdrawable.c app/gimpdrawable.h
 	app/gimpdrawableP.h app/gimpimage.c app/gimpimage.h
 	app/gimpimageP.h app/internal_procs.c app/layer.c app/layer.h
 	app/layer_cmds.c app/layer_cmds.h app/parasite_cmds.c
 	app/perspective_tool.c app/plug_in.c app/procedural_db.c
 	app/rotate_tool.c app/scale_tool.c app/shear_tool.c
 	app/transform_core.c app/transform_core.h docs/parasites.txt
 	libgimp/Makefile.am libgimp/gimp.c libgimp/gimp.h
 	libgimp/gimpdrawable.c libgimp/gimpimage.c
 	libgimp/gimpprotocol.c libgimp/gimpprotocol.h
 	plug-ins/gif/gif.c plug-ins/script-fu/script-fu.c
 	plug-ins/tiff/tiff.c
 Added Files:
 	libgimp/gimpmatrix.c libgimp/gimpmatrix.h libgimp/parasite.c
 	libgimp/parasite.h libgimp/parasiteF.h libgimp/parasiteP.h
 Removed Files:
 	app/parasite.c app/parasite.h app/parasiteF.h app/parasiteP.h
 	libgimp/gimpparasite.c libgimp/gimpparasite.h

Tue Oct 13 19:24:03 1998  Jay Cox  (jaycox@earthlink.net)

        * app/parasite.c
        * app/parasite.h
        * app/parasiteF.h
        * app/parasiteP.h : use a single name field instead of seperate
        creator/type fields.  moved to libgimp/parasite*

        * libgimp/Makefile.am
        * libgimp/gimp.c
        * libgimp/gimp.h
        * libgimp/gimpdrawable.c
        * libgimp/gimpimage.c
        * libgimp/gimpprotocol.c
        * libgimp/gimpprotocol.h
        * app/Makefile.am
        * app/channel.c
        * app/channel.h
        * app/channel_cmds.c
        * app/channel_cmds.h
        * app/drawable_cmds.c
        * app/gimage_cmds.c
        * app/gimpdrawable.c
        * app/gimpdrawable.h
        * app/gimpdrawableP.h
        * app/gimpimage.c
        * app/gimpimage.h
        * app/gimpimageP.h
        * app/internal_procs.c
        * app/layer.c
        * app/layer.h
        * app/layer_cmds.c
        * app/layer_cmds.h
        * app/parasite_cmds.c
        * app/plug_in.c
        * app/procedural_db.c: Add tattoos to layers and drawables.
        Use new style parasites.

        * libgimp/gimpmatrix.c
        * libgimp/gimpmatrix.h: new files for matrix math.

        * app/perspective_tool.c
        * app/rotate_tool.c
        * app/scale_tool.c
        * app/shear_tool.c
        * app/transform_core.c
        * app/transform_core.h: use GimpMatrix instead of the old matrix
        code from transform_core.

        * ligimp/gimpparasite*: removed.  now useing the same source
        for plug-ins and the core.

        * plug-ins/script-fu/script-fu.c
        * plug-ins/tiff/tiff.c
        * plug-ins/gif/gif.c: updated to use new style parasites.
parent 825fdecf
Tue Oct 13 19:24:03 1998 Jay Cox (jaycox@earthlink.net)
* app/parasite.c
* app/parasite.h
* app/parasiteF.h
* app/parasiteP.h : use a single name field instead of seperate
creator/type fields. moved to libgimp/parasite*
* libgimp/Makefile.am
* libgimp/gimp.c
* libgimp/gimp.h
* libgimp/gimpdrawable.c
* libgimp/gimpimage.c
* libgimp/gimpprotocol.c
* libgimp/gimpprotocol.h
* app/Makefile.am
* app/channel.c
* app/channel.h
* app/channel_cmds.c
* app/channel_cmds.h
* app/drawable_cmds.c
* app/gimage_cmds.c
* app/gimpdrawable.c
* app/gimpdrawable.h
* app/gimpdrawableP.h
* app/gimpimage.c
* app/gimpimage.h
* app/gimpimageP.h
* app/internal_procs.c
* app/layer.c
* app/layer.h
* app/layer_cmds.c
* app/layer_cmds.h
* app/parasite_cmds.c
* app/plug_in.c
* app/procedural_db.c: Add tattoos to layers and drawables.
Use new style parasites.
* libgimp/gimpmatrix.c
* libgimp/gimpmatrix.h: new files for matrix math.
* app/perspective_tool.c
* app/rotate_tool.c
* app/scale_tool.c
* app/shear_tool.c
* app/transform_core.c
* app/transform_core.h: use GimpMatrix instead of the old matrix
code from transform_core.
* ligimp/gimpparasite*: removed. now useing the same source
for plug-ins and the core.
* plug-ins/script-fu/script-fu.c
* plug-ins/tiff/tiff.c
* plug-ins/gif/gif.c: updated to use new style parasites.
Tue Oct 13 22:01:41 BST 1998 Andy Thomas <alt@picnic.demon.co.uk>
app/brush_select.[ch] Fixed problem with resizing the brush popup
......
......@@ -227,10 +227,6 @@ gimp_SOURCES = \
paint_funcs.h \
paintbrush.c \
paintbrush.h \
parasite.c \
parasite.h \
parasiteP.h \
parasiteF.h \
parasite_cmds.c \
parasite_cmds.h \
pattern_header.h \
......
......@@ -28,8 +28,8 @@
#include <sys/stat.h>
#include <time.h>
#include <unistd.h>
#include "parasite.h"
#include "parasiteP.h" /* ick */
#include "libgimp/parasite.h"
#include "libgimp/parasiteP.h" /* ick */
#ifdef HAVE_IPC_H
#include <sys/ipc.h>
......@@ -2798,6 +2798,8 @@ plug_in_args_to_params (Argument *args,
tmp = parasite_copy (args[i].value.pdb_pointer);
if (tmp == NULL)
{
params[i].data.d_parasite.name = 0;
params[i].data.d_parasite.flags = 0;
params[i].data.d_parasite.size = 0;
params[i].data.d_parasite.data = 0;
}
......@@ -2811,6 +2813,8 @@ plug_in_args_to_params (Argument *args,
{
if (args[i].value.pdb_pointer == NULL)
{
params[i].data.d_parasite.name = 0;
params[i].data.d_parasite.flags = 0;
params[i].data.d_parasite.size = 0;
params[i].data.d_parasite.data = 0;
}
......@@ -2893,7 +2897,9 @@ plug_in_params_destroy (GPParam *params,
if (full_destroy)
if (params[i].data.d_parasite.data)
{
g_free (params[i].data.d_parasite.name);
g_free (params[i].data.d_parasite.data);
params[i].data.d_parasite.name = 0;
params[i].data.d_parasite.data = 0;
}
break;
......@@ -2976,7 +2982,7 @@ plug_in_args_destroy (Argument *args,
if (full_destroy)
{
/* parasite_free ((Parasite *)(args[i].value.pdb_pointer));
args[i].value.pdb_pointer = NULL; */
args[i].value.pdb_pointer = NULL;*/
}
break;
case PDB_STATUS:
......
......@@ -27,7 +27,7 @@
#include "gimage_mask.h"
#include "layer.h"
#include "paint_funcs.h"
#include "parasite.h"
#include "libgimp/parasite.h"
#include "temp_buf.h"
#include "undo.h"
......@@ -475,6 +475,12 @@ channel_invalidate_previews (GimpImage* gimage)
}
}
guint32
channel_get_tattoo(const Channel *channel)
{
return (gimp_drawable_get_tattoo(GIMP_DRAWABLE(channel)));
}
/****************************/
/* selection mask functions */
......
......@@ -95,6 +95,8 @@ int channel_toggle_visibility (Channel *);
TempBuf * channel_preview (Channel *, int, int);
void channel_invalidate_previews (GimpImage*);
guint32 channel_get_tattoo(const Channel *);
/* selection mask functions */
......
......@@ -937,3 +937,72 @@ ProcRecord channel_set_color_proc =
/* Exec method */
{ { channel_set_color_invoker } },
};
/***************************/
/* CHANNEL_GET_TATTOO_PROC */
static Argument *
channel_get_tattoo_invoker (Argument *args)
{
Channel *channel;
int tattoo;
Argument *return_args;
tattoo = 0;
success = TRUE;
if (success)
{
int_value = args[0].value.pdb_int;
if ((channel = channel_get_ID (int_value)))
tattoo = channel_get_tattoo (channel);
else
success = FALSE;
}
return_args = procedural_db_return_args (&channel_get_tattoo_proc, success);
if (success)
return_args[1].value.pdb_int = tattoo;
return return_args;
}
/* The procedure definition */
ProcArg channel_get_tattoo_args[] =
{
{ PDB_CHANNEL,
"channel",
"the channel"
}
};
ProcArg channel_get_tattoo_out_args[] =
{
{ PDB_INT32,
"tattoo",
"the tattoo associated with the given channel"
}
};
ProcRecord channel_get_tattoo_proc =
{
"gimp_channel_get_tattoo",
"Returns the tattoo associated with the specified channel.",
"This procedure returns the tattoo associated with the specified channel. A tattoo is a unique and permenant identifier attached to a channel that can be used to uniquely identify a channel within an image even between sessions",
"Jay Cox",
"Jay Cox",
"1998",
PDB_INTERNAL,
/* Input arguments */
1,
channel_get_tattoo_args,
/* Output arguments */
1,
channel_get_tattoo_out_args,
/* Exec method */
{ { channel_get_tattoo_invoker } },
};
......@@ -33,5 +33,6 @@ extern ProcRecord channel_get_opacity_proc;
extern ProcRecord channel_set_opacity_proc;
extern ProcRecord channel_get_color_proc;
extern ProcRecord channel_set_color_proc;
extern ProcRecord channel_get_tattoo_proc;
#endif /* __CHANNEL_CMDS_H__ */
......@@ -27,7 +27,7 @@
#include "gimage_mask.h"
#include "layer.h"
#include "paint_funcs.h"
#include "parasite.h"
#include "libgimp/parasite.h"
#include "temp_buf.h"
#include "undo.h"
......@@ -475,6 +475,12 @@ channel_invalidate_previews (GimpImage* gimage)
}
}
guint32
channel_get_tattoo(const Channel *channel)
{
return (gimp_drawable_get_tattoo(GIMP_DRAWABLE(channel)));
}
/****************************/
/* selection mask functions */
......
......@@ -95,6 +95,8 @@ int channel_toggle_visibility (Channel *);
TempBuf * channel_preview (Channel *, int, int);
void channel_invalidate_previews (GimpImage*);
guint32 channel_get_tattoo(const Channel *);
/* selection mask functions */
......
......@@ -27,7 +27,7 @@
#include "gimage_mask.h"
#include "layer.h"
#include "paint_funcs.h"
#include "parasite.h"
#include "libgimp/parasite.h"
#include "temp_buf.h"
#include "undo.h"
......@@ -475,6 +475,12 @@ channel_invalidate_previews (GimpImage* gimage)
}
}
guint32
channel_get_tattoo(const Channel *channel)
{
return (gimp_drawable_get_tattoo(GIMP_DRAWABLE(channel)));
}
/****************************/
/* selection mask functions */
......
......@@ -95,6 +95,8 @@ int channel_toggle_visibility (Channel *);
TempBuf * channel_preview (Channel *, int, int);
void channel_invalidate_previews (GimpImage*);
guint32 channel_get_tattoo(const Channel *);
/* selection mask functions */
......
......@@ -24,7 +24,7 @@
#include "gimpsignal.h"
#include "gimage.h"
#include "gimage_mask.h"
#include "parasite.h"
#include "libgimp/parasite.h"
enum {
......@@ -255,6 +255,18 @@ gimp_drawable_gimage (GimpDrawable *drawable)
}
void
gimp_drawable_set_gimage (GimpDrawable *drawable, GimpImage *gimage)
{
g_assert(GIMP_IS_DRAWABLE(drawable));
drawable->gimage = gimage;
if (gimage == NULL)
drawable->tattoo = 0;
else
drawable->tattoo = gimp_image_get_new_tattoo(gimage);
}
int
gimp_drawable_type (GimpDrawable *drawable)
{
......@@ -361,10 +373,9 @@ gimp_drawable_set_name (GimpDrawable *drawable, char *name)
Parasite *
gimp_drawable_find_parasite (const GimpDrawable *drawable,
const char *creator, const char *type)
gimp_drawable_find_parasite (const GimpDrawable *drawable, const char *name)
{
return parasite_find_in_gslist(drawable->parasites, creator, type);
return parasite_find_in_gslist(drawable->parasites, name);
}
void
......@@ -374,12 +385,19 @@ gimp_drawable_attach_parasite (GimpDrawable *drawable, const Parasite *parasite)
}
void
gimp_drawable_detach_parasite (GimpDrawable *drawable, Parasite *parasite)
gimp_drawable_detach_parasite (GimpDrawable *drawable, const char *parasite)
{
drawable->parasites = g_slist_remove (drawable->parasites, parasite);
parasite_free(parasite);
Parasite *p;
if ((p = parasite_find_in_gslist(drawable->parasites, parasite)))
drawable->parasites = g_slist_remove (drawable->parasites, p);
parasite_free(p);
}
guint32
gimp_drawable_get_tattoo(const GimpDrawable *drawable)
{
return drawable->tattoo;
}
int
gimp_drawable_type_with_alpha (GimpDrawable *drawable)
......@@ -539,6 +557,8 @@ gimp_drawable_init (GimpDrawable *drawable)
drawable->preview = NULL;
drawable->preview_valid = FALSE;
drawable->parasites = FALSE;
drawable->tattoo = 0;
gimp_matrix_identity(drawable->transform);
drawable->ID = global_drawable_ID++;
if (gimp_drawable_table == NULL)
......@@ -619,7 +639,8 @@ gimp_drawable_configure (GimpDrawable *drawable,
drawable->dirty = FALSE;
drawable->visible = TRUE;
drawable->gimage = gimage;
if (gimage)
gimp_drawable_set_gimage(drawable, gimage);
gimp_drawable_set_name(drawable, name);
......
......@@ -23,7 +23,7 @@
#include "tile_manager.h"
#include "temp_buf.h"
#include "gimpimageF.h"
#include "parasiteF.h"
#include <libgimp/parasiteF.h>
#define GIMP_TYPE_DRAWABLE (gimp_drawable_get_type ())
#define GIMP_DRAWABLE(obj) (GTK_CHECK_CAST ((obj), GIMP_TYPE_DRAWABLE, GimpDrawable))
......@@ -74,14 +74,16 @@ char * gimp_drawable_get_name (GimpDrawable *);
void gimp_drawable_set_name (GimpDrawable *, char *);
Parasite * gimp_drawable_find_parasite (const GimpDrawable *,
const char *creator,
const char *type);
const char *name);
void gimp_drawable_attach_parasite (GimpDrawable *, const Parasite *);
void gimp_drawable_detach_parasite (GimpDrawable *, Parasite *);
void gimp_drawable_detach_parasite (GimpDrawable *,
const char *);
guint32 gimp_drawable_get_tattoo (const GimpDrawable *);
GimpDrawable * gimp_drawable_get_ID (int);
void gimp_drawable_deallocate (GimpDrawable *);
GimpImage * gimp_drawable_gimage (GimpDrawable*);
void gimp_drawable_set_gimage (GimpDrawable*, GimpImage *);
#endif /* __GIMPDRAWABLE_H__ */
......
......@@ -25,7 +25,7 @@
#include "gimage_mask.h"
#include "paint_funcs.h"
#include "palette.h"
#include "parasite.h"
#include "libgimp/parasite.h"
#include "undo.h"
#include "gimpsignal.h"
......@@ -137,6 +137,7 @@ static void gimp_image_init (GimpImage *gimage)
gimage->dirty = 1;
gimage->undo_on = TRUE;
gimage->construct_flag = -1;
gimage->tattoo_state = 0;
gimage->projection = NULL;
gimage->guides = NULL;
gimage->layers = NULL;
......@@ -152,6 +153,7 @@ static void gimp_image_init (GimpImage *gimage)
gimage->comp_preview_valid[2] = FALSE;
gimage->comp_preview = NULL;
gimage->parasites = NULL;
gimp_matrix_identity(gimage->transform);
gimage->resolution = 72.0; /* maybe should be rc-supplied default? */
}
......@@ -860,10 +862,9 @@ gimp_image_delete_guide (GimpImage *gimage,
Parasite *
gimp_image_find_parasite (const GimpImage *gimage,
const char *creator, const char *type)
gimp_image_find_parasite (const GimpImage *gimage, const char *name)
{
return parasite_find_in_gslist(gimage->parasites, creator, type);
return parasite_find_in_gslist(gimage->parasites, name);
}
void
......@@ -873,12 +874,21 @@ gimp_image_attach_parasite (GimpImage *gimage, const Parasite *parasite)
}
void
gimp_image_detach_parasite (GimpImage *gimage, Parasite *parasite)
gimp_image_detach_parasite (GimpImage *gimage, const char *parasite)
{
gimage->parasites = g_slist_remove (gimage->parasites, parasite);
parasite_free(parasite);
Parasite *p;
if ((p = parasite_find_in_gslist(gimage->parasites, parasite)))
gimage->parasites = g_slist_remove (gimage->parasites, p);
parasite_free(p);
}
guint32
gimp_image_get_new_tattoo(GimpImage *image)
{
return (++image->tattoo_state);
}
/************************************************************/
/* Projection functions */
/************************************************************/
......@@ -1395,6 +1405,41 @@ gimp_image_get_active_channel (GimpImage *gimage)
}
Layer *
gimp_image_get_layer_by_tattoo (GimpImage *gimage, guint32 tattoo)
{
Layer *layer;
GSList *layers = gimage->layers;
while (layers)
{
layer = (Layer *) layers->data;
if (layer_get_tattoo(layer) == tattoo)
return layer;
layers = g_slist_next (layers);
}
return NULL;
}
Channel *
gimp_image_get_channel_by_tattoo (GimpImage *gimage, guint32 tattoo)
{
Channel *channel;
GSList *channels = gimage->channels;
while (channels)
{
channel = (Channel *) channels->data;
if (channel_get_tattoo(channel) == tattoo)
return channel;
channels = g_slist_next (channels);
}
return NULL;
}
int
gimp_image_get_component_active (GimpImage *gimage, ChannelType type)
{
......@@ -2119,8 +2164,8 @@ gimp_image_add_layer (GimpImage *gimage, Layer *float_layer, int position)
gimage->floating_sel = float_layer;
/* let the layer know about the gimage */
GIMP_DRAWABLE(float_layer)->gimage = gimage;
gimp_drawable_set_gimage(GIMP_DRAWABLE(float_layer), gimage);
/* add the layer to the list at the specified position */
if (position == -1)
position = gimp_image_get_layer_index (gimage, gimage->active_layer);
......
......@@ -8,7 +8,7 @@
#include "drawable.h"
#include "channel.h"
#include "layer.h"
#include "parasiteF.h"
#include <libgimp/parasiteF.h>
#include "temp_buf.h"
#include "tile_manager.h"
......@@ -128,10 +128,12 @@ void gimp_image_remove_guide (GimpImage *, Guide *);
void gimp_image_delete_guide (GimpImage *, Guide *);
Parasite * gimp_image_find_parasite (const GimpImage *,
const char *creator,
const char *type);
const char *name);
void gimp_image_attach_parasite (GimpImage *, const Parasite *);
void gimp_image_detach_parasite (GimpImage *, Parasite *);
void gimp_image_detach_parasite (GimpImage *, const char *);
guint32 gimp_image_get_new_tattoo (GimpImage *);
/* layer/channel functions */
......@@ -139,6 +141,8 @@ int gimp_image_get_layer_index (GimpImage *, Layer *);
int gimp_image_get_channel_index (GimpImage *, Channel *);
Layer * gimp_image_get_active_layer (GimpImage *);
Channel * gimp_image_get_active_channel (GimpImage *);
Layer * gimp_image_get_layer_by_tattoo (GimpImage *, guint32);
Channel * gimp_image_get_channel_by_tattoo (GimpImage *, guint32);
Channel * gimp_image_get_mask (GimpImage *);
int gimp_image_get_component_active (GimpImage *, ChannelType);
int gimp_image_get_component_visible (GimpImage *, ChannelType);
......@@ -170,7 +174,6 @@ void gimp_image_construct (GimpImage *, int, int, int, i
void gimp_image_invalidate (GimpImage *, int, int, int, int, int, int, int, int);
void gimp_image_validate (TileManager *, Tile *);
/* Access functions */
int gimp_image_is_empty (GimpImage *);
......
......@@ -25,7 +25,7 @@
#include "gimage_mask.h"
#include "paint_funcs.h"
#include "palette.h"
#include "parasite.h"
#include "libgimp/parasite.h"
#include "undo.h"
#include "gimpsignal.h"
......@@ -137,6 +137,7 @@ static void gimp_image_init (GimpImage *gimage)
gimage->dirty = 1;
gimage->undo_on = TRUE;
gimage->construct_flag = -1;
gimage->tattoo_state = 0;
gimage->projection = NULL;
gimage->guides = NULL;
gimage->layers = NULL;
......@@ -152,6 +153,7 @@ static void gimp_image_init (GimpImage *gimage)
gimage->comp_preview_valid[2] = FALSE;
gimage->comp_preview = NULL;
gimage->parasites = NULL;
gimp_matrix_identity(gimage->transform);
gimage->resolution = 72.0; /* maybe should be rc-supplied default? */
}
......@@ -860,10 +862,9 @@ gimp_image_delete_guide (GimpImage *gimage,
Parasite *
gimp_image_find_parasite (const GimpImage *gimage,
const char *creator, const char *type)
gimp_image_find_parasite (const GimpImage *gimage, const char *name)
{
return parasite_find_in_gslist(gimage->parasites, creator, type);
return parasite_find_in_gslist(gimage->parasites, name);
}
void
......@@ -873,12 +874,21 @@ gimp_image_attach_parasite (GimpImage *gimage, const Parasite *parasite)
}
void
gimp_image_detach_parasite (GimpImage *gimage, Parasite *parasite)
gimp_image_detach_parasite (GimpImage *gimage, const char *parasite)
{
gimage->parasites = g_slist_remove (gimage->parasites, parasite);
parasite_free(parasite);
Parasite *p;
if ((p = parasite_find_in_gslist(gimage->parasites, parasite)))
gimage->parasites = g_slist_remove (gimage->parasites, p);
parasite_free(p);
}
guint32
gimp_image_get_new_tattoo(GimpImage *image)
{
return (++image->tattoo_state);
}
/************************************************************/
/* Projection functions */
/************************************************************/
......@@ -1395,6 +1405,41 @@ gimp_image_get_active_channel (GimpImage *gimage)
}
Layer *
gimp_image_get_layer_by_tattoo (GimpImage *gimage, guint32 tattoo)
{
Layer *layer;
GSList *layers = gimage->layers;
while (layers)
{
layer = (Layer *) layers->data;
if (layer_get_tattoo(layer) == tattoo)
return layer;
layers = g_slist_next (layers);
}
return NULL;
}
Channel *
gimp_image_get_channel_by_tattoo (GimpImage *gimage, guint32 tattoo)
{
Channel *channel;
GSList *channels = gimage->channels;
while (channels)
{
channel = (Channel *) channels->data;
if (channel_get_tattoo(channel) == tattoo)
return channel;
channels = g_slist_next (channels);
}
return NULL;
}
int
gimp_image_get_component_active (GimpImage *gimage, ChannelType type)
{
......@@ -2119,8 +2164,8 @@ gimp_image_add_layer (GimpImage *gimage, Layer *float_layer, int position)
gimage->floating_sel = float_layer;
/* let the layer know about the gimage */
GIMP_DRAWABLE(float_layer)->gimage = gimage;
gimp_drawable_set_gimage(GIMP_DRAWABLE(float_layer), gimage);
/* add the layer to the list at the specified position */
if (position == -1)
position = gimp_image_get_layer_index (gimage, gimage->active_layer);
......
......@@ -8,7 +8,7 @@
#include "drawable.h"
#include "channel.h"
#include "layer.h"
#include "parasiteF.h"
#include <libgimp/parasiteF.h>
#include "temp_buf.h"
#include "tile_manager.h"
......@@ -128,10 +128,12 @@ void gimp_image_remove_guide (GimpImage *, Guide *);
void gimp_image_delete_guide (GimpImage *, Guide *);
Parasite * gimp_image_find_parasite (const GimpImage *,
const char *creator,
const char *type);
const char *name);
void gimp_image_attach_parasite (GimpImage *, const Parasite *);
void gimp_image_detach_parasite (GimpImage *, Parasite *);
void gimp_image_detach_parasite (GimpImage *, const char *);
guint32 gimp_image_get_new_tattoo (GimpImage *);
/* layer/channel functions */
......@@ -139,6 +141,8 @@ int gimp_image_get_layer_index (GimpImage *, Layer *);
int gimp_image_get_channel_index (GimpImage *, Channel *);
Layer * gimp_image_get_active_layer (GimpImage *);
Channel * gimp_image_get_active_channel (GimpImage *);
Layer * gimp_image_get_layer_by_tattoo (GimpImage *, guint32);
Channel * gimp_image_get_channel_by_tattoo (GimpImage *, guint32);
Channel * gimp_image_get_mask (GimpImage *);
int gimp_image_get_component_active (GimpImage *, ChannelType);
int gimp_image_get_component_visible (GimpImage *, ChannelType);
......@@ -170,7 +174,6 @@ void gimp_image_construct (GimpImage *, int, int, int, i