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

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

?? native.c

?? 嵌入式系統圖形用戶界面編程
?? C
?? 第 1 頁 / 共 3 頁
字號:
 * borrowed  from gl lib. */static gal_pixel mapcolor (GAL_GC gc, GAL_Color *color){    unsigned int v;    switch (gc.psd->bpp) {    case 1:        if ((color->b + color->g + color->r) > 128*3)            v = 1;        else            v = 0;        return v;    case 2:        v = 0;        if (color->b >= 64)            v += 1;        if (color->g >= 64)            v += 2;        if (color->r >= 64)            v += 4;        if (color->b >= 192 || color->g >= 192 || color->r >= 192)            v += 8;        v>>=2;        return v;    case 4:        /* Now this is real fun. Map to standard EGA palette. */        v = 0;        if (color->b >= 64)            v += 1;        if (color->g >= 64)            v += 2;        if (color->r >= 64)            v += 4;        if (color->b >= 192 || color->g >= 192 || color->r >= 192)            v += 8;        return v;    case 8:        return RGB2PIXEL332 (color->r, color->g, color->b);    case 15:        return RGB2PIXEL555 (color->r, color->g, color->b);    case 16:        return RGB2PIXEL565 (color->r, color->g, color->b);    case 24:    case 32:        return RGB2PIXEL888 (color->r, color->g, color->b);    }    return -1;}static int unmappixel (GAL_GC gc, gal_pixel pixel, GAL_Color* color){    switch (gc.psd->bpp) {    case 1:        if (pixel) {            color->r = 255;            color->g = 255;            color->b = 255;        }        else {            color->r = 0;            color->g = 0;            color->b = 0;        }        break;    case 2:    case 4:        color->r = SysPixelColor [pixel].r;        color->g = SysPixelColor [pixel].g;        color->b = SysPixelColor [pixel].b;        break;    case 8:        color->r = PIXEL332RED (pixel) << 5;        color->g = PIXEL332GREEN (pixel) << 5;        color->b = PIXEL332BLUE (pixel) << 6;        break;    case 15:        color->r = PIXEL555RED (pixel) << 3;        color->g = PIXEL555GREEN (pixel) << 3;        color->b = PIXEL555BLUE (pixel) << 3;        break;    case 16:        color->r = PIXEL565RED (pixel) << 3;        color->g = PIXEL565GREEN (pixel) << 2;        color->b = PIXEL565BLUE (pixel) << 3;        break;    case 24:    case 32:        color->r = PIXEL888RED (pixel);        color->g = PIXEL888GREEN (pixel);        color->b = PIXEL888BLUE (pixel);        break;    }        return 0;}/* * Palette operations */static int getpalette (GAL_GC gc, int s, int len, GAL_Color* cmap){    gc.psd->GetPalette(gc.psd,s,len,cmap);    return 0;}static int setpalette (GAL_GC gc, int s, int len, GAL_Color* cmap){    gc.psd->SetPalette(gc.psd,s,len,cmap);    return 0;}/* * Specical functions work for <=8 bit color mode. */static int setcolorfulpalette (GAL_GC gc){    int i;    GAL_Color pal[256];    if (gc.psd->bpp > 8)    return 0;    switch ( gc.psd->bpp ) {    case 1:        for (i = 0; i < 2; i++) {            pal[i].b = SysPixelColor[i*15].b;            pal[i].g = SysPixelColor[i*15].g;            pal[i].r = SysPixelColor[i*15].r;            pal[i].a = 0;        }        gc.psd->SetPalette(gc.psd,0,2,pal);        break;    case 2:        for (i = 0; i < 4; i++) {            pal[i].b = SysPixelColor[i*4].b;            pal[i].g = SysPixelColor[i*4].g;            pal[i].r = SysPixelColor[i*4].r;            pal[i].a = 0;        }        gc.psd->SetPalette(gc.psd,0,4,pal);        break;    case 4:        for (i = 0; i < 16; i++) {            pal[i].b = SysPixelColor[i].b;            pal[i].g = SysPixelColor[i].g;            pal[i].r = SysPixelColor[i].r;            pal[i].a = 0;        }        gc.psd->SetPalette(gc.psd,0,16,pal);            break;    case 8:        for (i = 0; i < 256; i++) {#if 1            pal[i].r = PIXEL332RED (i) << 5;            pal[i].g = PIXEL332GREEN (i) << 5;            pal[i].b = PIXEL332BLUE (i) << 6;#else            pal[i].b = (i & 7) * (64 / 2);        /* 3 bits */            pal[i].g = ((i & 56) >> 3) * (64 / 2);    /* 3 bits */            pal[i].r = ((i & 192) >> 6) * (64);        /* 2 bits */#endif            pal[i].a = 0;        }        gc.psd->SetPalette (gc.psd, 0, 256, pal);            break;    default:        break;    }            return 0;}/* * Box operations * TODO: Currently we did not do clpping in putbox() or getbox() or other. * If we do clipping at early, we can spend time... */static size_t boxsize (GAL_GC gc, int w, int h){    if ((w <= 0) || (h <= 0)) return -1;    return w * h * bytesperpixel (gc);}static int fillbox (GAL_GC gc, int x, int y, int w, int h, gal_pixel pixel){    if ((w <= 0) || (h <= 0)) return -1;    BLOCK_DRAW_SEM;    if (_COOR_TRANS && gc.psd == cur_gfx->phygc.psd)        rotaterect (&x, &y, &w, &h, _ROT_DIR_CCW?gc.psd->xres:gc.psd->yres, _ROT_DIR_CCW?0:1);    if (native_gen_clipbox (gc.psd, &x, &y, &w, &h) == CLIP_INVISIBLE)        goto ret;    gc.psd->FillRect (gc.psd, x, y, w, h, pixel) ;    if (gc.psd->UpdateRect) gc.psd->UpdateRect (gc.psd, x, y, x + w, y + h);ret:    UNBLOCK_DRAW_SEM;    return 0;}static void putbox_helper (GAL_GC gc, int x, int y, int w, int h, void* buf, int pitch){    int bpp = bytesperpixel (gc);    gal_uint8 *tmpptr= (gal_uint8*) buf;    rotaterect (&x, &y, &w, &h, _ROT_DIR_CCW?gc.psd->xres:gc.psd->yres, _ROT_DIR_CCW?1:0);    if ( y < 0 ) {        h += y;        tmpptr -= y * pitch;        y = 0;    }    if ( x < 0 ) {        w += x;        tmpptr -= bpp * x;        x = 0;    }    if ( x + w -1 >= gc.psd->yres)         w = gc.psd->yres - x;    if ( y + h -1 >= gc.psd->xres)         h = gc.psd->xres - y;    rotatepoint (&x, &y, _ROT_DIR_CCW?gc.psd->xres:gc.psd->yres, _ROT_DIR_CCW?0:1);    if (_ROT_DIR_CCW) {        while (h > 0) {            gc.psd->PutBox (gc.psd, x, y, 1, w, tmpptr);            tmpptr += pitch;            x--;            h--;        }    }    else {        //char* reversi = alloca (w * bpp);        char* reversi = malloc (w * bpp);        y -= w - 1;        while (h > 0) {            reverse_buff (reversi, tmpptr, w, bpp);            gc.psd->PutBox (gc.psd, x, y, 1, w, reversi);            tmpptr += pitch;            x++;            h--;        }        free (reversi);    }}static int putbox_wrapper (GAL_GC gc, int x, int y, int w, int h, void* buf, int pitch){    if ((w <= 0) || (h <= 0)) return -1;        BLOCK_DRAW_SEM;    if (_COOR_TRANS && gc.psd == cur_gfx->phygc.psd) {        rotaterect (&x, &y, &w, &h, _ROT_DIR_CCW?gc.psd->xres:gc.psd->yres, _ROT_DIR_CCW?0:1);        if (gc.psd->doclip) {            if ((x + w - 1 < gc.psd->clipminx) || (x >= gc.psd->clipmaxx))                goto inv_args;            if ((y + h - 1 < gc.psd->clipminy) || (y >= gc.psd->clipmaxy))                goto inv_args;        } else {            if ((x + w - 1 < 0) || (x >= gc.psd->xres))                goto inv_args;            if ((y + h - 1 < 0) || (y >= gc.psd->yres))                goto inv_args;        }        putbox_helper (gc, x, y, w, h, buf, pitch);    }    else {        if (gc.psd->doclip) {            if ((x + w - 1 < gc.psd->clipminx) || (x >= gc.psd->clipmaxx))                goto inv_args;            if ((y + h - 1 < gc.psd->clipminy) || (y >= gc.psd->clipmaxy))                goto inv_args;        } else {            if ((x + w - 1 < 0) || (x >= gc.psd->xres))                goto inv_args;            if ((y + h - 1 < 0) || (y >= gc.psd->yres))                goto inv_args;        }        gc.psd->PutBox (gc.psd, x, y, w, h, buf);   /* ignore pitch */    }    if (gc.psd->UpdateRect) gc.psd->UpdateRect (gc.psd, x, y, x + w, y + h);inv_args:    UNBLOCK_DRAW_SEM;    return 0;}static int putbox (GAL_GC gc, int x, int y, int w, int h, void* buf){    return putbox_wrapper (gc, x, y, w, h, buf, w * bytesperpixel (gc));}static int putboxmask ( GAL_GC gc, int x, int y, int w, int h, void* buf, gal_pixel cxx){    int oldw = w, bpp = 0;    gal_uint8 *tmpptr= (gal_uint8*) buf;    if ((w <= 0) || (h <= 0)) return -1;    BLOCK_DRAW_SEM;    if (_COOR_TRANS && gc.psd == cur_gfx->phygc.psd) {        rotaterect (&x, &y, &w, &h, _ROT_DIR_CCW?gc.psd->xres:gc.psd->yres, _ROT_DIR_CCW?0:1);        if (gc.psd->doclip) {            if ((x + w - 1 < gc.psd->clipminx) || (x >= gc.psd->clipmaxx))                goto inv_args;            if ((y + h - 1 < gc.psd->clipminy) || (y >= gc.psd->clipmaxy))                goto inv_args;        } else {            if ((x + w - 1 < 0) || (x >= gc.psd->xres))                goto inv_args;            if ((y + h - 1 < 0) || (y >= gc.psd->yres))                goto inv_args;        }        rotaterect (&x, &y, &w, &h, _ROT_DIR_CCW?gc.psd->xres:gc.psd->yres, _ROT_DIR_CCW?1:0);        bpp = bytesperpixel (gc);        if ( y < 0 ) {            h += y;            tmpptr -= y * bpp * w;            y = 0;        }        if ( x < 0 ) {            w += x;            tmpptr -= bpp * x;            x = 0;        }                if ( x + w -1 >= gc.psd->yres)             w = gc.psd->yres - x ;        if ( y + h -1 >= gc.psd->xres)             h = gc.psd->xres - y ;        rotatepoint (&x, &y, _ROT_DIR_CCW?gc.psd->xres:gc.psd->yres, _ROT_DIR_CCW?0:1);        if (_ROT_DIR_CCW) {            while (h > 0) {                gc.psd->PutBoxMask (gc.psd, x, y, 1, w, tmpptr, cxx);                    tmpptr += bpp * oldw;                x--;                h--;            }        }        else {            //char* reversi = alloca (w * bpp);            char* reversi = malloc (w * bpp);                y -= w - 1;            while (h > 0) {                reverse_buff (reversi, tmpptr, w, bpp);                gc.psd->PutBoxMask (gc.psd, x, y, 1, w, reversi, cxx);                    tmpptr += bpp * oldw;                x++;                h--;            }            free (reversi);        }    }    else {        if (gc.psd->doclip) {            if ((x + w - 1 < gc.psd->clipminx) || (x >= gc.psd->clipmaxx))                goto inv_args;            if ((y + h - 1 < gc.psd->clipminy) || (y >= gc.psd->clipmaxy))                goto inv_args;        } else {            if ((x + w - 1 < 0) || (x >= gc.psd->xres))                goto inv_args;            if ((y + h - 1 < 0) || (y >= gc.psd->yres))                goto inv_args;        }        gc.psd->PutBoxMask (gc.psd, x, y, w, h, buf, cxx);    }    if (gc.psd->UpdateRect) gc.psd->UpdateRect (gc.psd, x, y, x + w, y + h);inv_args:    UNBLOCK_DRAW_SEM;    return 0;}static void getbox_helper (GAL_GC gc, int x, int y, int w, int h, void* buf, int pitch){    int bpp = bytesperpixel (gc);    gal_uint8 *tmpptr= (gal_uint8*) buf;    if ( y < 0 ) {        h += y;        tmpptr -= y * pitch;        y = 0;    }    if ( x < 0 ) {        w += x;        tmpptr -= bpp * x;        x = 0;    }            if ( x + w -1 >= gc.psd->yres)         w = gc.psd->yres - x ;    if ( y + h -1 >= gc.psd->xres)         h = gc.psd->xres - y ;    rotatepoint (&x, &y, _ROT_DIR_CCW?gc.psd->xres:gc.psd->yres, _ROT_DIR_CCW?0:1);    if (_ROT_DIR_CCW) {        while (h > 0) {            gc.psd->GetBox (gc.psd, x, y, 1, w, tmpptr);            tmpptr += pitch;            x--;            h--;        }    }    else {        //char* reversi = alloca (w * bpp);        char* reversi = malloc (w * bpp);        y -= w - 1;        while (h > 0) {            gc.psd->GetBox (gc.psd, x, y, 1, w, reversi);            reverse_buff (tmpptr, reversi, w, bpp);            tmpptr += pitch;            x++;            h--;        }        free (reversi);    }}static int getbox_wrapper (GAL_GC gc, int x, int y, int w, int h, void* buf, int pitch){    if ((w <= 0) || (h <= 0)) return -1;    if (_COOR_TRANS && gc.psd == cur_gfx->phygc.psd) {        if ((x + w - 1 < 0) || (x >= gc.psd->yres))            return -1;        if ((y + h - 1 < 0) || (y >= gc.psd->xres))            return -1;        getbox_helper (gc, x, y, w, h, buf, pitch);    }    else {        if ((x + w - 1 < 0) || (x >= gc.psd->xres))            return -1;        if ((y + h - 1 < 0) || (y >= gc.psd->yres))            return -1;        gc.psd->GetBox (gc.psd, x, y, w, h, buf);   /* ignore pitch */    }    return 0;}static int getbox (GAL_GC gc, int x, int y, int w, int h, void* buf){    return getbox_wrapper (gc, x, y, w, h, buf, w * bytesperpixel (gc));}static int scalebox (GAL_GC gc, int sw, int sh, void* srcbuf,        int dw, int dh, void* dstbuf){    return native_gen_scalebox (gc.psd, sw, sh, srcbuf, dw, dh, dstbuf);}static int copybox (GAL_GC gc, int x, int y, int w, int h, int nx, int ny){    int org_w = w, org_h = h;    if ((w <= 0) || (h <= 0)) return -1;    if (_COOR_TRANS && gc.psd == cur_gfx->phygc.psd) {        rotaterect (&x, &y, &w, &h, _ROT_DIR_CCW?gc.psd->xres:gc.psd->yres, _ROT_DIR_CCW?0:1);        rotaterect (&nx, &ny, &org_w, &org_h, _ROT_DIR_CCW?gc.psd->xres:gc.psd->yres, _ROT_DIR_CCW?0:1);    }    if ((x >= gc.psd->xres) || (x + w - 1 < 0)) return -1;    if ((y >= gc.psd->yres) || (y + h - 1 < 0)) return -1;    if (x < 0) { nx -= x; w += x; x = 0; }    if (y < 0) { ny -= y; h += y; y = 0; }    if (x + w - 1 >= gc.psd->xres) w = gc.psd->xres - x;    if (y + h - 1 >= gc.psd->yres) h = gc.psd->yres - y;            BLOCK_DRAW_SEM;    //dst do clip    if (gc.psd->doclip) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av成人老司机| 亚洲精品一区二区三区四区高清 | 国产一区不卡视频| 91浏览器在线视频| 精品国产第一区二区三区观看体验| 亚洲女同一区二区| 国产一区二区影院| 91精品免费在线观看| 亚洲欧洲综合另类在线| 国产**成人网毛片九色| 日韩欧美一级在线播放| 亚洲va天堂va国产va久| av在线不卡电影| 国产调教视频一区| 黄页视频在线91| 91麻豆精品国产自产在线观看一区 | 久久国产尿小便嘘嘘| 色哟哟日韩精品| 国产精品久久久久久久午夜片| 经典一区二区三区| 日韩一卡二卡三卡四卡| 亚洲午夜av在线| 色综合一区二区三区| 国产精品国产自产拍高清av王其| 国产在线精品免费| 久久一区二区三区四区| 久久99精品国产.久久久久| 91麻豆精品国产91久久久更新时间 | 色欧美乱欧美15图片| √…a在线天堂一区| 成人av网站在线| 亚洲欧洲精品一区二区三区不卡| 国产91高潮流白浆在线麻豆| 久久精品一级爱片| 国产精品一二三四区| 久久精品人人做人人综合| 国产福利91精品一区| 国产欧美日韩精品在线| voyeur盗摄精品| 亚洲精品视频观看| 在线播放中文一区| 美女视频第一区二区三区免费观看网站| 欧美精品乱人伦久久久久久| 亚洲.国产.中文慕字在线| 欧美一区二区三区在线观看| 青青青爽久久午夜综合久久午夜 | 久久久久99精品国产片| 国产成人精品免费视频网站| |精品福利一区二区三区| 91国产免费观看| 美女一区二区三区| 日本一区免费视频| 色婷婷av一区二区三区gif| 香蕉加勒比综合久久| 精品久久久久久久久久久久久久久 | 欧美日韩一区二区三区高清 | 国产91综合一区在线观看| 国产精品久久久久一区| 欧美优质美女网站| 麻豆91在线播放免费| 国产精品区一区二区三区 | 成人久久18免费网站麻豆| 亚洲欧美日韩一区| 91精品国产综合久久婷婷香蕉| 国产一区二区久久| 亚洲精品伦理在线| 日韩亚洲欧美综合| 91亚洲精华国产精华精华液| 日韩国产精品久久久| 日本一区二区免费在线观看视频| 在线精品视频一区二区三四 | 在线视频亚洲一区| 美国毛片一区二区| 成人免费在线视频| 欧美一区二区三区精品| 99r国产精品| 久久99国产精品久久99| 亚洲日本丝袜连裤袜办公室| 欧美一级在线视频| 91国偷自产一区二区使用方法| 狠狠色丁香久久婷婷综合丁香| 日韩久久一区二区| 亚洲精品一区二区三区99| 日本高清成人免费播放| 国产成人综合在线观看| 男女男精品网站| 亚洲精品视频观看| 国产精品麻豆久久久| 欧美tk—视频vk| 欧美久久久久久久久| 成人黄色国产精品网站大全在线免费观看 | 久久国产综合精品| 亚洲午夜电影在线| 亚洲欧美区自拍先锋| 国产亚洲制服色| 日韩美女在线视频 | 久久久美女毛片| 日韩美女一区二区三区| 欧美日韩一卡二卡三卡| 91浏览器在线视频| 99re成人精品视频| 国产.精品.日韩.另类.中文.在线.播放| 日韩福利电影在线| 亚洲成人福利片| 亚洲成人你懂的| 亚洲综合清纯丝袜自拍| 亚洲美女视频在线| 亚洲精品第1页| 亚洲精品久久久蜜桃| 亚洲丝袜精品丝袜在线| 中文字幕中文字幕一区二区| 国产亚洲精品中文字幕| 久久久不卡影院| 久久精品日韩一区二区三区| 亚洲精品一区二区三区影院| 欧美精品一区二区三区蜜臀| 日韩精品在线一区二区| 欧美成人激情免费网| 欧美一级欧美三级在线观看| 91精品国产91综合久久蜜臀| 欧美一区二区福利在线| 欧美大片拔萝卜| 久久亚洲二区三区| 久久美女艺术照精彩视频福利播放| 精品99一区二区三区| 欧美国产一区在线| 国产精品二区一区二区aⅴ污介绍| 国产精品国产三级国产普通话蜜臀| 亚洲欧美怡红院| 亚洲精品第一国产综合野| 天堂久久一区二区三区| 久久精品国产亚洲aⅴ| 国产精品伊人色| 91丨国产丨九色丨pron| 欧美日韩的一区二区| 精品999在线播放| 亚洲欧美日韩久久精品| 日本午夜精品视频在线观看 | 2023国产一二三区日本精品2022| 国产网红主播福利一区二区| 亚洲卡通欧美制服中文| 男女男精品视频网| www.一区二区| 这里只有精品电影| 国产婷婷色一区二区三区| 亚洲色欲色欲www| 蜜臀精品一区二区三区在线观看| 国产激情一区二区三区| 91福利在线看| 337p日本欧洲亚洲大胆精品| 中文字幕一区在线观看| 三级在线观看一区二区| 国产成人精品www牛牛影视| 欧美四级电影网| 国产日韩欧美综合一区| 一级日本不卡的影视| 久久国内精品自在自线400部| aaa亚洲精品| 日韩欧美在线一区二区三区| 国产精品久久久久一区二区三区 | 一区二区三区在线视频观看| 久久成人久久鬼色| 色噜噜偷拍精品综合在线| 精品日韩一区二区三区免费视频| 亚洲欧洲av在线| 国产在线播放一区二区三区| 欧美午夜片在线观看| 国产精品免费免费| 美女视频黄频大全不卡视频在线播放| 成人综合在线网站| 日韩精品一区二区三区在线| 亚洲一区二区三区四区不卡| 国产1区2区3区精品美女| 欧美大片在线观看一区| 亚洲专区一二三| 99国产精品久久久| 久久久精品中文字幕麻豆发布| 日本三级韩国三级欧美三级| 色欧美片视频在线观看在线视频| 欧美激情艳妇裸体舞| 国内久久精品视频| 日韩视频在线永久播放| 日韩av成人高清| 欧美日韩一区二区三区高清 | 国产精品青草综合久久久久99| 蜜桃久久av一区| 欧美日本乱大交xxxxx| 一区二区三区成人在线视频| 成人三级在线视频| 欧美高清在线一区二区| 国产一区二区久久| 久久这里都是精品| 国产激情视频一区二区三区欧美 | 极品美女销魂一区二区三区| 欧美精选一区二区| 舔着乳尖日韩一区| 制服丝袜在线91| 男男视频亚洲欧美| 欧美成人精品福利| 国产精品系列在线播放|