home *** CD-ROM | disk | FTP | other *** search
/ Hacks & Cracks / Hacks_and_Cracks.iso / hackersguides-&-software / hdsk41.zip / SOURCE.ZIP / GIF.CPP < prev    next >
C/C++ Source or Header  |  1994-03-17  |  6KB  |  208 lines

  1. //--------------------------------------------------------//
  2. //                                                        //
  3. //   File:   GIF.CPP                                      //
  4. //                                                        //
  5. //   Desc:   Structure and Class definitions for          //
  6. //           CompuServe's GIF Format, Version 89a         //
  7. //                                                        //
  8. //--------------------------------------------------------//
  9.  
  10. #include "gif.hpp"
  11.  
  12. //..................struct GIFHEADER
  13.  
  14. void GIFHEADER::list( void )
  15. {
  16.    printf( "GIFHEADER::sig = %c%c%c\n",
  17.            sig[0], sig[1], sig[2] );
  18.    printf( "GIFHEADER::ver = %c%c%c\n",
  19.            ver[0], ver[1], ver[2] );
  20. }
  21.  
  22. int GIFHEADER::get( FILE *f )
  23. {
  24.    return (fread( sig, sizeof(GIFHEADER), 1, f ) == 1) ?
  25.       0 : -1;
  26. }
  27.  
  28. int GIFHEADER::put( FILE *f )
  29. {
  30.    return (fwrite( sig, sizeof(GIFHEADER), 1, f ) == 1) ?
  31.       0 : -1;
  32. }
  33.  
  34. int GIFHEADER::isvalid( void )
  35. {
  36.    if( strncmp( sig, "GIF", 3 ) != 0 )
  37.       return 0;
  38.    if( (strncmp( ver, "87a", 3 ) != 0) &&
  39.        (strncmp( ver, "89a", 3 ) != 0) )
  40.       return 0;
  41.    return 1;
  42. }
  43.  
  44. //..................struct GIFSCDESC
  45.  
  46. void GIFSCDESC::list( void )
  47. {
  48.    printf( "GIFSCDESC::scwidth  = %d\n", scwidth );
  49.    printf( "GIFSCDESC::scheight = %d\n", scheight );
  50.    printf( "GIFSCDESC::flags    = %02Xh\n", flags );
  51.    printf( "           gct?     = %c\n",
  52.            isgct() ? 'Y' : 'N' );
  53.    printf( "           sorted?  = %c\n",
  54.            issorted() ? 'Y' : 'N' );
  55.    printf( "           depth    = %d\n", depth() );
  56.    printf( "           ncolors  = %d\n", ncolors() );
  57.    printf( "GIFSCDESC::pixasp   = %d\n", pixasp );
  58. }
  59.  
  60. int GIFSCDESC::get( FILE *f )
  61. {
  62.    return (fread( &scwidth, sizeof(GIFSCDESC), 1, f ) == 1) ?
  63.       0 : -1;
  64. }
  65.  
  66. int GIFSCDESC::put( FILE *f )
  67. {
  68.    return (fwrite( &scwidth, sizeof(GIFSCDESC), 1, f ) == 1) ?
  69.       0 : -1;
  70. }
  71.  
  72. //..................struct GIFIMDESC
  73.  
  74. void GIFIMDESC::list( void )
  75. {
  76.    printf( "GIFIMDESC::id          = %02Xh\n", id );
  77.    printf( "GIFIMDESC::xleft       = %d\n", xleft );
  78.    printf( "GIFIMDESC::ytop        = %d\n", ytop );
  79.    printf( "GIFIMDESC::imwidth     = %d\n", imwidth );
  80.    printf( "GIFIMDESC::imheight    = %d\n", imheight );
  81.    printf( "GIFIMDESC::flags       = %02Xh\n", flags );
  82.    printf( "           lct?        = %c\n",
  83.            islct() ? 'Y' : 'N' );
  84.    printf( "           sorted?     = %c\n",
  85.            issorted() ? 'Y' : 'N' );
  86.    printf( "           interlaced? = %c\n",
  87.            isinterlaced() ? 'Y' : 'N' );
  88.    printf( "           ncolors     = %d\n", ncolors() );
  89. }
  90.  
  91. int GIFIMDESC::get( FILE *f )
  92. {
  93.    // assume id has already been read
  94.    return (fread( &xleft, sizeof(GIFIMDESC)-1, 1, f ) == 1)
  95.           ? 0 : -1;
  96. }
  97.  
  98. int GIFIMDESC::put( FILE *f )
  99. {
  100.    return (fwrite( &id, sizeof(GIFIMDESC), 1, f ) == 1)
  101.           ? 0 : -1;
  102. }
  103.  
  104. //..................struct GIFCTLEXT
  105.  
  106. void GIFCTLEXT::list( void )
  107. {
  108.    printf( "GIFCTLEXT::id    = %02Xh\n", id );
  109.    printf( "GIFCTLEXT::label = %02Xh\n", label );
  110.    printf( "GIFCTLEXT::size  = %d\n", size );
  111.    printf( "GIFCTLEXT::flags = %02Xh\n", flags );
  112.    printf( "GIFCTLEXT::delay = %d\n", delay );
  113.    printf( "GIFCTLEXT::trclr = %d\n", trclr );
  114. }
  115.  
  116. int GIFCTLEXT::get( FILE *f )
  117. {
  118.    // assume id-label has already been read
  119.    return (fread( &size, sizeof(GIFCTLEXT)-2, 1, f ) == 1)
  120.           ? 0 : -1;
  121. }
  122.  
  123. int GIFCTLEXT::put( FILE *f )
  124. {
  125.    return (fwrite( &id, sizeof(GIFCTLEXT), 1, f ) == 1)
  126.           ? 0 : -1;
  127. }
  128.  
  129. //..................struct GIFCOMEXT
  130.  
  131. void GIFCOMEXT::list( void )
  132. {
  133.    printf( "GIFCOMEXT::id    = %02Xh\n", id );
  134.    printf( "GIFCOMEXT::label = %02Xh\n", label );
  135. }
  136.  
  137. int GIFCOMEXT::get( FILE *f )
  138. {
  139.    // assume id-label has already been read
  140.    return 0;
  141. }
  142.  
  143. int GIFCOMEXT::put( FILE *f )
  144. {
  145.    return (fwrite( &id, sizeof(GIFCOMEXT), 1, f ) == 1)
  146.           ? 0 : -1;
  147. }
  148.  
  149. //..................struct GIFTXTEXT
  150.  
  151. void GIFTXTEXT::list( void )
  152. {
  153.    printf( "GIFTXTEXT::id       = %02Xh\n", id );
  154.    printf( "GIFTXTEXT::label    = %02Xh\n", label );
  155.    printf( "GIFTXTEXT::size     = %d\n", size );
  156.    printf( "GIFTXTEXT::xleft    = %d\n", xleft );
  157.    printf( "GIFTXTEXT::ytop     = %d\n", ytop );
  158.    printf( "GIFTXTEXT::txwidth  = %d\n", txwidth );
  159.    printf( "GIFTXTEXT::txheight = %d\n", txheight );
  160.    printf( "GIFTXTEXT::cewidth  = %d\n", cewidth );
  161.    printf( "GIFTXTEXT::ceheight = %d\n", ceheight );
  162.    printf( "GIFTXTEXT::fgclr    = %d\n", fgclr );
  163.    printf( "GIFTXTEXT::bgclr    = %d\n", bgclr );
  164. }
  165.  
  166. int GIFTXTEXT::get( FILE *f )
  167. {
  168.    // assume id-label has already been read
  169.    return (fread( &size, sizeof(GIFTXTEXT)-2, 1, f ) == 1)
  170.           ? 0 : -1;
  171. }
  172.  
  173. int GIFTXTEXT::put( FILE *f )
  174. {
  175.    return (fwrite( &id, sizeof(GIFTXTEXT), 1, f ) == 1)
  176.           ? 0 : -1;
  177. }
  178.  
  179. //..................struct GIFAPPEXT
  180.  
  181. void GIFAPPEXT::list( void )
  182. {
  183.    printf( "GIFAPPEXT::id       = %02Xh\n", id );
  184.    printf( "GIFAPPEXT::label    = %02Xh\n", label );
  185.    printf( "GIFAPPEXT::size     = %d\n", size );
  186.    printf( "GIFAPPEXT::apname   = " );
  187.    for( int i=0; i<sizeof(apname); i++ )
  188.       printf( "%c", apname[i] );
  189.    printf( "\n" );
  190.    printf( "GIFAPPEXT::apcode   = " );
  191.    printf( "%d.%d.%d",
  192.            apcode[0], apcode[1], apcode[2] );
  193.    printf( "\n" );
  194. }
  195.  
  196. int GIFAPPEXT::get( FILE *f )
  197. {
  198.    // assume id-label has already been read
  199.    return (fread( &size, sizeof(GIFAPPEXT)-2, 1, f ) == 1)
  200.           ? 0 : -1;
  201. }
  202.  
  203. int GIFAPPEXT::put( FILE *f )
  204. {
  205.    return (fwrite( &id, sizeof(GIFAPPEXT), 1, f ) == 1)
  206.           ? 0 : -1;
  207. }
  208.