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

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

?? bitmap-comm.c

?? 這是針對 Linux (i386)平臺的 minigui 3.6.2 開發包(MiniGUI-Processes 運行模式)。
?? C
?? 第 1 頁 / 共 2 頁
字號:
    if (w_h < 1)        return;    pdc = dc_HDC2PDC (hdc);    bpp = GAL_BytesPerPixel (pdc->gc);    size = w_h * bpp;#ifdef HAVE_ALLOCA    if (!(bitmap = alloca (size)))#else    if (!(bitmap = malloc (size)))#endif        return;    vbuff = bitmap;    switch (bpp) {        case 1:            for (i = 0; i < size; i += 2) {                *vbuff = (BYTE)(pdc->pencolor);                vbuff++;                *vbuff = (BYTE)(pdc->brushcolor);                vbuff++;            }            break;        case 2:            for (i = 0; i < size; i += 4) {                *(Uint16 *) vbuff = (Uint16)(pdc->pencolor);                vbuff += 2;                *(Uint16 *) vbuff = (Uint16)(pdc->brushcolor);                vbuff += 2;            }            break;        case 3:            for (i = 0; i < size; i += 6) {                *(Uint16 *) vbuff = (Uint16)(pdc->pencolor);                *(vbuff + 2) = (BYTE)(pdc->pencolor >> 16);                vbuff += 3;                *(Uint16 *) vbuff = (Uint16)(pdc->brushcolor);                *(vbuff + 2) = (BYTE)(pdc->brushcolor >> 16);                vbuff += 3;            }            break;        case 4:            for (i = 0; i < size; i += 8) {                *(Uint32 *) vbuff = (Uint32)(pdc->pencolor);                vbuff += 4;                *(Uint32 *) vbuff = (Uint32)(pdc->brushcolor);                vbuff += 4;            }            break;    }    PutSavedBoxOnDC (hdc, x, y, H_V ? w_h : 1, H_V ? 1 : w_h, bitmap);#ifndef HAVE_ALLOCA    free (bitmap);#endif}/*  * This function performs a fast box scaling. * This is a DDA-based algorithm; Iteration over target bitmap. * * This function comes from SVGALib, Copyright 1993 Harm Hanemaayer *//* We use the 32-bit to 64-bit multiply and 64-bit to 32-bit divide of the * 386 (which gcc doesn't know well enough) to efficiently perform integer * scaling without having to worry about overflows. */#if defined(__GNUC__) && defined(i386)static inline int muldiv64(int m1, int m2, int d){    /* int32 * int32 -> int64 / int32 -> int32 */    int result;    int dummy;    __asm__ __volatile__ (               "imull %%edx\n\t"               "idivl %4\n\t"  :               "=a"(result), "=d"(dummy)        /* out */  :               "0"(m1), "1"(m2), "g"(d)                /* in */               /***rjr***:               "ax", "dx"***/        /* mod */        );    return result;}#elsestatic inline int muldiv64 (int m1, int m2, int d){    Sint64 mul = (Sint64) m1 * m2;    return (int) (mul / d);}#endif/* Init a bitmap as a normal bitmap  */BOOL GUIAPI InitBitmap (HDC hdc, Uint32 w, Uint32 h, Uint32 pitch, BYTE* bits, PBITMAP bmp){    int depth = GetGDCapability (hdc, GDCAP_DEPTH);    int bpp = GetGDCapability (hdc, GDCAP_BPP);    if (w == 0 || h == 0)        return FALSE;    if (bits && pitch) {        if (bpp * w > pitch)            return FALSE;        bmp->bmBits = bits;        bmp->bmPitch = pitch;    }    else if (!bits) {        bmpComputePitch (depth, w, &bmp->bmPitch, TRUE);        if (!(bmp->bmBits = malloc (bmp->bmPitch * h)))            return FALSE;    }    else /* bits is not zero, but pitch is zero */        return FALSE;    bmp->bmType = BMP_TYPE_NORMAL;    bmp->bmWidth = w;    bmp->bmHeight = h;    bmp->bmBitsPerPixel = depth;    bmp->bmBytesPerPixel = bpp;    return TRUE;}BOOL ScaleBitmap (BITMAP *dst, const BITMAP *src){    BYTE *dp1 = src->bmBits;    BYTE *dp2 = dst->bmBits;    int xfactor;    int yfactor;    if (dst->bmWidth == 0 || dst->bmHeight == 0)        return TRUE;    if (dst->bmBytesPerPixel != src->bmBytesPerPixel)        return FALSE;    xfactor = muldiv64 (src->bmWidth, 65536, dst->bmWidth);         /* scaled by 65536 */    yfactor = muldiv64 (src->bmHeight, 65536, dst->bmHeight);       /* scaled by 65536 */    switch (dst->bmBytesPerPixel) {    case 1:        {            int y, sy;            sy = 0;            for (y = 0; y < dst->bmHeight;) {                int sx = 0;                BYTE *dp2old = dp2;                int x;                x = 0;#if 0                while (x < dst->bmWidth - 8) {                    *(dp2 + x) = *(dp1 + (sx >> 16));                    sx += xfactor;                    *(dp2 + x + 1) = *(dp1 + (sx >> 16));                    sx += xfactor;                    *(dp2 + x + 2) = *(dp1 + (sx >> 16));                    sx += xfactor;                    *(dp2 + x + 3) = *(dp1 + (sx >> 16));                    sx += xfactor;                    *(dp2 + x + 4) = *(dp1 + (sx >> 16));                    sx += xfactor;                    *(dp2 + x + 5) = *(dp1 + (sx >> 16));                    sx += xfactor;                    *(dp2 + x + 6) = *(dp1 + (sx >> 16));                    sx += xfactor;                    *(dp2 + x + 7) = *(dp1 + (sx >> 16));                    sx += xfactor;                    x += 8;                }#endif                while (x < dst->bmWidth) {                    *(dp2 + x) = *(dp1 + (sx >> 16));                    sx += xfactor;                    x++;                }                dp2 += dst->bmPitch;                y++;                while (y < dst->bmHeight) {                    int l;                    int syint = sy >> 16;                    sy += yfactor;                    if ((sy >> 16) != syint)                        break;                    /* Copy identical lines. */                    l = dp2 - dp2old;                    memcpy(dp2, dp2old, l);                    dp2old = dp2;                    dp2 += l;                    y++;                }                dp1 = (BYTE *)src->bmBits + (sy >> 16) * src->bmPitch;            }        }    break;    case 2:        {            int y, sy;            sy = 0;            for (y = 0; y < dst->bmHeight;) {                int sx = 0;                BYTE *dp2old = dp2;                int x;                x = 0;                /* This can be greatly optimized with loop */                /* unrolling; omitted to save space. */                while (x < dst->bmWidth) {                    *(unsigned short *) (dp2 + x * 2) =                        *(unsigned short *) (dp1 + (sx >> 16) * 2);                    sx += xfactor;                    x++;                }                dp2 += dst->bmPitch;                y++;                while (y < dst->bmHeight) {                    int l;                    int syint = sy >> 16;                    sy += yfactor;                    if ((sy >> 16) != syint)                        break;                    /* Copy identical lines. */                    l = dp2 - dp2old;                    memcpy(dp2, dp2old, l);                    dp2old = dp2;                    dp2 += l;                    y++;                }                dp1 = (BYTE *)src->bmBits + (sy >> 16) * src->bmPitch;            }        }    break;    case 3:        {            int y, sy;            sy = 0;            for (y = 0; y < dst->bmHeight;) {                int sx = 0;                BYTE *dp2old = dp2;                int x;                x = 0;                /* This can be greatly optimized with loop */                /* unrolling; omitted to save space. */                while (x < dst->bmWidth) {                    *(unsigned short *) (dp2 + x * 3) =                        *(unsigned short *) (dp1 + (sx >> 16) * 3);                    *(unsigned char *) (dp2 + x * 3 + 2) =                        *(unsigned char *) (dp1 + (sx >> 16) * 3 + 2);                    sx += xfactor;                    x++;                }                dp2 += dst->bmPitch;                y++;                while (y < dst->bmHeight) {                    int l;                    int syint = sy >> 16;                    sy += yfactor;                    if ((sy >> 16) != syint)                        break;                    /* Copy identical lines. */                    l = dp2 - dp2old;                    memcpy(dp2, dp2old, l);                    dp2old = dp2;                    dp2 += l;                    y++;                }                dp1 = (BYTE *)src->bmBits + (sy >> 16) * src->bmPitch;            }        }    break;    case 4:        {            int y, sy;            sy = 0;            for (y = 0; y < dst->bmHeight;) {                int sx = 0;                BYTE *dp2old = dp2;                int x;                x = 0;                /* This can be greatly optimized with loop */                /* unrolling; omitted to save space. */                while (x < dst->bmWidth) {                    *(unsigned *) (dp2 + x * 4) =                        *(unsigned *) (dp1 + (sx >> 16) * 4);                    sx += xfactor;                    x++;                }                dp2 += dst->bmPitch;                y++;                while (y < dst->bmHeight) {                    int l;                    int syint = sy >> 16;                    sy += yfactor;                    if ((sy >> 16) != syint)                        break;                    /* Copy identical lines. */                    l = dp2 - dp2old;                    memcpy(dp2, dp2old, l);                    dp2old = dp2;                    dp2 += l;                    y++;                }                dp1 = (BYTE *)src->bmBits + (sy >> 16) * src->bmPitch;            }        }    break;    }    return TRUE;}gal_pixel GUIAPI GetPixelInBitmap (const BITMAP* bmp, int x, int y){    BYTE* dst;    if (x < 0 || y < 0 || x >= bmp->bmWidth || y >= bmp->bmHeight)        return 0;    dst = (BYTE*)bmp->bmBits + y * bmp->bmPitch + x * bmp->bmBytesPerPixel;    return _mem_get_pixel (dst, bmp->bmBytesPerPixel);}BOOL GUIAPI SetPixelInBitmap (const BITMAP* bmp, int x, int y, gal_pixel pixel){    BYTE* dst;    if (x < 0 || y < 0 || x >= bmp->bmWidth || y >= bmp->bmHeight)        return FALSE;    dst = (BYTE*)bmp->bmBits + y * bmp->bmPitch + x * bmp->bmBytesPerPixel;    _mem_set_pixel (dst, bmp->bmBytesPerPixel, pixel);    return TRUE;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女视频第一区二区三区免费观看网站| 国产日韩欧美一区二区三区乱码| 欧美一级一区二区| 中文在线一区二区| 日韩成人午夜电影| 亚洲一区二区精品久久av| 久久精品国产99久久6| 一本到高清视频免费精品| 日韩欧美一区二区视频| 亚洲另类一区二区| 成人免费看视频| 337p日本欧洲亚洲大胆精品| 亚洲国产成人porn| 91捆绑美女网站| 国产欧美日产一区| 免费成人美女在线观看.| 欧美一a一片一级一片| 国产精品乱码妇女bbbb| 国产麻豆欧美日韩一区| 日韩欧美在线影院| 日韩av午夜在线观看| 欧美亚一区二区| 亚洲最新在线观看| 在线这里只有精品| 一区二区三区四区激情| 91在线国内视频| 亚洲三级免费观看| 91毛片在线观看| 亚洲女与黑人做爰| 99国产精品视频免费观看| 中文字幕在线一区| 不卡一区中文字幕| 综合激情成人伊人| 91麻豆精品在线观看| 亚洲色欲色欲www在线观看| hitomi一区二区三区精品| 中文文精品字幕一区二区| 国产精品 欧美精品| 中文字幕不卡三区| av网站一区二区三区| 自拍偷自拍亚洲精品播放| 99热精品一区二区| 亚洲国产综合91精品麻豆 | 亚洲激情中文1区| 日本道色综合久久| 亚洲一区二区三区四区在线| 6080国产精品一区二区| 日韩不卡一二三区| www日韩大片| 色综合久久中文综合久久牛| 亚洲午夜激情网站| 精品国偷自产国产一区| 风流少妇一区二区| 亚洲一区免费观看| 日韩欧美在线不卡| 岛国精品一区二区| 亚洲韩国精品一区| 久久综合久色欧美综合狠狠| 成人精品一区二区三区中文字幕| 自拍偷拍国产亚洲| 欧美一区二区精品久久911| 国产精品影音先锋| 亚洲精品精品亚洲| 日韩亚洲欧美一区| 成人av在线资源网站| 日韩国产精品91| 国产农村妇女精品| 在线成人av影院| 成人av免费在线播放| 天天做天天摸天天爽国产一区| 久久蜜桃av一区二区天堂| 91久久香蕉国产日韩欧美9色| 男人的天堂久久精品| 亚洲欧洲精品成人久久奇米网| 欧美日韩国产影片| 成人丝袜18视频在线观看| 五月婷婷激情综合| 国产精品久久久久久久裸模 | 国产精品全国免费观看高清 | 亚洲成人动漫在线免费观看| 久久理论电影网| 欧美亚洲精品一区| 成人精品免费看| 免费成人av在线播放| 亚洲色图视频网站| 国产亚洲欧美日韩日本| 欧美精品乱码久久久久久按摩| 成人国产精品视频| 激情五月播播久久久精品| 亚洲va在线va天堂| 亚洲欧美视频一区| 中文字幕在线不卡视频| 国产婷婷色一区二区三区| 91精品国产一区二区| 欧美亚洲尤物久久| 色综合中文综合网| 丁香婷婷综合激情五月色| 蜜臀av一区二区| 日韩精品免费视频人成| 洋洋成人永久网站入口| 亚洲男人天堂一区| 日本一区二区三级电影在线观看 | 精品国产亚洲一区二区三区在线观看| 在线一区二区视频| 91丨porny丨国产入口| 成人三级伦理片| 国产成人av电影在线| 国产乱码精品一区二区三区五月婷| 麻豆免费看一区二区三区| 天天综合色天天| 日韩电影在线看| 欧美aaa在线| 老汉av免费一区二区三区| 日本va欧美va精品发布| 日本中文字幕一区二区视频 | av电影一区二区| 99国产精品国产精品久久| 91蜜桃网址入口| 欧洲中文字幕精品| 在线亚洲精品福利网址导航| 在线免费观看日韩欧美| 色婷婷综合久久| 欧美日韩精品一区二区| 91 com成人网| 欧美精品一区二区三区高清aⅴ| 欧美成人福利视频| 国产亚洲精品免费| 国产精品热久久久久夜色精品三区| 亚洲国产精品v| 一区二区三区在线视频免费| 亚洲综合区在线| 日韩av一二三| 国产麻豆精品一区二区| 成人黄色综合网站| 色呦呦国产精品| 欧美人与z0zoxxxx视频| 日韩三级中文字幕| 久久久久成人黄色影片| 亚洲欧美国产高清| 麻豆精品在线播放| 成人激情动漫在线观看| 欧美丝袜丝交足nylons图片| 日韩欧美精品在线| 欧美激情一区不卡| 亚洲不卡av一区二区三区| 老司机精品视频一区二区三区| 成人中文字幕在线| 欧美亚洲图片小说| 久久免费精品国产久精品久久久久| 日韩毛片一二三区| 日韩av网站免费在线| 国产91对白在线观看九色| 欧美亚洲一区三区| 久久精品人人做人人爽人人| 一区二区三区四区国产精品| 激情欧美日韩一区二区| 91视频一区二区三区| 日韩视频中午一区| 亚洲激情欧美激情| 黄色成人免费在线| 欧美唯美清纯偷拍| 国产午夜精品一区二区三区嫩草 | 日韩欧美国产电影| 亚洲欧洲另类国产综合| 裸体在线国模精品偷拍| 97精品电影院| 久久亚洲一区二区三区明星换脸| 亚洲一区二区免费视频| 成人晚上爱看视频| 精品国产123| 视频一区视频二区中文字幕| 99久久99久久精品免费看蜜桃 | 亚洲精品自拍动漫在线| 久久激情综合网| 欧美日韩精品三区| 亚洲欧美在线aaa| 国产精品一区二区久久不卡 | 欧美日韩高清一区二区三区| 国产精品久久久久久久裸模| 国产在线观看一区二区| 欧美日高清视频| 一区二区三区欧美| 成a人片国产精品| 国产日本欧洲亚洲| 精品一区二区免费看| 欧美三级三级三级| 亚洲午夜在线电影| 色哟哟亚洲精品| 亚洲精品免费在线播放| 99精品热视频| 1024成人网色www| www.亚洲国产| 国产精品国产三级国产aⅴ中文| 国内精品久久久久影院一蜜桃| 777xxx欧美| 日本亚洲视频在线| 欧美一区二区视频在线观看 | 欧美猛男gaygay网站| 亚洲午夜激情av| 欧美美女一区二区在线观看|