case RLECompression:
default:
{
+ MemoryInfo
+ *pixel_info;
+
register unsigned char
*q;
Allocate pixel array.
*/
length=(size_t) number_pixels;
- pixels=(unsigned char *) AcquireQuantumMemory(length,
- sizeof(*pixels));
- if (pixels == (unsigned char *) NULL)
+ pixel_info=AcquireVirtualMemory(length,sizeof(*pixels));
+ if (pixel_info == (MemoryInfo *) NULL)
ThrowWriterException(ResourceLimitError,"MemoryAllocationFailed");
+ pixels=(unsigned char *) GetVirtualMemoryBlob(pixel_info);
/*
- Dump Runlength encoded pixels.
+ Dump runlength encoded pixels.
*/
q=pixels;
for (y=0; y < (ssize_t) image->rows; y++)
status=LZWEncodeImage(image,length,pixels,exception);
else
status=PackbitsEncodeImage(image,length,pixels,exception);
- pixels=(unsigned char *) RelinquishMagickMemory(pixels);
+ pixel_info=RelinquishVirtualMemory(pixel_info);
if (status == MagickFalse)
{
(void) CloseBlob(image);
case RLECompression:
default:
{
+ MemoryInfo
+ *pixel_info;
+
register unsigned char
*q;
Allocate pixel array.
*/
length=(size_t) number_pixels;
- pixels=(unsigned char *) AcquireQuantumMemory(length,
- 4*sizeof(*pixels));
- if (pixels == (unsigned char *) NULL)
+ pixel_info=AcquireVirtualMemory(length,4*sizeof(*pixels));
+ if (pixel_info == (MemoryInfo *) NULL)
ThrowWriterException(ResourceLimitError,
"MemoryAllocationFailed");
+ pixels=(unsigned char *) GetVirtualMemoryBlob(pixel_info);
/*
- Dump Packbit encoded pixels.
+ Dump runlength encoded pixels.
*/
q=pixels;
for (y=0; y < (ssize_t) image->rows; y++)
(void) CloseBlob(image);
return(MagickFalse);
}
- pixels=(unsigned char *) RelinquishMagickMemory(pixels);
+ pixel_info=RelinquishVirtualMemory(pixel_info);
break;
}
case NoCompression:
case RLECompression:
default:
{
+ MemoryInfo
+ *pixel_info;
+
register unsigned char
*q;
Allocate pixel array.
*/
length=(size_t) number_pixels;
- pixels=(unsigned char *) AcquireQuantumMemory(length,
- sizeof(*pixels));
- if (pixels == (unsigned char *) NULL)
+ pixel_info=AcquireVirtualMemory(length,sizeof(*pixels));
+ if (pixel_info == (MemoryInfo *) NULL)
ThrowWriterException(ResourceLimitError,
"MemoryAllocationFailed");
+ pixels=(unsigned char *) GetVirtualMemoryBlob(pixel_info);
/*
- Dump Runlength encoded pixels.
+ Dump runlength encoded pixels.
*/
q=pixels;
for (y=0; y < (ssize_t) image->rows; y++)
status=LZWEncodeImage(image,length,pixels,exception);
else
status=PackbitsEncodeImage(image,length,pixels,exception);
- pixels=(unsigned char *) RelinquishMagickMemory(pixels);
+ pixel_info=RelinquishVirtualMemory(pixel_info);
if (status == MagickFalse)
{
(void) CloseBlob(image);
}
static MagickBooleanType SerializeImage(const ImageInfo *image_info,
- Image *image,unsigned char **pixels,size_t *length,ExceptionInfo *exception)
+ Image *image,MemoryInfo **pixel_info,size_t *length,ExceptionInfo *exception)
{
MagickBooleanType
status;
status=MagickTrue;
*length=(image->colorspace == CMYKColorspace ? 4 : 3)*(size_t)
image->columns*image->rows;
- *pixels=(unsigned char *) AcquireQuantumMemory(*length,sizeof(**pixels));
- if (*pixels == (unsigned char *) NULL)
+ *pixel_info=AcquireVirtualMemory(*length,sizeof(*q));
+ if (*pixel_info == (MemoryInfo *) NULL)
ThrowWriterException(ResourceLimitError,"MemoryAllocationFailed");
- q=(*pixels);
+ q=(unsigned char *) GetVirtualMemoryBlob(*pixel_info);
for (y=0; y < (ssize_t) image->rows; y++)
{
p=GetVirtualPixels(image,0,y,image->columns,1,exception);
}
}
if (status == MagickFalse)
- *pixels=(unsigned char *) RelinquishMagickMemory(*pixels);
+ *pixel_info=RelinquishVirtualMemory(*pixel_info);
return(status);
}
static MagickBooleanType SerializeImageChannel(const ImageInfo *image_info,
- Image *image,unsigned char **pixels,size_t *length,ExceptionInfo *exception)
+ Image *image,MemoryInfo **pixel_info,size_t *length,ExceptionInfo *exception)
{
MagickBooleanType
status;
pack=IsImageMonochrome(image,exception) == MagickFalse ? 1UL : 8UL;
padded_columns=((image->columns+pack-1)/pack)*pack;
*length=(size_t) padded_columns*image->rows/pack;
- *pixels=(unsigned char *) AcquireQuantumMemory(*length,sizeof(**pixels));
- if (*pixels == (unsigned char *) NULL)
+ *pixel_info=AcquireVirtualMemory(*length,sizeof(*q));
+ if (*pixel_info == (MemoryInfo *) NULL)
ThrowWriterException(ResourceLimitError,"MemoryAllocationFailed");
- q=(*pixels);
+ q=(unsigned char *) GetVirtualMemoryBlob(*pixel_info);
for (y=0; y < (ssize_t) image->rows; y++)
{
p=GetVirtualPixels(image,0,y,image->columns,1,exception);
break;
}
if (status == MagickFalse)
- *pixels=(unsigned char *) RelinquishMagickMemory(*pixels);
+ *pixel_info=RelinquishVirtualMemory(*pixel_info);
return(status);
}
static MagickBooleanType SerializeImageIndexes(const ImageInfo *image_info,
- Image *image,unsigned char **pixels,size_t *length,ExceptionInfo *exception)
+ Image *image,MemoryInfo **pixel_info,size_t *length,ExceptionInfo *exception)
{
MagickBooleanType
status;
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
status=MagickTrue;
*length=(size_t) image->columns*image->rows;
- *pixels=(unsigned char *) AcquireQuantumMemory(*length,sizeof(**pixels));
- if (*pixels == (unsigned char *) NULL)
+ *pixel_info=AcquireVirtualMemory(*length,sizeof(*q));
+ if (*pixel_info == (MemoryInfo *) NULL)
ThrowWriterException(ResourceLimitError,"MemoryAllocationFailed");
- q=(*pixels);
+ q=(unsigned char *) GetVirtualMemoryBlob(*pixel_info);
for (y=0; y < (ssize_t) image->rows; y++)
{
p=GetVirtualPixels(image,0,y,image->columns,1,exception);
}
}
if (status == MagickFalse)
- *pixels=(unsigned char *) RelinquishMagickMemory(*pixels);
+ *pixel_info=RelinquishVirtualMemory(*pixel_info);
return(status);
}
start,
stop;
+ MemoryInfo
+ *pixel_info;
+
register ssize_t
i;
case NoCompression:
default:
{
- status=SerializeImageChannel(image_info,mask_image,&pixels,&length,
+ status=SerializeImageChannel(image_info,mask_image,&pixel_info,&length,
exception);
if (status == MagickFalse)
break;
Ascii85Initialize(image);
+ pixels=(unsigned char *) GetVirtualMemoryBlob(pixel_info);
for (i=0; i < (ssize_t) length; i++)
Ascii85Encode(image,pixels[i]);
Ascii85Flush(image);
- pixels=(unsigned char *) RelinquishMagickMemory(pixels);
+ pixel_info=RelinquishVirtualMemory(pixel_info);
break;
}
case FaxCompression:
}
case LZWCompression:
{
- status=SerializeImageChannel(image_info,mask_image,&pixels,&length,
+ status=SerializeImageChannel(image_info,mask_image,&pixel_info,&length,
exception);
if (status == MagickFalse)
break;
+ pixels=(unsigned char *) GetVirtualMemoryBlob(pixel_info);
status=LZWEncodeImage(image,length,pixels,exception);
- pixels=(unsigned char *) RelinquishMagickMemory(pixels);
+ pixel_info=RelinquishVirtualMemory(pixel_info);
break;
}
case RLECompression:
{
- status=SerializeImageChannel(image_info,mask_image,&pixels,&length,
+ status=SerializeImageChannel(image_info,mask_image,&pixel_info,&length,
exception);
if (status == MagickFalse)
break;
+ pixels=(unsigned char *) GetVirtualMemoryBlob(pixel_info);
status=PackbitsEncodeImage(image,length,pixels,exception);
- pixels=(unsigned char *) RelinquishMagickMemory(pixels);
+ pixel_info=RelinquishVirtualMemory(pixel_info);
break;
}
case ZipCompression:
{
- status=SerializeImageChannel(image_info,mask_image,&pixels,&length,
+ status=SerializeImageChannel(image_info,mask_image,&pixel_info,&length,
exception);
if (status == MagickFalse)
break;
+ pixels=(unsigned char *) GetVirtualMemoryBlob(pixel_info);
status=ZLIBEncodeImage(image,length,pixels,exception);
- pixels=(unsigned char *) RelinquishMagickMemory(pixels);
+ pixel_info=RelinquishVirtualMemory(pixel_info);
break;
}
}
MagickStatusType
flags;
+ MemoryInfo
+ *pixel_info;
+
PointInfo
delta,
resolution,
}
else
{
- status=SerializeImageChannel(image_info,image,&pixels,&length,
+ status=SerializeImageChannel(image_info,image,&pixel_info,&length,
exception);
if (status == MagickFalse)
{
(void) CloseBlob(image);
return(MagickFalse);
}
+ pixels=(unsigned char *) GetVirtualMemoryBlob(pixel_info);
switch (compression)
{
case NoCompression:
break;
}
}
- pixels=(unsigned char *) RelinquishMagickMemory(pixels);
+ pixel_info=RelinquishVirtualMemory(pixel_info);
}
}
else
/*
Stream based compressions.
*/
- status=SerializeImage(image_info,image,&pixels,&length,exception);
+ status=SerializeImage(image_info,image,&pixel_info,&length,
+ exception);
if (status == MagickFalse)
{
(void) CloseBlob(image);
return(MagickFalse);
}
+ pixels=(unsigned char *) GetVirtualMemoryBlob(pixel_info);
switch (compression)
{
case NoCompression:
break;
}
}
- pixels=(unsigned char *) RelinquishMagickMemory(pixels);
+ pixel_info=RelinquishVirtualMemory(pixel_info);
}
}
else
}
Ascii85Flush(image);
}
- status=SerializeImageIndexes(image_info,image,&pixels,&length,
+ status=SerializeImageIndexes(image_info,image,&pixel_info,&length,
exception);
if (status == MagickFalse)
{
(void) CloseBlob(image);
return(MagickFalse);
}
+ pixels=(unsigned char *) GetVirtualMemoryBlob(pixel_info);
switch (compression)
{
case NoCompression:
break;
}
}
- pixels=(unsigned char *) RelinquishMagickMemory(pixels);
+ pixel_info=RelinquishVirtualMemory(pixel_info);
}
(void) WriteBlobByte(image,'\n');
if (status == MagickFalse)
MagickSizeType
number_pixels;
+ MemoryInfo
+ *pixel_info;
+
register ssize_t
x;
*colormap,
pixel,
plane,
- *rle_pixels;
+ *pixels;
/*
Open image file.
number_pixels=(MagickSizeType) image->columns*image->rows;
if ((number_pixels*number_planes) != (size_t) (number_pixels*number_planes))
ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");
- rle_pixels=(unsigned char *) AcquireQuantumMemory(image->columns,
- image->rows*number_planes*sizeof(*rle_pixels));
- if (rle_pixels == (unsigned char *) NULL)
+ pixel_info=AcquireVirtualMemory(image->columns,image->rows*number_planes*
+ sizeof(*pixels));
+ if (pixel_info == (MemoryInfo *) NULL)
ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");
+ pixels=(unsigned char *) GetVirtualMemoryBlob(pixel_info);
if ((flags & 0x01) && !(flags & 0x02))
{
ssize_t
/*
Set background color.
*/
- p=rle_pixels;
+ p=pixels;
for (i=0; i < (ssize_t) number_pixels; i++)
{
if (image->alpha_trait != BlendPixelTrait)
operand=ReadBlobByte(image);
if (opcode & 0x40)
operand=(int) ReadBlobLSBShort(image);
- p=rle_pixels+((image->rows-y-1)*image->columns*number_planes)+
+ p=pixels+((image->rows-y-1)*image->columns*number_planes)+
x*number_planes+plane;
operand++;
for (i=0; i < (ssize_t) operand; i++)
pixel=(unsigned char) ReadBlobByte(image);
(void) ReadBlobByte(image);
operand++;
- p=rle_pixels+((image->rows-y-1)*image->columns*number_planes)+
+ p=pixels+((image->rows-y-1)*image->columns*number_planes)+
x*number_planes+plane;
for (i=0; i < (ssize_t) operand; i++)
{
Apply colormap affineation to image.
*/
mask=(MagickStatusType) (map_length-1);
- p=rle_pixels;
+ p=pixels;
if (number_colormaps == 1)
for (i=0; i < (ssize_t) number_pixels; i++)
{
/*
Convert raster image to DirectClass pixel packets.
*/
- p=rle_pixels;
+ p=pixels;
for (y=0; y < (ssize_t) image->rows; y++)
{
q=QueueAuthenticPixels(image,0,y,image->columns,1,exception);
image->colormap[i].blue=ScaleCharToQuantum(*(p+map_length*2));
p++;
}
- p=rle_pixels;
+ p=pixels;
if (image->alpha_trait != BlendPixelTrait)
{
/*
}
if (number_colormaps != 0)
colormap=(unsigned char *) RelinquishMagickMemory(colormap);
- rle_pixels=(unsigned char *) RelinquishMagickMemory(rle_pixels);
+ pixel_info=RelinquishVirtualMemory(pixel_info);
if (EOFBlob(image) != MagickFalse)
{
ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile",
MagickSizeType
number_pixels;
+ MemoryInfo
+ *pixel_info;
+
register Quantum
*q;
z;
unsigned char
- *iris_pixels;
+ *pixels;
/*
Open image file.
if ((4*bytes_per_pixel*number_pixels) != ((MagickSizeType) (size_t)
(4*bytes_per_pixel*number_pixels)))
ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");
- iris_pixels=(unsigned char *) AcquireQuantumMemory(iris_info.columns,
- iris_info.rows*4*bytes_per_pixel*sizeof(*iris_pixels));
- if (iris_pixels == (unsigned char *) NULL)
+ pixel_info=AcquireVirtualMemory(iris_info.columns,iris_info.rows*4*
+ bytes_per_pixel*sizeof(*pixels));
+ if (pixel_info == (MemoryInfo *) NULL)
ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");
+ pixels=(unsigned char *) GetVirtualMemoryBlob(pixel_info);
if ((int) iris_info.storage != 0x01)
{
unsigned char
ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");
for (z=0; z < (ssize_t) iris_info.depth; z++)
{
- p=iris_pixels+bytes_per_pixel*z;
+ p=pixels+bytes_per_pixel*z;
for (y=0; y < (ssize_t) iris_info.rows; y++)
{
count=ReadBlob(image,bytes_per_pixel*iris_info.columns,scanline);
}
else
{
+ MemoryInfo
+ *packet_info;
+
size_t
*runlength;
*/
offsets=(ssize_t *) AcquireQuantumMemory((size_t) iris_info.rows,
iris_info.depth*sizeof(*offsets));
- packets=(unsigned char *) AcquireQuantumMemory((size_t)
- iris_info.columns+10UL,4UL*sizeof(*packets));
runlength=(size_t *) AcquireQuantumMemory(iris_info.rows,
iris_info.depth*sizeof(*runlength));
+ packet_info=AcquireVirtualMemory((size_t) iris_info.columns+10UL,4UL*
+ sizeof(*packets));
if ((offsets == (ssize_t *) NULL) ||
- (packets == (unsigned char *) NULL) ||
- (runlength == (size_t *) NULL))
- ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");
+ (runlength == (size_t *) NULL) ||
+ (packet_info == (MemoryInfo *) NULL))
+ {
+ if (offsets == (ssize_t *) NULL)
+ offsets=(ssize_t *) RelinquishMagickMemory(offsets);
+ if (runlength == (size_t *) NULL)
+ runlength=(size_t *) RelinquishMagickMemory(runlength);
+ if (packet_info == (MemoryInfo *) NULL)
+ packet_info=RelinquishVirtualMemory(packet_info);
+ ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");
+ }
+ packets=(unsigned char *) GetVirtualMemoryBlob(packet_info);
for (i=0; i < (ssize_t) (iris_info.rows*iris_info.depth); i++)
offsets[i]=(int) ReadBlobMSBLong(image);
for (i=0; i < (ssize_t) (iris_info.rows*iris_info.depth); i++)
{
for (z=0; z < (ssize_t) iris_info.depth; z++)
{
- p=iris_pixels;
+ p=pixels;
for (y=0; y < (ssize_t) iris_info.rows; y++)
{
if (offset != offsets[y+z*iris_info.rows])
position;
position=TellBlob(image);
- p=iris_pixels;
+ p=pixels;
for (y=0; y < (ssize_t) iris_info.rows; y++)
{
for (z=0; z < (ssize_t) iris_info.depth; z++)
}
offset=(ssize_t) SeekBlob(image,position,SEEK_SET);
}
+ packet_info=RelinquishVirtualMemory(packet_info);
runlength=(size_t *) RelinquishMagickMemory(runlength);
- packets=(unsigned char *) RelinquishMagickMemory(packets);
offsets=(ssize_t *) RelinquishMagickMemory(offsets);
}
/*
{
for (y=0; y < (ssize_t) image->rows; y++)
{
- p=iris_pixels+(image->rows-y-1)*8*image->columns;
+ p=pixels+(image->rows-y-1)*8*image->columns;
q=QueueAuthenticPixels(image,0,y,image->columns,1,exception);
if (q == (Quantum *) NULL)
break;
else
for (y=0; y < (ssize_t) image->rows; y++)
{
- p=iris_pixels+(image->rows-y-1)*4*image->columns;
+ p=pixels+(image->rows-y-1)*4*image->columns;
q=QueueAuthenticPixels(image,0,y,image->columns,1,exception);
if (q == (Quantum *) NULL)
break;
{
for (y=0; y < (ssize_t) image->rows; y++)
{
- p=iris_pixels+(image->rows-y-1)*8*image->columns;
+ p=pixels+(image->rows-y-1)*8*image->columns;
q=QueueAuthenticPixels(image,0,y,image->columns,1,exception);
if (q == (Quantum *) NULL)
break;
else
for (y=0; y < (ssize_t) image->rows; y++)
{
- p=iris_pixels+(image->rows-y-1)*4*image->columns;
+ p=pixels+(image->rows-y-1)*4*image->columns;
q=QueueAuthenticPixels(image,0,y,image->columns,1,exception);
if (q == (Quantum *) NULL)
break;
}
(void) SyncImage(image,exception);
}
- iris_pixels=(unsigned char *) RelinquishMagickMemory(iris_pixels);
+ pixel_info=RelinquishVirtualMemory(pixel_info);
if (EOFBlob(image) != MagickFalse)
{
ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile",
MagickSizeType
number_pixels;
+ MemoryInfo
+ *pixel_info;
+
SGIInfo
iris_info;
z;
unsigned char
- *iris_pixels,
+ *pixels,
*packets;
/*
if ((4*iris_info.bytes_per_pixel*number_pixels) !=
((MagickSizeType) (size_t) (4*iris_info.bytes_per_pixel*number_pixels)))
ThrowWriterException(ResourceLimitError,"MemoryAllocationFailed");
- iris_pixels=(unsigned char *) AcquireQuantumMemory((size_t) number_pixels,
- 4*iris_info.bytes_per_pixel*sizeof(*iris_pixels));
- if (iris_pixels == (unsigned char *) NULL)
+ pixel_info=AcquireVirtualMemory((size_t) number_pixels,4*
+ iris_info.bytes_per_pixel*sizeof(*pixels));
+ if (pixel_info == (MemoryInfo *) NULL)
ThrowWriterException(ResourceLimitError,"MemoryAllocationFailed");
+ pixels=(unsigned char *) GetVirtualMemoryBlob(pixel_info);
/*
Convert image pixels to uncompressed SGI pixels.
*/
register unsigned char
*q;
- q=(unsigned char *) iris_pixels;
+ q=(unsigned char *) pixels;
q+=((iris_info.rows-1)-y)*(4*iris_info.columns)+4*x;
*q++=ScaleQuantumToChar(GetPixelRed(image,p));
*q++=ScaleQuantumToChar(GetPixelGreen(image,p));
register unsigned short
*q;
- q=(unsigned short *) iris_pixels;
+ q=(unsigned short *) pixels;
q+=((iris_info.rows-1)-y)*(4*iris_info.columns)+4*x;
*q++=ScaleQuantumToShort(GetPixelRed(image,p));
*q++=ScaleQuantumToShort(GetPixelGreen(image,p));
register unsigned char
*q;
- q=(unsigned char *) iris_pixels;
+ q=(unsigned char *) pixels;
q+=y*(4*iris_info.columns)+4*x+z;
(void) WriteBlobByte(image,*q);
}
register unsigned short
*q;
- q=(unsigned short *) iris_pixels;
+ q=(unsigned short *) pixels;
q+=y*(4*iris_info.columns)+4*x+z;
(void) WriteBlobMSBShort(image,*q);
}
}
default:
{
+ MemoryInfo
+ *packet_info;
+
size_t
length,
number_packets,
*/
offsets=(ssize_t *) AcquireQuantumMemory(iris_info.rows*iris_info.depth,
sizeof(*offsets));
- packets=(unsigned char *) AcquireQuantumMemory((2*(size_t)
- iris_info.columns+10)*image->rows,4*sizeof(*packets));
runlength=(size_t *) AcquireQuantumMemory(iris_info.rows,
iris_info.depth*sizeof(*runlength));
+ packet_info=AcquireVirtualMemory((2*(size_t) iris_info.columns+10)*
+ image->rows,4*sizeof(*packets));
if ((offsets == (ssize_t *) NULL) ||
- (packets == (unsigned char *) NULL) ||
- (runlength == (size_t *) NULL))
- ThrowWriterException(ResourceLimitError,"MemoryAllocationFailed");
+ (runlength == (size_t *) NULL) ||
+ (packet_info == (MemoryInfo *) NULL))
+ {
+ if (offsets != (ssize_t *) NULL)
+ offsets=(ssize_t *) RelinquishMagickMemory(offsets);
+ if (runlength != (size_t *) NULL)
+ runlength=(size_t *) RelinquishMagickMemory(runlength);
+ if (packet_info != (MemoryInfo *) NULL)
+ packet_info=RelinquishVirtualMemory(packet_info);
+ ThrowWriterException(ResourceLimitError,"MemoryAllocationFailed");
+ }
+ packets=(unsigned char *) GetVirtualMemoryBlob(packet_info);
offset=512+4*2*((ssize_t) iris_info.rows*iris_info.depth);
number_packets=0;
- q=iris_pixels;
+ q=pixels;
for (y=0; y < (ssize_t) iris_info.rows; y++)
{
for (z=0; z < (ssize_t) iris_info.depth; z++)
/*
Relinquish resources.
*/
- runlength=(size_t *) RelinquishMagickMemory(runlength);
- packets=(unsigned char *) RelinquishMagickMemory(packets);
offsets=(ssize_t *) RelinquishMagickMemory(offsets);
+ runlength=(size_t *) RelinquishMagickMemory(runlength);
+ packet_info=RelinquishVirtualMemory(packet_info);
break;
}
}
- iris_pixels=(unsigned char *) RelinquishMagickMemory(iris_pixels);
+ pixel_info=RelinquishVirtualMemory(pixel_info);
if (GetNextImageInList(image) == (Image *) NULL)
break;
image=SyncNextImageInList(image);