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

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

?? win_wvfb.c

?? mini gui 1.6.8 lib and source
?? C
字號:
/***  $Id: win_wvfb.c,v 1.3 2005/06/08 02:36:27 weiym Exp $**  **  linux_wvfb.c: A subdriver of shadow NEWGAL engine for Windows WVFB 4bpp/1bpp.****  Copyring (C) 2003 ~ 2005 Feynman Software.*//*** This program is free software; you can redistribute it and/or modify** it under the terms of the GNU General Public License as published by** the Free Software Foundation; either version 2 of the License, or** (at your option) any later version.**** This program is distributed in the hope that it will be useful,** but WITHOUT ANY WARRANTY; without even the implied warranty of** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the** GNU General Public License for more details.**** You should have received a copy of the GNU General Public License** along with this program; if not, write to the Free Software** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include "mgconfig.h"#ifdef _NEWGAL_ENGINE_SHADOW #include "common.h"#include "minigui.h"#include "newgal.h"#include "shadow.h"#if defined (WIN32) && defined (__TARGET_WVFB__)#include <stdio.h>#include <stdlib.h>extern void *wvfb_shadow_init (void);extern void wvfb_shadow_close (void);struct WVFBHeader{    int width;    int height;    int depth;    int linestep;    int dataoffset;    RECT update;    BYTE dirty;    int  numcols;    unsigned int clut[256];};struct WVFBHeader* wvfb_hdr;static int a_getinfo (struct lcd_info* lcd_info){    lcd_info->width = wvfb_hdr->width;    lcd_info->height = wvfb_hdr->height;    lcd_info->bpp = wvfb_hdr->depth;    if (wvfb_hdr->depth >= 8)        lcd_info->fb = ((char*)wvfb_hdr) + wvfb_hdr->dataoffset;    else        lcd_info->fb = NULL;    lcd_info->rlen = wvfb_hdr->linestep;    lcd_info->type = 0;        return 0;}static int a_setclut_1bpp (int first, int ncolors, GAL_Color *colors){    int i, entry = first;    int set = 0;    for (i = 0; i < ncolors; i++) {        if (entry == 0 || entry == 255) {            set++;            wvfb_hdr->clut [entry/255] =                 (0xff << 24) | ((colors[i].r & 0xff) << 16) | ((colors[i].g & 0xff) << 8) | (colors[i].b & 0xff);        }        entry ++;    }    return set;}static int a_setclut_4bpp (int first, int ncolors, GAL_Color *colors){    int i, entry = first;    int set = 0;    for (i = 0; i < ncolors; i++) {        if (entry == 0 || ((entry + 1) % 16 == 0)) {            set++;            wvfb_hdr->clut [entry/16] =                 (0xff << 24) | ((colors[i].r & 0xff) << 16) | ((colors[i].g & 0xff) << 8) | (colors[i].b & 0xff);        }        entry ++;    }    return set;}static int a_setclut_8bpp (int first, int ncolors, GAL_Color *colors){    int i, entry = first;    int set = 0;    for (i = 0; i < ncolors; i++) {        if (entry < 256) {            set++;            wvfb_hdr->clut [entry++] =                 (0xff << 24) | ((colors[i].r & 0xff) << 16) | ((colors[i].g & 0xff) << 8) | (colors[i].b & 0xff);        }    }    return set;}static int a_init (void){    wvfb_hdr = (struct WVFBHeader *) wvfb_shadow_init ();	if ((int) wvfb_hdr == -1 || wvfb_hdr == NULL)        return 3;    switch (wvfb_hdr->depth) {        case 1:            __mg_shadow_lcd_ops.setclut = a_setclut_1bpp;            break;        case 4:            __mg_shadow_lcd_ops.setclut = a_setclut_4bpp;            break;        case 8:            __mg_shadow_lcd_ops.setclut = a_setclut_8bpp;            break;    }    SetRect (&wvfb_hdr->update, 0, 0, 0, 0);    wvfb_hdr->dirty = FALSE;    return 0;}static int a_release (void){    wvfb_shadow_close ();	return 0;}static void a_sleep (void){    /* 20ms */    _sleep (20);}static unsigned char pixel_bit [] = {0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};static void wvfb_update_1bpp (_THIS){    RECT bound = wvfb_hdr->update;    const BYTE* src_bits;    BYTE* dst_bits;    int width, height;    int x, y, i;    /* round x to be 8-aligned */    bound.left = bound.left & ~0x07;    bound.right = (bound.right + 7) & ~0x07;    width = RECTW (bound);    height = RECTH (bound);    if (width <= 0 || height <= 0)        return;    src_bits = this->hidden->fb;    src_bits += bound.top * this->hidden->pitch + bound.left;    dst_bits = ((BYTE*) wvfb_hdr) + wvfb_hdr->dataoffset;    dst_bits += bound.top * wvfb_hdr->linestep + (bound.left >> 3);    for (y = 0; y < height; y++) {        const BYTE* src_line = src_bits;        BYTE* dst_line = dst_bits;        for (x = 0; x < width; x+=8) {            *dst_line = 0;            for (i = 0; i < 8; i++) {                if (*src_line < 128)                    *dst_line |= pixel_bit [i];                src_line ++;            }            dst_line ++;		        }        src_bits += this->hidden->pitch;        dst_bits += wvfb_hdr->linestep;    }}static void wvfb_update_4bpp (_THIS){    RECT bound = wvfb_hdr->update;    const BYTE* src_bits;    BYTE* dst_bits;    int width, height;    int x, y;    /* round x to be 2-aligned */    bound.left = bound.left & ~0x01;    bound.right = (bound.right + 1) & ~0x01;    width = RECTW (bound);    height = RECTH (bound);    if (width <= 0 || height <= 0)        return;    src_bits = this->hidden->fb;    src_bits += bound.top * this->hidden->pitch + bound.left;    dst_bits = (BYTE*) wvfb_hdr + wvfb_hdr->dataoffset;    dst_bits += bound.top * wvfb_hdr->linestep + (bound.left >> 1);    for (y = 0; y < height; y++) {        const BYTE* src_line = src_bits;        BYTE* dst_line = dst_bits;        for (x = 0; x < width; x+=2) {            *dst_line = (*src_line & 0xF0) | (*(++src_line) >> 4);			src_line ++;            dst_line ++;        }        src_bits += this->hidden->pitch;        dst_bits += wvfb_hdr->linestep;    }}static void a_refresh (_THIS, const RECT* update){    RECT bound;    wvfb_shadow_lock ();    bound = wvfb_hdr->update;    if (bound.right < 0) bound.right = 0;    if (bound.bottom < 0) bound.bottom = 0;    GetBoundRect (&bound, &bound, update);    wvfb_hdr->update = bound;     /* Copy the bits from Shadow FrameBuffer to WVFB FrameBuffer */    if (wvfb_hdr->depth == 1)        wvfb_update_1bpp (this);    else if (wvfb_hdr->depth == 4)        wvfb_update_4bpp (this);    wvfb_hdr->dirty = TRUE;	wvfb_shadow_unlock ();}struct shadow_lcd_ops __mg_shadow_lcd_ops = {    a_init,    a_getinfo,    a_release,    NULL,    a_sleep,    a_refresh};#endif /* __WIN32__ && __TARGET_WVFB__ */#endif /* _NEWGAL_ENGINE_SHADOW */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产污污免费网站入口| 欧美精品日韩精品| 肉色丝袜一区二区| 国产不卡一区视频| 67194成人在线观看| 中文字幕亚洲欧美在线不卡| 久久电影网站中文字幕| 久久久91精品国产一区二区精品| 亚洲人成影院在线观看| 国产成人午夜99999| 日韩视频在线你懂得| 婷婷开心久久网| 色综合久久综合网97色综合 | 久久婷婷色综合| 亚洲线精品一区二区三区 | 欧美人xxxx| 亚洲美女免费视频| 成人国产精品免费观看动漫| 欧美成人欧美edvon| 秋霞成人午夜伦在线观看| 色偷偷久久一区二区三区| 国产精品视频yy9299一区| 国产日产欧产精品推荐色| 精品一区二区三区影院在线午夜| 欧美日韩视频不卡| 亚洲国产精品人人做人人爽| 色94色欧美sute亚洲13| 亚洲人成精品久久久久久| 播五月开心婷婷综合| 日本一区二区三区电影| 成人影视亚洲图片在线| 国产婷婷一区二区| 国产91精品一区二区麻豆网站 | 国产精品女上位| 成人精品电影在线观看| 国产清纯在线一区二区www| 国产一区二区三区在线看麻豆| 精品少妇一区二区三区在线视频| 男人的天堂亚洲一区| 欧美成人女星排名| 国产精品99久久久久久宅男| 日本一区二区三区在线不卡| caoporm超碰国产精品| 欧美三级在线播放| 日韩精品亚洲专区| 日韩欧美的一区二区| 国产原创一区二区| 中文字幕一区二区三区视频| 91色|porny| 日韩专区欧美专区| 2022国产精品视频| 99re在线精品| 日韩精品久久理论片| 久久久午夜精品| 99re这里只有精品6| 欧美成人伊人久久综合网| 国产成人av电影在线观看| 中文字幕在线不卡视频| 精品婷婷伊人一区三区三| 另类综合日韩欧美亚洲| 国产精品久久久久久户外露出 | 99精品欧美一区二区三区小说 | 亚洲欧美一区二区三区极速播放 | 自拍偷拍国产精品| 欧美色综合网站| 国内精品嫩模私拍在线| 国产精品久久久久久福利一牛影视 | 99re热视频这里只精品| 亚洲国产色一区| 国产欧美视频一区二区| 欧美伊人久久久久久久久影院 | 国产精品伦理一区二区| 欧美日韩国产影片| 高清不卡在线观看| 日本亚洲电影天堂| 中文字幕不卡三区| 91精品国产综合久久精品 | 国产成人啪免费观看软件| 亚洲一区二区三区爽爽爽爽爽| 日韩欧美亚洲另类制服综合在线| av一区二区三区四区| 麻豆精品国产传媒mv男同| 亚洲色图在线播放| 久久夜色精品国产噜噜av| 欧美午夜电影在线播放| 成人免费看片app下载| 日本视频免费一区| 亚洲一区av在线| 亚洲视频在线一区观看| 久久久综合九色合综国产精品| 欧美三级视频在线| av电影在线不卡| 国产成人在线视频网站| 久久精品国产精品青草| 一区二区久久久久久| 亚洲欧洲无码一区二区三区| 国产成人精品一区二区三区四区 | 成人小视频在线观看| 久久色.com| 91精品国产乱码久久蜜臀| 日本韩国一区二区三区视频| 成人丝袜高跟foot| 国产精品77777| 精品一区二区三区在线播放视频| 亚洲成人激情社区| 亚洲一区二区av电影| 亚洲欧美日韩国产成人精品影院| 国产精品视频一二三| 国产精品午夜春色av| 综合久久一区二区三区| 欧美精彩视频一区二区三区| 久久婷婷国产综合精品青草| 欧美一级片在线| 欧美成人精品二区三区99精品| 欧美一区二区三区视频在线 | 老司机午夜精品99久久| 日韩高清一区在线| 日韩成人免费电影| 久久超碰97中文字幕| 激情综合一区二区三区| 极品尤物av久久免费看| 国产精品你懂的在线| 国产精品久久久久久户外露出| 亚洲色欲色欲www在线观看| 亚洲美女一区二区三区| 亚洲国产三级在线| 日本不卡视频一二三区| 麻豆成人av在线| 国产成人午夜片在线观看高清观看| 国产成人精品免费在线| 91一区二区三区在线播放| 日本高清免费不卡视频| 欧美日韩二区三区| 精品三级在线看| 欧美国产日韩a欧美在线观看 | 中文字幕巨乱亚洲| 洋洋av久久久久久久一区| 视频一区二区欧美| 国产大陆亚洲精品国产| 色婷婷久久99综合精品jk白丝| 欧美猛男男办公室激情| 精品蜜桃在线看| 亚洲欧洲日韩一区二区三区| 亚洲成a人在线观看| 精品写真视频在线观看| 91在线码无精品| 欧美一区二区三区色| 欧美国产在线观看| 一区二区三区四区不卡视频| 蜜臂av日日欢夜夜爽一区| 成人美女在线视频| 91精品福利在线一区二区三区| 久久嫩草精品久久久精品一| 亚洲欧美色图小说| 激情综合亚洲精品| 欧美丝袜自拍制服另类| 精品国产91久久久久久久妲己 | 欧美日韩一区不卡| 国产日本欧美一区二区| 亚州成人在线电影| 成人性生交大片免费看中文| 欧美顶级少妇做爰| 中文字幕一区二区三| 免费的国产精品| 色噜噜夜夜夜综合网| 久久免费美女视频| 午夜久久久影院| 99久久免费视频.com| 久久一夜天堂av一区二区三区| 亚洲夂夂婷婷色拍ww47| 成人一区二区视频| 26uuu国产电影一区二区| 亚洲午夜电影网| 欧美丰满少妇xxxxx高潮对白| 成人a免费在线看| 日韩精品一区二区三区三区免费 | 亚洲欧洲精品一区二区三区| 日韩成人午夜精品| 欧美中文字幕亚洲一区二区va在线| 久久精品日韩一区二区三区| 视频一区在线视频| 欧美亚洲一区二区在线观看| 国产精品网曝门| 国产在线精品一区二区| 日韩亚洲欧美在线| 日韩黄色免费电影| 欧美久久久久免费| 午夜影院在线观看欧美| 在线中文字幕一区二区| 国产日韩综合av| 国产一区不卡视频| 欧美精品一区视频| 日韩高清不卡一区| 欧美猛男超大videosgay| 夜夜精品视频一区二区| 91麻豆福利精品推荐| 亚洲欧美偷拍另类a∨色屁股| 91女厕偷拍女厕偷拍高清| 国产精品色噜噜| av成人免费在线观看|