Diff for /parser3/src/classes/gd/Attic/gifio.C between versions 1.6 and 1.13

version 1.6, 2001/04/17 19:00:32 version 1.13, 2001/09/26 10:32:25
Line 1 Line 1
 /** @file  /** @file
         Parser: image manipulations impl2.          Parser: image manipulations impl2.
   
           Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)
         Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf)          Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf)
   
         $Id$          $Id$
   
           based on: gd
   
           Written by Tom Boutell, 5/94.
           Copyright 1994, Cold Spring Harbor Labs.
           Permission granted to use this code in any fashion provided
           that this notice is retained and any alterations are
           labeled as such. It is requested, but not required, that
           you share extensions to this module with us so that we
           can incorporate them into new versions. 
   
         based on:          based on:
  **   **
Line 26 Line 36
  ** CompuServe Incorporated.  GIF(sm) is a Service Mark property of   ** CompuServe Incorporated.  GIF(sm) is a Service Mark property of
  ** CompuServe Incorporated.   ** CompuServe Incorporated.
 */  */
   static const char *RCSId="$Id$"; 
   
 #include "gif.h"  #include "gif.h"
   
Line 316  void Line 327  void
 gdGifEncoder::Putbyte(int c) {  gdGifEncoder::Putbyte(int c) {
         char *p=(char *)malloc(1);          char *p=(char *)malloc(1);
         *p=c;          *p=c;
         fp.APPEND_CLEAN(p, 1, 0, 0);          fp.APPEND_AS_IS(p, 1, 0, 0);
 }  }
 /*  /*
 * Write out a word to the GIF file  * Write out a word to the GIF file
Line 327  gdGifEncoder::Putword(int w) Line 338  gdGifEncoder::Putword(int w)
         char *p=(char *)malloc(2);          char *p=(char *)malloc(2);
         p[0]=w & 0xff;          p[0]=w & 0xff;
         p[1]=(w / 256) & 0xff;          p[1]=(w / 256) & 0xff;
         fp.APPEND_CLEAN(p, 2, 0, 0);          fp.APPEND_AS_IS(p, 2, 0, 0);
 }  }
   
 void gdGifEncoder::Write(void *buf, size_t size) {  void gdGifEncoder::Write(void *buf, size_t size) {
         char *p=(char *)malloc(size);          char *p=(char *)malloc(size);
         memcpy(p, buf, size);          memcpy(p, buf, size);
         fp.APPEND_CLEAN(p, size, 0, 0);          fp.APPEND_AS_IS(p, size, 0, 0);
 }  }
   
 /***************************************************************************  /***************************************************************************
Line 353  void gdGifEncoder::Write(void *buf, size Line 364  void gdGifEncoder::Write(void *buf, size
   
 #ifdef NO_UCHAR  #ifdef NO_UCHAR
 typedef char   char_type;  typedef char   char_type;
 #else /*NO_UCHAR*/  #else
 typedef        unsigned char   char_type;  typedef        unsigned char   char_type;
 #endif /*NO_UCHAR*/  #endif
   
 /*  /*
 *  *
Line 373  typedef        unsigned char   char_type Line 384  typedef        unsigned char   char_type
 */  */
 #ifdef COMPATIBLE               /* But wrong! */  #ifdef COMPATIBLE               /* But wrong! */
 # define MAXCODE(n_bits)      ((code_int) 1 <<(n_bits) - 1)  # define MAXCODE(n_bits)      ((code_int) 1 <<(n_bits) - 1)
 #else /*COMPATIBLE*/  #else
 # define MAXCODE(n_bits)      (((code_int) 1 <<(n_bits)) - 1)  # define MAXCODE(n_bits)      (((code_int) 1 <<(n_bits)) - 1)
 #endif /*COMPATIBLE*/  #endif
   
 #define HashTabOf(i)       htab[i]  #define HashTabOf(i)       htab[i]
 #define CodeTabOf(i)    codetab[i]  #define CodeTabOf(i)    codetab[i]
Line 454  gdGifEncoder::compress(int init_bits) Line 465  gdGifEncoder::compress(int init_bits)
                   
 #ifdef SIGNED_COMPARE_SLOW  #ifdef SIGNED_COMPARE_SLOW
     while((c = GIFNextPixel( )) !=(unsigned) EOF ) {      while((c = GIFNextPixel( )) !=(unsigned) EOF ) {
 #else /*SIGNED_COMPARE_SLOW*/  #else
         while((c = GIFNextPixel( )) != EOF ) {  /* } */          while((c = GIFNextPixel( )) != EOF ) {  /* } */
 #endif /*SIGNED_COMPARE_SLOW*/  #endif
                                   
         ++in_count;          ++in_count;
                   
Line 487  nomatch: Line 498  nomatch:
         ent = c;          ent = c;
 #ifdef SIGNED_COMPARE_SLOW  #ifdef SIGNED_COMPARE_SLOW
         if((unsigned) free_ent <(unsigned) maxmaxcode) {          if((unsigned) free_ent <(unsigned) maxmaxcode) {
 #else /*SIGNED_COMPARE_SLOW*/  #else
                 if( free_ent < maxmaxcode ) {  /* } */                  if( free_ent < maxmaxcode ) {  /* } */
 #endif /*SIGNED_COMPARE_SLOW*/  #endif
                         CodeTabOf(i) = free_ent++; /* code -> hashtable */                          CodeTabOf(i) = free_ent++; /* code -> hashtable */
                         HashTabOf(i) = fcode;                          HashTabOf(i) = fcode;
                 } else                  } else
Line 593  void Line 604  void
 }  }
   
 void  void
         gdGifEncoder::cl_hash(register count_int hsize)          /* reset code table */          gdGifEncoder::cl_hash(count_int hsize)          /* reset code table */
                   
 {  {
                   
Line 742  gdGifEncoder::gdGifEncoder(Pool& pool, g Line 753  gdGifEncoder::gdGifEncoder(Pool& pool, g
                 unsigned int    AspectRatio;                  unsigned int    AspectRatio;
         };          };
 #endif  #endif
           
   /// Graphic Control Extension struct
   #ifndef DOXYGEN
 struct Gif89 {  struct Gif89 {
         int     transparent;          int     transparent;
         int     delayTime;          int     delayTime;
         int     inputFlag;          int     inputFlag;
         int     disposal;          int     disposal;
 };  };
   #endif
 static int ReadColorMap(FILE *fd, int number, unsigned char(*buffer)[256]);  static int ReadColorMap(FILE *fd, int number, unsigned char(*buffer)[256]);
 static int GetCode(FILE *fd, int code_size, int flag);  static int GetCode(FILE *fd, int code_size, int flag);
   

Removed from v.1.6  
changed lines
  Added in v.1.13


E-mail: