<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE article PUBLIC 
   "-//OASIS//DTD DocBook XML V4.1.2//EN"
   "docbook/docbookx.dtd" [
<!ENTITY homepage      "http://catb.org/~esr/">
<!ENTITY email         "esr@thyrsus.com">
]>
<article><title>GIFLIB error codes</title>

<articleinfo>

<author>
  <firstname>Eric</firstname>
  <othername>Steven</othername>
  <surname>Raymond</surname>
  <affiliation>
    <orgname><ulink url="&homepage;">
    Thyrsus Enterprises</ulink></orgname> 
    <address>
    <email>&email;</email>
    </address>
  </affiliation>
</author>
<copyright>
  <year>2012</year>
  <holder role="mailto:&email;">Eric S. Raymond</holder> 
</copyright>

</articleinfo>

<para>Errors as reported from the GIFLIB library are divided to two major
categories: the encoder (errors prefixed by E_GIF_ERR), and the
decoder (errors prefixed by D_GIF_ERR).  This document explains them
briefly.</para>

<sect1><title>Encoding errors</title>

<variablelist>
<varlistentry>
<term><errorname>E_GIF_ERR_OpenFailed</errorname></term>
<listitem>
   <para>Message printed using PrintGifError: "Failed to open given file"
   IO error result when attempt to open the given GIF file.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><errorname>E_GIF_ERR_WriteFailed</errorname></term>
<listitem>
   <para>Message printed using PrintGifError: "Failed to Write to given file"
   IO error result when attempt to write to the given GIF file.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><errorname>E_GIF_ERR_HasScrnDscr</errorname></term>
<listitem>
   <para>Message printed using PrintGifError: "Screen Descriptor
   already been set" Attempt to write second screen descriptor to same
   GIF file. GIF file should have exactly one screen descriptor which
   should be set directly after the file is opened.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><errorname>E_GIF_ERR_HasImagDscr</errorname></term>
<listitem>
   <para>Message printed using PrintGifError: "Image Descriptor is still active"
   Image descriptor should be sent before and image dump, and no second
   image descriptor should be sent before current image dump ended. This error
   occurred probably because current image was not complete.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><errorname>E_GIF_ERR_NoColorMap</errorname></term>
<listitem>
   <para>Message printed using PrintGifError: "Neither Global Nor
   Local color map" An image must have either global (screen) or local
   (image) color map.  Neither were given in this case.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><errorname>E_GIF_ERR_DataTooBig</errorname></term>
<listitem>
   <para>Message printed using PrintGifError: "#Pixels bigger than
   Width * Height" The number of pixels dumped for this image is
   bigger than specified by image Height times image Width.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><errorname>E_GIF_ERR_NotEnoughMem</errorname></term>
<listitem>
   <para>Message printed using PrintGifError: "Fail to allocate
   required memory" Once an attemp is made to open GIF file, special
   structures are allocated to hold internal data for it. If
   allocation fails this error is returned.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><errorname>E_GIF_ERR_DiskIsFull</errorname></term>
<listitem>
   <para>Message printed using PrintGifError: "Write failed (disk full?)"
   Writing encoded data failed.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><errorname>E_GIF_ERR_CloseFailed</errorname></term>
<listitem>
   <para>Message printed using PrintGifError: "Failed to close given file"
   Closing file failed.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><errorname> E_GIF_ERR_NotWriteable</errorname></term>
<listitem>
   <para>Message printed using PrintGifError: "Given file was not
   opened for write" GIF files can be opened both for read (DGIF part
   of library) and write (EGIF part of library). This error occurs
   when a file is opened for read (using DGIF) is given to one of the
   encoding (EGIF) routines.</para>
</listitem>
</varlistentry>

</variablelist>

</sect1>
<sect1><title>Encoding errors:</title>

<variablelist>
<varlistentry>
<term><errorname>D_GIF_ERR_OpenFailed</errorname></term>
<listitem>
   <para>Message printed using PrintGifError: "Failed to open given file"
   IO error result when attempt to open the given GIF file.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><errorname>D_GIF_ERR_ReadFailed</errorname></term>
<listitem>
   <para>Message printed using PrintGifError: "Failed to Read from given file"
   IO error result when attempt to write to the given GIF file.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><errorname>D_GIF_ERR_Notgif-file$</errorname></term>
<listitem>
   <para>Message printed using PrintGifError: "Given file is NOT GIF file"
   GIF files should have special stamp identifies them as such, If that stamp
   is not found, this error is issued.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><errorname>D_GIF_ERR_NoScrnDscr</errorname></term>
<listitem>
   <para>Message printed using PrintGifError: "No Screen Descriptor detected"
   Each GIF file should have screen descriptor in its header. This error will
   be generated if no such descriptor was found.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><errorname>D_GIF_ERR_NoImagDscr</errorname></term>
<listitem>
   <para>Message printed using PrintGifError: "No Image Descriptor detected"
   Each image should have image descriptor in its header. This error will
   be generated if no such descriptor was found.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><errorname>D_GIF_ERR_NoColorMap</errorname></term>
<listitem>
   <para>Message printed using PrintGifError: "Neither Global Nor
   Local color map" An image must have either global (screen) or local
   (image) color map.  Neither were given in this case.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><errorname>D_GIF_ERR_WrongRecord</errorname></term>
<listitem>
   <para>Message printed using PrintGifError: "Wrong record type detected"
   Each record in GIF file has special identifier, in its header. If the
   record has wrong identifier, this error is generated.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><errorname>D_GIF_ERR_DataTooBig</errorname></term>
<listitem>
   <para>Message printed using PrintGifError: "#Pixels bigger than
   Width * Height" The number of pixels dumped for this image is
   bigger than specified by image Height times image Width.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><errorname>D_GIF_ERR_NotEnoughMem</errorname></term>
<listitem>
   <para>Message printed using PrintGifError: "Fail to allocate
   required memory" Once an attemp is made to open GIF file, special
   structures are allocated to hold internal data for it. If
   allocation fails this error is returned.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><errorname>D_GIF_ERR_CloseFailed</errorname></term>
<listitem>
   <para>Message printed using PrintGifError: "Failed to close given file"
   Closing file failed.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><errorname>D_GIF_ERR_NotReadable</errorname></term>
<listitem>
   <para>Message printed using PrintGifError: "Given file was not
   opened for read" GIF files can be opened both for read (DGIF part
   of library) and write (EGIF part of library). This error occurs
   when a file is opened for write (using EGIF) is given to one of the
   decoding (DGIF) routines.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><errorname>D_GIF_ERR_ImageDefect</errorname></term>
<listitem>
   <para>Message printed using PrintGifError: "Image is defective,
   decoding aborted" This error is generated, once the decoding failed
   - probably image is defect.</para>
</listitem>
</varlistentry>

<varlistentry>
<term><errorname>D_GIF_ERR_EOFTooSoon</errorname></term>
<listitem>
   <para>Message printed using PrintGifError: "Image EOF detected,
   before image complete" This error is generated once EOF errorname
   is detected in encoded image before all the pixels (Width *
   Height) has be decoded.</para>
</listitem>
</varlistentry>
</variablelist>

</sect1>
</article>
