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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? gif.c

?? 在ecos 下mingui 的移植開(kāi)發(fā)
?? C
字號(hào):
#include <assert.h>#include <stdio.h>#include <stdlib.h>#ifndef __ECOS# include <memory.h>#endif#include <string.h>#include "gif.h"const int v_incr[4]={8,8,4,2};const int v_start[4]={0,4,2,1};int unpack_gif(gif_info_t* ginfo){    int bpp;    int palette_size;    assert(ginfo->gif_surface==NULL);	assert(ginfo->gif_buffer!=NULL);    ginfo->gif_cur_buffer=ginfo->gif_buffer;        memcpy(&(ginfo->gif_global),             ginfo->gif_cur_buffer,             sizeof(gif_global_t));    ginfo->gif_x=0;    ginfo->gif_y=0;    ginfo->gif_surface=malloc(ginfo->gif_global.width*ginfo->gif_global.height*3);    ginfo->gif_cur_buffer+=GIF_GLOBAL_SIZE;    bpp=(ginfo->gif_global.flag&0x07)+1;    palette_size=(1<<bpp)*3;    memcpy(&(ginfo->gif_global_palette),             ginfo->gif_cur_buffer,             palette_size);    if (strncmp(ginfo->gif_global.magic_word,"GIF",3)!=0) {        return -1;    }    ginfo->gif_cur_buffer+=palette_size;    while(1) {        char block_type=*(ginfo->gif_cur_buffer);        ginfo->gif_cur_buffer++;        switch(block_type) {        case ',':             // unpack local image block            return unpack_local_image(ginfo);            break;        case '!':            {            // char sub_block_type=*(ginfo->gif_cur_buffer++);			unsigned char sub_block_size=*(ginfo->gif_cur_buffer++);            ginfo->gif_cur_buffer+=sub_block_size; // skip subblock            ginfo->gif_cur_buffer++;  // skip '0x00'            }            break;        default:            // unknown block , return false .            return -1;         }    }    return 0;}int unpack_local_image(gif_info_t* ginfo){    memcpy(&(ginfo->gif_local),             ginfo->gif_cur_buffer,             sizeof(gif_local_t));    ginfo->gif_cur_buffer+=GIF_LOCAL_SIZE;    ginfo->b_interlaced=ginfo->gif_local.flag&0x40;    ginfo->b_local_palette=ginfo->gif_local.flag&0x08;    if (ginfo->b_local_palette!=0) {        // load local palette ...        int bpp;        int palette_size;        bpp=(ginfo->gif_local.flag&0x07)+1;        palette_size=(1<<bpp)*3;        memcpy(&(ginfo->gif_local_palette),                 ginfo->gif_cur_buffer,                 palette_size);        ginfo->gif_cur_buffer+=palette_size;    }    return unpack_image_data(ginfo);}int unpack_image_data(gif_info_t* ginfo){    ginfo->first_ch=*(ginfo->gif_cur_buffer);        assert(ginfo->first_ch==1||           ginfo->first_ch==2||           ginfo->first_ch==4||           ginfo->first_ch==8);        ginfo->gif_cur_buffer++;    ginfo->gif_x=0;    ginfo->gif_y=0;    ginfo->CLEAR=1<<ginfo->first_ch;    ginfo->EOI=ginfo->CLEAR+1;    ginfo->request_bits=ginfo->first_ch+1;    while((ginfo->code=get_code(ginfo))!=ginfo->EOI) {        if (ginfo->code==ginfo->CLEAR) {            clear_code_table(ginfo,ginfo->CLEAR);        }        else  {            if (ginfo->code_table[ginfo->code].prefix==-2) {                insert_code_table(ginfo,ginfo->prefix,ginfo->prefix);            }            else {                if (ginfo->prefix!=-1) {                    insert_code_table(ginfo,ginfo->code,ginfo->prefix);                }            }            // output code ...            output_code(ginfo,ginfo->code);             ginfo->prefix=ginfo->code;        }    }    return 0;}void clear_code_table(gif_info_t* ginfo,int clear){    int i;    ginfo->free_code=clear+2;    ginfo->prefix=-1;    for(i=0;i<clear;i++) {        ginfo->code_table[i].first=i;   // first char         ginfo->code_table[i].last=i;    // last char         ginfo->code_table[i].prefix=-1; // prefix index     }    for(i=clear;i<4096;i++) {        ginfo->code_table[i].prefix=-2;    }    ginfo->request_bits=ginfo->first_ch+1;    ginfo->code_limit=1<<ginfo->request_bits;}void insert_code_table(gif_info_t* ginfo,int code,int prefix){    ginfo->code_table[ginfo->free_code].prefix=ginfo->prefix;    ginfo->code_table[ginfo->free_code].last=ginfo->code_table[code].first;    ginfo->code_table[ginfo->free_code].first=ginfo->code_table[prefix].first;    ginfo->free_code++;    if (ginfo->free_code==ginfo->code_limit) {        if (ginfo->request_bits<12) {            ginfo->request_bits++;            ginfo->code_limit=1<<ginfo->request_bits;        }    }}void output_code(gif_info_t* ginfo,int code){    int i=0;    while(code!=-1) {        ginfo->code_string[i++]=ginfo->code_table[code].last;        code=ginfo->code_table[code].prefix;    }    for(i--;i>=0;i--) {        output_pixel(ginfo,ginfo->code_string[i]);    }}void output_pixel(gif_info_t* ginfo,unsigned char pixel) {    unsigned char r,g,b;    if (ginfo->b_local_palette!=0) {        r=ginfo->gif_local_palette.palette[pixel*3];        g=ginfo->gif_local_palette.palette[pixel*3+1];        b=ginfo->gif_local_palette.palette[pixel*3+2];    }    else {        r=ginfo->gif_global_palette.palette[pixel*3];        g=ginfo->gif_global_palette.palette[pixel*3+1];        b=ginfo->gif_global_palette.palette[pixel*3+2];    }    draw_pixel(ginfo,r,g,b);    ginfo->gif_x++;    if (ginfo->gif_x>=ginfo->gif_local.width) {        ginfo->gif_x=0;        if (ginfo->b_interlaced==0) {            ginfo->gif_y++;        }        else {            ginfo->gif_y+=v_incr[ginfo->pass];            if (ginfo->gif_y>=ginfo->gif_local.height) {                ginfo->pass++;                ginfo->gif_y=v_start[ginfo->pass];            }        }    }}/* * get request_bits from buffer */int get_code(gif_info_t* ginfo){    int request_bits=ginfo->request_bits;    int  value=0;    int  mask;    int  position=0,use_bits=0;    while(request_bits>0) {        if (ginfo->remain_bits==0) {            if (ginfo->remain_bytes==0) {                ginfo->remain_bytes=*ginfo->gif_cur_buffer++;            }            ginfo->remain_bytes--;            ginfo->remain_bits=8;            ginfo->data=*ginfo->gif_cur_buffer++;        }        if (request_bits>=ginfo->remain_bits) {            use_bits=ginfo->remain_bits;        }        else {            use_bits=request_bits;        }        ginfo->remain_bits-=use_bits;        mask=0xff>>(8-use_bits);        mask&=ginfo->data;        // store remain useful bits to low bits of data        ginfo->data>>=use_bits;        mask<<=position;        // new position that bits should be placed next time         position+=use_bits;        // insert these bits to the value        value|=mask;        request_bits-=use_bits;    }    return value;}void draw_pixel(gif_info_t* ginfo,int r,int g,int b){    int x,y;    int offset;    unsigned char* mem;    x=ginfo->gif_x;    y=ginfo->gif_y;    offset=ginfo->gif_local.width*y+x;    mem=(unsigned char*)(ginfo->gif_surface);    mem+=offset*3;    if (r>=0) {        *mem=(char)r;    }    mem++;    if (g>=0) {        *mem=(char)g;    }    mem++;    if (b>=0) {        *mem=(char)b;    }    mem++;}void destroy_gif(gif_info_t* ginfo) {    if (ginfo->gif_surface!=NULL) {        free(ginfo->gif_surface);    }}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品色在线| 亚洲色图丝袜美腿| 99久久精品99国产精品| 亚洲18影院在线观看| 久久久久久久久久久久久夜| 91麻豆产精品久久久久久| 蜜桃精品在线观看| 亚洲欧洲中文日韩久久av乱码| 欧美一区二区视频网站| 91亚洲国产成人精品一区二三 | 欧美精品高清视频| 国产成人免费在线观看不卡| 夜夜嗨av一区二区三区四季av | 亚洲欧洲日本在线| 欧美大片在线观看一区二区| 91传媒视频在线播放| www.综合网.com| 国产传媒日韩欧美成人| 日韩和欧美的一区| 一区二区三区日本| 最好看的中文字幕久久| 国产欧美一区二区三区在线看蜜臀 | 成人欧美一区二区三区黑人麻豆| 日韩一区二区三区四区| 欧美日韩专区在线| 99视频精品全部免费在线| 国产乱码精品一品二品| 免费观看久久久4p| 丝袜亚洲另类欧美| 亚洲一区二区三区视频在线播放| 亚洲视频免费在线| 国产精品污污网站在线观看| 久久色在线观看| 久久蜜桃av一区精品变态类天堂 | 欧美va在线播放| 91精品国产入口| 51精品久久久久久久蜜臀| 欧美性欧美巨大黑白大战| 91麻豆福利精品推荐| 99视频精品免费视频| 不卡影院免费观看| av成人动漫在线观看| 91在线观看免费视频| 99re热视频这里只精品| 91在线视频播放地址| 91亚洲国产成人精品一区二区三 | 国产精品传媒入口麻豆| 国产女人18毛片水真多成人如厕| 欧美性生活一区| 亚洲日本一区二区三区| 午夜精品123| 国产午夜精品福利| 中文字幕第一区综合| 国产精品系列在线| 亚洲欧美国产三级| 亚洲一区二区三区在线看| 天天综合网天天综合色| 日本免费在线视频不卡一不卡二| 蜜臀av一区二区在线观看| 久久99久久久欧美国产| 成人性生交大合| 91高清视频免费看| 欧美高清性hdvideosex| 日韩欧美国产1| 久久久电影一区二区三区| 色狠狠一区二区| 欧美综合亚洲图片综合区| 欧美另类z0zxhd电影| 777奇米四色成人影色区| 欧美精品一二三四| 日韩亚洲欧美中文三级| 久久日一线二线三线suv| 欧美日韩高清影院| 久久久久九九视频| 国产精品精品国产色婷婷| 亚洲色图一区二区三区| 亚洲妇女屁股眼交7| 美女精品自拍一二三四| 国产电影一区在线| 成人国产亚洲欧美成人综合网| 大胆欧美人体老妇| 欧美日韩国产经典色站一区二区三区| 717成人午夜免费福利电影| 精品福利在线导航| 国产精品视频线看| 亚洲国产精品久久久男人的天堂| 日韩av成人高清| 国产一区二区影院| 一本到高清视频免费精品| 日韩精品自拍偷拍| 中文字幕一区二区三区不卡在线 | 亚洲与欧洲av电影| 麻豆91小视频| 成人av在线资源网| 欧美高清视频一二三区 | 国产精品福利在线播放| 亚洲最新视频在线观看| 久久99久久99小草精品免视看| 国产成人精品综合在线观看 | 久久精品一二三| 亚洲裸体在线观看| 亚洲电影一级黄| 国产精品一区二区免费不卡 | 国产日韩成人精品| 免费看黄色91| 日本精品裸体写真集在线观看 | 中文成人综合网| 首页国产丝袜综合| 99久久er热在这里只有精品66| 欧美一区二区三区影视| 亚洲靠逼com| 国产精品乡下勾搭老头1| 在线观看91av| 中文字幕不卡的av| 久久成人av少妇免费| 在线免费观看日本一区| 久久伊人中文字幕| 亚洲成人久久影院| 99久久国产综合精品女不卡| 精品国产亚洲在线| 亚洲国产乱码最新视频 | 欧洲视频一区二区| 国产欧美中文在线| 看电视剧不卡顿的网站| 欧美日韩精品福利| 亚洲图片激情小说| 欧美国产一区视频在线观看| 久久综合九色综合97_久久久| 亚洲综合在线免费观看| 岛国一区二区三区| 精品国产精品一区二区夜夜嗨| 亚洲一区二区三区四区在线 | 国产成人免费视频| 日韩精品自拍偷拍| 爽好多水快深点欧美视频| 94色蜜桃网一区二区三区| 91精品国产一区二区三区蜜臀| 亚洲精品视频免费看| 国产凹凸在线观看一区二区| 日韩欧美高清dvd碟片| 视频一区二区三区中文字幕| 欧洲一区二区三区免费视频| 亚洲人成亚洲人成在线观看图片| 成人高清视频在线| 国产精品久久久久四虎| 国产乱码精品1区2区3区| 欧美视频一二三区| 免费xxxx性欧美18vr| 欧美一区二区成人| 国产精品美女久久久久aⅴ | 日韩电影在线免费观看| 在线中文字幕一区二区| 亚洲美女视频一区| 色婷婷精品大视频在线蜜桃视频| 国产精品国产自产拍在线| 国产成人8x视频一区二区| 欧美电影影音先锋| 激情亚洲综合在线| 久久你懂得1024| 国产精品一区二区在线看| 久久免费美女视频| 国产91丝袜在线播放九色| 欧美国产欧美综合| 成人aaaa免费全部观看| 国产精品传媒在线| 色综合视频在线观看| 五月激情丁香一区二区三区| 欧美日韩国产免费一区二区| 日本中文一区二区三区| 精品国产污网站| 国产成人亚洲精品青草天美| 国产精品久久久久久久久动漫 | 91久久久免费一区二区| 亚洲综合激情另类小说区| 精品婷婷伊人一区三区三| 免费看欧美女人艹b| 国产亚洲综合在线| 蜜桃视频在线观看一区| 26uuu精品一区二区三区四区在线| 国产成人综合视频| 亚洲精品久久久久久国产精华液| 91福利在线播放| 久久福利视频一区二区| 国产精品午夜电影| 欧美色视频一区| 麻豆成人av在线| 久久男人中文字幕资源站| 在线欧美日韩国产| 黄一区二区三区| 亚洲精品日韩一| 精品少妇一区二区三区 | 久久99精品一区二区三区三区| 国产偷国产偷亚洲高清人白洁| 成人国产精品免费| 日韩激情视频网站| 欧美国产日韩在线观看| 欧美日本在线看| 成人激情午夜影院| 日韩二区在线观看| 中文字幕在线不卡|