% June 2000 %
% %
% %
-% Copyright 1999-2009 ImageMagick Studio LLC, a non-profit organization %
+% Copyright 1999-2010 ImageMagick Studio LLC, a non-profit organization %
% dedicated to making software imaging solutions freely available. %
% %
% You may not use this file except in compliance with the License. You may %
#include "magick/blob.h"
#include "magick/blob-private.h"
#include "magick/color-private.h"
+#include "magick/colormap.h"
+#include "magick/colormap-private.h"
#include "magick/constitute.h"
#include "magick/exception.h"
#include "magick/exception-private.h"
}
\f
-static void Rd_WP_DWORD(Image *image,unsigned long *d)
+static void Rd_WP_DWORD(Image *image,size_t *d)
{
unsigned char
b;
if (b < 0xFFU)
return;
b=ReadBlobByte(image);
- *d=(unsigned long) b;
+ *d=(size_t) b;
b=ReadBlobByte(image);
- *d+=(unsigned long) b*256l;
+ *d+=(size_t) b*256l;
if (*d < 0x8000)
return;
*d=(*d & 0x7FFF) << 16;
b=ReadBlobByte(image);
- *d+=(unsigned long) b;
+ *d+=(size_t) b;
b=ReadBlobByte(image);
- *d+=(unsigned long) b*256l;
+ *d+=(size_t) b*256l;
return;
}
-static void InsertRow(unsigned char *p,long y,Image *image, int bpp)
+static void InsertRow(unsigned char *p,ssize_t y,Image *image, int bpp)
{
ExceptionInfo
*exception;
int
bit;
- long
+ ssize_t
x;
register PixelPacket
if (q == (PixelPacket *) NULL)
break;
indexes=GetAuthenticIndexQueue(image);
- for (x=0; x < ((long) image->columns-7); x+=8)
+ for (x=0; x < ((ssize_t) image->columns-7); x+=8)
{
for (bit=0; bit < 8; bit++)
{
}
if ((image->columns % 8) != 0)
{
- for (bit=0; bit < (long) (image->columns % 8); bit++)
+ for (bit=0; bit < (ssize_t) (image->columns % 8); bit++)
{
index=((*p) & (0x80 >> bit) ? 0x01 : 0x00);
indexes[x+bit]=index;
if (q == (PixelPacket *) NULL)
break;
indexes=GetAuthenticIndexQueue(image);
- for (x=0; x < ((long) image->columns-1); x+=2)
+ for (x=0; x < ((ssize_t) image->columns-1); x+=2)
{
index=ConstrainColormapIndex(image,(*p >> 6) & 0x3);
indexes[x]=index;
- *q++=image->colormap[(long) index];
+ *q++=image->colormap[(ssize_t) index];
index=ConstrainColormapIndex(image,(*p >> 4) & 0x3);
indexes[x]=index;
- *q++=image->colormap[(long) index];
+ *q++=image->colormap[(ssize_t) index];
index=ConstrainColormapIndex(image,(*p >> 2) & 0x3);
indexes[x]=index;
- *q++=image->colormap[(long) index];
+ *q++=image->colormap[(ssize_t) index];
index=ConstrainColormapIndex(image,(*p) & 0x3);
indexes[x+1]=index;
- *q++=image->colormap[(long) index];
+ *q++=image->colormap[(ssize_t) index];
p++;
}
if ((image->columns % 4) != 0)
{
index=ConstrainColormapIndex(image,(*p >> 6) & 0x3);
indexes[x]=index;
- *q++=image->colormap[(long) index];
+ *q++=image->colormap[(ssize_t) index];
if ((image->columns % 4) >= 1)
{
index=ConstrainColormapIndex(image,(*p >> 4) & 0x3);
indexes[x]=index;
- *q++=image->colormap[(long) index];
+ *q++=image->colormap[(ssize_t) index];
if ((image->columns % 4) >= 2)
{
index=ConstrainColormapIndex(image,(*p >> 2) & 0x3);
indexes[x]=index;
- *q++=image->colormap[(long) index];
+ *q++=image->colormap[(ssize_t) index];
}
}
p++;
if (q == (PixelPacket *) NULL)
break;
indexes=GetAuthenticIndexQueue(image);
- for (x=0; x < ((long) image->columns-1); x+=2)
+ for (x=0; x < ((ssize_t) image->columns-1); x+=2)
{
index=ConstrainColormapIndex(image,(*p >> 4) & 0x0f);
indexes[x]=index;
- *q++=image->colormap[(long) index];
+ *q++=image->colormap[(ssize_t) index];
index=ConstrainColormapIndex(image,(*p) & 0x0f);
indexes[x+1]=index;
- *q++=image->colormap[(long) index];
+ *q++=image->colormap[(ssize_t) index];
p++;
}
if ((image->columns % 2) != 0)
{
index=ConstrainColormapIndex(image,(*p >> 4) & 0x0f);
indexes[x]=index;
- *q++=image->colormap[(long) index];
+ *q++=image->colormap[(ssize_t) index];
p++;
}
if (SyncAuthenticPixels(image,exception) == MagickFalse)
if (q == (PixelPacket *) NULL) break;
indexes=GetAuthenticIndexQueue(image);
- for (x=0; x < (long) image->columns; x++)
+ for (x=0; x < (ssize_t) image->columns; x++)
{
index=ConstrainColormapIndex(image,*p);
indexes[x]=index;
- *q++=image->colormap[(long) index];
+ *q++=image->colormap[(ssize_t) index];
p++;
}
if (SyncAuthenticPixels(image,exception) == MagickFalse)
q=QueueAuthenticPixels(image,0,y,image->columns,1,exception);
if (q == (PixelPacket *) NULL)
break;
- for (x=0; x < (long) image->columns; x++)
+ for (x=0; x < (ssize_t) image->columns; x++)
{
q->red=ScaleCharToQuantum(*p++);
q->green=ScaleCharToQuantum(*p++);
{ \
BImgBuff[x]=b; \
x++; \
- if((long) x>=ldblk) \
+ if((ssize_t) x>=ldblk) \
{ \
- InsertRow(BImgBuff,(long) y,image,bpp); \
+ InsertRow(BImgBuff,(ssize_t) y,image,bpp); \
x=0; \
y++; \
} \
*BImgBuff,
RunCount;
- long
+ ssize_t
ldblk;
x=0;
y=0;
- ldblk=(long) ((bpp*image->columns+7)/8);
+ ldblk=(ssize_t) ((bpp*image->columns+7)/8);
BImgBuff=(unsigned char *) AcquireQuantumMemory((size_t) ldblk,
sizeof(*BImgBuff));
if(BImgBuff==NULL) return(-2);
- while(y<(long) image->rows)
+ while(y<(ssize_t) image->rows)
{
bbuf=ReadBlobByte(image);
x=0;
y++; /* Here I need to duplicate previous row RUNCOUNT* */
if(y<2) continue;
- if(y>(long) image->rows)
+ if(y>(ssize_t) image->rows)
{
BImgBuff=(unsigned char *) RelinquishMagickMemory(BImgBuff);
return(-4);
else\
BImgBuff[x] = b;\
x++; \
- if((long) x >= ldblk) \
+ if((ssize_t) x >= ldblk) \
{ \
- InsertRow(BImgBuff,(long) y,image,bpp); \
+ InsertRow(BImgBuff,(ssize_t) y,image,bpp); \
x=0; \
y++; \
} \
RunCount,
SampleBuffer[8];
- unsigned long
+ size_t
x,
y;
unsigned int
i;
- long
+ ssize_t
ldblk;
int XorMe = 0;
x=0;
y=0;
- ldblk=(long) ((bpp*image->columns+7)/8);
+ ldblk=(ssize_t) ((bpp*image->columns+7)/8);
BImgBuff=(unsigned char *) AcquireQuantumMemory((size_t) ldblk,
sizeof(*BImgBuff));
if(BImgBuff==NULL)
if(x!=0)
{
(void) fprintf(stderr,
- "\nUnsupported WPG2 unaligned token RST x=%lu, please report!\n"
- ,x);
+ "\nUnsupported WPG2 unaligned token RST x=%.20g, please report!\n"
+ ,(double) x);
return(-3);
}
{
/* duplicate the previous row RunCount x */
for(i=0;i<=RunCount;i++)
{
- InsertRow(BImgBuff,(long) (image->rows >= y ? y : image->rows-1),
+ InsertRow(BImgBuff,(ssize_t) (image->rows >= y ? y : image->rows-1),
image,bpp);
y++;
}
static unsigned LoadWPG2Flags(Image *image,char Precision,float *Angle,tCTM *CTM)
{
const unsigned char TPR=1,TRN=2,SKW=4,SCL=8,ROT=0x10,OID=0x20,LCK=0x80;
-long x;
+ssize_t x;
unsigned DenX;
unsigned Flags;
static Image *ExtractPostscript(Image *image,const ImageInfo *image_info,
- MagickOffsetType PS_Offset,long PS_Size,ExceptionInfo *exception)
+ MagickOffsetType PS_Offset,ssize_t PS_Size,ExceptionInfo *exception)
{
char
postscript_file[MaxTextExtent];
{
typedef struct
{
- unsigned long FileId;
+ size_t FileId;
MagickOffsetType DataOffset;
unsigned int ProductType;
unsigned int FileType;
typedef struct
{
unsigned char RecType;
- unsigned long RecordLength;
+ size_t RecordLength;
} WPGRecord;
typedef struct
{
unsigned char Class;
unsigned char RecType;
- unsigned long Extension;
- unsigned long RecordLength;
+ size_t Extension;
+ size_t RecordLength;
} WPG2Record;
typedef struct
} WPGColorMapRec;
typedef struct {
- unsigned long PS_unknown1;
+ size_t PS_unknown1;
unsigned int PS_unknown2;
unsigned int PS_unknown3;
} WPGPSl1Record;
bpp,
WPG2Flags;
- long
+ ssize_t
ldblk;
+ size_t
+ one;
+
unsigned char
*BImgBuff;
assert(image_info->signature == MagickSignature);
assert(exception != (ExceptionInfo *) NULL);
assert(exception->signature == MagickSignature);
+ one=1;
image=AcquireImage(image_info);
image->depth=8;
status=OpenBlob(image_info,image,ReadBinaryBlobMode,exception);
if(Rec.RecordLength > 8)
image=ExtractPostscript(image,image_info,
TellBlob(image)+8, /* skip PS header in the wpg */
- (long) Rec.RecordLength-8,exception);
+ (ssize_t) Rec.RecordLength-8,exception);
break;
case 0x14: /* bitmap type 2 */
UnpackRaster:
if ((image->colors == 0) && (bpp != 24))
{
- image->colors=1 << bpp;
+ image->colors=one << bpp;
if (!AcquireImageColormap(image,image->colors))
{
NoMemory:
else
{
if (bpp < 24)
- if ( (image->colors < (1UL<<bpp)) && (bpp != 24) )
+ if ( (image->colors < (one << bpp)) && (bpp != 24) )
image->colormap=(PixelPacket *) ResizeQuantumMemory(
- image->colormap,(size_t) (1UL << bpp),
+ image->colormap,(size_t) (one << bpp),
sizeof(*image->colormap));
}
if(Rec.RecordLength>0x3C)
image=ExtractPostscript(image,image_info,
TellBlob(image)+0x3C, /* skip PS l2 header in the wpg */
- (long) Rec.RecordLength-0x3C,exception);
+ (ssize_t) Rec.RecordLength-0x3C,exception);
break;
}
}
if ((image->colors == 0) && (bpp != 24))
{
- image->colors=1 << bpp;
+ size_t
+ one;
+
+ one=1;
+ image->colors=one << bpp;
if (!AcquireImageColormap(image,image->colors))
goto NoMemory;
}
else
{
if(bpp < 24)
- if( image->colors<(1UL<<bpp) && bpp!=24 )
+ if( image->colors<(one << bpp) && bpp!=24 )
image->colormap=(PixelPacket *) ResizeQuantumMemory(
- image->colormap,(size_t) (1UL << bpp),
+ image->colormap,(size_t) (one << bpp),
sizeof(*image->colormap));
}
{
case 0: /*Uncompressed raster*/
{
- ldblk=(long) ((bpp*image->columns+7)/8);
+ ldblk=(ssize_t) ((bpp*image->columns+7)/8);
BImgBuff=(unsigned char *) AcquireQuantumMemory((size_t)
ldblk,sizeof(*BImgBuff));
if (BImgBuff == (unsigned char *) NULL)
goto NoMemory;
- for(i=0; i< (long) image->rows; i++)
+ for(i=0; i< (ssize_t) image->rows; i++)
{
(void) ReadBlob(image,ldblk,BImgBuff);
InsertRow(BImgBuff,i,image,bpp);
if(Rec2.RecordLength > (unsigned int) i)
image=ExtractPostscript(image,image_info,
TellBlob(image)+i, /*skip PS header in the wpg2*/
- (long) (Rec2.RecordLength-i-2),exception);
+ (ssize_t) (Rec2.RecordLength-i-2),exception);
break;
case 0x1B: /*bitmap rectangle*/
Image
*p;
- long
+ ssize_t
scene=0;
/*
Fix scene numbers.
*/
for (p=image; p != (Image *) NULL; p=p->next)
- p->scene=(unsigned long) scene++;
+ p->scene=(size_t) scene++;
}
if (image == (Image *) NULL)
ThrowReaderException(CorruptImageError,
%
% The format of the RegisterWPGImage method is:
%
-% unsigned long RegisterWPGImage(void)
+% size_t RegisterWPGImage(void)
%
*/
-ModuleExport unsigned long RegisterWPGImage(void)
+ModuleExport size_t RegisterWPGImage(void)
{
MagickInfo
*entry;