+ offsets=(MagickOffsetType *) NULL;
+ layer_info[i].image->compression=NoCompression;
+ compression=ReadBlobMSBShort(layer_info[i].image);
+ if ((layer_info[i].page.height != 0) &&
+ (layer_info[i].page.width != 0))
+ {
+ if (compression == 1)
+ {
+ /*
+ Read RLE compressed data.
+ */
+ layer_info[i].image->compression=RLECompression;
+ if (image->debug != MagickFalse)
+ (void) LogMagickEvent(CoderEvent,GetMagickModule(),
+ " layer data is RLE compressed");
+ offsets=(MagickOffsetType *) AcquireQuantumMemory(
+ layer_info[i].image->rows,sizeof(*offsets));
+ if (offsets == (MagickOffsetType *) NULL)
+ ThrowReaderException(ResourceLimitError,
+ "MemoryAllocationFailed");
+ for (y=0; y < (ssize_t) layer_info[i].image->rows; y++)
+ offsets[y]=GetPSDOffset(&psd_info,
+ layer_info[i].image);
+ }
+ status=ReadPSDLayer(layer_info[i].image,
+ layer_info[i].channels,
+ layer_info[i].channel_info[j].type,offsets,exception);
+ if (compression == 1)
+ offsets=(MagickOffsetType *) RelinquishMagickMemory(
+ offsets);
+ if (status == MagickFalse)
+ break;
+ }
+ }
+ if (layer_info[i].opacity != OpaqueAlpha)
+ {
+ /*
+ Correct for opacity level.
+ */
+ for (y=0; y < (ssize_t) layer_info[i].image->rows; y++)
+ {
+ q=GetAuthenticPixels(layer_info[i].image,0,y,
+ layer_info[i].image->columns,1,exception);
+ if (q == (Quantum *) NULL)
+ break;
+ for (x=0; x < (ssize_t) layer_info[i].image->columns; x++)
+ {
+ SetPixelAlpha(layer_info[i].image,(Quantum)
+ (QuantumScale*(GetPixelAlpha(layer_info[i].image,q))*
+ layer_info[i].opacity),q);
+ q+=GetPixelChannels(layer_info[i].image);
+ }
+ if (SyncAuthenticPixels(layer_info[i].image,exception) == MagickFalse)
+ break;
+ }
+ }
+ if (layer_info[i].image->colorspace == CMYKColorspace)
+ (void) NegateImage(layer_info[i].image,MagickFalse,exception);
+ status=SetImageProgress(image,LoadImagesTag,i,(MagickSizeType)
+ number_layers);
+ if (status == MagickFalse)
+ break;
+ }
+ /* added by palf -> invisible group layer make layer of this group
+ invisible I consider that all layer with width and height null are
+ layer for group layer */
+ {
+ short inside_layer = 0;
+ short layer_visible = 0;
+ for (i=number_layers-1; i >=0; i--)
+ {
+ if ((layer_info[i].page.width == 0) ||
+ (layer_info[i].page.height == 0))