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

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

?? gdi.c

?? 這是針對 Linux (i386)平臺的 minigui 3.6.2 開發包(MiniGUI-Processes 運行模式)。
?? C
?? 第 1 頁 / 共 2 頁
字號:
// if the global clip region has a new age,// this function empty effective clip region first,// and then intersect local clip region and global clip region.BOOL dc_GenerateECRgn(PDC pdc, BOOL fForce){    RECT rc, rcInter;    PCLIPRECT pcr, pgcr;    PCONTROL pCtrl;    // is global clip region is empty?    if ((!fForce) && (!dc_IsVisible (pdc)))            return FALSE;#if defined(_LITE_VERSION) && !defined(_STAND_ALONE)    if (!mgIsServer) lock_scr_sem ();#endif    // need regenerate?#if defined(_LITE_VERSION) && !defined(_STAND_ALONE)    if (fForce || (pdc->oldage != pdc->pGCRInfo->age)               || (!mgIsServer && pdc->scr_sig != SHAREDRES_SCRINFO.signature)) {#else    if (fForce || (pdc->oldage != pdc->pGCRInfo->age)) {#endif        EmptyClipRgn (&pdc->ecrgn);        pcr = pdc->lcrgn.head;        while (pcr) {            rc = pcr->rc;            coor_LP2SP (pdc, &rc.left, &rc.top);            coor_LP2SP (pdc, &rc.right, &rc.bottom);                        pgcr = pdc->pGCRInfo->crgn.head;            while (pgcr) {                if (IntersectRect (&rcInter, &rc, &pgcr->rc))                    AddClipRect (&pdc->ecrgn, &rcInter);                pgcr = pgcr->next;            }                        pcr = pcr->next;        }                if (pdc->lcrgn.head == NULL)            ClipRgnCopy (&pdc->ecrgn, &pdc->pGCRInfo->crgn);        // update the DevRC;        if (pdc->bIsClient)            WndClientRect (pdc->hwnd, &pdc->DevRC);        else            WndRect (pdc->hwnd, &pdc->DevRC);                    IntersectClipRect (&pdc->ecrgn, &pdc->DevRC);        pCtrl = Control (pdc->hwnd);        if (pCtrl && !(pCtrl->dwExStyle & WS_EX_CTRLASMAINWIN))            RestrictControlECRGN (&pdc->ecrgn, pCtrl);        pdc->oldage = pdc->pGCRInfo->age;#if defined(_LITE_VERSION) && !defined(_STAND_ALONE)        /*         * Subtract the server clipping rects.         */        if (!mgIsServer) {            int i;            RECT* crcs = SHAREDRES_SCRINFO.clip_rects;            for (i = 0; i < MAX_SRV_CLIP_RECTS; i++) {                if (!IsRectEmpty (crcs + i))                    SubtractClipRect (&pdc->ecrgn, crcs + i);            }            pdc->scr_sig = SHAREDRES_SCRINFO.signature;        }#endif    }    return TRUE;}// This function init DC.// set the default parameters.static void dc_InitDC(PDC pdc, HWND hWnd, BOOL bIsClient){    PCONTROL pCtrl;    pdc->hwnd = hWnd;    pdc->gc = PHYSICALGC;    pdc->bkcolor = PIXEL_lightwhite;    pdc->bkmode = 0;    pdc->brushcolor = PIXEL_lightwhite;    pdc->pencolor = PIXEL_black;    pdc->CurPenPos.x = pdc->CurPenPos.y = 0;    pdc->textcolor = PIXEL_black;    if (!(pdc->pLogFont = GetWindowFont (hWnd)))        pdc->pLogFont = GetSystemFont (SYSLOGFONT_WCHAR_DEF);    pdc->tabstop = 8;    pdc->CurTextPos.x = pdc->CurTextPos.y = 0;    pdc->cExtra = pdc->alExtra = pdc->blExtra = 0;    pdc->mapmode = MM_TEXT;    pdc->ViewOrig.x = pdc->ViewOrig.y = 0;    pdc->ViewExtent.x = pdc->ViewExtent.y = 1;    pdc->WindowOrig.x = pdc->WindowOrig.y = 0;    pdc->WindowExtent.x = pdc->WindowExtent.y = 1;    // assume that the local clip region is empty.      // Get global clip region info and generate effective clip region.    pdc->pGCRInfo = GetGCRgnInfo (hWnd);#ifndef _LITE_VERSION    pthread_mutex_lock (&pdc->pGCRInfo->lock);#endif    pdc->oldage = pdc->pGCRInfo->age;    ClipRgnCopy (&pdc->ecrgn, &pdc->pGCRInfo->crgn);    if (bIsClient)        WndClientRect (pdc->hwnd, &pdc->DevRC);    else        WndRect (pdc->hwnd, &pdc->DevRC);    pdc->bIsClient = bIsClient;    if (bIsClient)        IntersectClipRect (&pdc->ecrgn, &pdc->DevRC);    pCtrl = Control (pdc->hwnd);    if (pCtrl && !(pCtrl->dwExStyle & WS_EX_CTRLASMAINWIN))        RestrictControlECRGN (&pdc->ecrgn, pCtrl);#ifndef _LITE_VERSION    pthread_mutex_unlock (&pdc->pGCRInfo->lock);#endif#if defined(_LITE_VERSION) && !defined(_STAND_ALONE)    /*     * Subtract the server clipping rects.     */    if (!mgIsServer) {        int i;        RECT* crcs = SHAREDRES_SCRINFO.clip_rects;        lock_scr_sem ();        for (i = 0; i < MAX_SRV_CLIP_RECTS; i++) {            if (!IsRectEmpty (crcs + i))                SubtractClipRect (&pdc->ecrgn, crcs + i);        }        pdc->scr_sig = SHAREDRES_SCRINFO.signature;        unlock_scr_sem ();    }#endif}static void dc_Init_ScreenDC (void){    __mg_screen_dc.DataType = TYPE_HDC;    __mg_screen_dc.DCType   = TYPE_SCRDC;    __mg_screen_dc.hwnd = 0;    __mg_screen_dc.gc = PHYSICALGC;    __mg_screen_dc.bkcolor = PIXEL_lightwhite;    __mg_screen_dc.bkmode = 0;    __mg_screen_dc.brushcolor = PIXEL_lightwhite;    __mg_screen_dc.pencolor = PIXEL_black;    __mg_screen_dc.CurPenPos.x = __mg_screen_dc.CurPenPos.y = 0;    __mg_screen_dc.textcolor = PIXEL_black;    __mg_screen_dc.pLogFont = GetSystemFont (SYSLOGFONT_WCHAR_DEF);    __mg_screen_dc.tabstop = 8;    __mg_screen_dc.CurTextPos.x = __mg_screen_dc.CurTextPos.y = 0;    __mg_screen_dc.cExtra = __mg_screen_dc.alExtra = __mg_screen_dc.blExtra = 0;    __mg_screen_dc.ViewOrig.x = __mg_screen_dc.ViewOrig.y = 0;    __mg_screen_dc.ViewExtent.x = __mg_screen_dc.ViewExtent.y = 1;    __mg_screen_dc.WindowOrig.x = __mg_screen_dc.WindowOrig.y = 0;    __mg_screen_dc.WindowExtent.x = __mg_screen_dc.WindowExtent.y = 1;    __mg_screen_dc.bIsClient = FALSE;    // init local clip region    InitClipRgn (&__mg_screen_dc.lcrgn, &sg_FreeClipRectList);    // init effective clip region    InitClipRgn (&__mg_screen_dc.ecrgn, &sg_FreeClipRectList);    // init global clip region information    __mg_screen_dc.pGCRInfo = NULL;    __mg_screen_dc.oldage = 0;    __mg_screen_dc.DevRC.left = 0;    __mg_screen_dc.DevRC.top  = 0;    __mg_screen_dc.DevRC.right = WIDTHOFPHYGC - 1;    __mg_screen_dc.DevRC.bottom = HEIGHTOFPHYGC - 1;    // Set local clip region and effetive clip region to the screen.    SetClipRgn (&__mg_screen_dc.lcrgn, &__mg_screen_dc.DevRC);    SetClipRgn (&__mg_screen_dc.ecrgn, &__mg_screen_dc.DevRC);}        /* * Function: HDC GUIAPI GetClientDC(HWND hWnd) *     This function get the specified window client's DC. * Parameter: *     HWND hWnd: The window, 0 for screen. * Return: *     The handle of wanted DC. */HDC GUIAPI GetClientDC(HWND hWnd){    int i;#ifndef _LITE_VERSION    pthread_mutex_lock (&dcslot);#endif    for (i = 0; i < DCSLOTNUMBER; i++) {        if (!DCSlot[i].inuse) {            DCSlot[i].inuse = TRUE;            DCSlot[i].DataType = TYPE_HDC;            DCSlot[i].DCType   = TYPE_GENDC;            break;        }    }#ifndef _LITE_VERSION    pthread_mutex_unlock (&dcslot);#endif    if (i >= DCSLOTNUMBER)        return HDC_SCREEN;    dc_InitDC (DCSlot + i, hWnd, TRUE);    return (HDC) (DCSlot + i);}/* * Function: HDC GUIAPI GetDC(HWND hWnd) *     This function get the specified window's DC. * Parameter: *     HWND hWnd: The window, 0 for screen. * Return: *     The handle of wanted DC. */HDC GUIAPI GetDC(HWND hWnd){    int i;#ifndef _LITE_VERSION    // allocate an empty dc slot exclusively       pthread_mutex_lock (&dcslot);#endif    for(i = 0; i < DCSLOTNUMBER; i++) {        if(!DCSlot[i].inuse) {            DCSlot[i].inuse = TRUE;            DCSlot[i].DataType = TYPE_HDC;            DCSlot[i].DCType   = TYPE_GENDC;            break;        }    }#ifndef _LITE_VERSION    pthread_mutex_unlock(&dcslot);#endif    if (i >= DCSLOTNUMBER)        return HDC_SCREEN;    dc_InitDC(DCSlot + i, hWnd, FALSE);    return (HDC)(DCSlot + i);}/* * Function: void GUIAPI ReleaseDC(HDC hDC) *     This function release the specified DC. * Parameter: *     HDC hDC: The DC handle want to release. * Return: *     None.  */void GUIAPI ReleaseDC (HDC hDC){    PMAINWIN pWin;    PDC pdc;    PCONTROL pCtrl;    pdc = dc_HDC2PDC(hDC);    EmptyClipRgn (&pdc->lcrgn);    pWin = (PMAINWIN)(pdc->hwnd);    if (pWin && pWin->privCDC == hDC) {#ifndef _LITE_VERSION        /* for private DC, we reset the clip region info. */        pthread_mutex_lock (&pdc->pGCRInfo->lock);#endif        pdc->oldage = pdc->pGCRInfo->age;        ClipRgnCopy (&pdc->ecrgn, &pdc->pGCRInfo->crgn);        if (pdc->bIsClient)            WndClientRect (pdc->hwnd, &pdc->DevRC);        else            WndRect (pdc->hwnd, &pdc->DevRC);        IntersectClipRect (&pdc->ecrgn, &pdc->DevRC);        pCtrl = Control (pdc->hwnd);        if (pCtrl && !(pCtrl->dwExStyle & WS_EX_CTRLASMAINWIN))            RestrictControlECRGN (&pdc->ecrgn, pCtrl);#ifndef _LITE_VERSION        pthread_mutex_unlock (&pdc->pGCRInfo->lock);#endif    }    else {        EmptyClipRgn (&pdc->ecrgn);        pdc->pGCRInfo = NULL;        pdc->oldage = 0;#ifndef _LITE_VERSION        pthread_mutex_lock (&dcslot);#endif        pdc->inuse = FALSE;#ifndef _LITE_VERSION        pthread_mutex_unlock(&dcslot);#endif    }}/* * Function: HDC GUIAPI CreateCompatibleDC (HDC hdc) *     This function create a memory dc, which is compatible  *     with specified hdc. * Parameters: *     HDC hdc: the specified DC handle. * Return: *     None. */HDC GUIAPI CreateCompatibleDC(HDC hdc){    GAL_GC gc;    PDC pdc;    PDC pMemDC = NULL;    pdc = dc_HDC2PDC(hdc);    if (!(pMemDC = malloc (sizeof(DC)))) return HDC_INVALID;#ifndef _LITE_VERSION    pthread_mutex_lock (&__mg_gdilock);#endif    if (GAL_AllocateGC (pdc->gc, RECTW (pdc->DevRC), RECTH (pdc->DevRC),             GAL_BytesPerPixel (pdc->gc), &gc) != 0) {#ifndef _LITE_VERSION        pthread_mutex_unlock (&__mg_gdilock);#endif        return HDC_INVALID;    }#ifndef _LITE_VERSION    pthread_mutex_unlock (&__mg_gdilock);#endif    memcpy (pMemDC, pdc, sizeof(DC));    pMemDC->DataType = TYPE_HDC;    pMemDC->DCType   = TYPE_MEMDC;    pMemDC->inuse = TRUE;    pMemDC->gc = gc;    // clip region info    InitClipRgn (&pMemDC->lcrgn, &sg_FreeClipRectList);    InitClipRgn (&pMemDC->ecrgn, &sg_FreeClipRectList);    pMemDC->pGCRInfo = NULL;    pMemDC->oldage = 0;    pMemDC->DevRC.left = 0;    pMemDC->DevRC.top  = 0;    pMemDC->DevRC.right = RECTW(pdc->DevRC);    pMemDC->DevRC.bottom = RECTH(pdc->DevRC);    SetClipRgn (&pMemDC->ecrgn, &pMemDC->DevRC);        return (HDC)pMemDC;}/* *  Function: DeleteCompatibleDC (HDC hdc) *      This function delete the memory DC, and free the associated memory. *  Parameters: *      HDC hdc: the DC handle want to delete. *  Return: *      FALSE: the specified HDC is not a valid memory DC. *      TRUE:  deleted. */void GUIAPI DeleteCompatibleDC(HDC hdc){    PDC pMemDC;        pMemDC = dc_HDC2PDC(hdc);    // free gl resource    GAL_FreeGC (pMemDC->gc);    // free clip region info    EmptyClipRgn (&pMemDC->lcrgn);    EmptyClipRgn (&pMemDC->ecrgn);    // free DC slot    free (pMemDC);}HDC GUIAPI CreatePrivateDC(HWND hwnd){    PDC pdc;    if (!(pdc = malloc (sizeof(DC)))) return HDC_INVALID;    InitClipRgn (&pdc->lcrgn, &sg_FreeClipRectList);    InitClipRgn (&pdc->ecrgn, &sg_FreeClipRectList);        pdc->inuse = TRUE;    pdc->DataType = TYPE_HDC;    pdc->DCType   = TYPE_GENDC;    dc_InitDC(pdc, hwnd, FALSE);    return (HDC)(pdc);}HDC GUIAPI CreatePrivateClientDC(HWND hwnd){    PDC pdc;    if (!(pdc = malloc (sizeof(DC)))) return HDC_INVALID;    InitClipRgn (&pdc->lcrgn, &sg_FreeClipRectList);    InitClipRgn (&pdc->ecrgn, &sg_FreeClipRectList);        pdc->inuse = TRUE;    pdc->DataType = TYPE_HDC;    pdc->DCType   = TYPE_GENDC;    dc_InitDC(pdc, hwnd, TRUE);    return (HDC)(pdc);}void GUIAPI DeletePrivateDC(HDC hdc){    PDC pdc;    pdc = (PDC)hdc;        EmptyClipRgn (&pdc->lcrgn);    EmptyClipRgn (&pdc->ecrgn);    free (pdc);}HDC GUIAPI GetPrivateClientDC (HWND hwnd){    PMAINWIN pWin = (PMAINWIN)hwnd;    return pWin->privCDC;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩三级.com| 一区二区欧美国产| 2023国产精品| 欧美国产日本韩| 亚洲一区二区视频在线| 久久99国产精品尤物| 成人精品电影在线观看| 欧美四级电影网| 久久综合久久综合久久综合| 亚洲日韩欧美一区二区在线| 爽好久久久欧美精品| 久久se精品一区精品二区| 蜜桃久久久久久| 成人小视频在线| 777午夜精品视频在线播放| 国产欧美日韩另类一区| 亚洲成人精品一区| 懂色av噜噜一区二区三区av| 欧美日韩亚洲丝袜制服| 国产精品三级在线观看| 日韩高清不卡一区二区| 黄一区二区三区| 欧美精三区欧美精三区| 国产精品久久久久影院亚瑟| 蜜臀av性久久久久蜜臀aⅴ流畅| av网站一区二区三区| 久久亚洲欧美国产精品乐播| 亚洲一区二区三区视频在线 | 91色婷婷久久久久合中文| 51久久夜色精品国产麻豆| 中文字幕人成不卡一区| 国产一区二区三区美女| 91视频精品在这里| 国产喂奶挤奶一区二区三区| 日本美女一区二区| 在线观看日韩精品| 亚洲精品视频免费观看| 国产成人av电影在线播放| 精品成人佐山爱一区二区| 舔着乳尖日韩一区| 欧美在线啊v一区| 日韩美女视频19| 成人免费视频国产在线观看| 国产日韩精品久久久| 另类成人小视频在线| 欧美乱熟臀69xxxxxx| 中文字幕在线不卡一区二区三区| 老汉av免费一区二区三区| 欧美日本高清视频在线观看| 尤物av一区二区| 色一情一伦一子一伦一区| 亚洲久草在线视频| 97精品国产97久久久久久久久久久久| 久久亚区不卡日本| 国产高清视频一区| 国产视频一区二区在线| 国产精品影视天天线| 久久久精品综合| 精品一区二区三区欧美| 久久综合狠狠综合| 国产a久久麻豆| 国产精品久久福利| 91在线视频网址| 亚洲男人天堂av网| 欧美日精品一区视频| 日韩精品91亚洲二区在线观看| 欧美日韩一级大片网址| 人人精品人人爱| 久久久欧美精品sm网站| 成人av网站在线观看免费| 久久久久9999亚洲精品| 国产一区二区在线看| 中文字幕第一区第二区| 91麻豆.com| 天堂成人国产精品一区| 精品国产乱码久久久久久牛牛| 国内偷窥港台综合视频在线播放| 精品日韩成人av| 麻豆成人在线观看| 欧美一区二区三区视频| 国产麻豆精品在线| 日韩美女久久久| 欧美一区二区在线视频| 久久国产成人午夜av影院| 国产三级一区二区| 色综合色综合色综合色综合色综合| 国产精品网曝门| 欧美日韩精品一区二区| 国产精品资源网站| 日本免费在线视频不卡一不卡二| 欧美不卡一区二区| av网站免费线看精品| 日韩不卡免费视频| 久久精品亚洲乱码伦伦中文| av电影天堂一区二区在线| 性做久久久久久免费观看欧美| 久久精品亚洲一区二区三区浴池| 日本道免费精品一区二区三区| 麻豆成人免费电影| 亚洲精品成人天堂一二三| 日韩欧美综合在线| 色88888久久久久久影院野外 | 91蝌蚪porny| 首页国产丝袜综合| 亚洲欧美另类在线| 国产欧美一区二区精品性色| 欧美人狂配大交3d怪物一区| 国产精品一区二区三区99| 亚洲mv大片欧洲mv大片精品| 国产欧美精品一区二区三区四区 | 国产精品国产a级| 精品国精品国产| 欧美日免费三级在线| 成人综合婷婷国产精品久久免费| 欧美a级一区二区| 亚洲猫色日本管| 亚洲国产精品激情在线观看| 色噜噜狠狠色综合欧洲selulu| 麻豆freexxxx性91精品| 午夜视频在线观看一区二区| 国产精品国产三级国产普通话三级| 91精品国产综合久久精品麻豆| 一本色道久久加勒比精品| 国产成人精品免费视频网站| 久久丁香综合五月国产三级网站 | 欧美精品一区二区精品网| 91精品国产综合久久久蜜臀图片| 在线看日韩精品电影| 91色|porny| 成人av中文字幕| 粉嫩绯色av一区二区在线观看| 国产综合色在线| 日韩**一区毛片| 亚洲愉拍自拍另类高清精品| 国产精品久久久久影院色老大 | 国产精品无人区| 国产成人h网站| 亚洲综合色视频| 亚洲va欧美va天堂v国产综合| 亚洲午夜影视影院在线观看| 亚洲电影一区二区三区| 蜜桃久久精品一区二区| 国产成人精品aa毛片| 97se亚洲国产综合自在线观| 欧美午夜视频网站| 精品区一区二区| 亚洲同性gay激情无套| 婷婷综合另类小说色区| 国产一区在线看| 色综合天天综合网国产成人综合天 | 欧美一区二区三区的| 国产日韩欧美激情| 亚洲另类在线一区| 九九九久久久精品| a级高清视频欧美日韩| 欧美精品777| 久久久国产精华| 亚洲成人三级小说| 国产伦精品一区二区三区免费迷 | 粉嫩绯色av一区二区在线观看| 91免费国产在线观看| 日韩精品一区二区三区视频 | 日本视频一区二区三区| 波多野洁衣一区| 欧美久久久久久久久| 国产精品热久久久久夜色精品三区 | 欧美主播一区二区三区美女| 精品国产亚洲在线| 亚洲国产精品久久艾草纯爱| 国产成人啪免费观看软件| 91精品国产欧美一区二区| 亚洲欧美在线视频观看| 精品午夜久久福利影院| 欧美午夜精品久久久久久超碰| 国产午夜亚洲精品理论片色戒| 亚洲成在人线在线播放| 国产成人日日夜夜| 欧美成人高清电影在线| 亚洲一级不卡视频| 国产91丝袜在线观看| 欧美一区二区三区的| 亚洲大片在线观看| 91小视频在线观看| 日本一二三不卡| 国内精品写真在线观看| 欧美日韩国产片| 自拍偷自拍亚洲精品播放| 成人一级黄色片| 久久免费电影网| 久久99精品久久久久久| 欧美一区在线视频| 婷婷中文字幕一区三区| 欧美天堂亚洲电影院在线播放| 亚洲日本一区二区| 99久久国产综合色|国产精品| 国产午夜精品一区二区三区视频| 久99久精品视频免费观看| 欧美v国产在线一区二区三区| 日韩精品电影在线观看| 91精品国产丝袜白色高跟鞋|