diff options
Diffstat (limited to 'tools/gifconv/gif2hdf.c')
-rw-r--r-- | tools/gifconv/gif2hdf.c | 213 |
1 files changed, 108 insertions, 105 deletions
diff --git a/tools/gifconv/gif2hdf.c b/tools/gifconv/gif2hdf.c index 6b4ae2b..89edb5f 100644 --- a/tools/gifconv/gif2hdf.c +++ b/tools/gifconv/gif2hdf.c @@ -1,113 +1,116 @@ -/* #include <hdf.h> */ -#include "gif.h" +/* + * Copyright (C) 2001 National Center for Supercomputing Applications + * All rights reserved. + */ #include <string.h> #include <stdio.h> #include <stdlib.h> +#include "gif.h" + int main(int argv , char *argc[]) { - - GIFTOMEM GifMemoryStruct; - GIFIMAGEDESC gifImageDesc; - - FILE *fpGif; - - /* replacing int32 with long */ - long i,ImageCount; - long filesize; - - BYTE *MemGif; - BYTE *StartPos; - - /* VSNAMELENMAX is a carryover from HDF4 and is #defined to 256 in gif.h */ - char GIFFileName[VSNAMELENMAX]; - char HDFFileName[VSNAMELENMAX]; - - /* Initialize all GifMemoryStruct pointers to null - ** to prevent hassles later on - */ - GifMemoryStruct.GifHeader = NULL; - GifMemoryStruct.GifImageDesc = NULL; - GifMemoryStruct.GifGraphicControlExtension = NULL; - GifMemoryStruct.GifPlainTextExtension = NULL; - GifMemoryStruct.GifApplicationExtension = NULL; - GifMemoryStruct.GifCommentExtension = NULL; - - - if (argv<3) - { - printf("\n\nWrong Usage. Use:\ngif2hdf <GIFFILE> <HDFFILE>\n\n"); - return(-1); - } - - - - strncpy(GIFFileName , argc[1] , VSNAMELENMAX - 1); - strncpy(HDFFileName , argc[2] , VSNAMELENMAX - 1); - GIFFileName[VSNAMELENMAX - 1] = '\0'; - HDFFileName[VSNAMELENMAX - 1] = '\0'; - - if (!(fpGif = fopen(GIFFileName,"rb"))) { - printf("Unable to open GIF file for reading.\n"); - printf("Filename (including path) must be less than %d charachters in length\n",VSNAMELENMAX); - exit(-1); - } - - /* Get the whole file into memory. Mem's much faster than I/O */ - fseek(fpGif, 0L , 2); - filesize = ftell(fpGif); - fseek(fpGif, 0L , 0); - if (filesize == 0) printf("File Size Zero"); - if (!(MemGif = StartPos = (BYTE *)malloc((size_t)filesize))) { - printf("Out of memory"); - exit (-1); - } - if (fread(MemGif,(size_t)filesize,1,fpGif) != 1) { - printf("Corrupted Input File"); - exit(-1); - } - - fseek(fpGif,0L,0); - - /* - ** Call Gif2Mem and break the whole file into parts. - ** Gif2Mem also calls decompresses the images so we don't - ** have to worry about that - */ - GifMemoryStruct = Gif2Mem(MemGif); - if (ferror(fpGif)) { - printf("File Stream Error\n\n"); - exit(-1); - } - fclose(fpGif); - - /* Call WriteHDF from here. Go ahead and change WriteHDF to write - ** whatever format you want - */ - if (WriteHDF(GifMemoryStruct , argc[2] , argc[1])) - printf("HDF Write Error\n\n"); - - /* Free all buffers */ - /* replacing int32 with long */ - ImageCount = (long)((GifMemoryStruct.GifHeader)->ImageCount); - - for(i = 0 ; i < ImageCount ; i++) - { - gifImageDesc = *(GifMemoryStruct.GifImageDesc[i]); - if (gifImageDesc.Image != NULL) - free(gifImageDesc.Image); - - if (GifMemoryStruct.GifGraphicControlExtension[i] != NULL) - free(GifMemoryStruct.GifGraphicControlExtension[i]); - - } - free(StartPos); - - free (GifMemoryStruct.GifHeader); - - if (GifMemoryStruct.GifApplicationExtension != NULL) - free (GifMemoryStruct.GifApplicationExtension); - - return (0); + GIFTOMEM GifMemoryStruct; + GIFIMAGEDESC gifImageDesc; + + FILE *fpGif; + + /* replacing int32 with long */ + long i, ImageCount; + long filesize; + + BYTE *MemGif; + BYTE *StartPos; + + /* VSNAMELENMAX is a carryover from HDF4 and is #defined to 256 in gif.h */ + char GIFFileName[VSNAMELENMAX]; + char HDFFileName[VSNAMELENMAX]; + + /* + * Initialize all GifMemoryStruct pointers to null to prevent hassles + * later on + */ + GifMemoryStruct.GifHeader = NULL; + GifMemoryStruct.GifImageDesc = NULL; + GifMemoryStruct.GifGraphicControlExtension = NULL; + GifMemoryStruct.GifPlainTextExtension = NULL; + GifMemoryStruct.GifApplicationExtension = NULL; + GifMemoryStruct.GifCommentExtension = NULL; + + if (argv < 3) { + printf("\n\nWrong Usage. Use:\ngif2hdf <GIFFILE> <HDFFILE>\n\n"); + return(-1); + } + + strncpy(GIFFileName , argc[1] , VSNAMELENMAX - 1); + strncpy(HDFFileName , argc[2] , VSNAMELENMAX - 1); + GIFFileName[VSNAMELENMAX - 1] = '\0'; + HDFFileName[VSNAMELENMAX - 1] = '\0'; + + if (!(fpGif = fopen(GIFFileName,"rb"))) { + printf("Unable to open GIF file for reading.\n"); + printf("Filename (including path) must be less than %d charachters in length\n", + VSNAMELENMAX); + exit(-1); + } + + /* Get the whole file into memory. Mem's much faster than I/O */ + fseek(fpGif, 0L , 2); + filesize = ftell(fpGif); + fseek(fpGif, 0L , 0); + + if (filesize == 0) + printf("File Size Zero"); + + if (!(MemGif = StartPos = (BYTE *)malloc((size_t)filesize))) { + printf("Out of memory"); + exit (-1); + } + + if (fread(MemGif,(size_t)filesize,1,fpGif) != 1) { + printf("Corrupted Input File"); + exit(-1); + } + + fseek(fpGif,0L,0); + + /* + * Call Gif2Mem and break the whole file into parts. Gif2Mem also calls + * decompresses the images so we don't have to worry about that + */ + GifMemoryStruct = Gif2Mem(MemGif); + + if (ferror(fpGif)) { + printf("File Stream Error\n\n"); + exit(-1); + } + + fclose(fpGif); + + /* + * Call WriteHDF from here. Go ahead and change WriteHDF to write whatever + * format you want + */ + if (WriteHDF(GifMemoryStruct , argc[2] , argc[1])) + printf("HDF Write Error\n\n"); + + /* Free all buffers */ + /* replacing int32 with long */ + ImageCount = (long)((GifMemoryStruct.GifHeader)->ImageCount); + + for(i = 0; i < ImageCount ; i++) { + gifImageDesc = *(GifMemoryStruct.GifImageDesc[i]); + + if (gifImageDesc.Image != NULL) + free(gifImageDesc.Image); + + if (GifMemoryStruct.GifGraphicControlExtension[i] != NULL) + free(GifMemoryStruct.GifGraphicControlExtension[i]); + } + + free(StartPos); + free(GifMemoryStruct.GifHeader); + free(GifMemoryStruct.GifApplicationExtension); + return 0; } |