mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-03-25 17:00:45 +08:00
[svn-r3921]
Purpose: Fooling around Description: Added deleted gif.h file
This commit is contained in:
parent
88b6fcfa5d
commit
7cb85190c8
179
hl/tools/gif2h5/gif.h
Normal file
179
hl/tools/gif2h5/gif.h
Normal file
@ -0,0 +1,179 @@
|
||||
/****************************************************************************\
|
||||
** Title: GIF.H **
|
||||
** Purpose: GIF Header file **
|
||||
\****************************************************************************/
|
||||
|
||||
#ifndef GIF_H
|
||||
#define GIF_H 1
|
||||
|
||||
#include <hdf5.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
|
||||
#define MAX_PAL 768
|
||||
|
||||
/*#include "datatype.h" Data type definitions */
|
||||
|
||||
/* set the name length restriction to 64 charachters */
|
||||
#define VSNAMELENMAX 64 /* this is a carryover from HDF4 */
|
||||
|
||||
/* typedef H5T_NATIVE_UINT8 BYTE; */
|
||||
typedef unsigned char BYTE;
|
||||
|
||||
/* typedef H5T_NATIVE_UINT16 WORD; */
|
||||
typedef unsigned long WORD;
|
||||
|
||||
typedef char CHAR;
|
||||
typedef unsigned char boolean;
|
||||
|
||||
#define false 0;
|
||||
#define true 1;
|
||||
|
||||
/* Set the EndianOrder.
|
||||
** The GIF Reader file should do this.
|
||||
** Set EndianOrder = 0 if machine is little endian
|
||||
** EndianOrder = 1 if machine is big endian.
|
||||
*/
|
||||
extern int EndianOrder;
|
||||
|
||||
/*
|
||||
** The GIF header format.
|
||||
**
|
||||
** This structure actually contains the header, logical screen
|
||||
** 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 */
|
||||
} GIFHEAD;
|
||||
|
||||
|
||||
/*
|
||||
** 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 */
|
||||
|
||||
BYTE *Image; /* Decompressed Raster Image */
|
||||
BYTE *GIFImage;
|
||||
} GIFIMAGEDESC;
|
||||
|
||||
|
||||
/*
|
||||
** GIF 89a Graphic Control Extension Block
|
||||
*/
|
||||
typedef struct _GifGraphicControlExtension
|
||||
{
|
||||
BYTE 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;
|
||||
} GIFPLAINTEXT;
|
||||
|
||||
|
||||
/*
|
||||
** GIF 89a Application Extension Block
|
||||
*/
|
||||
typedef struct _GifApplicationExtension
|
||||
{
|
||||
BYTE AEDump[14]; /* Application Extension Dump */
|
||||
BYTE *ApplicationData; /* Application data sub-blocks */
|
||||
WORD 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) */
|
||||
} GIFCOMMENT;
|
||||
|
||||
/*
|
||||
** GIF to HDF Memory Struct
|
||||
** Purpose : The gif to hdf structure is used to pass all the
|
||||
** gif data to the memory, which gets caught by the hdf driver
|
||||
** Its the drivers job to put the data in the appropriate places
|
||||
** in the HDF file.
|
||||
** I have assumed that the ImageDescriptors and GraphicControls follow
|
||||
** one another, ie. I have not associated them with each other. The driver
|
||||
** must assume a 1-1 correspondance. The same discussion with plain text
|
||||
** extension.
|
||||
*/
|
||||
typedef struct _GifToMem
|
||||
{
|
||||
GIFHEAD *GifHeader;
|
||||
GIFIMAGEDESC **GifImageDesc;
|
||||
GIFGRAPHICCONTROL **GifGraphicControlExtension;
|
||||
GIFPLAINTEXT **GifPlainTextExtension;
|
||||
GIFAPPLICATION **GifApplicationExtension;
|
||||
GIFCOMMENT **GifCommentExtension;
|
||||
} GIFTOMEM;
|
||||
|
||||
|
||||
/*
|
||||
** Function Prototypes
|
||||
*/
|
||||
/* GIF2MEM.C */
|
||||
GIFTOMEM Gif2Mem(BYTE *);
|
||||
|
||||
/* 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 **);
|
||||
|
||||
/* WRITEHDF.C */
|
||||
int WriteHDF(GIFTOMEM , CHAR * , CHAR *);
|
||||
|
||||
/* 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
|
||||
** 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);
|
||||
|
||||
BYTE *ReadDataSubBlocks(BYTE ** , WORD *);
|
||||
BYTE *Decompress (GIFIMAGEDESC * , GIFHEAD *);
|
||||
BYTE GetByte(BYTE *);
|
||||
WORD GetWord(BYTE *);
|
||||
|
||||
void cleanup(BYTE*);
|
||||
#endif /* GIF_H */
|
||||
|
179
tools/gifconv/gif.h
Normal file
179
tools/gifconv/gif.h
Normal file
@ -0,0 +1,179 @@
|
||||
/****************************************************************************\
|
||||
** Title: GIF.H **
|
||||
** Purpose: GIF Header file **
|
||||
\****************************************************************************/
|
||||
|
||||
#ifndef GIF_H
|
||||
#define GIF_H 1
|
||||
|
||||
#include <hdf5.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
|
||||
#define MAX_PAL 768
|
||||
|
||||
/*#include "datatype.h" Data type definitions */
|
||||
|
||||
/* set the name length restriction to 64 charachters */
|
||||
#define VSNAMELENMAX 64 /* this is a carryover from HDF4 */
|
||||
|
||||
/* typedef H5T_NATIVE_UINT8 BYTE; */
|
||||
typedef unsigned char BYTE;
|
||||
|
||||
/* typedef H5T_NATIVE_UINT16 WORD; */
|
||||
typedef unsigned long WORD;
|
||||
|
||||
typedef char CHAR;
|
||||
typedef unsigned char boolean;
|
||||
|
||||
#define false 0;
|
||||
#define true 1;
|
||||
|
||||
/* Set the EndianOrder.
|
||||
** The GIF Reader file should do this.
|
||||
** Set EndianOrder = 0 if machine is little endian
|
||||
** EndianOrder = 1 if machine is big endian.
|
||||
*/
|
||||
extern int EndianOrder;
|
||||
|
||||
/*
|
||||
** The GIF header format.
|
||||
**
|
||||
** This structure actually contains the header, logical screen
|
||||
** 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 */
|
||||
} GIFHEAD;
|
||||
|
||||
|
||||
/*
|
||||
** 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 */
|
||||
|
||||
BYTE *Image; /* Decompressed Raster Image */
|
||||
BYTE *GIFImage;
|
||||
} GIFIMAGEDESC;
|
||||
|
||||
|
||||
/*
|
||||
** GIF 89a Graphic Control Extension Block
|
||||
*/
|
||||
typedef struct _GifGraphicControlExtension
|
||||
{
|
||||
BYTE 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;
|
||||
} GIFPLAINTEXT;
|
||||
|
||||
|
||||
/*
|
||||
** GIF 89a Application Extension Block
|
||||
*/
|
||||
typedef struct _GifApplicationExtension
|
||||
{
|
||||
BYTE AEDump[14]; /* Application Extension Dump */
|
||||
BYTE *ApplicationData; /* Application data sub-blocks */
|
||||
WORD 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) */
|
||||
} GIFCOMMENT;
|
||||
|
||||
/*
|
||||
** GIF to HDF Memory Struct
|
||||
** Purpose : The gif to hdf structure is used to pass all the
|
||||
** gif data to the memory, which gets caught by the hdf driver
|
||||
** Its the drivers job to put the data in the appropriate places
|
||||
** in the HDF file.
|
||||
** I have assumed that the ImageDescriptors and GraphicControls follow
|
||||
** one another, ie. I have not associated them with each other. The driver
|
||||
** must assume a 1-1 correspondance. The same discussion with plain text
|
||||
** extension.
|
||||
*/
|
||||
typedef struct _GifToMem
|
||||
{
|
||||
GIFHEAD *GifHeader;
|
||||
GIFIMAGEDESC **GifImageDesc;
|
||||
GIFGRAPHICCONTROL **GifGraphicControlExtension;
|
||||
GIFPLAINTEXT **GifPlainTextExtension;
|
||||
GIFAPPLICATION **GifApplicationExtension;
|
||||
GIFCOMMENT **GifCommentExtension;
|
||||
} GIFTOMEM;
|
||||
|
||||
|
||||
/*
|
||||
** Function Prototypes
|
||||
*/
|
||||
/* GIF2MEM.C */
|
||||
GIFTOMEM Gif2Mem(BYTE *);
|
||||
|
||||
/* 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 **);
|
||||
|
||||
/* WRITEHDF.C */
|
||||
int WriteHDF(GIFTOMEM , CHAR * , CHAR *);
|
||||
|
||||
/* 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
|
||||
** 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);
|
||||
|
||||
BYTE *ReadDataSubBlocks(BYTE ** , WORD *);
|
||||
BYTE *Decompress (GIFIMAGEDESC * , GIFHEAD *);
|
||||
BYTE GetByte(BYTE *);
|
||||
WORD GetWord(BYTE *);
|
||||
|
||||
void cleanup(BYTE*);
|
||||
#endif /* GIF_H */
|
||||
|
Loading…
x
Reference in New Issue
Block a user