ReactOS 0.4.15-dev-8390-g075894b
ungif.h
Go to the documentation of this file.
1/*
2 * Gif extracting routines - derived from libungif
3 *
4 * Portions Copyright 2006 Mike McCormack
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 */
20
21/*
22 * Original copyright notice:
23 *
24 * The GIFLIB distribution is Copyright (c) 1997 Eric S. Raymond
25 *
26 * Permission is hereby granted, free of charge, to any person obtaining a copy
27 * of this software and associated documentation files (the "Software"), to deal
28 * in the Software without restriction, including without limitation the rights
29 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
30 * copies of the Software, and to permit persons to whom the Software is
31 * furnished to do so, subject to the following conditions:
32 *
33 * The above copyright notice and this permission notice shall be included in
34 * all copies or substantial portions of the Software.
35 */
36
37/******************************************************************************
38 * In order to make life a little bit easier when using the GIF file format,
39 * this library was written, and which does all the dirty work...
40 *
41 * Written by Gershon Elber, Jun. 1989
42 * Hacks by Eric S. Raymond, Sep. 1992
43 ******************************************************************************
44 * History:
45 * 14 Jun 89 - Version 1.0 by Gershon Elber.
46 * 3 Sep 90 - Version 1.1 by Gershon Elber (Support for Gif89, Unique names)
47 * 15 Sep 90 - Version 2.0 by Eric S. Raymond (Changes to support GIF slurp)
48 * 26 Jun 96 - Version 3.0 by Eric S. Raymond (Full GIF89 support)
49 * 17 Dec 98 - Version 4.0 by Toshio Kuratomi (Fix extension writing code)
50 *****************************************************************************/
51
52#ifndef _UNGIF_H_
53#define _UNGIF_H_ 1
54
55#define GIF_ERROR 0
56#define GIF_OK 1
57
58#ifndef TRUE
59#define TRUE 1
60#endif /* TRUE */
61#ifndef FALSE
62#define FALSE 0
63#endif /* FALSE */
64
65#ifndef NULL
66#define NULL 0
67#endif /* NULL */
68
69#define GIF_STAMP "GIFVER" /* First chars in file - GIF stamp. */
70#define GIF_STAMP_LEN sizeof(GIF_STAMP) - 1
71#define GIF_VERSION_POS 3 /* Version first character in stamp. */
72#define GIF87_STAMP "GIF87a" /* First chars in file - GIF stamp. */
73#define GIF89_STAMP "GIF89a" /* First chars in file - GIF stamp. */
74
75#define GIF_FILE_BUFFER_SIZE 16384 /* Files uses bigger buffers than usual. */
76
77typedef int GifBooleanType;
78typedef unsigned char GifPixelType;
79typedef unsigned char *GifRowType;
80typedef unsigned char GifByteType;
81typedef unsigned int GifPrefixType;
82typedef int GifWord;
83
84typedef struct GifColorType {
87
88typedef struct ColorMapObject {
94
95typedef struct GifImageDesc {
96 GifWord Left, Top, Width, Height, /* Current image dimensions. */
97 Interlace; /* Sequential/Interlaced lines. */
98 ColorMapObject *ColorMap; /* The local color map */
100
101/* This is the in-core version of an extension record */
102typedef struct {
103 int Function; /* Holds the type of the Extension block. */
105 char *Bytes;
107
108typedef struct {
109 int Function; /* DEPRECATED: Use ExtensionBlocks[x].Function instead */
112} Extensions;
113
114typedef struct GifFileType {
115 GifWord SWidth, SHeight, /* Screen dimensions. */
116 SColorResolution, /* How many colors can we generate? */
117 SBackGroundColor, /* I hope you understand this one... */
118 SAspectRatio; /* Pixel aspect ratio, in 1/64 units, starting at 1:4. */
119 ColorMapObject *SColorMap; /* NULL if not exists. */
121 int ImageCount; /* Number of current image */
122 GifImageDesc Image; /* Block describing current image */
123 struct SavedImage *SavedImages; /* Use this to accumulate file state */
124 void *UserData; /* hook to attach user data (TVT) */
125 void *Private; /* Don't mess with this! */
127
128typedef enum {
131 IMAGE_DESC_RECORD_TYPE, /* Begin with ',' */
132 EXTENSION_RECORD_TYPE, /* Begin with '!' */
133 TERMINATE_RECORD_TYPE /* Begin with ';' */
135
136/* func type to read gif data from arbitrary sources (TVT) */
138
139/* GIF89 extension function codes */
140
141#define COMMENT_EXT_FUNC_CODE 0xfe /* comment */
142#define GRAPHICS_EXT_FUNC_CODE 0xf9 /* graphics control */
143#define PLAINTEXT_EXT_FUNC_CODE 0x01 /* plaintext */
144#define APPLICATION_EXT_FUNC_CODE 0xff /* application block */
145
146/* public interface to ungif.c */
148GifFileType *DGifOpen(void *userPtr, InputFunc readFunc) DECLSPEC_HIDDEN;
150
151#define D_GIF_ERR_OPEN_FAILED 101 /* And DGif possible errors. */
152#define D_GIF_ERR_READ_FAILED 102
153#define D_GIF_ERR_NOT_GIF_FILE 103
154#define D_GIF_ERR_NO_SCRN_DSCR 104
155#define D_GIF_ERR_NO_IMAG_DSCR 105
156#define D_GIF_ERR_NO_COLOR_MAP 106
157#define D_GIF_ERR_WRONG_RECORD 107
158#define D_GIF_ERR_DATA_TOO_BIG 108
159#define D_GIF_ERR_NOT_ENOUGH_MEM 109
160#define D_GIF_ERR_CLOSE_FAILED 110
161#define D_GIF_ERR_NOT_READABLE 111
162#define D_GIF_ERR_IMAGE_DEFECT 112
163#define D_GIF_ERR_EOF_TOO_SOON 113
164
165/******************************************************************************
166 * Support for the in-core structures allocation (slurp mode).
167 *****************************************************************************/
168
169/* This holds an image header, its unpacked raster bits, and extensions */
170typedef struct SavedImage {
172 unsigned char *RasterBits;
175
176#endif /* _UNGIF_H_ */
#define DECLSPEC_HIDDEN
Definition: precomp.h:8
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31
GifColorType * Colors
Definition: ungif.h:92
int SortFlag
Definition: ungif.h:91
int BitsPerPixel
Definition: ungif.h:90
int ColorCount
Definition: ungif.h:89
char * Bytes
Definition: ungif.h:105
int ByteCount
Definition: ungif.h:104
int Function
Definition: ungif.h:103
int Function
Definition: ungif.h:109
ExtensionBlock * ExtensionBlocks
Definition: ungif.h:111
int ExtensionBlockCount
Definition: ungif.h:110
GifByteType Blue
Definition: ungif.h:85
GifByteType Green
Definition: ungif.h:85
GifByteType Red
Definition: ungif.h:85
GifWord SAspectRatio
Definition: ungif.h:118
Extensions Extensions
Definition: ungif.h:120
GifWord SWidth
Definition: ungif.h:115
GifImageDesc Image
Definition: ungif.h:122
struct SavedImage * SavedImages
Definition: ungif.h:123
GifWord SColorResolution
Definition: ungif.h:116
ColorMapObject * SColorMap
Definition: ungif.h:119
void * Private
Definition: ungif.h:125
GifWord SBackGroundColor
Definition: ungif.h:117
GifWord SHeight
Definition: ungif.h:115
int ImageCount
Definition: ungif.h:121
void * UserData
Definition: ungif.h:124
ColorMapObject * ColorMap
Definition: ungif.h:98
GifWord Interlace
Definition: ungif.h:97
GifWord Top
Definition: ungif.h:96
GifWord Left
Definition: ungif.h:96
GifWord Width
Definition: ungif.h:96
GifWord Height
Definition: ungif.h:96
unsigned char * RasterBits
Definition: ungif.h:172
GifImageDesc ImageDesc
Definition: ungif.h:171
Extensions Extensions
Definition: ungif.h:173
GifFileType * DGifOpen(void *userPtr, InputFunc readFunc) DECLSPEC_HIDDEN
Definition: ungif.c:993
unsigned int GifPrefixType
Definition: ungif.h:81
int DGifSlurp(GifFileType *GifFile) DECLSPEC_HIDDEN
Definition: ungif.c:876
int DGifCloseFile(GifFileType *GifFile) DECLSPEC_HIDDEN
Definition: ungif.c:1047
unsigned char GifPixelType
Definition: ungif.h:78
unsigned char GifByteType
Definition: ungif.h:80
GifRecordType
Definition: ungif.h:128
@ EXTENSION_RECORD_TYPE
Definition: ungif.h:132
@ UNDEFINED_RECORD_TYPE
Definition: ungif.h:129
@ IMAGE_DESC_RECORD_TYPE
Definition: ungif.h:131
@ TERMINATE_RECORD_TYPE
Definition: ungif.h:133
@ SCREEN_DESC_RECORD_TYPE
Definition: ungif.h:130
int GifBooleanType
Definition: ungif.h:77
int(* InputFunc)(GifFileType *, GifByteType *, int)
Definition: ungif.h:137
int GifWord
Definition: ungif.h:82
unsigned char * GifRowType
Definition: ungif.h:79