亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? vglgif.c

?? 在DOS13號中斷下開發圖形顯示程序的例程
?? C
字號:
/*****************************************************************************
 VGLGIF.C

 vglGif( char* file, char far* buffer, char far* palette,
         int* width, int* height );

 Routine to load a 256 color .GIF file into a memory buffer.  *Only* 256
 color images are supported here!  Sorry, no routines to SAVE .GIFs...
 Memory required is allocated on the fly and no checks are in place.  If you
 don't have enough memory it will likely crash.  It's easy to add the checks
 yourself, just put one after each call to malloc().  If you supply a pointer
 to a palette, it will be filled in.  If you supply a pointer to a width
 and/or height variable, it will be filled in as well.

 Mark Morley
 morley@camosun.bc.ca
*****************************************************************************/

#include <stdio.h>

#define MAX_CODES     4096

static FILE*          fp;
static int            curr_size;
static int            clear;
static int            ending;
static int            newcodes;
static int            top_slot;
static int            slot;
static int            navail_bytes = 0;
static int            nbits_left = 0;
static unsigned char  b1;
static unsigned char  byte_buff[257];
static unsigned char* pbytes;
static unsigned char* stack;
static unsigned char* suffix;
static unsigned int*  prefix;

static unsigned long code_mask[13] =
{
   0L,
   0x0001L, 0x0003L,
   0x0007L, 0x000FL,
   0x001FL, 0x003FL,
   0x007FL, 0x00FFL,
   0x01FFL, 0x03FFL,
   0x07FFL, 0x0FFFL
};

static int pascal
get_next_code()
{
   register int  i;
   static unsigned long ret;

   if( ! nbits_left )
   {
      if( navail_bytes <= 0 )
      {
	 pbytes = byte_buff;
         navail_bytes = getc( fp );
	 if( navail_bytes )
	    for( i = 0; i < navail_bytes; ++i )
               *(byte_buff + i) = getc( fp );
      }
      b1 = *pbytes++;
      nbits_left = 8;
      --navail_bytes;
   }
   ret = b1 >> (8 - nbits_left);
   while( curr_size > nbits_left )
   {
      if( navail_bytes <= 0 )
      {
	 pbytes = byte_buff;
         navail_bytes = getc( fp );
	 if( navail_bytes )
	    for( i = 0; i < navail_bytes; ++i )
               *(byte_buff + i) = getc( fp );
      }
      b1 = *pbytes++;
      ret |= b1 << nbits_left;
      nbits_left += 8;
      --navail_bytes;
   }
   nbits_left -= curr_size;

   return( (int) (ret & *(code_mask + curr_size)) );
}

vglGif( char* file, char far* buffer, char far* pal, int* width, int* height )
{
   unsigned char* sp;
   int            code, fc, oc;
   int            i;
   unsigned char  size;
   int            c;
   unsigned char  buf[1028];
   unsigned char  red;
   unsigned char  grn;
   unsigned char  blu;

   fp = fopen( file, "rb" );
   if( !fp )
      return( 0 );
   fread( buf, 1, 6, fp );
   if( strncmp( buf, "GIF", 3 ) )
   {
      fclose( fp );
      return( 0 );
   }
   fread( buf, 1, 7, fp );
   for( i = 0; i < 768; )
   {
      red = getc( fp );
      grn = getc( fp );
      blu = getc( fp );

      if( pal )
      {
         pal[i++] = red >> 2;
         pal[i++] = grn >> 2;
         pal[i++] = blu >> 2;
      }
      else
         i += 3;
   }
   fread( buf, 1, 5, fp );
   i = getw( fp );
   if( width )
      *width = i;
   i = getw( fp );
   if( height )
      *height = i;
   if( !buffer )
      return( 1 );
   fread( buf, 1, 1, fp );
   size = getc( fp );
   if( size < 2 || 9 < size )
   {
      fclose( fp );
      return( 0 );
   }

   stack = (unsigned char*) malloc( MAX_CODES + 1 );
   suffix = (unsigned char*) malloc( MAX_CODES + 1 );
   prefix = (unsigned int*) malloc( sizeof(int) * (MAX_CODES + 1) );

   curr_size = size + 1;
   top_slot = 1 << curr_size;
   clear = 1 << size;
   ending = clear + 1;
   slot = newcodes = ending + 1;
   navail_bytes = nbits_left = 0;
   oc = fc = 0;
   sp = stack;
   while( (c = get_next_code()) != ending )
   {
      if( c == clear )
      {
	 curr_size = size + 1;
	 slot = newcodes;
	 top_slot = 1 << curr_size;
	 while( (c = get_next_code()) == clear );
	 if( c == ending )
	    break;
	 if( c >= slot )
	    c = 0;
	 oc = fc = c;
         *buffer++ = c;
      }
      else
      {
	 code = c;
	 if( code >= slot )
	 {
	    code = oc;
	    *sp++ = fc;
	 }
	 while( code >= newcodes )
	 {
	    *sp++ = *(suffix + code);
	    code = *(prefix + code);
	 }
	 *sp++ = code;
	 if( slot < top_slot )
	 {
	    *(suffix + slot) = fc = code;
	    *(prefix + slot++) = oc;
	    oc = c;
	 }
	 if( slot >= top_slot && curr_size < 12 )
	 {
	    top_slot <<= 1;
	    ++curr_size;
	 }
	 while( sp > stack )
	 {
	    --sp;
            *buffer++ = *sp;
	 }
      }
   }
   free( stack );
   free( suffix );
   free( prefix );
   fclose( fp );
   return( 1 );
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧洲性图库| 欧美精品一区二区精品网| 91在线小视频| 久久久久久久久一| 激情深爱一区二区| 555夜色666亚洲国产免| 亚洲一区在线看| 色婷婷国产精品| 亚洲欧美日韩国产综合| 99精品视频一区| 老司机精品视频一区二区三区| 欧美一区永久视频免费观看| 日精品一区二区三区| 欧美性猛交xxxxxxxx| 亚洲国产精品人人做人人爽| 欧美色倩网站大全免费| 琪琪一区二区三区| 精品欧美一区二区久久| 国产精品888| 国产精品婷婷午夜在线观看| 粉嫩在线一区二区三区视频| 中文成人av在线| 精品国产伦一区二区三区观看方式 | 久久丝袜美腿综合| 欧美一级搡bbbb搡bbbb| 欧美日韩一区精品| 欧洲av在线精品| 极品少妇一区二区| 日韩毛片在线免费观看| 欧美欧美午夜aⅴ在线观看| 久久国产日韩欧美精品| 日韩精品91亚洲二区在线观看| 亚洲一区二区三区四区不卡| 又紧又大又爽精品一区二区| 日韩欧美一区二区在线视频| 久久69国产一区二区蜜臀| 午夜精品一区二区三区三上悠亚| 久久婷婷国产综合国色天香 | 欧美在线啊v一区| 成人性色生活片免费看爆迷你毛片| 亚洲精品视频一区| 亚洲精选一二三| 亚洲一二三区在线观看| 亚洲午夜久久久久久久久电影网| 亚洲激情欧美激情| 性做久久久久久| 国产精品高潮呻吟| 欧美电影免费提供在线观看| 日韩视频一区二区三区在线播放| 日韩欧美在线1卡| 久久久久久久综合狠狠综合| 中文一区二区在线观看| 欧美日韩成人综合天天影院| 欧美另类变人与禽xxxxx| av电影在线观看一区| 捆绑紧缚一区二区三区视频| 国产一区二区在线电影| 亚洲成在线观看| 蜜臀av一区二区在线免费观看| 亚洲精品va在线观看| 亚洲一区二区精品3399| 免费观看91视频大全| 国产在线精品不卡| av不卡免费在线观看| 欧美三日本三级三级在线播放| 欧美区在线观看| 精品粉嫩超白一线天av| 国产精品久久午夜夜伦鲁鲁| 一区二区三区久久久| 国产精品美女久久久久久久 | 欧美日韩国产经典色站一区二区三区| 宅男在线国产精品| 国产清纯白嫩初高生在线观看91| 欧美大片一区二区| 中文一区二区完整视频在线观看| 亚洲综合在线五月| 久久91精品国产91久久小草| 9l国产精品久久久久麻豆| 欧美日韩在线一区二区| 久久美女高清视频| 一区二区三区欧美| 国产在线视频不卡二| 色伊人久久综合中文字幕| 91精品国产综合久久久蜜臀粉嫩 | 欧美韩日一区二区三区四区| 一区二区三区美女| 狠狠色狠狠色综合系列| 色综合久久久久久久久久久| 91精品国产色综合久久不卡电影| 久久久国产精华| 日精品一区二区三区| 成人免费视频一区二区| 欧美精品亚洲二区| 亚洲欧洲日韩女同| 久久成人综合网| 色综合视频在线观看| 精品精品国产高清a毛片牛牛| 亚洲精品国产无套在线观| 国产资源在线一区| 欧美在线影院一区二区| 亚洲国产精华液网站w| 免费成人在线观看| 欧美自拍丝袜亚洲| 国产精品欧美久久久久一区二区| 免费在线一区观看| 欧美亚洲精品一区| 中文字幕精品在线不卡| 极品少妇xxxx精品少妇| 在线播放/欧美激情| 日韩伦理电影网| 国产99精品在线观看| 欧美大片顶级少妇| 丝袜诱惑制服诱惑色一区在线观看| 91一区二区三区在线观看| 色播五月激情综合网| 欧美欧美欧美欧美| 一区二区高清视频在线观看| zzijzzij亚洲日本少妇熟睡| xf在线a精品一区二区视频网站| 天天做天天摸天天爽国产一区| av一本久道久久综合久久鬼色| 久久精品亚洲精品国产欧美 | 婷婷综合另类小说色区| 日本韩国精品在线| 亚洲天堂精品在线观看| 成人app网站| 欧美一区二区三区四区久久| 亚洲成a人在线观看| 欧美日韩一级片在线观看| 亚洲欧美区自拍先锋| 91捆绑美女网站| 亚洲同性gay激情无套| jizzjizzjizz欧美| 亚洲欧洲一区二区在线播放| eeuss鲁一区二区三区| 中文字幕二三区不卡| 成人av网站大全| 亚洲人成亚洲人成在线观看图片| 成人av在线播放网址| 中文字幕在线不卡国产视频| 成人av在线观| 亚洲精品成人天堂一二三| 在线亚洲人成电影网站色www| 有码一区二区三区| 欧美丝袜丝交足nylons| 日日欢夜夜爽一区| 日韩欧美亚洲国产精品字幕久久久| 理论电影国产精品| 久久久欧美精品sm网站| 丁香婷婷综合激情五月色| 成人欧美一区二区三区| 91在线国产观看| 亚洲一区二区三区爽爽爽爽爽| 欧美人妖巨大在线| 久久99国产精品久久99果冻传媒| 久久综合九色综合欧美98| 国产精品乡下勾搭老头1| 国产精品不卡视频| 欧美这里有精品| 麻豆精品久久精品色综合| 久久精品一区二区三区四区| 成人高清视频在线观看| 亚洲一区二区三区四区五区中文| 欧美一二三四区在线| 国产精品一级片| 亚洲视频精选在线| 欧美男女性生活在线直播观看| 久久精品国产秦先生| 中文字幕乱码久久午夜不卡| 欧美专区亚洲专区| 狠狠色综合色综合网络| 亚洲欧美日韩综合aⅴ视频| 555www色欧美视频| 成人高清av在线| 视频在线观看一区二区三区| 久久精品亚洲精品国产欧美 | 久久 天天综合| 国产精品久久久久久久久免费樱桃| 欧美综合欧美视频| 国产精品中文欧美| 午夜在线电影亚洲一区| 国产婷婷精品av在线| 欧美性欧美巨大黑白大战| 国产美女一区二区三区| 亚洲国产一区视频| 欧美激情综合在线| 欧美精品v国产精品v日韩精品| 国产91露脸合集magnet| 日韩精品电影一区亚洲| 亚洲免费av在线| 精品国产3级a| 欧美午夜精品久久久久久超碰| 国产精品77777竹菊影视小说| 亚欧色一区w666天堂| 国产精品短视频| 2021国产精品久久精品| 欧美体内she精高潮| 成人动漫在线一区| 久久99久久久欧美国产| 亚洲成人一二三|