summaryrefslogtreecommitdiffstats
path: root/giflib-4.1.6/doc/gif_lib.html
diff options
context:
space:
mode:
Diffstat (limited to 'giflib-4.1.6/doc/gif_lib.html')
-rw-r--r--giflib-4.1.6/doc/gif_lib.html713
1 files changed, 0 insertions, 713 deletions
diff --git a/giflib-4.1.6/doc/gif_lib.html b/giflib-4.1.6/doc/gif_lib.html
deleted file mode 100644
index df2ada4..0000000
--- a/giflib-4.1.6/doc/gif_lib.html
+++ /dev/null
@@ -1,713 +0,0 @@
-<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
-<HTML>
-<HEAD>
-<TITLE>gif_lib</TITLE>
-<link rev=made href=mailto:esr@snark.thyrsus.com>
-</HEAD>
-<BODY>
-Go to <a href="index.html">index page</a>.
-
-<CENTER><H1>The GIFLIB Library</H1></CENTER>
-
-<CENTER><BLOCKQUOTE>
-Gershon Elber, May 1991<BR>
-Eric S. Raymond, Sep 1992<BR>
-Toshio Kuratomi, May 2004<br>
-</BLOCKQUOTE></CENTER>
-
-The Graphics Interchange Format(c) is the Copyright property of
-CompuServe Incorporated. GIF(sm) is a Service Mark property of CompuServe
-Incorporated.<P>
-
-Gershon wrote: "This library was written because I couldn't find
-anything similar and I wanted one. I was inspired by the RLE Utah tool kit,
-which I hoped to port to an IBM PC, but found it to be too machine specific,
-and its compression ratio too low. I compromised on the GIF format, but I am
-not sure how long 8 bits per pixel will be enough."<P>
-
-This document explains the GIF library code in directory `lib'. The
-code is collected into libgif.a which is used in all the utilities in
-`util'. It can be used in any application needs to read/write the GIF
-file format. This document does </em>not</em> explain the GIF file
-format and assumes you know it, at least to the level of the GIF file
-structure.<P>
-
-When a GIF file is opened, a GIF file descriptor is created which
-is a pointer to GifFileType structure as follows:<P>
-
-<pre><code>
-typedef struct GifFileType {
- int SWidth, SHeight, /* Screen dimensions. */
- SColorResolution, /* How many colors can we generate? */
- SBackGroundColor; /* I hope you understand this one... */
- ColorMapObject *SColorMap; /* NULL if not exists. */
- int ImageCount; /* Number of current image */
- GifImageDesc Image; /* Block describing current image */
- struct SavedImage *SavedImages; /* Use this to accumulate file state */
- VoidPtr Private; /* The regular user should not mess with this one! */
-} GifFileType;
-</code></pre>
-
-This structure was copied from gif_lib.h - the header file for the GIF
-library. Any application program that uses the libgif.a library should
-include it. Members beginning with S refer to GIF Screen; others hold
-properties of the current image (a GIF file may have more than one image)
-or point to allocated store used by various routines.<P>
-
-The user almost never writes into this structure (exception: it may
-occasionally useful to alter things in the SavedImages array), but can read
-any of these items at any time it is valid (image information is invalid
-until first image was read/write).<P>
-
-As the library needs to keep its own internal data, a Private pointer
-to hidden data is included. Applications should ignore this item.<P>
-
-The library has no static data. This means that it is fully reentrant
-and any number of GIF files (up to memory limits) can be opened for
-read/write. Instead of the static data, internal structure pointed by the
-Private pointer is used.<P>
-
-The library allocates its own memory dynamically, on opening of files,
-and releases that once closed. The user is never required to allocate
-any memory for any of the functions of this library nor to free them
-directly.<P>
-
-In order to reduce disk access, the file buffer is increased to
-FILE_BUFFER_SIZE (defined in gif_lib.h). The library was compiled in large
-model on the PC as the memory allocated per file is quite big: about 17k for
-decoding (DGIF_LIB.C), and 32k for encoding (EGIF_LIB.C), excluding the
-FILE_BUFFER_SIZE.<P>
-
-Here is a module summary:<P>
-
-<DL>
-<DT>egif_lib.c <DD> Encoding routines, all prefixed with E.<P>
-
-<DT>dgif_lib.c <DD> Decoding routines, all prefixed with D.<P>
-
-<DT>dev2gif.c <DD> Routines to convert specific device buffers into GIF files.<P>
-
-<DT>gifalloc.c <DD> Routines for colormap handling and GIF record allocation.<P>
-
-<DT>gif_font.c <DD> The 8x8 font table for the GIF utility font.<P>
-
-<DT>gif_err.c <DD> Error handler for the library.<P>
-</DL>
-
-The library includes a sixth file of hash-function code which is accessed
-internally only.<P>
-
-<P>Most of the routines return GIF_ERROR (see gif_lib.h) if something
-went wrong, GIF_OK otherwise. After an error return, the code in the
-gif_err.c module can be used to do something about it.<P>
-
-In addition, a module to parse command line arguments is supplied.
-This module is called getarg.c and its headers are in getarg.h. See the header
-of getarg.c for details on its usage.<P>
-
-<H1>Decoding (dgif_lib.c)</H1>
-
-The following functions are used to set up input from a GIF:<P>
-
-<pre><code>
-GifFileType *DGifOpenFileName(char *GifFileName)
-</code></pre>
-
-Open a new GIF file using the given GifFileName, and read its Screen
-information.
-</code></pre>
-
-If any error occurs, NULL is returned and the error handler can be
-used to get the exact error (see gif_err.c).
-</code></pre>
-
-The file is opened in binary mode, and its buffer size is set to
-FILE_BUFFER_SIZE bytes.
-</code></pre>
-
-<pre><code>
-GifFileType *DGifOpenFileHandle(int GifFileHandle)
-</code></pre>
-
-Open a new GIF file using the given GifFileHandle, and read its Screen
-information.<P>
-
-If any error occurs, NULL is returned and the error handler can be
-used to get the exact error (see gif_err.c).<P>
-
-The file is opened in binary mode, and its buffer size is set to
-FILE_BUFFER_SIZE bytes.<P>
-
-Once you have acquired a handle on a GIF, there are two ways to read it in.
-The high-level function
-
-<pre><code>
-int DGifSlurp(GifFileType)
-</code></pre>
-
-reads the rest of a complete (possibly multi-image) GIF file from the
-indicated file handle into in-core allocated structures. It returns
-GIF_OK on success, GIF_ERROR on failure.<P>
-
-Once you have done this, all image, raster, and extension-block data in the
-GIF is accessable in the SavedImages member (see the structures in fif_lib.h).
-When you have modified the image to taste, write it out with EGifSpew().<P>
-
-If you are handling large images on a memory-limited machine, you may need
-to use the following functions for sequential read.<P>
-
-<pre><code>
-int DGifGetScreenDesc(GifFileType *GifFile)
-</code></pre>
-
-Reads the screen information into the GifFile structure. Note this
-routine is automatically called once a file is opened, and therefore
-usually need not be called explicitly.<P>
-
-Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
-
-<pre><code>
-int DGifGetRecordType(GifFileType *GifFile, GifRecordType *GifType)
-</code></pre>
-
-As the GIF file can have different records in arbitrary order, this
-routine should be called once the file was open to detect the next
-record type, and act upon it. It can return these types in GifType:<P>
-
-<DL>
-<DT> 1. UndefinedRecordType <DD> something is wrong!<P>
-
-<DT> 2. ScreenDescRecordType <DD> screen information. As the screen info
- is automatically read in when the file is open, this should
- not happen.<P>
-
-<DT> 3. ImageDescRecordType <DD> next record is an image descriptor.<P>
-
-<DT> 4. ExtensionRecordType <DD> next record is extension block.<P>
-
-<DT> 5. TerminateRecordType <DD> last record reached, can close the file.<P>
-</DL>
-The first two types can usually be ignored. The function
-returns GIF_ERROR if something went wrong, GIF_OK otherwise.
-
-<pre><code>
-int DGifGetImageDesc(GifFileType *GifFile)
-</code></pre>
-
-Reads image information into the GifFile structure.
-Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
-
-<pre><code><A NAME="DGifGetLine">
-int DGifGetLine(GifFileType *GifFile, PixelType *GifLine, int GifLineLen)
-</A></code></pre>
-
-Load a block of pixels from the GIF file. The line can be
-of any length. More than that, this routine may be interleaved with
-DGifGetPixel until all pixels have been read.<P>
-
-Returns GIF_ERROR if something went wrong, GIF_OK otherwise.</P>
-
-<pre><code>
-int DGifGetPixel(GifFileType *GifFile, PixelType GifPixel)
-</code></pre>
-
-Loads one pixel from the GIF file. This routine may be interleaved
-with <a href="#DGifGetLine">DGifGetLine</a>, until all pixels are
-read. Because of the overhead per each call, use of this routine is
-not recommended.<P>
-
-Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
-
-<pre><code>
-int DGifGetComment(GifFileType *GifFile, char *GifComment)
-</code></pre>
-
-Load a comment from the GIF file. Because DGifGetRecordType will
-only tell if the record is of type extension, this routine should be
-called iff it is known %100 that is must be a comment.<P>
-
-For the definition of a comment, see <a
-href="#EGifPutComment">EGifPutComment</a>. Returns GIF_ERROR if
-something went wrong, GIF_OK otherwise.<P>
-
-<pre><code>
-int DGifGetExtension(
- GifFileType *GifFile,
- int *GifExtCode,
- ByteType **GifExtension)
-</code></pre>
-
-Loads an extension block from the GIF file. Extension blocks
-are optional in GIF files. This routine should be followed by
-<a href="#DGifGetExtensionNext">DGifGetExtensionNext</a>.<P>
-
-Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
-
-<pre><code><A NAME="DGifGetExtensionNext">
-int DGifGetExtensionNext(GifFileType *GifFile, ByteType **GifExtension)
-</A> </code></pre>
-
-As extensions may contain more than one block, use this routine to
-continue after DGifGetExtension, until *GifExtension is NULL.<P>
-
-Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
-
-
-<pre><code>
-int DGifGetCode(
- GifFileType *GifFile,
- int *GifCodeSize, ByteType **GifCodeBlock)
-</code></pre>
-
-It sometimes may be desired to read the compressed code as is
-without decoding it. This routine does exactly that (with
-DGifGetCodeNext), and can be used instead of DGifGetLine.<P>
-
-This compressed code information can be written out using the
-EGifPutCode/EGifPutCodeNext sequence (see gifpos.c for example).
-Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
-
-<pre><code>
-int DGifGetCodeNext(GifFileType *GifFile, ByteType **GifCodeBlock)
-</code></pre>
-
-See DGifGetCode above.<P>
-
-<pre><code>
-int DGifGetLZCodes(GifFileType *GifFile, int *GifCode)
-</code></pre>
-
-This routine can be called instead of DGifGetLine/DGifGetPixel or
-DGifGetCode/DGifGetCodeNext to get the 12 bits LZ codes of the images.
-It will be used mainly for debugging purposes (see GifText.c for
-example).<P>
-
-Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
-
-<pre><code>
-int DGifCloseFile(GifFileType *GifFile)
-</code></pre>
-
-Close GIF file and free all memory allocated for it. GifFile should
-not be used after this routine has been called.<P>
-
-Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
-
-<H1>Encoding (egif_lib.c)</H1>
-
-There are two ways to write out a GIF. The high-level function<P>
-
-<pre>
-int EGifSpew(GifFileType *GifFile, int GifFileHandle)
-</pre>
-
-Writes a complete (possibly multi-image) GIF file to the indicated file
-handle from in-core allocated structures created by a previous DGifSlurp()
-or equivalent operations. Its arguments are a GIF file descriptor (as
-above) and an ordinary output file descriptor.<P>
-
-The file is written with a GIF87 stamp unless it contains one of the four
-special extension blocks defined in GIF89, in which case it is written
-with a GIF89 stamp.<P>
-
-If you are handling large images on a memory-limited machine, you may need
-to use the following functions for sequential write.<P>
-
-<pre><code>
-GifFileType *EGifOpenFileName(char *GifFileName, int GifTestExistance)
-</code></pre>
-
-Open a new GIF file using the given GifFileName. If GifTestExistance
-is TRUE, and file exists, the file is not destroyed, and NULL
-returned.<P>
-
-If any error occurs, NULL is returned and the error handler can be
-used to get the exact error (see gif_err.c).<P>
-
-The file is opened in binary mode, and its buffer size is set to
-FILE_BUFFER_SIZE bytes.<P>
-
-<pre><code>
-GifFileType *EGifOpenFileHandle(int GifFileHandle)
-</code></pre>
-
-Open a new GIF file using the given GifFileHandle.<P>
-
-If any error occurs, NULL is returned and the error handler can be
-used to get the exact error (see gif_err.c).<P>
-
-The file is opened in binary mode, and its buffer size is set to
-FILE_BUFFER_SIZE bytes.<P>
-
-<pre><code>
-void EGifSetGifVersion(char *Version)
-</code></pre>
-
-Sets the GIF version of all files opened, until another call to this
-routine is made. Version is a 3 characters string of the form "87a"
-or "89a". No test is made to validate this string.<P>
-
-<pre><code>
-int EGifPutScreenDesc(GifFileType *GifFile,
- int GifWidth, int GifHeight,
- int GifColorRes, int GifBackGround,
- ColorMapObject *GifColorMap)
-</code></pre>
-
-Update the GifFile Screen parameters, in GifFile structure and in
-the real file. If error occurs, returns GIF_ERROR (see gif_lib.h),
-otherwise GIF_OK.<P>
-
-This routine should be called immediately after the GIF file was
-opened.<P>
-
-<pre><code>
-int EGifPutImageDesc(GifFileType *GifFile,
- int GifLeft, int GifTop,
- int Width, int GifHeight,
- int GifInterlace,
- ColorMapObject *GifColorMap)
-</code></pre>
-
-Update GifFile Image parameters, in GifFile structure and in the real
-file. if error occurs returns GIF_ERROR (see gif_lib.h), otherwise
-GIF_OK.<P>
-
-This routine should be called each time a new image must be
-dumped to the file.<P>
-
-<pre><code><A NAME="EGifPutLine">
-int EGifPutLine(GifFileType *GifFile, PixelType *GifLine, int GifLineLen)
-</A> </code></pre>
-
-Dumps a block of pixels out to the GIF file. The slab can be
-of any length. More than that, this routine may be interleaved with
-<a href="#EGifPutPixel"></a>, until all pixels have been sent.<P>
-
-Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
-
-<pre><code><A NAME="EGifPutPixel">
-int EGifPutPixel(GifFileType *GifFile, PixelType GifPixel)
-</A></code></pre>
-
-Dumps one pixel to the GIF file. This routine may be interleaved with
-<a href="#EGifPutLine">EGifPutLine</a>, until all pixels were sent.
-Because of the overhead for each call, use of this routine is not
-recommended.<P>
-
-Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
-
-<pre><code><A NAME="EGifPutComment">
-int EGifPutComment(GifFileType *GifFile, char *GifComment)
-</A></code></pre>
-
-Uses extension GIF records to save a string as a comment is the file.
-The extension code is 'C' (for Comment).<P>
-
-Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
-
-<pre><code>
-int EGifPutExtension(
- GifFileType *GifFile,
- int GifExtCode,
- int GifExtLen,
- void *GifExtension)
-</code></pre>
-
-Dumps the given extension block into the GIF file. Extension blocks
-are optional in GIF file. Extension blocks of more than 255 bytes or
-more than one block are not supported in this function. Please use
-EGifPutExtensionFirst, EGifPutExtensionNext, and EGifPutExtensionLast
-if your extension blocks may fall into this category.<P>
-
-Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
-
-<pre><code>
-int EGifPutExtensionFirst(
- GifFileType * GifFile,
- int GifExtCode,
- int GifExtLen,
- const VoidPtr GifExtension)
-</code></pre>
-Dumps the beginning of a GIF extension block to a GIF file. Extension blocks
-are optional in GIF files. This function outputs the meta information
-necessary to a GIF extension block and the extension data described in the
-GifExtension argument.<P>
-
-Further blocks of the GIF Extension should be dumped using
-EGifPutExtensionNext. When finished with this extension block,
-EGifPutExtensionLast should be called to output the block termination.<P>
-
-Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
-
-<pre><code>
-int EGifPutExtensionNext(
- GifFileType * GifFile,
- int GifExtCode,
- int GifExtLen,
- const VoidPtr GifExtension)
-</code></pre>
-Dumps a subblock of a GIF extension to a GIF File. Extension blocks are
-optional in GIF files. This function will write the Extension Data in
-GifExtension to the file as a subblock of the preceding Extension Block.
-Repeat calling of this function until all data subblocks have been output.<P>
-
-Note that EGifPutExtensionFirst needs to be called before any calls to this
-function. EGifPutExtensionLast should be called to finish the Extension
-block after all data subblocks have been output.<P>
-
-Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
-
-<pre><code>
-int EGifPutExtensionLast(
- GifFileType * GifFile,
- int GifExtCode,
- int GifExtLen,
- const VoidPtr GifExtension)
-</code></pre>
-Dumps an optional GIF extension data subblock and the GIF extension block
-terminator to a GIF File. Extension blocks are optional in GIF files. This
-function will write the Extension Data in GifExtension to the file as a
-subblock of the preceding Extension Block. Then it will output the GIF
-extension block terminator to end the current Extension block. As a special
-case, if GifExtLen is zero, the function will assume there isn't another
-data block to output and will simply write the block terminator.<P>
-
-Note that a call to EGifPutExtensionFirst is needed to open the GIF
-Extension Block prior to calling this function.<P>
-
-Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
-
-<pre><code>
-int EGifPutCode(
- GifFileType *GifFile,
- int *GifCodeSize,
- ByteType **GifCodeBlock)
-</code></pre>
-
-It sometimes may be desired to write the compressed code as is
-without decoding it. For example a filter for a GIF file that change
-only screen size (GifPos), does not need the exact pixel values.
-Piping out the compressed image as is makes this process much
-faster.<P>
-
-This routine does exactly that (with EGifPutCodeNext), and can be
-used instead of EGifPutLine. You'll usually use this with the
-DGifGetCode/DgifGetCodeNext routines, which reads the compressed
-code, while EGifPutCode/EGifPutCodeNext write it out. See gifpos.c
-for example.<P>
-
-Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
-
-<pre><code>
-int EGifPutCodeNext(GifFileType *GifFile, ByteType **GifCodeBlock)
-</code></pre>
-
-See EGifPutCode above.<P>
-
-<pre><code>
-int EGifCloseFile(GifFileType *GifFile)
-</code></pre>
-
-Close a GIF file and free all memory allocated for it. gif-file$
-should not be used, once this routine was called.<P>
-
-Returns GIF_ERROR if something went wrong, GIF_OK otherwise.<P>
-
-<H1>Color map handling and allocation routines</H1>
-
-<pre><code>
-ColorMapObject *MakeMapObject(int ColorCount, GifColorType *ColorMap)
-</code></pre>
-
-Allocate storage for a color map object with the given number of
-RGB triplet slots. If the second argument is non-NULL, initialize
-the color table portion of the new map from it. Returns NULL if
-memory is exhausted or if the size is not a power of 2 <= 256.<P>
-
-<pre><code>
-void FreeMapObject(ColorMapObject *Object)
-</code></pre>
-
-Free the storage occupied by a ColorMapObject that is no longer needed.<P>
-
-<pre><code>
-ColorMapObject *UnionColorMap(
- ColorMapObject *ColorIn1, ColorMapObject *ColorIn2,
- GifPixelType ColorTransIn2[])
-</code></pre>
-
-Create the union of two given color maps and return it. If the result
-won't fit into 256 colors, NULL is returned, the allocated union
-otherwise. ColorIn1 is copied as it to ColorUnion, while colors from
-ColorIn2 are copied iff they didn't exist before. ColorTransIn2 maps
-the old ColorIn2 into ColorUnion color map table.<P>
-
-<pre><code>
-SavedImage *GifAttachImage(GifFileType *GifFile)
-</code></pre>
-
-Add an image block to the SavedImages array. The image block is
-initially zeroed out. This image block will be seen by any following
-EGifSpew() calls.
-</code></pre>
-
-<H1>The GIF Utility Font</H1>
-
-The 8x8 utility font used in text2gif and gifcolor lives in the library
-module gif_font.c, in a table called AsciiTable. The library header file
-includes suitable externs and defines.<P>
-
-The GIF utility font support includes entry points for drawing legends
-on in-core images, drawing boxes and rectangles, and boxing text.
-These entry points are as follows:<P>
-
-<pre><code>
-void DrawText(
- SavedImage *Image,
- const int x, const int y,
- const char *legend,
- const int color)
-</code></pre>
-
-Draw text using the 8x8 utility font on the saved image. Upper left
-corner of the text is at image pixel (x, y). Use the specified
-color index.<P>
-
-<pre><code>
-void DrawBox(SavedImage *Image,
- const int x, const int y,
- const int w, const int h,
- const int color)
-</code></pre>
-
-Draw a box on the saved image. Upper left corner of the box is at
-image pixels (x, y), width is w, height is h. Use the specified color
-index.<P>
-
-<pre><code>
-void DrawRectangle(SavedImage *Image,
- const int x, const int y,
- const int w, const int h,
- const int color)
-</code></pre>
-
-Draw a (filled) rectangle on the saved image. Upper left corner of
-the box is at image pixels (x, y), width is w, height is h. Use the
-specified color index.<P>
-
-<pre><code>
-void DrawBoxedText(SavedImage *Image,
- const int x, const int y,
- const char *legend,
- const int border,
- const int bg, const int fg)
-</code></pre>
-
-Draw text on a filled rectangle. The rectangle will be sized to fit
-the text, with upper left hand corner at (x, y) on the saved image.
-The `border' argument specifies a pixel margin around the text. The
-`bg' argument is the color table index to fill the rectangle with;
-`fg' is the color table index to draw the text with.<P>
-
-This function interprets some characters in the legend string
-specially. A tab (\t) is interpreted as a command to center the
-following text in the box. A carriage return (\r) is interpreted
-as a request for a line break.<P>
-
-<H1>Error Handling (egif_lib.c)</H1>
-
-<pre><code>
-void PrintGifError(void)
-</code></pre>
-
-Print a one-line diagnostic on the last giflib error to stderr.<P>
-
-<pre><code>
-int GifLastError(void)
-</code></pre>
-
-Return the number of the last giflib error, and clear the error.
-The error types are defined in gif_lib.h.<P>
-
-Note it is the user's responsibility to call the file closing
-routine, so the file will be closed (if was opened), and allocated
-memory will be released.<P>
-
-<H1>Device Specific (XXX2gif.c)</H1>
-
-<pre><code>
-int DumpScreen2Gif(char *FileName, int ReqGraphDriver, int ReqGraphMode1,
- int ReqGraphMode2)
-</code></pre>
-
-Dumps the whole device buffer as specified by GraphDriver and
-GraphMode (as defined in TC 2.0 graphics.h) into FileName as GIF file.
-Current devices supported:<P>
-
-<pre>
- 1. Hercules.
-
- 2. EGA, EGA64, EGAMONO (all modes - see TC graphics.h).
-
- 3. VGA (all modes - see TC graphics.h).
-
- 4. SVGA_SPECIAL. This mode is special and not supported by Borland
- graphics.h. ReqGraphDriver must be equal to 999, and ReqGraphMode
- is ignored. This modes assumes 800 by 600 in 16 colors.
- Returns GIF_ERROR if something went wrong, GIF_OK otherwise.
-
- 5. SGI 4D using gl graphic library - window dump.
-
- 6. X11 window dump.
-</pre>
-
-
-<H1>Command Line Parsing</H1>
-
-<pre><code>
-int GAGetArgs(int argc, char **argv, char *CtrlStr, ...)
-</code></pre>
-
-Main routine of this module. Given argc & argv as received by
-the main procedure, the command line CtrlStr, and the addresses of
-all parameters, parse the command line, and update the parameters.<P>
-
-The CtrlStr defines what types of variables should follow. Look at the
-beginning of getarg.c for exact usage.<P>
-
-Returns 0 if successful, error number (as defined by getarg.h) otherwise.<P>
-
-<pre><code>
-void GAPrintErrMsg(int Error)
-</code></pre>
-
-If an error occurred in GAGetARgs, this routine may be used to print
-one line diagnostic to stderr.<P>
-
-<pre><code>
-void GAPrintHowTo(char *CtrlStr)
-</code></pre>
-
-Given the same CtrlStr as for GAGetArgs, can be used to print a one line
-'how to use'. <P>
-
-<H1>Skeletons of GIF filters</H1>
-
-If you are developing on a virtual-memory OS such as most flavors of
-UNIX, or are otherwise sure of having enough memory to keep all of GIFs you
-need to operate in core, writing a filter is trivial. See the file
-gifspnge.c in util.<P>
-
-A sequential filter skeleton will usually look like the example file
-giffiltr.c in util.<P>
-
-<P>Please look at the utilities in the util directory for more ideas once
-you feel comfortable with these skeletons. Also try to follow the coding
-standards of this package if you want the maintainer to officially add your new
-utility to it.<P>
-
-<HR>
-<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
-</BODY>
-</HTML>