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

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

?? bitmap-comm.c

?? libminigui-1.3.0.tar.gz。 miniGUI的庫函數源代碼!
?? C
?? 第 1 頁 / 共 2 頁
字號:
            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){    long long int mul = (long long int) 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 // defined(__GNUC__) && defined(i386)                while (x < dst->bmWidth - 8) {                    /* This saves just a couple of cycles per */                    /* pixel on a 486, but I couldn't resist. */                    __asm__ __volatile__("movl %4, %%eax\n\t"                                         "shrl $16, %%eax\n\t"                                         "addl %5, %4\n\t"                                         "movb (%3, %%eax), %%al\n\t"                                         "movb %%al, (%1, %2)\n\t"                                         "movl %4, %%eax\n\t"                                         "shrl $16, %%eax\n\t"                                         "addl %5, %4\n\t"                                         "movb (%3, %%eax), %%al\n\t"                                         "movb %%al, 1 (%1, %2)\n\t"                                         "movl %4, %%eax\n\t"                                         "shrl $16, %%eax\n\t"                                         "addl %5, %4\n\t"                                         "movb (%3, %%eax), %%al\n\t"                                         "movb %%al, 2 (%1, %2)\n\t"                                         "movl %4, %%eax\n\t"                                         "shrl $16, %%eax\n\t"                                         "addl %5, %4\n\t"                                         "movb (%3, %%eax), %%al\n\t"                                         "movb %%al, 3 (%1, %2)\n\t"                                         "movl %4, %%eax\n\t"                                         "shrl $16, %%eax\n\t"                                         "addl %5, %4\n\t"                                         "movb (%3, %%eax), %%al\n\t"                                         "movb %%al, 4 (%1, %2)\n\t"                                         "movl %4, %%eax\n\t"                                         "shrl $16, %%eax\n\t"                                         "addl %5, %4\n\t"                                         "movb (%3, %%eax), %%al\n\t"                                         "movb %%al, 5 (%1, %2)\n\t"                                         "movl %4, %%eax\n\t"                                         "shrl $16, %%eax\n\t"                                         "addl %5, %4\n\t"                                         "movb (%3, %%eax), %%al\n\t"                                         "movb %%al, 6 (%1, %2)\n\t"                                         "movl %4, %%eax\n\t"                                         "shrl $16, %%eax\n\t"                                         "addl %5, %4\n\t"                                         "movb (%3, %%eax), %%al\n\t"                                         "movb %%al, 7 (%1, %2)\n\t"                                         :        /* output */                                         :        /* input */                                         "ax"(0), "r"(dp2), "r"(x), "r"(dp1),                                         "r"(sx), "r"(xfactor)                                         :"ax", "4"                    );                    *(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 = 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 = 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 = 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 = 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 = 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 = 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一区二区三区免费野_久草精品视频
91精品视频网| 欧美日韩久久久久久| 亚洲成a人v欧美综合天堂| 欧美不卡一区二区三区| 91在线观看成人| 国内精品久久久久影院薰衣草| 亚洲毛片av在线| 欧美国产精品v| 精品国产一区二区国模嫣然| 欧美日韩国产高清一区| 91视频一区二区| 成人免费毛片嘿嘿连载视频| 久久99久久久久久久久久久| 亚洲一区视频在线| 一区二区中文视频| 中文字幕欧美国产| 久久精品夜色噜噜亚洲a∨| 欧美一二三四区在线| 欧美日韩黄色一区二区| 一本久久精品一区二区| caoporn国产一区二区| 国产超碰在线一区| 国产毛片一区二区| 激情六月婷婷综合| 国产最新精品精品你懂的| 日韩影院免费视频| 亚洲成人av一区二区| 亚洲男人电影天堂| 亚洲精品综合在线| 亚洲激情六月丁香| 亚洲一区二区成人在线观看| 亚洲乱码一区二区三区在线观看| 国产精品伦一区| 国产精品麻豆欧美日韩ww| 中文字幕精品一区| 亚洲欧洲精品一区二区三区| 国产精品国产三级国产aⅴ原创| 国产午夜精品一区二区| 国产夜色精品一区二区av| 国产丝袜美腿一区二区三区| 久久精品男人天堂av| 中文字幕乱码亚洲精品一区 | 精品国产精品网麻豆系列| 91精品国产丝袜白色高跟鞋| 91精品国产91久久久久久一区二区 | 成人美女视频在线观看| 国产成人av影院| 不卡电影一区二区三区| 99riav一区二区三区| 在线视频你懂得一区二区三区| 在线亚洲精品福利网址导航| 欧美无砖专区一中文字| 911国产精品| 久久蜜臀中文字幕| 中文字幕亚洲成人| 亚洲国产成人91porn| 男人的j进女人的j一区| 国产一区二区三区免费播放| 福利一区二区在线| 色欧美片视频在线观看在线视频| 欧美伊人久久久久久午夜久久久久| 欧美嫩在线观看| 久久影院视频免费| √…a在线天堂一区| 亚洲www啪成人一区二区麻豆| 日本中文一区二区三区| 国产一区二区久久| 色综合久久88色综合天天| 91精品国产综合久久久久久漫画| 精品久久久久久久人人人人传媒| 国产精品网站在线观看| 亚洲mv在线观看| 国产一区二区三区在线看麻豆| 99国产精品久久| 日韩欧美国产综合一区| 国产精品久久久久永久免费观看 | 欧美高清hd18日本| 国产亚洲精久久久久久| 一区二区三区在线视频免费观看| 日本欧美肥老太交大片| 福利91精品一区二区三区| 欧美视频中文一区二区三区在线观看| 精品少妇一区二区三区视频免付费 | 97久久超碰精品国产| 精品国产乱码久久久久久久| 国产欧美久久久精品影院| 亚洲无线码一区二区三区| 国产精品99久久久久久似苏梦涵 | 日韩精品一区二区在线| 亚洲天堂中文字幕| 精品一区精品二区高清| 在线观看免费视频综合| 国产偷国产偷亚洲高清人白洁| 亚洲综合清纯丝袜自拍| 国产精品18久久久久久久久| 欧美天堂亚洲电影院在线播放| 国产欧美日韩精品在线| 日本午夜精品视频在线观看| 9l国产精品久久久久麻豆| 日韩欧美在线一区二区三区| 亚洲黄网站在线观看| 成人国产视频在线观看| 精品国产91乱码一区二区三区| 亚洲一区二区三区在线播放| 国产mv日韩mv欧美| 精品国产一区二区三区不卡| 亚洲第一二三四区| 色狠狠一区二区三区香蕉| 亚洲国产精品精华液2区45| 久久99久久久久久久久久久| 欧美另类videos死尸| 亚洲精品久久久蜜桃| aaa亚洲精品一二三区| 国产欧美精品一区| 国产精品伊人色| 久久免费看少妇高潮| 久久爱www久久做| 日韩免费高清av| 老司机午夜精品99久久| 欧美一区二区三区四区视频| 亚洲成人手机在线| 欧美熟乱第一页| 亚洲一级二级在线| 欧美色网站导航| 亚洲一区二区中文在线| 色八戒一区二区三区| 亚洲天堂2014| 色哟哟在线观看一区二区三区| 中文字幕亚洲欧美在线不卡| 成人福利视频在线| 中文字幕一区av| 色久优优欧美色久优优| 亚洲一区二区三区四区五区中文| 在线精品视频免费播放| 亚洲国产精品影院| 7777女厕盗摄久久久| 日本欧美一区二区三区乱码| 日韩欧美亚洲一区二区| 韩国精品一区二区| 国产欧美精品区一区二区三区 | av不卡免费在线观看| 亚洲欧美视频一区| 在线观看一区二区视频| 亚洲成av人片一区二区梦乃| 欧美美女bb生活片| 日本vs亚洲vs韩国一区三区二区 | 日韩一区二区三区视频| 久久精品国产秦先生| 久久蜜桃av一区精品变态类天堂| 国产黄色精品网站| 亚洲视频1区2区| 欧美日韩一区成人| 免费高清在线视频一区·| 2023国产精品| av综合在线播放| 亚洲国产精品久久一线不卡| 欧美一级免费大片| 国产一级精品在线| 亚洲欧美另类久久久精品| 欧美裸体一区二区三区| 狠狠色狠狠色综合日日91app| 国产午夜亚洲精品午夜鲁丝片| 91网站在线播放| 奇米综合一区二区三区精品视频| 久久久久久一二三区| 91在线观看污| 日韩电影一二三区| 国产日韩三级在线| 欧美中文字幕不卡| 韩日av一区二区| 亚洲女人的天堂| 日韩无一区二区| 成人av在线播放网址| 亚洲第一精品在线| 国产日韩一级二级三级| 欧美日韩性生活| 丁香五精品蜜臀久久久久99网站 | 亚洲高清视频在线| 国产欧美日韩久久| 欧美精品一级二级三级| 成人黄动漫网站免费app| 日韩avvvv在线播放| 成人欧美一区二区三区白人| 欧美一区二区三区播放老司机| 高清不卡一二三区| 蜜桃精品视频在线| 亚洲精品视频免费观看| 久久精品视频免费观看| 欧美日韩国产另类不卡| 成人午夜短视频| 奇米色777欧美一区二区| 亚洲欧美视频在线观看| 久久久久久久久免费| 欧美高清视频不卡网| 色综合久久六月婷婷中文字幕| 国产一区二区精品在线观看| 日韩精品电影一区亚洲| 亚洲乱码日产精品bd| 中文字幕不卡在线观看| 欧美大胆人体bbbb|