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

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

?? cursor-lite.c

?? minigui的開發程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
        }        init_system_cursor ();        CSR_CURRENT = NULL;        CSR_SHOW_COUNT = 0;        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一区二区三区免费野_久草精品视频
成人av在线电影| 一区二区三区中文字幕精品精品| 欧美专区亚洲专区| 99国产精品久久久久久久久久久| 国产福利精品一区二区| 国产综合久久久久久久久久久久| 青草av.久久免费一区| 丝袜美腿高跟呻吟高潮一区| 亚洲国产综合91精品麻豆| 亚洲欧洲综合另类| 一区二区三区高清不卡| 一区二区三区在线免费| 亚洲一区视频在线观看视频| 一区二区国产视频| 亚洲人成7777| 亚洲电影你懂得| 喷白浆一区二区| 视频一区二区不卡| 久草精品在线观看| 成人一区二区视频| 色婷婷国产精品综合在线观看| 色综合天天在线| 欧美精品欧美精品系列| 精品99一区二区| 久久嫩草精品久久久久| 欧美成人精品1314www| 中文字幕欧美区| 亚洲一区二区三区影院| 久久成人免费网| 粉嫩嫩av羞羞动漫久久久| 一本一道久久a久久精品 | 日韩欧美另类在线| 国产日韩欧美精品综合| 一区二区三区四区乱视频| 日韩国产一区二| 成人精品电影在线观看| 欧美日韩国产精选| 欧美国产丝袜视频| 天天综合日日夜夜精品| 国产传媒久久文化传媒| 欧美三级午夜理伦三级中视频| 亚洲精品在线免费观看视频| 亚洲精品老司机| 国产一区二区三区免费播放 | 亚洲精品欧美专区| 国产一区 二区| 欧美日韩精品是欧美日韩精品| 欧美tickle裸体挠脚心vk| 亚洲免费av在线| 国产成人免费视频网站| 欧美精品久久一区| 国产精品美女视频| 韩国av一区二区三区在线观看| 一本色道久久综合亚洲精品按摩| 欧美精品一区二区蜜臀亚洲| 亚洲国产成人porn| 91在线观看高清| 国产亚洲欧美日韩在线一区| 免费人成在线不卡| 欧美日韩在线免费视频| 亚洲视频资源在线| av中文字幕不卡| 亚洲精品在线三区| 激情综合色综合久久综合| 精品婷婷伊人一区三区三| 中文字幕在线播放不卡一区| 国产福利一区在线观看| 精品成人在线观看| 激情综合网天天干| 欧美一级艳片视频免费观看| 亚洲综合一区二区| 色8久久精品久久久久久蜜| 欧美激情一区二区三区在线| 国产不卡视频一区| 久久老女人爱爱| 国产成人精品三级麻豆| 国产欧美日韩不卡免费| 国产高清精品在线| 国产人伦精品一区二区| 国产精品18久久久久久久久 | 美女网站一区二区| 555www色欧美视频| 日本欧美一区二区在线观看| 欧美一卡二卡在线| 久久99国产精品免费| 精品国产乱码久久久久久夜甘婷婷| 五月婷婷激情综合网| 欧美日韩国产免费一区二区| 男女视频一区二区| 精品国产不卡一区二区三区| 国产在线观看免费一区| 国产日产精品1区| 99精品国产一区二区三区不卡| 亚洲一区二区三区四区五区中文| 欧美亚一区二区| 亚洲国产成人精品视频| 欧美高清视频在线高清观看mv色露露十八 | 精品国产乱码久久久久久1区2区| 秋霞电影一区二区| 久久久久久久久伊人| 99热99精品| 亚洲va国产va欧美va观看| 91精品久久久久久久久99蜜臂| 久久av中文字幕片| 国产精品美女久久久久av爽李琼 | 天天综合色天天综合| 日韩欧美在线一区二区三区| 国产精品1区2区3区在线观看| 国产精品美女久久久久久2018| 欧美又粗又大又爽| 狠狠色丁香婷综合久久| 亚洲免费高清视频在线| 欧美一区二区三区在线看| 国产99久久久久久免费看农村| 综合色中文字幕| 日韩欧美国产一二三区| 成人高清视频在线观看| 天堂一区二区在线免费观看| 国产日韩欧美麻豆| 欧美疯狂做受xxxx富婆| 国产乱人伦偷精品视频不卡| 亚洲影视在线观看| 久久精品一区八戒影视| 欧美午夜片在线观看| 国产在线日韩欧美| 亚洲一本大道在线| 国产欧美一区二区精品性| 欧美高清视频在线高清观看mv色露露十八| 国产一区二区三区综合| 婷婷国产在线综合| 国产精品久久久久天堂| 日韩精品一区二区三区中文精品| 91麻豆精品秘密| 国产米奇在线777精品观看| 亚洲国产中文字幕在线视频综合 | 奇米四色…亚洲| 亚洲柠檬福利资源导航| 久久久精品免费免费| 91精品国产一区二区三区蜜臀| 9久草视频在线视频精品| 国产高清久久久久| 国产伦精品一区二区三区免费| 爽好久久久欧美精品| 亚洲欧美经典视频| 亚洲欧美成aⅴ人在线观看| 欧美国产欧美亚州国产日韩mv天天看完整 | 欧美精品免费视频| 在线观看免费视频综合| 99re这里只有精品首页| 成人黄色电影在线| 国产成人精品免费一区二区| 精东粉嫩av免费一区二区三区| 日本中文一区二区三区| 亚洲国产综合人成综合网站| 亚洲第一狼人社区| 亚洲曰韩产成在线| 一区二区三区鲁丝不卡| 中文字幕视频一区| 国产精品乱人伦中文| 日本一区二区三级电影在线观看| 亚洲精品在线免费观看视频| 精品国产免费久久| 欧美国产欧美亚州国产日韩mv天天看完整| 久久久久久久久久电影| 欧美国产日韩a欧美在线观看| 久久精品综合网| 国产精品成人在线观看| 一区二区三区日韩| 亚洲成人久久影院| 蜜臀av在线播放一区二区三区 | 国产精品系列在线| 中文字幕在线不卡国产视频| 亚洲综合色噜噜狠狠| 天天综合色天天| 国产精一品亚洲二区在线视频| 国产一区免费电影| 成人黄页在线观看| 欧美日韩另类一区| 精品播放一区二区| 中文字幕一区二区日韩精品绯色| 亚洲乱码国产乱码精品精小说 | 97se亚洲国产综合自在线不卡 | 成人激情免费网站| 色妞www精品视频| 91精品在线一区二区| 久久综合给合久久狠狠狠97色69| 欧美国产亚洲另类动漫| 亚洲电影中文字幕在线观看| 久久精品国产99久久6| www.性欧美| 欧美日韩mp4| 国产精品麻豆99久久久久久| 丝袜国产日韩另类美女| 成人看片黄a免费看在线| 欧美揉bbbbb揉bbbbb| 国产女人aaa级久久久级| 亚洲国产另类精品专区| 福利电影一区二区| 欧美一区二区三区免费在线看 | 欧美高清一级片在线观看|