Fix gif2h5 tool build on windows
This commit is contained in:
@@ -15,13 +15,13 @@
|
||||
|
||||
#include "gif.h"
|
||||
|
||||
WORD iWIDE, iHIGH, eWIDE, eHIGH, expand, numcols, strip, nostrip;
|
||||
GIFWORD iWIDE, iHIGH, eWIDE, eHIGH, expand, numcols, strip, nostrip;
|
||||
unsigned long cols[256];
|
||||
char *cmd;
|
||||
|
||||
FILE *fp;
|
||||
|
||||
static WORD
|
||||
static GIFWORD
|
||||
XC = 0, YC = 0, /* Output X and Y coords of current pixel */
|
||||
InitCodeSize, /* Starting code size, used during Clear */
|
||||
CodeSize, /* Code size, read from GIF header */
|
||||
@@ -29,7 +29,7 @@ static WORD
|
||||
IWidth, IHeight; /* image dimensions */
|
||||
static int
|
||||
BitOffset = 0, /* Bit Offset of next code */
|
||||
Pass = 0, /* Used by output routine if WORDerlaced pic */
|
||||
Pass = 0, /* Used by output routine if GIFWORDerlaced pic */
|
||||
OutCount = 0, /* Decompressor output 'stack count' */
|
||||
Code, /* Value returned by ReadCode */
|
||||
MaxCode, /* limiting value for current code size */
|
||||
@@ -43,17 +43,17 @@ static int
|
||||
ReadMask; /* Code AND mask for current code size */
|
||||
|
||||
/*MODIFICATIONS*/
|
||||
BYTE tempbyte[10];
|
||||
BYTE * tempBYTEptr[10];
|
||||
WORD tempint[10];
|
||||
WORD ImageCount = 0;
|
||||
GIFBYTE tempbyte[10];
|
||||
GIFBYTE * tempGIFBYTEptr[10];
|
||||
GIFWORD tempint[10];
|
||||
GIFWORD ImageCount = 0;
|
||||
/*END MODIFICATION*/
|
||||
|
||||
boolean Interlace, HasColormap;
|
||||
|
||||
BYTE *Image; /* The result array */
|
||||
BYTE *RawGIF; /* The heap array to hold it, raw */
|
||||
BYTE *Raster; /* The raster data stream, unblocked */
|
||||
GIFBYTE *Image; /* The result array */
|
||||
GIFBYTE *RawGIF; /* The heap array to hold it, raw */
|
||||
GIFBYTE *Raster; /* The raster data stream, unblocked */
|
||||
|
||||
/* The hash table used by the decompressor */
|
||||
|
||||
@@ -70,10 +70,10 @@ int numused;
|
||||
|
||||
/*
|
||||
* Fetch the next code from the raster data stream. The codes can be any
|
||||
* length from 3 to 12 bits, packed WORDo 8-bit BYTEs, so we have to maWORDain
|
||||
* our location in the Raster array as a BIT Offset. We compute the BYTE
|
||||
* Offset WORDo the raster array by dividing this by 8, pick up three BYTEs,
|
||||
* compute the bit Offset WORDo our 24-bit chunk, shift to bring the desired
|
||||
* length from 3 to 12 bits, packed into 8-bit GIFBYTEs, so we have to maintain
|
||||
* our location in the Raster array as a BIT Offset. We compute the GIFBYTE
|
||||
* Offset into the raster array by dividing this by 8, pick up three GIFBYTEs,
|
||||
* compute the bit Offset into our 24-bit chunk, shift to bring the desired
|
||||
* code to the bottom, then mask it off and return it.
|
||||
*/
|
||||
static int
|
||||
@@ -93,7 +93,7 @@ ReadCode(void)
|
||||
}
|
||||
|
||||
static void
|
||||
AddToPixel(BYTE Index)
|
||||
AddToPixel(GIFBYTE Index)
|
||||
{
|
||||
if (YC<IHeight)
|
||||
*(Image + YC * BytesPerScanline + XC) = Index;
|
||||
@@ -104,8 +104,8 @@ AddToPixel(BYTE Index)
|
||||
* Y-coordinate */
|
||||
if (++XC == IWidth) {
|
||||
/*
|
||||
* If a non-WORDerlaced picture, just increment YC to the next scan
|
||||
* line. If it's WORDerlaced, deal with the WORDerlace as described
|
||||
* If a non-interlaced picture, just increment YC to the next scan
|
||||
* line. If it's interlaced, deal with the interlace as described
|
||||
* in the GIF spec. Put the decoded scan line out to the screen if we
|
||||
* haven't gone past the bottom of it.
|
||||
*/
|
||||
@@ -154,7 +154,7 @@ AddToPixel(BYTE Index)
|
||||
|
||||
/* Main routine. Convert a GIF image to an HDF image */
|
||||
|
||||
BYTE *
|
||||
GIFBYTE *
|
||||
Decompress(GIFIMAGEDESC *GifImageDesc, GIFHEAD *GifHead)
|
||||
{
|
||||
int i;
|
||||
@@ -183,7 +183,7 @@ Decompress(GIFIMAGEDESC *GifImageDesc, GIFHEAD *GifHead)
|
||||
*/
|
||||
|
||||
/*
|
||||
* Start reading the raster data. First we get the WORDial code size and
|
||||
* Start reading the raster data. First we get the intial code size and
|
||||
* compute decompressor constant values, based on this code size.
|
||||
*/
|
||||
|
||||
@@ -206,13 +206,13 @@ Decompress(GIFIMAGEDESC *GifImageDesc, GIFHEAD *GifHead)
|
||||
|
||||
/*
|
||||
* Read the raster data. Here we just transpose it from the GIF array to
|
||||
* the Raster array, turning it from a series of blocks WORDo one long
|
||||
* the Raster array, turning it from a series of blocks into one long
|
||||
* data stream, which makes life much easier for ReadCode().
|
||||
*/
|
||||
|
||||
/* Allocate the Image */
|
||||
|
||||
if (!(Image = (BYTE *)malloc((size_t)IWidth*(size_t)IHeight))) {
|
||||
if (!(Image = (GIFBYTE *)malloc((size_t)IWidth*(size_t)IHeight))) {
|
||||
printf("Out of memory");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
@@ -238,7 +238,7 @@ Decompress(GIFIMAGEDESC *GifImageDesc, GIFHEAD *GifHead)
|
||||
FreeCode = FirstFree;
|
||||
CurCode = OldCode = Code = ReadCode();
|
||||
FinChar = CurCode & DataMask;
|
||||
AddToPixel((BYTE)FinChar);
|
||||
AddToPixel((GIFBYTE)FinChar);
|
||||
} else {
|
||||
/*
|
||||
* If not a clear code, then must be data: save same as CurCode
|
||||
@@ -256,7 +256,7 @@ Decompress(GIFIMAGEDESC *GifImageDesc, GIFHEAD *GifHead)
|
||||
}
|
||||
|
||||
/*
|
||||
* Unless this code is raw data, pursue the chain poWORDed to by
|
||||
* Unless this code is raw data, pursue the chain pointed to by
|
||||
* CurCode through the hash table to its end; each code in the
|
||||
* chain puts its associated output code on the output queue.
|
||||
*/
|
||||
@@ -278,7 +278,7 @@ Decompress(GIFIMAGEDESC *GifImageDesc, GIFHEAD *GifHead)
|
||||
* stacked LIFO, so deal with it that way...
|
||||
*/
|
||||
for (i = OutCount - 1; i >= 0; i--)
|
||||
AddToPixel((BYTE)OutCode[i]);
|
||||
AddToPixel((GIFBYTE)OutCode[i]);
|
||||
|
||||
OutCount = 0;
|
||||
|
||||
@@ -291,7 +291,7 @@ Decompress(GIFIMAGEDESC *GifImageDesc, GIFHEAD *GifHead)
|
||||
OldCode = InCode;
|
||||
|
||||
/*
|
||||
* PoWORD to the next slot in the table. If we exceed the current
|
||||
* Point to the next slot in the table. If we exceed the current
|
||||
* MaxCode value, increment the code size unless it's already 12.
|
||||
* If it is, do nothing: the next code decompressed better be
|
||||
* CLEAR
|
||||
|
||||
@@ -26,17 +26,24 @@
|
||||
|
||||
#define MAX_PAL 768
|
||||
|
||||
/* typedef H5T_NATIVE_UINT8 BYTE; */
|
||||
typedef unsigned char BYTE;
|
||||
/* typedef H5T_NATIVE_UINT8 GIFBYTE; */
|
||||
typedef unsigned char GIFBYTE;
|
||||
|
||||
/* typedef H5T_NATIVE_UINT16 WORD; */
|
||||
typedef unsigned long WORD;
|
||||
/* typedef H5T_NATIVE_UINT16 GIFWORD; */
|
||||
typedef unsigned long GIFWORD;
|
||||
|
||||
typedef char CHAR;
|
||||
typedef char GIFCHAR;
|
||||
|
||||
#ifndef boolean
|
||||
typedef unsigned char boolean;
|
||||
#endif
|
||||
|
||||
#ifndef false
|
||||
#define false 0
|
||||
#endif
|
||||
#ifndef true
|
||||
#define true 1
|
||||
#endif
|
||||
|
||||
/* Set the EndianOrder.
|
||||
** The GIF Reader file should do this.
|
||||
@@ -52,15 +59,15 @@ extern int EndianOrder;
|
||||
** descriptor, and the global color table for the GIF image.
|
||||
*/
|
||||
typedef struct _GifHeader { /* Offset Description */
|
||||
BYTE PackedField; /* 0Ah Color Information */
|
||||
WORD TableSize;
|
||||
BYTE ImageCount; /* Keep a count of the number of images */
|
||||
BYTE CommentCount;
|
||||
BYTE ApplicationCount;
|
||||
BYTE PlainTextCount;
|
||||
BYTE HDFPalette[256][3];
|
||||
BYTE HeaderDump[6]; /* BYTE array to dump header contents */
|
||||
BYTE LSDDump[7]; /* Logical Screen Descriptor dump */
|
||||
GIFBYTE PackedField; /* 0Ah Color Information */
|
||||
GIFWORD TableSize;
|
||||
GIFBYTE ImageCount; /* Keep a count of the number of images */
|
||||
GIFBYTE CommentCount;
|
||||
GIFBYTE ApplicationCount;
|
||||
GIFBYTE PlainTextCount;
|
||||
GIFBYTE HDFPalette[256][3];
|
||||
GIFBYTE HeaderDump[6]; /* GIFBYTE array to dump header contents */
|
||||
GIFBYTE LSDDump[7]; /* Logical Screen Descriptor dump */
|
||||
} GIFHEAD;
|
||||
|
||||
|
||||
@@ -68,32 +75,32 @@ typedef struct _GifHeader { /* Offset Description */
|
||||
** The GIF Image Descriptor.
|
||||
*/
|
||||
typedef struct _GifImageDescriptor {
|
||||
WORD ImageWidth; /* Width of the image in pixels */
|
||||
WORD ImageHeight; /* Height of the image in pixels */
|
||||
BYTE PackedField; /* Image and Color Table Data Information */
|
||||
WORD TableSize;
|
||||
WORD CodeSize; /* Minimum LZW CodeSize for image data */
|
||||
BYTE HDFPalette[256][3];
|
||||
BYTE GIDDump[9]; /* GifImageDescriptor dump */
|
||||
GIFWORD ImageWidth; /* Width of the image in pixels */
|
||||
GIFWORD ImageHeight; /* Height of the image in pixels */
|
||||
GIFBYTE PackedField; /* Image and Color Table Data Information */
|
||||
GIFWORD TableSize;
|
||||
GIFWORD CodeSize; /* Minimum LZW CodeSize for image data */
|
||||
GIFBYTE HDFPalette[256][3];
|
||||
GIFBYTE GIDDump[9]; /* GifImageDescriptor dump */
|
||||
|
||||
BYTE *Image; /* Decompressed Raster Image */
|
||||
BYTE *GIFImage;
|
||||
GIFBYTE *Image; /* Decompressed Raster Image */
|
||||
GIFBYTE *GIFImage;
|
||||
} GIFIMAGEDESC;
|
||||
|
||||
/*
|
||||
** GIF 89a Graphic Control Extension Block
|
||||
*/
|
||||
typedef struct _GifGraphicControlExtension {
|
||||
BYTE GCEDump[5]; /* Graphic Control Extension Dump */
|
||||
GIFBYTE GCEDump[5]; /* Graphic Control Extension Dump */
|
||||
} GIFGRAPHICCONTROL;
|
||||
|
||||
/*
|
||||
** GIF 89a Plain Text Extension Block
|
||||
*/
|
||||
typedef struct _GifPlainTextExtension {
|
||||
BYTE PTEDump[15]; /* Plain Text Extension Dump */
|
||||
BYTE *PlainTextData; /* Plain Text data sub-blocks */
|
||||
WORD DataSize;
|
||||
GIFBYTE PTEDump[15]; /* Plain Text Extension Dump */
|
||||
GIFBYTE *PlainTextData; /* Plain Text data sub-blocks */
|
||||
GIFWORD DataSize;
|
||||
} GIFPLAINTEXT;
|
||||
|
||||
|
||||
@@ -101,19 +108,19 @@ typedef struct _GifPlainTextExtension {
|
||||
** GIF 89a Application Extension Block
|
||||
*/
|
||||
typedef struct _GifApplicationExtension {
|
||||
BYTE AEDump[14]; /* Application Extension Dump */
|
||||
BYTE *ApplicationData; /* Application data sub-blocks */
|
||||
WORD DataSize;
|
||||
GIFBYTE AEDump[14]; /* Application Extension Dump */
|
||||
GIFBYTE *ApplicationData; /* Application data sub-blocks */
|
||||
GIFWORD DataSize;
|
||||
} GIFAPPLICATION;
|
||||
|
||||
/*
|
||||
** GIF 89a Comment Extension Block
|
||||
*/
|
||||
typedef struct _GifCommentExtension {
|
||||
BYTE CEDump[2]; /* Comment Extension Dump */
|
||||
BYTE *CommentData; /* Comment data sub-blocks */
|
||||
WORD DataSize;
|
||||
BYTE Terminator; /* Block Terminator (always 0) */
|
||||
GIFBYTE CEDump[2]; /* Comment Extension Dump */
|
||||
GIFBYTE *CommentData; /* Comment data sub-blocks */
|
||||
GIFWORD DataSize;
|
||||
GIFBYTE Terminator; /* Block Terminator (always 0) */
|
||||
} GIFCOMMENT;
|
||||
|
||||
/*
|
||||
@@ -128,12 +135,12 @@ typedef struct _GifCommentExtension {
|
||||
** extension.
|
||||
*/
|
||||
typedef struct _GifToMem {
|
||||
GIFHEAD *GifHeader;
|
||||
GIFIMAGEDESC **GifImageDesc;
|
||||
GIFGRAPHICCONTROL **GifGraphicControlExtension;
|
||||
GIFPLAINTEXT **GifPlainTextExtension;
|
||||
GIFAPPLICATION **GifApplicationExtension;
|
||||
GIFCOMMENT **GifCommentExtension;
|
||||
GIFHEAD *GifHeader;
|
||||
GIFIMAGEDESC **GifImageDesc;
|
||||
GIFGRAPHICCONTROL **GifGraphicControlExtension;
|
||||
GIFPLAINTEXT **GifPlainTextExtension;
|
||||
GIFAPPLICATION **GifApplicationExtension;
|
||||
GIFCOMMENT **GifCommentExtension;
|
||||
} GIFTOMEM;
|
||||
|
||||
/*
|
||||
@@ -141,40 +148,40 @@ typedef struct _GifToMem {
|
||||
*/
|
||||
|
||||
/* GIF2MEM.C */
|
||||
int Gif2Mem(BYTE *, GIFTOMEM *);
|
||||
int Gif2Mem(GIFBYTE *, GIFTOMEM *);
|
||||
|
||||
/* GIFREAD.C */
|
||||
int ReadGifHeader(GIFHEAD *, BYTE **);
|
||||
int ReadGifImageDesc(GIFIMAGEDESC *, BYTE **);
|
||||
int ReadGifGraphicControl(GIFGRAPHICCONTROL *, BYTE **);
|
||||
int ReadGifPlainText(GIFPLAINTEXT *, BYTE **);
|
||||
int ReadGifApplication(GIFAPPLICATION *, BYTE **);
|
||||
int ReadGifComment(GIFCOMMENT *, BYTE **);
|
||||
int ReadGifHeader(GIFHEAD *, GIFBYTE **);
|
||||
int ReadGifImageDesc(GIFIMAGEDESC *, GIFBYTE **);
|
||||
int ReadGifGraphicControl(GIFGRAPHICCONTROL *, GIFBYTE **);
|
||||
int ReadGifPlainText(GIFPLAINTEXT *, GIFBYTE **);
|
||||
int ReadGifApplication(GIFAPPLICATION *, GIFBYTE **);
|
||||
int ReadGifComment(GIFCOMMENT *, GIFBYTE **);
|
||||
|
||||
/* HDFGIFWR.C */
|
||||
int hdfWriteGIF(FILE *fp, BYTE *pic, int ptype, int w, int h, BYTE *rmap,
|
||||
BYTE *gmap, BYTE *bmap, BYTE *pc2ncmap, int numcols,
|
||||
int hdfWriteGIF(FILE *fp, GIFBYTE *pic, int ptype, int w, int h, GIFBYTE *rmap,
|
||||
GIFBYTE *gmap, GIFBYTE *bmap, GIFBYTE *pc2ncmap, int numcols,
|
||||
int colorstyle, int BitsPerPixel);
|
||||
|
||||
/* WRITEHDF.C */
|
||||
int WriteHDF(GIFTOMEM , CHAR * );
|
||||
int WriteHDF(GIFTOMEM , GIFCHAR * );
|
||||
|
||||
/* Function: ReadHDF
|
||||
** Return: 0 on completion without error, -1 on error
|
||||
** Input: CHAR *h5_file - HDF file name
|
||||
** CHAR *dset_name - Name of the HDF Image dataset
|
||||
** CHAR *pal_name - Name of the HDF palette
|
||||
** Output: BYTE* data - the HDF Image to be converted
|
||||
** BYTE palette[256][3] - the corresponding palette
|
||||
** Input: GIFCHAR *h5_file - HDF file name
|
||||
** GIFCHAR *dset_name - Name of the HDF Image dataset
|
||||
** GIFCHAR *pal_name - Name of the HDF palette
|
||||
** Output: GIFBYTE* data - the HDF Image to be converted
|
||||
** GIFBYTE palette[256][3] - the corresponding palette
|
||||
** hsize_t* image_size - the size of each dimension of the image
|
||||
*/
|
||||
int ReadHDF(BYTE** data, BYTE palette[256][3], hsize_t *image_size,
|
||||
CHAR *h5_file, CHAR *dset_name, CHAR *pal_name);
|
||||
int ReadHDF(GIFBYTE** data, GIFBYTE palette[256][3], hsize_t *image_size,
|
||||
GIFCHAR *h5_file, GIFCHAR *dset_name, GIFCHAR *pal_name);
|
||||
|
||||
BYTE *Decompress(GIFIMAGEDESC *, GIFHEAD *);
|
||||
BYTE GetByte(BYTE *);
|
||||
WORD GetWord(BYTE *);
|
||||
GIFBYTE *Decompress(GIFIMAGEDESC *, GIFHEAD *);
|
||||
GIFBYTE GetByte(GIFBYTE *);
|
||||
GIFWORD GetWord(GIFBYTE *);
|
||||
|
||||
void cleanup(BYTE*);
|
||||
void cleanup(GIFBYTE*);
|
||||
|
||||
#endif /* GIF_H_ */
|
||||
|
||||
@@ -31,8 +31,8 @@ main(int argv , char *argc[])
|
||||
long i, ImageCount;
|
||||
long filesize;
|
||||
|
||||
BYTE *MemGif;
|
||||
BYTE *StartPos;
|
||||
GIFBYTE *MemGif;
|
||||
GIFBYTE *StartPos;
|
||||
|
||||
char *GIFFileName;
|
||||
char *HDFFileName;
|
||||
@@ -81,7 +81,7 @@ main(int argv , char *argc[])
|
||||
if (filesize == 0)
|
||||
printf("File Size Zero");
|
||||
|
||||
if (!(MemGif = StartPos = (BYTE *)malloc((size_t)filesize))) {
|
||||
if (!(MemGif = StartPos = (GIFBYTE *)malloc((size_t)filesize))) {
|
||||
printf("Out of memory");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
#include "gif.h"
|
||||
|
||||
int
|
||||
Gif2Mem(BYTE *MemGif, GIFTOMEM *GifMemoryStruct)
|
||||
Gif2Mem(GIFBYTE *MemGif, GIFTOMEM *GifMemoryStruct)
|
||||
{
|
||||
/*
|
||||
* The gif structure outline for passing data to memory is given in gif.h.
|
||||
@@ -49,22 +49,22 @@ Gif2Mem(BYTE *MemGif, GIFTOMEM *GifMemoryStruct)
|
||||
GIFCOMMENT **gifComment; /* Comment Extension structure */
|
||||
GIFGRAPHICCONTROL **gifGraphicControl; /* Graphic Control Extension strct */
|
||||
|
||||
register WORD i; /* Loop counter */
|
||||
BYTE Identifier; /* Extension block identifier holder */
|
||||
BYTE Label; /* Extension block label holder */
|
||||
BYTE ImageCount; /* Count of the number of images in the file */
|
||||
BYTE ImageArray; /* Keep the size of the array to store Images */
|
||||
BYTE CommentCount;
|
||||
BYTE CommentArray;
|
||||
BYTE ApplicationCount;
|
||||
BYTE ApplicationArray;
|
||||
BYTE PlainTextCount;
|
||||
BYTE PlainTextArray;
|
||||
BYTE GCEflag;
|
||||
BYTE aTemp;
|
||||
BYTE j;
|
||||
BYTE w; /* Two more variables needed only while testing */
|
||||
BYTE *b; /* Endian Ordering */
|
||||
register GIFWORD i; /* Loop counter */
|
||||
GIFBYTE Identifier; /* Extension block identifier holder */
|
||||
GIFBYTE Label; /* Extension block label holder */
|
||||
GIFBYTE ImageCount; /* Count of the number of images in the file */
|
||||
GIFBYTE ImageArray; /* Keep the size of the array to store Images */
|
||||
GIFBYTE CommentCount;
|
||||
GIFBYTE CommentArray;
|
||||
GIFBYTE ApplicationCount;
|
||||
GIFBYTE ApplicationArray;
|
||||
GIFBYTE PlainTextCount;
|
||||
GIFBYTE PlainTextArray;
|
||||
GIFBYTE GCEflag;
|
||||
GIFBYTE aTemp;
|
||||
GIFBYTE j;
|
||||
GIFBYTE w; /* Two more variables needed only while testing */
|
||||
GIFBYTE *b; /* Endian Ordering */
|
||||
|
||||
/* Allocate memory for the GIF structures */
|
||||
/* Plug the structs into GifMemoryStruct at the end */
|
||||
@@ -90,7 +90,7 @@ Gif2Mem(BYTE *MemGif, GIFTOMEM *GifMemoryStruct)
|
||||
|
||||
/* Carry out Endian Testing and set Endian Order */
|
||||
w = 0x0001;
|
||||
b = (BYTE *) &w;
|
||||
b = (GIFBYTE *) &w;
|
||||
EndianOrder = (b[0] ? 1 : 0);
|
||||
|
||||
/* Read the GIF image file header information */
|
||||
@@ -151,7 +151,7 @@ Gif2Mem(BYTE *MemGif, GIFTOMEM *GifMemoryStruct)
|
||||
|
||||
if (ImageCount > ImageArray) {
|
||||
aTemp = ImageArray;
|
||||
ImageArray = (BYTE)((ImageArray << 1) + 1);
|
||||
ImageArray = (GIFBYTE)((ImageArray << 1) + 1);
|
||||
if (!(gifImageDesc = (GIFIMAGEDESC **)realloc(gifImageDesc,
|
||||
sizeof(GIFIMAGEDESC *) * ImageArray))) {
|
||||
printf("Out of memory!");
|
||||
@@ -218,7 +218,7 @@ Gif2Mem(BYTE *MemGif, GIFTOMEM *GifMemoryStruct)
|
||||
PlainTextCount++;
|
||||
|
||||
if (PlainTextCount > PlainTextArray)
|
||||
PlainTextArray = (BYTE)((PlainTextArray << 1) + 1);
|
||||
PlainTextArray = (GIFBYTE)((PlainTextArray << 1) + 1);
|
||||
|
||||
if (!(gifPlainText = (GIFPLAINTEXT **)realloc(gifPlainText , sizeof(GIFPLAINTEXT *) * PlainTextArray))) {
|
||||
printf("Out of memory!");
|
||||
@@ -240,7 +240,7 @@ Gif2Mem(BYTE *MemGif, GIFTOMEM *GifMemoryStruct)
|
||||
CommentCount++;
|
||||
|
||||
if (CommentCount > CommentArray)
|
||||
CommentArray = (BYTE)((CommentArray << 1) + 1);
|
||||
CommentArray = (GIFBYTE)((CommentArray << 1) + 1);
|
||||
|
||||
if (!(gifComment = (GIFCOMMENT **)realloc(gifComment , sizeof(GIFCOMMENT *) * CommentArray))) {
|
||||
printf("Out of memory!");
|
||||
@@ -267,7 +267,7 @@ Gif2Mem(BYTE *MemGif, GIFTOMEM *GifMemoryStruct)
|
||||
|
||||
if (ImageCount > ImageArray) {
|
||||
aTemp = ImageArray;
|
||||
ImageArray = (BYTE)((ImageArray << 1) + 1);
|
||||
ImageArray = (GIFBYTE)((ImageArray << 1) + 1);
|
||||
|
||||
if (!(gifGraphicControl = (GIFGRAPHICCONTROL **)realloc(gifGraphicControl , sizeof(GIFGRAPHICCONTROL *) * ImageArray))) {
|
||||
printf("Out of memory!");
|
||||
@@ -306,7 +306,7 @@ Gif2Mem(BYTE *MemGif, GIFTOMEM *GifMemoryStruct)
|
||||
ApplicationCount++;
|
||||
|
||||
if (ApplicationCount > ApplicationArray)
|
||||
ApplicationArray = (BYTE)((ApplicationArray << 1) + 1);
|
||||
ApplicationArray = (GIFBYTE)((ApplicationArray << 1) + 1);
|
||||
|
||||
if (!(gifApplication = (GIFAPPLICATION **)realloc(gifApplication , sizeof(GIFAPPLICATION *) * ApplicationArray))) {
|
||||
printf("Out of memory!");
|
||||
|
||||
@@ -17,33 +17,33 @@
|
||||
|
||||
int EndianOrder;
|
||||
|
||||
static BYTE *ReadDataSubBlocks(BYTE **MemGif2, WORD *DSize);
|
||||
static GIFBYTE *ReadDataSubBlocks(GIFBYTE **MemGif2, GIFWORD *DSize);
|
||||
|
||||
WORD
|
||||
GetWord(BYTE *MemGif)
|
||||
GIFWORD
|
||||
GetWord(GIFBYTE *MemGif)
|
||||
{
|
||||
WORD w;
|
||||
GIFWORD w;
|
||||
|
||||
if (EndianOrder == 1) {
|
||||
/* LittleEndian */
|
||||
w = (WORD) (*MemGif++ & 0xFF);
|
||||
w |= (WORD) ((*MemGif++ & 0xFF) << 0x08);
|
||||
w = (GIFWORD) (*MemGif++ & 0xFF);
|
||||
w |= (GIFWORD) ((*MemGif++ & 0xFF) << 0x08);
|
||||
} else {
|
||||
w = (WORD) (*MemGif++ & 0xFF);
|
||||
w = ((WORD) (*MemGif++ & 0xFF)) | (w << 0x08);
|
||||
w = (GIFWORD) (*MemGif++ & 0xFF);
|
||||
w = ((GIFWORD) (*MemGif++ & 0xFF)) | (w << 0x08);
|
||||
}
|
||||
|
||||
return w;
|
||||
}
|
||||
|
||||
BYTE
|
||||
GetByte(BYTE *MemGif)
|
||||
GIFBYTE
|
||||
GetByte(GIFBYTE *MemGif)
|
||||
{
|
||||
return *MemGif;
|
||||
}
|
||||
|
||||
/*
|
||||
* Read a GIF image BYTE Header.
|
||||
* Read a GIF image GIFBYTE Header.
|
||||
*
|
||||
* This function reads the Header, Logical Screen Descriptor, and
|
||||
* Global Color Table (if any) from a GIF image file. The information
|
||||
@@ -54,10 +54,10 @@ GetByte(BYTE *MemGif)
|
||||
*/
|
||||
int
|
||||
ReadGifHeader(GIFHEAD *GifHead, /* Pointer to GIF header structure */
|
||||
BYTE **MemGif2) /* GIF image file input FILE stream */
|
||||
GIFBYTE **MemGif2) /* GIF image file input FILE stream */
|
||||
{
|
||||
WORD i; /* Loop counter */
|
||||
WORD tableSize; /* Number of entires in the Global Color Table */
|
||||
GIFWORD i; /* Loop counter */
|
||||
GIFWORD tableSize; /* Number of entires in the Global Color Table */
|
||||
|
||||
GifHead->TableSize = 0;
|
||||
for (i = 0 ; i < 6 ; i++) {
|
||||
@@ -78,7 +78,7 @@ ReadGifHeader(GIFHEAD *GifHead, /* Pointer to GIF header structure */
|
||||
/* Check if a Global Color Table is present */
|
||||
if (GifHead->PackedField & 0x80) {
|
||||
/* Read number of color table entries */
|
||||
tableSize = (WORD) (1L << ((GifHead->PackedField & 0x07) + 1));
|
||||
tableSize = (GIFWORD) (1L << ((GifHead->PackedField & 0x07) + 1));
|
||||
GifHead->TableSize = tableSize;
|
||||
|
||||
/* Read the Global Color Table */
|
||||
@@ -122,13 +122,13 @@ ReadGifHeader(GIFHEAD *GifHead, /* Pointer to GIF header structure */
|
||||
int
|
||||
ReadGifImageDesc(
|
||||
GIFIMAGEDESC *GifImageDesc, /* Pointer to GIF image descriptor structure */
|
||||
BYTE **MemGif2 /* GIF image file input FILE stream */
|
||||
GIFBYTE **MemGif2 /* GIF image file input FILE stream */
|
||||
)
|
||||
{
|
||||
WORD i; /* Loop counter */
|
||||
WORD tableSize; /* Number of entries in the Local Color Table */
|
||||
/* BYTE Interlace; */ /* PackedField & 0x20 gives information on interlacing */
|
||||
BYTE *TempPtr;
|
||||
GIFWORD i; /* Loop counter */
|
||||
GIFWORD tableSize; /* Number of entries in the Local Color Table */
|
||||
/* GIFBYTE Interlace; */ /* PackedField & 0x20 gives information on interlacing */
|
||||
GIFBYTE *TempPtr;
|
||||
int ch , ch1;
|
||||
|
||||
GifImageDesc->TableSize = 0;
|
||||
@@ -145,20 +145,20 @@ ReadGifImageDesc(
|
||||
|
||||
if (EndianOrder == 1) /* LittleEndian */
|
||||
{
|
||||
GifImageDesc->ImageWidth = (WORD) (GifImageDesc->GIDDump[4] & 0xFF);
|
||||
GifImageDesc->ImageWidth |= (WORD) ((GifImageDesc->GIDDump[5] & 0xFF) << 0x08);
|
||||
GifImageDesc->ImageWidth = (GIFWORD) (GifImageDesc->GIDDump[4] & 0xFF);
|
||||
GifImageDesc->ImageWidth |= (GIFWORD) ((GifImageDesc->GIDDump[5] & 0xFF) << 0x08);
|
||||
|
||||
GifImageDesc->ImageHeight = (WORD) (GifImageDesc->GIDDump[6] & 0xFF);
|
||||
GifImageDesc->ImageHeight |= (WORD) ((GifImageDesc->GIDDump[7] & 0xFF) << 0x08);
|
||||
GifImageDesc->ImageHeight = (GIFWORD) (GifImageDesc->GIDDump[6] & 0xFF);
|
||||
GifImageDesc->ImageHeight |= (GIFWORD) ((GifImageDesc->GIDDump[7] & 0xFF) << 0x08);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
GifImageDesc->ImageWidth = (WORD) (GifImageDesc->GIDDump[4] & 0xFF);
|
||||
GifImageDesc->ImageWidth = ((WORD) (GifImageDesc->GIDDump[5] & 0xFF)) | (GifImageDesc->ImageWidth << 0x08);
|
||||
GifImageDesc->ImageWidth = (GIFWORD) (GifImageDesc->GIDDump[4] & 0xFF);
|
||||
GifImageDesc->ImageWidth = ((GIFWORD) (GifImageDesc->GIDDump[5] & 0xFF)) | (GifImageDesc->ImageWidth << 0x08);
|
||||
|
||||
GifImageDesc->ImageHeight = (WORD) (GifImageDesc->GIDDump[6] & 0xFF);
|
||||
GifImageDesc->ImageHeight = ((WORD) (GifImageDesc->GIDDump[7] & 0xFF)) | (GifImageDesc->ImageWidth << 0x08);
|
||||
GifImageDesc->ImageHeight = (GIFWORD) (GifImageDesc->GIDDump[6] & 0xFF);
|
||||
GifImageDesc->ImageHeight = ((GIFWORD) (GifImageDesc->GIDDump[7] & 0xFF)) | (GifImageDesc->ImageWidth << 0x08);
|
||||
|
||||
|
||||
}
|
||||
@@ -171,7 +171,7 @@ ReadGifImageDesc(
|
||||
if (GifImageDesc->PackedField & 0x80)
|
||||
{
|
||||
/* Read number of color table entries */
|
||||
tableSize = (WORD) (1L << ((GifImageDesc->PackedField & 0x07) + 1));
|
||||
tableSize = (GIFWORD) (1L << ((GifImageDesc->PackedField & 0x07) + 1));
|
||||
GifImageDesc->TableSize = tableSize;
|
||||
/* Read the Local Color Table */
|
||||
for (i = 0; i < tableSize; i++)
|
||||
@@ -185,10 +185,10 @@ ReadGifImageDesc(
|
||||
/*
|
||||
** Get LZW minimum Code Size
|
||||
*/
|
||||
GifImageDesc->CodeSize = (WORD)*(*MemGif2)++;
|
||||
GifImageDesc->CodeSize = (GIFWORD)*(*MemGif2)++;
|
||||
|
||||
/*GifImageDesc->GIFImage = ReadDataSubBlocks(FpGif);*/
|
||||
if (!(GifImageDesc->GIFImage = (BYTE *)malloc((GifImageDesc->ImageWidth) * (GifImageDesc->ImageHeight)))) {
|
||||
if (!(GifImageDesc->GIFImage = (GIFBYTE *)malloc((GifImageDesc->ImageWidth) * (GifImageDesc->ImageHeight)))) {
|
||||
printf("Out of memory");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
@@ -219,7 +219,7 @@ ReadGifImageDesc(
|
||||
int
|
||||
ReadGifGraphicControl(
|
||||
GIFGRAPHICCONTROL *GifGraphicControl, /* Pointer to GC Extension structure */
|
||||
BYTE **MemGif2 /* GIF image file input FILE stream */
|
||||
GIFBYTE **MemGif2 /* GIF image file input FILE stream */
|
||||
)
|
||||
{
|
||||
int i;
|
||||
@@ -244,7 +244,7 @@ ReadGifGraphicControl(
|
||||
int
|
||||
ReadGifPlainText(
|
||||
GIFPLAINTEXT *GifPlainText, /* Pointer to Plain Text Extension structure */
|
||||
BYTE **MemGif2 /* GIF image file input FILE stream */
|
||||
GIFBYTE **MemGif2 /* GIF image file input FILE stream */
|
||||
)
|
||||
{
|
||||
int i;
|
||||
@@ -283,7 +283,7 @@ ReadGifPlainText(
|
||||
int
|
||||
ReadGifApplication(
|
||||
GIFAPPLICATION *GifApplication, /* Pointer to Application Extension structure */
|
||||
BYTE **MemGif2 /* GIF image file input FILE stream */
|
||||
GIFBYTE **MemGif2 /* GIF image file input FILE stream */
|
||||
)
|
||||
{
|
||||
int i;
|
||||
@@ -321,7 +321,7 @@ ReadGifApplication(
|
||||
int
|
||||
ReadGifComment(
|
||||
GIFCOMMENT *GifComment, /* Pointer to GIF Comment Extension structure */
|
||||
BYTE **MemGif2 /* GIF image file input FILE stream */
|
||||
GIFBYTE **MemGif2 /* GIF image file input FILE stream */
|
||||
)
|
||||
{
|
||||
|
||||
@@ -345,14 +345,14 @@ ReadGifComment(
|
||||
** Returns: A NULL pointer if a memory allocation error occured,
|
||||
** otherwise a valid pointer if no error occured.
|
||||
*/
|
||||
static BYTE *
|
||||
ReadDataSubBlocks(BYTE **MemGif2, /* GIF image file input FILE stream */
|
||||
WORD *DSize)
|
||||
static GIFBYTE *
|
||||
ReadDataSubBlocks(GIFBYTE **MemGif2, /* GIF image file input FILE stream */
|
||||
GIFWORD *DSize)
|
||||
{
|
||||
BYTE *ptr1; /* Pointer used to "walk the heap" */
|
||||
BYTE *ptr2; /* Pointer used to mark the top of the heap */
|
||||
BYTE dataSize; /* Size of the current data sub-block being read */
|
||||
WORD bufSize; /* Total size of the Plain Text data buffer */
|
||||
GIFBYTE *ptr1; /* Pointer used to "walk the heap" */
|
||||
GIFBYTE *ptr2; /* Pointer used to mark the top of the heap */
|
||||
GIFBYTE dataSize; /* Size of the current data sub-block being read */
|
||||
GIFWORD bufSize; /* Total size of the Plain Text data buffer */
|
||||
int tempcount = 0;
|
||||
|
||||
bufSize = 0; /* The output buffer is empty */
|
||||
@@ -360,9 +360,9 @@ ReadDataSubBlocks(BYTE **MemGif2, /* GIF image file input FILE stream
|
||||
dataSize = *(*MemGif2)++; /* Get the size of the first sub-block */
|
||||
|
||||
/* Allocate initial data buffer */
|
||||
if (!(ptr1 = ptr2 = (BYTE *) malloc((size_t)dataSize + 1))) {
|
||||
if (!(ptr1 = ptr2 = (GIFBYTE *) malloc((size_t)dataSize + 1))) {
|
||||
printf("Out of memory. Allocation of memory for data sub-blocks for\neither Comment, Plain Text or Application Extensions failed");
|
||||
return((BYTE *) NULL);
|
||||
return((GIFBYTE *) NULL);
|
||||
}
|
||||
for (;;)
|
||||
{
|
||||
@@ -381,8 +381,8 @@ ReadDataSubBlocks(BYTE **MemGif2, /* GIF image file input FILE stream
|
||||
break; /* Block Terminator encountered */
|
||||
|
||||
/* Increase the buffer size to accomodate the next sub-block */
|
||||
if (!(ptr1 = ptr2 = (BYTE *) realloc(ptr2, bufSize + dataSize + 1)))
|
||||
return((BYTE *) NULL);
|
||||
if (!(ptr1 = ptr2 = (GIFBYTE *) realloc(ptr2, bufSize + dataSize + 1)))
|
||||
return((GIFBYTE *) NULL);
|
||||
|
||||
|
||||
ptr1 += bufSize; /* Move pointer to the end of the data */
|
||||
|
||||
@@ -45,20 +45,20 @@ usage(void)
|
||||
FILE *fpGif = NULL;
|
||||
int main(int argc , char **argv)
|
||||
{
|
||||
BYTE *Image;
|
||||
GIFBYTE *Image;
|
||||
void *edata;
|
||||
H5E_auto2_t func;
|
||||
|
||||
/* compression structs */
|
||||
CHAR *HDFName = NULL;
|
||||
CHAR *GIFName = NULL;
|
||||
GIFCHAR *HDFName = NULL;
|
||||
GIFCHAR *GIFName = NULL;
|
||||
|
||||
BYTE* b;
|
||||
GIFBYTE* b;
|
||||
|
||||
BYTE GlobalPalette[256][3];
|
||||
BYTE Red[256];
|
||||
BYTE Green[256];
|
||||
BYTE Blue[256];
|
||||
GIFBYTE GlobalPalette[256][3];
|
||||
GIFBYTE Red[256];
|
||||
GIFBYTE Green[256];
|
||||
GIFBYTE Blue[256];
|
||||
|
||||
int RWidth, RHeight;
|
||||
int ColorMapSize, InitCodeSize, Background, BitsPerPixel;
|
||||
@@ -66,7 +66,7 @@ int main(int argc , char **argv)
|
||||
int i;
|
||||
int numcols = 0;
|
||||
|
||||
BYTE pc2nc[256] , r1[256] , g1[256] , b1[256];
|
||||
GIFBYTE pc2nc[256] , r1[256] , g1[256] , b1[256];
|
||||
|
||||
int arg_index = 2;
|
||||
int bool_is_image = 0; /* 0 = false , 1 = true */
|
||||
@@ -110,7 +110,7 @@ int main(int argc , char **argv)
|
||||
{
|
||||
/* allocate space to store the image name */
|
||||
size_t len = strlen(argv[arg_index]);
|
||||
image_name = (CHAR*) malloc( len + 1);
|
||||
image_name = (GIFCHAR*) malloc( len + 1);
|
||||
strcpy(image_name , argv[arg_index]);
|
||||
|
||||
bool_is_image = 0;
|
||||
@@ -125,7 +125,7 @@ int main(int argc , char **argv)
|
||||
|
||||
/* Do Endian Order testing and set Endian Order */
|
||||
idx = 0x0001;
|
||||
b = (BYTE *) &idx;
|
||||
b = (GIFBYTE *) &idx;
|
||||
EndianOrder = (b[0] ? 1:0);
|
||||
|
||||
if (!(fpGif = fopen(GIFName , "wb")))
|
||||
@@ -164,7 +164,7 @@ int main(int argc , char **argv)
|
||||
goto out;
|
||||
}
|
||||
|
||||
Image = (BYTE*) malloc( (size_t) width * (size_t) height );
|
||||
Image = (GIFBYTE*) malloc( (size_t) width * (size_t) height );
|
||||
|
||||
if ( H5IMread_image( fid, image_name, Image ) < 0 )
|
||||
goto out;
|
||||
@@ -174,7 +174,7 @@ int main(int argc , char **argv)
|
||||
if ( H5IMget_palette_info( fid, image_name, 0, pal_dims ) < 0 )
|
||||
goto out;
|
||||
|
||||
pal = (BYTE*) malloc( (size_t) pal_dims[0] * (size_t) pal_dims[1] );
|
||||
pal = (GIFBYTE*) malloc( (size_t) pal_dims[0] * (size_t) pal_dims[1] );
|
||||
|
||||
if ( H5IMget_palette( fid, image_name, 0, pal ) < 0 )
|
||||
goto out;
|
||||
@@ -211,9 +211,9 @@ int main(int argc , char **argv)
|
||||
numcols = 256;
|
||||
for (i = 0 ; i < numcols ; i++)
|
||||
{
|
||||
Red[i] = (BYTE)(255 - i);
|
||||
Green[i] = (BYTE)(255 - i);
|
||||
Blue[i] = (BYTE)(255 - i);
|
||||
Red[i] = (GIFBYTE)(255 - i);
|
||||
Green[i] = (GIFBYTE)(255 - i);
|
||||
Blue[i] = (GIFBYTE)(255 - i);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -246,7 +246,7 @@ int main(int argc , char **argv)
|
||||
if (j==i)
|
||||
{
|
||||
/* wasn't found */
|
||||
pc2nc[i] = (BYTE)nc;
|
||||
pc2nc[i] = (GIFBYTE)nc;
|
||||
r1[nc] = Red[i];
|
||||
g1[nc] = Green[i];
|
||||
b1[nc] = Blue[i];
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
|
||||
#include "gif.h"
|
||||
|
||||
typedef BYTE byte;
|
||||
typedef GIFBYTE byte;
|
||||
typedef long int count_int;
|
||||
|
||||
#ifdef __STDC__
|
||||
|
||||
@@ -62,9 +62,9 @@ WriteHDF(GIFTOMEM GifMemoryStruct, char *HDFName)
|
||||
/* get some data from gifHead */
|
||||
ImageCount = gifHead.ImageCount;
|
||||
#ifdef UNUSED
|
||||
CommentCount = (WORD)gifHead.CommentCount;
|
||||
ApplicationCount = (WORD)gifHead.ApplicationCount;
|
||||
PlainTextCount = (WORD)gifHead.PlainTextCount;
|
||||
CommentCount = (GIFWORD)gifHead.CommentCount;
|
||||
ApplicationCount = (GIFWORD)gifHead.ApplicationCount;
|
||||
PlainTextCount = (GIFWORD)gifHead.PlainTextCount;
|
||||
#endif /* UNUSED */
|
||||
|
||||
if ((file_id = H5Fcreate(HDFName , H5F_ACC_TRUNC , H5P_DEFAULT , H5P_DEFAULT)) < 0) {
|
||||
|
||||
@@ -492,12 +492,8 @@ Supported Platforms
|
||||
(emu) Sun Fortran 95 8.6 SunOS_sparc
|
||||
Sun C++ 5.12 SunOS_sparc
|
||||
|
||||
Windows 7 Visual Studio 2015 w/ Intel Fortran 18 (cmake)
|
||||
|
||||
Windows 7 x64 Visual Studio 2015 w/ Intel C, Fortran 2018 (cmake)
|
||||
Visual Studio 2015 w/ MSMPI 8 (cmake)
|
||||
|
||||
Windows 10 Visual Studio 2015 w/ Intel Fortran 18 (cmake)
|
||||
Visual Studio 2015 w/ MSMPI 10 (cmake)
|
||||
|
||||
Windows 10 x64 Visual Studio 2015 w/ Intel Fortran 18 (cmake)
|
||||
Visual Studio 2017 w/ Intel Fortran 19 (cmake)
|
||||
|
||||
Reference in New Issue
Block a user