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

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

?? region.c

?? miniucgui1.30版本的源碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
    {        if (REGION_NOT_EMPTY(newReg))        {            CLIPRECT *prev_rects = newReg->rects;            newReg->size = newReg->numRects;            newReg->rects = realloc( newReg->rects, sizeof(CLIPRECT) * newReg->size );            if (! newReg->rects)                newReg->rects = prev_rects;        }        else        {            /*             * No point in doing the extra work involved in an Xrealloc if             * the region is empty             */            newReg->size = 1;            free( newReg->rects );            newReg->rects = malloc( sizeof(CLIPRECT) );        }    }    free( oldRects );#else    if (pdst != newReg) {        EmptyClipRgn (newReg);        *newReg = my_dst;    }#endif}/*********************************************************************** *          Region Intersection ***********************************************************************//*********************************************************************** *             REGION_IntersectO * * Handle an overlapping band for REGION_Intersect. * * Results: *      None. * * Side Effects: *      Rectangles may be added to the region. * */static voidREGION_IntersectO (CLIPRGN *region, const CLIPRECT *r1, const CLIPRECT *r1End,                        const CLIPRECT *r2, const CLIPRECT *r2End, int top, int bottom){    int       left, right;    CLIPRECT  *newcliprect;    while ((r1 != r1End) && (r2 != r2End))    {        left  = MAX (r1->rc.left, r2->rc.left);        right = MIN (r1->rc.right, r2->rc.right);        /*         * If there's any overlap between the two rectangles, add that         * overlap to the new region.         * There's no need to check for subsumption because the only way         * such a need could arise is if some region has two rectangles         * right next to each other. Since that should never happen...         */        if (left < right) {            NEWCLIPRECT (region, newcliprect);            newcliprect->rc.left = left;            newcliprect->rc.top = top;            newcliprect->rc.right = right;            newcliprect->rc.bottom = bottom;        }        /*         * Need to advance the pointers. Shift the one that extends         * to the right the least, since the other still has a chance to         * overlap with that region's next rectangle, if you see what I mean.         */        if (r1->rc.right < r2->rc.right) {            r1 = r1->next;        }        else if (r2->rc.right < r1->rc.right) {            r2 = r2->next;        }        else {            r1 = r1->next;            r2 = r2->next;        }    }}/*********************************************************************** *             Region Union ***********************************************************************//*********************************************************************** *             REGION_UnionNonO * *      Handle a non-overlapping band for the union operation. Just *      Adds the rectangles into the region. Doesn't have to check for *      subsumption or anything. * * Results: *      None. * * Side Effects: *      region->numRects is incremented and the final rectangles overwritten *      with the rectangles we're passed. * */static voidREGION_UnionNonO (CLIPRGN *region, const CLIPRECT *r, const CLIPRECT *rEnd, int top, int bottom){    CLIPRECT *newcliprect;    while (r != rEnd) {        NEWCLIPRECT (region, newcliprect);        newcliprect->rc.left = r->rc.left;        newcliprect->rc.top = top;        newcliprect->rc.right = r->rc.right;        newcliprect->rc.bottom = bottom;        r = r->next;    }}/*********************************************************************** *             REGION_UnionO * *      Handle an overlapping band for the union operation. Picks the *      left-most rectangle each time and merges it into the region. * * Results: *      None. * * Side Effects: *      Rectangles are overwritten in region->rects and region->numRects will *      be changed. * */static voidREGION_UnionO(CLIPRGN *region, const CLIPRECT *r1, const CLIPRECT *r1End,                           const CLIPRECT *r2, const CLIPRECT *r2End, int top, int bottom){    CLIPRECT *newcliprect;    #define MERGERECT(r) \    if ((region->head) &&  \        (region->tail->rc.top == top) &&  \        (region->tail->rc.bottom == bottom) &&  \        (region->tail->rc.right >= r->rc.left))  \    {  \        if (region->tail->rc.right < r->rc.right)  \        {  \            region->tail->rc.right = r->rc.right;  \        }  \    }  \    else  \    {  \        NEWCLIPRECT(region, newcliprect);  \        newcliprect->rc.top = top;  \        newcliprect->rc.bottom = bottom;  \        newcliprect->rc.left = r->rc.left;  \        newcliprect->rc.right = r->rc.right;  \    }  \    r = r->next;        while ((r1 != r1End) && (r2 != r2End))    {        if (r1->rc.left < r2->rc.left)        {            MERGERECT(r1);        }        else        {            MERGERECT(r2);        }    }        if (r1 != r1End)    {        do {            MERGERECT(r1);        } while (r1 != r1End);    }    else while (r2 != r2End)    {        MERGERECT(r2);    }}/*********************************************************************** *             Region Subtraction ***********************************************************************//*********************************************************************** *             REGION_SubtractNonO1 * *      Deal with non-overlapping band for subtraction. Any parts from *      region 2 we discard. Anything from region 1 we add to the region. * * Results: *      None. * * Side Effects: *      region may be affected. * */static voidREGION_SubtractNonO1 (CLIPRGN *region, const CLIPRECT *r, const CLIPRECT *rEnd,                        int top, int bottom){    CLIPRECT *newcliprect;            while (r != rEnd) {        NEWCLIPRECT(region, newcliprect);        newcliprect->rc.left = r->rc.left;        newcliprect->rc.top = top;        newcliprect->rc.right = r->rc.right;        newcliprect->rc.bottom = bottom;        r = r->next;    }}/*********************************************************************** *             REGION_SubtractO * *      Overlapping band subtraction. x1 is the left-most point not yet *      checked. * * Results: *      None. * * Side Effects: *      region may have rectangles added to it. * */static voidREGION_SubtractO (CLIPRGN *region, const CLIPRECT *r1, const CLIPRECT *r1End,                        const CLIPRECT *r2, const CLIPRECT *r2End, int top, int bottom){    CLIPRECT *newcliprect;    int left;        left = r1->rc.left;    while ((r1 != r1End) && (r2 != r2End)) {        if (r2->rc.right <= left) {            /*             * Subtrahend missed the boat: go to next subtrahend.             */            r2 = r2->next;        }        else if (r2->rc.left <= left)        {            /*             * Subtrahend preceeds minuend: nuke left edge of minuend.             */            left = r2->rc.right;            if (left >= r1->rc.right)            {                /*                 * Minuend completely covered: advance to next minuend and                 * reset left fence to edge of new minuend.                 */                r1 = r1->next;                if (r1 != r1End)                    left = r1->rc.left;            }            else            {                /*                 * Subtrahend now used up since it doesn't extend beyond                 * minuend                 */                r2 = r2->next;            }        }        else if (r2->rc.left < r1->rc.right)        {            /*             * Left part of subtrahend covers part of minuend: add uncovered             * part of minuend to region and skip to next subtrahend.             */            NEWCLIPRECT(region, newcliprect);            newcliprect->rc.left = left;            newcliprect->rc.top = top;            newcliprect->rc.right = r2->rc.left;            newcliprect->rc.bottom = bottom;            left = r2->rc.right;            if (left >= r1->rc.right)            {                /*                 * Minuend used up: advance to new...                 */                r1 = r1->next;                if (r1 != r1End)                    left = r1->rc.left;            }            else            {                /*                 * Subtrahend used up                 */                r2 = r2->next;            }        }        else        {            /*             * Minuend used up: add any remaining piece before advancing.             */            if (r1->rc.right > left)            {                NEWCLIPRECT(region, newcliprect);                newcliprect->rc.left = left;                newcliprect->rc.top = top;                newcliprect->rc.right = r1->rc.right;                newcliprect->rc.bottom = bottom;            }            r1 = r1->next;            if (r1 != r1End)                left = r1->rc.left;        }    }    /*     * Add remaining minuend rectangles to region.     */    while (r1 != r1End)    {        NEWCLIPRECT(region, newcliprect);        newcliprect->rc.left = left;        newcliprect->rc.top = top;        newcliprect->rc.right = r1->rc.right;        newcliprect->rc.bottom = bottom;        r1 = r1->next;        if (r1 != r1End)            left = r1->rc.left;    }}/*********************************************************************** *             IntersectRegion */BOOL GUIAPI ClipRgnIntersect (CLIPRGN *dst, const CLIPRGN *src1, const CLIPRGN *src2){    /* check for trivial reject */    if ( (!(src1->head)) || (!(src2->head))  ||        (!EXTENTCHECK(&src1->rcBound, &src2->rcBound)))    {        EmptyClipRgn (dst);        return TRUE;    }    else        REGION_RegionOp (dst, src1, src2,             REGION_IntersectO, NULL, NULL);        /*     * Can't alter dst's rcBound before we call miRegionOp because     * it might be one of the source regions and miRegionOp depends     * on the rcBound of those regions being the same. Besides, this     * way there's no checking against rectangles that will be nuked     * due to coalescing, so we have to examine fewer rectangles.     */    REGION_SetExtents(dst);    dst->type = (dst->head) ? COMPLEXREGION : NULLREGION ;    return TRUE;}/*********************************************************************** *             SubtractRegion * *      Subtract rgnS from rgnM and leave the result in rgnD. *      S stands for subtrahend, M for minuend and D for difference. * * Results: *      TRUE. * * Side Effects: *      regD is overwritten. * */BOOL GUIAPI SubtractRegion (CLIPRGN *rgnD, const CLIPRGN *rgnM, const CLIPRGN *rgnS){    /* check for trivial reject */    if ( (!(rgnM->head)) || (!(rgnS->head))  ||            (!EXTENTCHECK (&rgnM->rcBound, &rgnS->rcBound)) ) {        CopyRegion (rgnD, rgnM);        return TRUE;    }     REGION_RegionOp (rgnD, rgnM, rgnS, REGION_SubtractO,                 REGION_SubtractNonO1, NULL);    /*     * Can't alter newReg's rcBound before we call miRegionOp because     * it might be one of the source regions and miRegionOp depends     * on the rcBound of those regions being the unaltered. Besides, this     * way there's no checking against rectangles that will be nuked     * due to coalescing, so we have to examine fewer rectangles.     */    REGION_SetExtents (rgnD);    rgnD->type = (rgnD->head) ? COMPLEXREGION : NULLREGION;    return TRUE;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区免费在线观看| 国产精品一区一区| 久久av资源站| 色域天天综合网| 欧美国产综合色视频| 午夜久久久影院| 91亚洲大成网污www| 久久综合色婷婷| 免费一区二区视频| 欧美在线视频你懂得| 亚洲欧洲无码一区二区三区| 久久精品久久精品| 制服丝袜成人动漫| 亚洲成年人影院| 欧美午夜理伦三级在线观看| 日本一区二区动态图| 久久激情五月激情| 3d动漫精品啪啪| 日韩专区在线视频| 欧美精品亚洲二区| 亚洲高清久久久| 色吧成人激情小说| 专区另类欧美日韩| 91毛片在线观看| 亚洲欧洲性图库| 91久久精品一区二区三| 中文字幕制服丝袜一区二区三区 | 在线亚洲欧美专区二区| 亚洲国产精品av| 成人精品一区二区三区四区 | 日韩一区二区电影网| 亚洲国产综合色| 欧美日韩国产区一| 秋霞成人午夜伦在线观看| 欧美一区二区视频在线观看2022 | 亚洲视频在线观看三级| 暴力调教一区二区三区| 亚洲欧洲精品一区二区三区不卡| 成人不卡免费av| 亚洲男同1069视频| 欧美乱熟臀69xxxxxx| 丝袜亚洲另类欧美综合| 欧美一区二区在线观看| 国产一区免费电影| 亚洲国产精品激情在线观看| proumb性欧美在线观看| 亚洲激情六月丁香| 日韩一区二区在线观看视频| 韩国成人在线视频| 国产精品蜜臀av| 在线观看国产日韩| 日韩精品一区第一页| 精品少妇一区二区三区视频免付费 | 久久国产精品99久久人人澡| 精品国产麻豆免费人成网站| 国产成人自拍高清视频在线免费播放| 国产精品久久久久久久久动漫| 91精品中文字幕一区二区三区| 亚洲妇女屁股眼交7| 日韩欧美一级二级三级久久久| 国产一区二区福利| 一区二区三区丝袜| 日韩欧美第一区| 成人高清免费在线播放| 亚洲成人一区二区在线观看| 2020日本不卡一区二区视频| 91网页版在线| 蜜桃精品视频在线| 亚洲视频在线观看一区| 欧美一区二区三区婷婷月色 | 在线日韩av片| 另类小说图片综合网| 中文字幕电影一区| 91精品国产综合久久久蜜臀粉嫩| 国产一区激情在线| 日日摸夜夜添夜夜添亚洲女人| 国产精品嫩草影院com| 欧美一区二区三区小说| 91久久一区二区| 国产成人欧美日韩在线电影| 亚洲黄色尤物视频| 国产精品午夜久久| 日韩精品一区二区三区三区免费| 一本久道久久综合中文字幕| 久久精品国产第一区二区三区| 国产精品初高中害羞小美女文| 日韩一级精品视频在线观看| 不卡电影一区二区三区| 久久99九九99精品| 亚洲444eee在线观看| 亚洲欧洲国产日本综合| 亚洲精品一区在线观看| 欧美人与z0zoxxxx视频| 精品国产髙清在线看国产毛片| 99久久婷婷国产综合精品电影 | 黑人精品欧美一区二区蜜桃| 亚洲日本在线天堂| 久久精品视频免费| 精品国产乱码久久久久久浪潮| 成a人片亚洲日本久久| 国产精品一二二区| 国产一区二区三区在线观看精品 | 国产人久久人人人人爽| 91精品国产综合久久久久久久 | 精品日韩在线观看| 在线综合+亚洲+欧美中文字幕| 欧美三级资源在线| 欧美在线免费播放| 精品视频全国免费看| 欧美性大战久久久久久久蜜臀| 色94色欧美sute亚洲13| av成人免费在线| 成人激情小说乱人伦| eeuss鲁片一区二区三区| 成人免费高清在线| gogogo免费视频观看亚洲一| 不卡一区二区中文字幕| 91色视频在线| 欧美色图天堂网| 欧美日韩国产首页| 91精品国产综合久久久久久久| 91精品国产乱| 欧美精品一区二区高清在线观看| 日韩欧美高清在线| 久久精品视频在线看| 国产欧美一区二区精品忘忧草 | 国产精一品亚洲二区在线视频| 国产在线视频一区二区三区| 国产精品影视在线观看| 丰满亚洲少妇av| 色综合久久综合中文综合网| 在线影院国内精品| 欧美久久婷婷综合色| 日韩欧美一区二区免费| 久久久亚洲综合| 亚洲人成7777| 秋霞电影一区二区| 风间由美一区二区av101 | 精品国一区二区三区| 久久青草欧美一区二区三区| 中文字幕在线一区| 午夜欧美视频在线观看| 国模套图日韩精品一区二区| 成人黄色小视频| 欧美色视频在线观看| www精品美女久久久tv| 日韩久久一区二区| 青青草国产精品亚洲专区无| 国产成人免费视频| 欧洲一区在线电影| 精品欧美一区二区久久| 中文字幕一区二区三区不卡 | 色琪琪一区二区三区亚洲区| 欧美精品乱人伦久久久久久| 久久婷婷久久一区二区三区| 亚洲精品乱码久久久久久日本蜜臀| 日韩福利视频网| 99精品视频一区二区三区| 欧美亚洲综合在线| 国产亚洲欧洲一区高清在线观看| 亚洲一二三区视频在线观看| 麻豆国产欧美日韩综合精品二区 | 成人a区在线观看| 欧美一级黄色大片| 亚洲欧美激情视频在线观看一区二区三区| 成人黄页在线观看| 日韩免费在线观看| 亚洲一二三四区不卡| 成人18视频在线播放| 欧美mv日韩mv国产| 香蕉影视欧美成人| 99久久免费精品| 精品处破学生在线二十三| 一区二区三区日韩精品视频| 国产成人亚洲综合a∨婷婷| 欧美精品三级日韩久久| 亚洲乱码国产乱码精品精小说| 黄色成人免费在线| 5566中文字幕一区二区电影| 亚洲卡通欧美制服中文| 成人av免费在线播放| 日韩精品一区二区三区中文精品| 午夜精品福利一区二区蜜股av| 99精品国产热久久91蜜凸| 久久精品无码一区二区三区| 美女久久久精品| 日韩欧美一区二区三区在线| 亚洲成人激情av| 欧美日韩精品久久久| 亚洲乱码一区二区三区在线观看| 波多野洁衣一区| 中文字幕乱码日本亚洲一区二区| 国内久久精品视频| 精品卡一卡二卡三卡四在线| 久久精品免费观看| 欧美zozo另类异族| 韩国av一区二区三区| 久久久国产综合精品女国产盗摄| 久久精品国产免费看久久精品| 日韩一区二区三区三四区视频在线观看 |