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

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

?? bitmap-comm.c

?? linux下的圖形界面開發minigui最新源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
                *(ushort *) vbuff = (ushort)(pdc->pencolor);                *(vbuff + 2) = (BYTE)(pdc->pencolor >> 16);                vbuff += 3;                *(ushort *) vbuff = (ushort)(pdc->brushcolor);                *(vbuff + 2) = (BYTE)(pdc->brushcolor >> 16);                vbuff += 3;            }            break;        case 4:            for (i = 0; i < size; i += 8) {                *(uint *) vbuff = (uint)(pdc->pencolor);                vbuff += 4;                *(uint *) vbuff = (uint)(pdc->brushcolor);                vbuff += 4;            }            break;    }    PutSavedBoxOnDC (hdc, x, y, H_V ? w_h : 1, H_V ? 1 : w_h, bitmap);}/*  * 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;                while (x < dst->bmWidth - 8) {#if 0 // defined(__GNUC__) && defined(i386)                    /* 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"                    );#else                    *(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;#endif                    x += 8;                }                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一区二区三区免费野_久草精品视频
亚洲欧洲在线观看av| 国产麻豆一精品一av一免费 | 欧美电影免费提供在线观看| 久久精品亚洲麻豆av一区二区| 一区二区三区欧美日| 国产一区在线观看麻豆| 欧美日产在线观看| 亚洲蜜臀av乱码久久精品 | 亚洲一区二区三区四区在线观看 | 欧美大尺度电影在线| 一区二区三区在线观看动漫 | 国产偷国产偷精品高清尤物| 日韩精品一级中文字幕精品视频免费观看 | 亚洲三级电影网站| 国产成人一区在线| 精品国产sm最大网站| 一区二区免费看| 91色.com| 亚洲精品日日夜夜| www.成人在线| 国产精品色眯眯| 国产黄色成人av| 久久精品一级爱片| 国产剧情在线观看一区二区| 欧美成人激情免费网| 日本成人中文字幕在线视频| 91精品国产一区二区三区| 亚洲一区二区三区免费视频| 色妞www精品视频| 中文字幕亚洲一区二区av在线 | 国产成人免费视频网站| 精品国产制服丝袜高跟| 六月丁香婷婷色狠狠久久| 欧美一区二区免费视频| 日本成人超碰在线观看| 日韩午夜av一区| 国产在线精品一区在线观看麻豆| 日韩欧美成人一区二区| 精品一区二区三区在线观看| 精品av综合导航| 国产精品中文字幕欧美| 久久精品免视看| 99久久国产综合精品色伊| 亚洲裸体在线观看| 欧美色男人天堂| 久久精品99国产国产精| 久久在线免费观看| 国产91精品一区二区| 亚洲欧美一区二区三区久本道91| 欧美亚洲综合网| 久久福利资源站| 欧美激情一区三区| 欧美影院一区二区三区| 美女久久久精品| 欧美激情中文字幕| 欧美性大战久久久久久久| 蜜桃视频在线观看一区二区| 久久久久国产一区二区三区四区 | 亚洲欧美电影一区二区| 337p亚洲精品色噜噜噜| 国产精品一区二区三区网站| 一区二区在线观看不卡| 日韩一区二区三区免费观看| 不卡高清视频专区| 日韩成人av影视| 国产女同性恋一区二区| 欧美日韩美少妇| 国产美女主播视频一区| 亚洲影视在线播放| 国产农村妇女毛片精品久久麻豆 | 日韩中文字幕91| 国产日韩欧美一区二区三区乱码 | 国产成人免费av在线| 洋洋av久久久久久久一区| 欧美mv和日韩mv的网站| 在线亚洲人成电影网站色www| 美腿丝袜一区二区三区| 亚洲美女屁股眼交3| 国产三级一区二区三区| 欧美日韩精品三区| 成人app下载| 精品一区免费av| 视频一区二区三区在线| 国产精品水嫩水嫩| 欧美一区二区美女| 99国产精品久| 国产精品一级在线| 久久成人精品无人区| 亚洲第一福利一区| 亚洲天天做日日做天天谢日日欢| 精品国产一区久久| 91精品国产综合久久精品图片| 91麻豆高清视频| 国产成人av自拍| 黄页视频在线91| 偷拍与自拍一区| 一区二区三区在线看| 亚洲视频在线一区二区| 国产色综合久久| 久久久久久久电影| 精品国产免费久久| 日韩免费电影网站| 欧美一二三在线| 91麻豆精品国产自产在线| 在线观看视频欧美| 在线观看91精品国产入口| 91视频在线看| 91蜜桃在线观看| 91蜜桃视频在线| 91久久香蕉国产日韩欧美9色| 99r国产精品| 99久久国产免费看| 99久久国产免费看| 在线观看免费视频综合| 欧美中文字幕一区二区三区亚洲| 一本一本久久a久久精品综合麻豆| caoporm超碰国产精品| 色综合天天综合网国产成人综合天 | 亚洲美女视频一区| 亚洲女与黑人做爰| 亚洲一区二区三区四区在线观看 | 中文字幕中文字幕中文字幕亚洲无线| 久久久久高清精品| 国产欧美日产一区| 亚洲图片另类小说| 天天综合网天天综合色| 亚洲va国产天堂va久久en| 日本不卡免费在线视频| 极品瑜伽女神91| 国产白丝精品91爽爽久久| 成人国产一区二区三区精品| 色综合中文字幕| 91.com视频| 久久婷婷色综合| 国产精品麻豆欧美日韩ww| 亚洲精品免费在线观看| 婷婷中文字幕综合| 国精品**一区二区三区在线蜜桃| 粉嫩av一区二区三区粉嫩| 91免费观看视频在线| 制服丝袜成人动漫| 国产日韩欧美麻豆| 亚洲午夜久久久久久久久电影网 | 色88888久久久久久影院野外| 欧美日韩亚洲不卡| 精品国产乱码久久久久久老虎 | 欧美系列一区二区| 精品少妇一区二区三区视频免付费| 国产三级三级三级精品8ⅰ区| 亚洲免费三区一区二区| 日韩一区欧美二区| 岛国一区二区在线观看| 91国偷自产一区二区三区观看 | 国产精品伊人色| 欧美在线你懂得| 欧美精品一区二区久久婷婷| 亚洲特级片在线| 蜜臂av日日欢夜夜爽一区| 91一区一区三区| 欧美一级国产精品| 亚洲欧美日韩国产成人精品影院| 久久超碰97人人做人人爱| 色综合久久久久综合体| 欧美成人精品福利| 亚洲成av人片在线观看无码| 成人免费视频视频在线观看免费| 欧美日韩第一区日日骚| 国产精品欧美经典| 国产一区久久久| 4438成人网| 亚洲综合丝袜美腿| hitomi一区二区三区精品| 日韩欧美不卡在线观看视频| 亚洲精品v日韩精品| 高清视频一区二区| 久久久久久免费网| 久久成人麻豆午夜电影| 欧美一区二区大片| 色婷婷亚洲一区二区三区| 久久久不卡网国产精品一区| 偷拍一区二区三区四区| 91视频一区二区三区| 久久精品网站免费观看| 日本女人一区二区三区| 欧美日本一区二区三区四区| 亚洲人123区| 成人福利视频网站| 国产色一区二区| 国产成人精品亚洲午夜麻豆| 久久综合九色综合97婷婷| 免费观看日韩电影| 欧美福利电影网| 亚洲成a人v欧美综合天堂| 欧美色图12p| 亚洲与欧洲av电影| 欧美午夜片在线观看| 亚洲国产精品久久久久秋霞影院 | 粉嫩av一区二区三区在线播放| 精品国产99国产精品| 国产综合久久久久久鬼色|