Generate valid names for aux channels that do not have names defined.

2005-08-08  Manish Singh  <yosh@gimp.org>

        * plug-ins/common/psd.c: Generate valid names for aux channels that
        do not have names defined. Fixes bug #312963.
This commit is contained in:
Manish Singh 2005-08-09 05:26:57 +00:00 committed by Manish Singh
parent cd63b6b75c
commit 509b65a559
2 changed files with 30 additions and 4 deletions

View File

@ -1,3 +1,8 @@
2005-08-08 Manish Singh <yosh@gimp.org>
* plug-ins/common/psd.c: Generate valid names for aux channels that
do not have names defined. Fixes bug #312963.
2005-08-09 Sven Neumann <sven@gimp.org>
* app/core/gimplayer.c (gimp_layer_transform_color): take image

View File

@ -398,6 +398,7 @@ static gchar* getstring(size_t n, FILE * fd, gchar *why);
static void throwchunk(size_t n, FILE * fd, gchar *why);
static void dumpchunk(size_t n, FILE * fd, gchar *why);
static void seek_to_and_unpack_pixeldata(FILE* fd, gint layeri, gint channeli);
static void validate_aux_channel_name(gint aux_index);
MAIN ()
@ -1604,6 +1605,19 @@ gboolean psd_layer_has_alpha(PSDlayer* layer)
return FALSE;
}
static
void validate_aux_channel_name(gint aux_index)
{
if (psd_image.aux_channel[aux_index].name == NULL)
{
if (aux_index == 0)
psd_image.aux_channel[aux_index].name = g_strdup ("Aux channel");
else
psd_image.aux_channel[aux_index].name =
g_strdup_printf ("Aux channel #%d", aux_index);
}
}
static
void extract_data_and_channels(guchar* src, gint gimpstep, gint psstep,
gint32 image_ID, GimpDrawable* drawable,
@ -1647,7 +1661,7 @@ void extract_data_and_channels(guchar* src, gint gimpstep, gint psstep,
aux_data = g_malloc (width * height);
{
int pix, chan;
int pix, chan, aux_index;
gint32 channel_ID;
GimpDrawable* chdrawable;
GimpRGB colour;
@ -1660,8 +1674,12 @@ void extract_data_and_channels(guchar* src, gint gimpstep, gint psstep,
{
aux_data [pix] = src [pix * psstep + chan];
}
aux_index = chan - gimpstep;
validate_aux_channel_name (aux_index);
channel_ID = gimp_channel_new (image_ID,
psd_image.aux_channel[chan-gimpstep].name,
psd_image.aux_channel[aux_index].name,
width, height,
100.0, &colour);
gimp_image_add_channel (image_ID, channel_ID, 0);
@ -1703,7 +1721,7 @@ extract_channels(guchar* src, gint num_wanted, gint psstep,
aux_data = g_malloc(width * height);
{
int pix, chan;
int pix, chan, aux_index;
gint32 channel_ID;
GimpDrawable* chdrawable;
GimpRGB colour;
@ -1717,8 +1735,11 @@ extract_channels(guchar* src, gint num_wanted, gint psstep,
aux_data [pix] = src [pix * psstep + chan];
}
aux_index = chan - (psstep - num_wanted);
validate_aux_channel_name (aux_index);
channel_ID = gimp_channel_new (image_ID,
psd_image.aux_channel[chan-(psstep-num_wanted)].name,
psd_image.aux_channel[aux_index].name,
width, height,
100.0, &colour);
gimp_image_add_channel (image_ID, channel_ID, 0);