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

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

?? cursor-lite.c

?? miniucgui1.30版本的源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
        CSR_OLDBOXLEFT  = -100;        CSR_OLDBOXTOP = -100;    }#ifdef _USE_NEWGAL    csr_bmp.bmBitsPerPixel = __gal_screen->format->BitsPerPixel;    csr_bmp.bmBytesPerPixel = __gal_screen->format->BytesPerPixel;    csr_bmp.bmPitch = __gal_screen->format->BytesPerPixel * CURSORWIDTH;#endif        return TRUE;}// The following function must be called at last. void TerminateCursor (void){    int i;    if (mgIsServer) {        free (cursorbits);        CSR_CURRENT = NULL;        CSR_SHOW_COUNT = 0;         for (i = 0; i < ((PG_RES)mgSharedRes)->csrnum; i++) {            if (sys_cursors [i]) {                free (sys_cursors [i]);                sys_cursors [i] = NULL;            }        }    }}// Cursor pointer shape and hiding and showing.inline static int boxleft (void){    if (!CSR_CURRENT) return -100;    return CSR_CURSORX - CSR_XHOTSPOT;}inline static int boxtop (void){    if (!CSR_CURRENT) return -100;    return CSR_CURSORY - CSR_YHOTSPOT;}#ifdef _USE_NEWGALstatic GAL_Rect csr_rect = {0, 0, CURSORWIDTH, CURSORHEIGHT};static void hidecursor (void){    csr_rect.x = CSR_OLDBOXLEFT;    csr_rect.y = CSR_OLDBOXTOP;    csr_bmp.bmBits = CSR_SAVEDBITS;    GAL_SetClipRect (__gal_screen, NULL);    GAL_PutBox (__gal_screen, &csr_rect, &csr_bmp);     GAL_UpdateRects (__gal_screen, 1, &csr_rect);}static void showcursor (void){    int x, y;    x = boxleft ();    y = boxtop ();    csr_rect.x = x;    csr_rect.y = y;    csr_bmp.bmBits = CSR_SAVEDBITS;    GAL_SetClipRect (__gal_screen, NULL);    GAL_GetBox (__gal_screen, &csr_rect, &csr_bmp);    CSR_OLDBOXLEFT = x;    CSR_OLDBOXTOP = y;    GAL_memcpy4 (cursorbits, CSR_SAVEDBITS, __mg_csrimgsize >> 2);#ifdef ASM_memandcpy4    ASM_memandcpy4 (cursorbits, CSR_CURRENT->AndBits, __mg_csrimgsize >> 2);    ASM_memxorcpy4 (cursorbits, CSR_CURRENT->XorBits, __mg_csrimgsize >> 2);#else    {        int i;        Uint32* andbits = (Uint32*) CSR_CURRENT->AndBits;        Uint32* xorbits = (Uint32*) CSR_CURRENT->XorBits;        Uint32* dst = (Uint32*) cursorbits;        for (i = 0; i < __mg_csrimgsize >> 2; i++) {            dst [i] &= andbits [i];            dst [i] ^= xorbits[i];        }    }#endif    csr_bmp.bmBits = cursorbits;    GAL_PutBox (__gal_screen, &csr_rect, &csr_bmp);    GAL_UpdateRects (__gal_screen, 1, &csr_rect);}#elsestatic void hidecursor (void){    GAL_SetGC (PHYSICALGC);    GAL_DisableClipping (PHYSICALGC);        GAL_PutBox (PHYSICALGC, CSR_OLDBOXLEFT, CSR_OLDBOXTOP,                     CURSORWIDTH, CURSORHEIGHT, CSR_SAVEDBITS);}static void showcursor (void){    int x, y;    GAL_SetGC (PHYSICALGC);    x = boxleft ();    y = boxtop ();    GAL_DisableClipping (PHYSICALGC);    GAL_GetBox (PHYSICALGC, x, y, CURSORWIDTH, CURSORHEIGHT, CSR_SAVEDBITS);    CSR_OLDBOXLEFT = x;    CSR_OLDBOXTOP = y;    memcpy (cursorbits, CSR_SAVEDBITS, __mg_csrimgsize);    {        int i;        Uint32* dst = (Uint32*) cursorbits;        Uint32* andbits = (Uint32*) CSR_CURRENT->AndBits;        Uint32* xorbits = (Uint32*) CSR_CURRENT->XorBits;        for (i = 0; i < __mg_csrimgsize >> 2; i++) {            dst [i] &= andbits [i];            dst [i] ^= xorbits[i];        }    }    GAL_EnableClipping (PHYSICALGC);    GAL_PutBox (PHYSICALGC, x, y, CURSORWIDTH, CURSORHEIGHT, cursorbits);}#endif /* _USE_NEWGAL */#endif /* _CURSOR_SUPPORT */// The return value indicates whether mouse has moved. // TRUE for moved.// NOTE that only server can call this function.BOOL RefreshCursor (int* x, int* y, int* button){    int curx, cury;    BOOL moved = FALSE;    if (!mgIsServer) return FALSE;    IAL_GetMouseXY (x, y);    SHAREDRES_MOUSEX = curx = *x;    SHAREDRES_MOUSEY = cury = *y;    if (button)        SHAREDRES_BUTTON = *button = IAL_GetMouseButton ();    if (oldx != curx || oldy != cury) {#ifdef _CURSOR_SUPPORT        lock_cursor_sem ();        if (CSR_SHOW_COUNT >= 0 && CSR_CURRENT) {            CSR_CURSORX = curx;            CSR_CURSORY = cury;            if (get_hidecursor_sem_val ()) {                reset_hidecursor_sem ();            }            else                hidecursor ();            showcursor ();        }        unlock_cursor_sem ();#endif /* _CURSOR_SUPPORT */        oldx = curx;        oldy = cury;        moved = TRUE;    }    return moved;}#ifdef _CURSOR_SUPPORT/* show cursor hidden by client GDI function */void ReShowCursor (void){    lock_cursor_sem ();    if (CSR_SHOW_COUNT >= 0 && CSR_CURRENT) {        if (get_hidecursor_sem_val ()) {            reset_hidecursor_sem ();            showcursor ();        }    }    unlock_cursor_sem ();}/* Always call with "setdef = FALSE" for clients at server side. */HCURSOR GUIAPI SetCursorEx (HCURSOR hcsr, BOOL setdef){    PCURSOR old, pcsr;    if (!mgIsServer) {        REQUEST req;        req.id = REQID_SETCURSOR;        req.data = &hcsr;        req.len_data = sizeof (HCURSOR);        if (cli_request (&req, &old, sizeof (PCURSOR)) < 0)            return 0;        return (HCURSOR) old;    }    if (setdef) {        old = (PCURSOR) def_cursor;        def_cursor = hcsr;    }    else        old = CSR_CURRENT;    if ((PCURSOR)hcsr == CSR_CURRENT) {        return (HCURSOR) old;    }    pcsr = (PCURSOR)hcsr;    lock_cursor_sem ();    if (CSR_CURRENT && CSR_SHOW_COUNT >= 0                    && get_hidecursor_sem_val () == 0)        hidecursor();    CSR_CURRENT = pcsr;    CSR_XHOTSPOT = pcsr ? pcsr->xhotspot : -100;    CSR_YHOTSPOT = pcsr ? pcsr->yhotspot : -100;    if (CSR_CURRENT && CSR_SHOW_COUNT >= 0                    && get_hidecursor_sem_val () == 0)        showcursor();    unlock_cursor_sem ();    return (HCURSOR) old;}HCURSOR GUIAPI GetCurrentCursor (void){#if 1    return (HCURSOR)CSR_CURRENT;#else    HCURSOR hcsr;    if (!mgIsServer) {        REQUEST req;        req.id = REQID_GETCURRENTCURSOR;        req.data = 0;        req.len_data = 0;        if (cli_request (&req, &hcsr, sizeof (HCURSOR)) < 0)            return 0;        return hcsr;    }    return (HCURSOR)CSR_CURRENT;#endif}inline static BOOL does_need_hide (const RECT* prc){    int csrleft, csrright, csrtop, csrbottom;    int intleft, intright, inttop, intbottom;    csrleft = boxleft();    csrright = csrleft + CURSORWIDTH;    csrtop = boxtop();    csrbottom = csrtop + CURSORHEIGHT;    intleft = (csrleft > prc->left) ? csrleft : prc->left;    inttop  = (csrtop > prc->top) ? csrtop : prc->top;    intright = (csrright < prc->right) ? csrright : prc->right;    intbottom = (csrbottom < prc->bottom) ? csrbottom : prc->bottom;    if (intleft >= intright || inttop >= intbottom)        return FALSE;    return TRUE;}void ShowCursorForGDI (BOOL fShow, const RECT* prc){    if (!mgIsServer && (SHAREDRES_TOPMOST_LAYER != __mg_layer)) {#ifndef _USE_NEWGAL        /* avoiding dead lock. */        if (fShow && (get_cursor_sem_pid () == getpid ())) {            unlock_cursor_sem ();        }#endif        return;    }    if (!fShow) {        lock_cursor_sem ();        if (CSR_SHOW_COUNT >= 0 && CSR_CURRENT && does_need_hide (prc)) {            if (get_hidecursor_sem_val () == 0) {                inc_hidecursor_sem ();                hidecursor ();            }        }    }    else {#ifdef _USE_NEWGAL        GAL_UpdateRect (__gal_screen, prc->left, prc->top, RECTWP(prc), RECTHP(prc));#endif        unlock_cursor_sem ();    }}int GUIAPI ShowCursor (BOOL fShow){    if (!mgIsServer) {        REQUEST req;        int ret_value;        req.id = REQID_SHOWCURSOR;        req.data = &fShow;        req.len_data = sizeof (BOOL);        cli_request (&req, &ret_value, sizeof (int));        return ret_value;    }    lock_cursor_sem ();    if (fShow) {        CSR_SHOW_COUNT++;        if (CSR_SHOW_COUNT == 0 && CSR_CURRENT                    && get_hidecursor_sem_val () == 0)           showcursor();    }    else {        CSR_SHOW_COUNT--;        if (CSR_SHOW_COUNT == -1 && CSR_CURRENT)           hidecursor();    }    unlock_cursor_sem ();    return CSR_SHOW_COUNT;}#elsevoid ShowCursorForGDI (BOOL fShow, const RECT* prc){    if (!mgIsServer && (SHAREDRES_TOPMOST_LAYER != __mg_layer))        return;#ifdef _USE_NEWGAL    if (fShow)        GAL_UpdateRect (__gal_screen, prc->left, prc->top, RECTWP(prc), RECTHP(prc));#endif}#endif /* _CURSOR_SUPPORT */void GUIAPI GetCursorPos (POINT* ppt){    ppt->x = SHAREDRES_MOUSEX;    ppt->y = SHAREDRES_MOUSEY;}void GUIAPI SetCursorPos (int x, int y){    if (mgIsServer) {        IAL_SetMouseXY (x, y);        RefreshCursor (&x, &y, NULL);    }    else {        REQUEST req;        POINT pt = {x, y};        req.id = REQID_SETCURSORPOS;        req.data = &pt;        req.len_data = sizeof (POINT);        cli_request (&req, NULL, 0);    }}// Cursor clipping support.void GUIAPI ClipCursor (const RECT* prc){    RECT rc;    if (!mgIsServer) {        REQUEST req;        req.id = REQID_CLIPCURSOR;        req.data = prc;        req.len_data = sizeof (RECT);        cli_request (&req, NULL, 0);        return;    }    if (IsRectEmpty (&cliprc))        SetRect (&cliprc, 0, 0, WIDTHOFPHYGC - 1, HEIGHTOFPHYGC - 1);    if (prc == NULL) {        IAL_SetMouseRange (0,0,WIDTHOFPHYGC - 1, HEIGHTOFPHYGC - 1);        SetRect (&cliprc, 0, 0, WIDTHOFPHYGC - 1, HEIGHTOFPHYGC - 1);        return;    }    memcpy (&rc, prc, sizeof(RECT));    NormalizeRect (&rc);    IntersectRect (&cliprc, &rc, &cliprc);    NormalizeRect (&cliprc);    IAL_SetMouseRange (cliprc.left, cliprc.top, cliprc.right, cliprc.bottom);}void GUIAPI GetClipCursor (RECT* prc){    if (!mgIsServer) {        REQUEST req;        req.id = REQID_GETCLIPCURSOR;        req.data = NULL;        req.len_data = 0;        cli_request (&req, prc, sizeof (RECT));        return;    }    memcpy (prc, &cliprc, sizeof(RECT));}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91亚洲精品久久久蜜桃| 精品国产凹凸成av人导航| 91精品国模一区二区三区| 久久久久久影视| 丝袜诱惑制服诱惑色一区在线观看 | 成人免费视频视频| 91精品国产色综合久久不卡电影 | 欧美电影免费观看完整版 | 久久久91精品国产一区二区精品| 一区二区三区av电影| 成人av在线一区二区| wwww国产精品欧美| 日本不卡123| 欧美日韩欧美一区二区| 椎名由奈av一区二区三区| 国产老妇另类xxxxx| 91精品国产aⅴ一区二区| 一级中文字幕一区二区| 91免费看视频| 亚洲免费观看高清在线观看| 成人动漫一区二区在线| 国产丝袜美腿一区二区三区| 久久国产精品第一页| 欧美一级片免费看| 视频一区二区三区在线| 欧美亚洲禁片免费| 亚洲第一成年网| 欧美日韩免费一区二区三区| 亚洲成a人片在线观看中文| 色综合一区二区| 亚洲精品自拍动漫在线| 91成人免费在线| 亚洲国产精品影院| 9191成人精品久久| 久久超级碰视频| 2021国产精品久久精品| 国产综合久久久久久久久久久久| 精品国产91久久久久久久妲己 | 92国产精品观看| 中文字幕一区三区| 色婷婷久久99综合精品jk白丝| 亚洲美女淫视频| 欧美精品久久一区| 美女一区二区久久| 久久精品一区八戒影视| 成人动漫一区二区| 亚洲图片自拍偷拍| 日韩欧美另类在线| 国产成人免费在线视频| 中文字幕中文字幕一区二区| 91在线云播放| 视频一区欧美精品| 欧美激情自拍偷拍| 欧美日韩视频在线观看一区二区三区| 亚洲不卡在线观看| 久久精品视频一区二区三区| av一区二区三区黑人| 亚洲综合色区另类av| 欧美mv和日韩mv的网站| av一二三不卡影片| 丝袜诱惑制服诱惑色一区在线观看| 欧美一区二区三区公司| 成人午夜精品一区二区三区| 一区二区免费视频| 久久天堂av综合合色蜜桃网| 91麻豆视频网站| 蜜桃久久av一区| 亚洲图片欧美激情| 精品999在线播放| 91理论电影在线观看| 久久 天天综合| 亚洲女女做受ⅹxx高潮| 欧美v国产在线一区二区三区| 成人av网在线| 九色|91porny| 亚洲一区二区偷拍精品| 亚洲欧美日韩国产成人精品影院| 91精品国产综合久久久蜜臀图片| 风间由美一区二区三区在线观看| 亚洲1区2区3区4区| 国产精品激情偷乱一区二区∴| 69堂精品视频| 色域天天综合网| 丁香桃色午夜亚洲一区二区三区| 亚洲国产精品久久一线不卡| 中文字幕在线一区免费| 日韩精品在线看片z| 在线精品视频一区二区| 国产成人欧美日韩在线电影| 久久国产福利国产秒拍| 亚洲国产视频在线| 日韩毛片精品高清免费| 日本一区二区三区四区在线视频 | 91精品一区二区三区久久久久久 | 欧美岛国在线观看| 欧美日韩国产欧美日美国产精品| 成人av在线资源网站| 国产一区二区在线观看免费| 日韩在线观看一区二区| 亚洲主播在线播放| 亚洲精品成人a在线观看| 中文字幕av免费专区久久| 久久久777精品电影网影网 | 欧美一区二区精品在线| 欧美三级中文字| 欧洲色大大久久| 色婷婷久久久久swag精品| 91麻豆视频网站| 在线欧美小视频| 欧美系列在线观看| 欧美日韩一区二区三区在线| 欧美视频在线播放| 欧美影片第一页| 欧美日韩精品福利| 91精品国产综合久久久蜜臀粉嫩| 欧美性色黄大片手机版| 欧美日韩国产在线播放网站| 欧美日韩一区成人| 欧美一区二区免费| 久久一区二区三区国产精品| 久久人人超碰精品| 国产精品视频一二三| 国产精品久久久久国产精品日日| 中文字幕在线视频一区| 国产精品国产三级国产专播品爱网 | 日韩视频在线一区二区| 欧美成人猛片aaaaaaa| 精品黑人一区二区三区久久| 国产亚洲欧美激情| 亚洲日韩欧美一区二区在线| 亚洲综合色丁香婷婷六月图片| 五月激情综合网| 美脚の诱脚舐め脚责91| 精品在线观看免费| 丁香激情综合五月| 欧美亚洲国产bt| 欧美一二三四在线| 国产精品免费aⅴ片在线观看| 日韩码欧中文字| 日韩av一二三| 粉嫩aⅴ一区二区三区四区五区| 3d成人h动漫网站入口| 久久一夜天堂av一区二区三区| 中文字幕欧美一区| 青娱乐精品视频| 国产河南妇女毛片精品久久久 | 婷婷国产在线综合| 国产一区美女在线| 91蜜桃免费观看视频| 日韩一区二区三区在线视频| 国产欧美一区二区精品秋霞影院| 一区二区三区在线看| 国内精品国产三级国产a久久 | 成年人国产精品| 欧美日韩aaaaaa| 中文字幕国产一区| 日本一不卡视频| aaa欧美色吧激情视频| 欧美精选在线播放| 一区在线中文字幕| 国内一区二区在线| 欧美私人免费视频| 国产网站一区二区| 美日韩一区二区| 欧美婷婷六月丁香综合色| 亚洲国产精品传媒在线观看| 男男视频亚洲欧美| 91久久精品日日躁夜夜躁欧美| 精品99一区二区| 日韩1区2区日韩1区2区| 一本色道久久综合狠狠躁的推荐| 久久久亚洲精品石原莉奈| 亚洲永久精品国产| 91蜜桃在线免费视频| 国产午夜精品久久久久久久 | 秋霞电影一区二区| 91国产福利在线| 亚洲天堂网中文字| 成人精品一区二区三区中文字幕 | 国产精品乱码人人做人人爱| 久久97超碰色| 777精品伊人久久久久大香线蕉| 亚洲一区二区三区中文字幕 | 日韩欧美中文一区| 亚洲一级二级三级在线免费观看| 99re视频精品| 欧美激情在线一区二区三区| 国产一区二区网址| 欧美午夜影院一区| 亚洲综合网站在线观看| 色狠狠综合天天综合综合| 国产精品久久久久久久久免费相片 | 一本色道久久综合亚洲aⅴ蜜桃| 中文幕一区二区三区久久蜜桃| 国产一区亚洲一区| 久久久综合网站| 国产二区国产一区在线观看 | 日韩欧美中文一区二区| 日韩极品在线观看| 欧美一区二区三区爱爱|