class DrawImageObject
{
  BYTE * m_pImageBuffer;
  BYTE * m_pColorArray;

  int m_xSize;
  int m_ySize;
  int m_nColors;
  int m_curx;
  int m_cury;

  private:
    int  GIFNextPixel();
    void compress(int init_bits, int fd);
  public:
    DrawImageObject(int xsize, int ysiz, int ncolors);
    ~DrawImageObject();
    void PutPixel(int x, int y, BYTE color);
    BYTE GetPixel(int x, int y);
    void SetColor(BYTE index, BYTE red,BYTE green, BYTE blue);
    void Line(int x1, int y1, int x2, int y2, BYTE colorindex);
    void Box(int x1, int y1, int x2, int y2, BYTE colorindex);
    void FilledBox(int x1, int y1, int x2, int y2, BYTE fillc, 
     BYTE outlinec);
    void Text(const char * pText,int x1, int x2, const char * 
      fontrecord, BYTE color);
    int  TextXsize(const char * pText,const char * fontrecord); 
    int  TextYsize(const char * pText,const char * fontrecord); 
    void WriteGIF(int fd); /* Writes GIF to file descriptor */
};
Listing 6Here is the interface for the GIF-generation class. This class encapsulates a small subset of the public-domain GD graphics library.