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

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

?? lowgdi.c

?? 做為linux下圖形用戶界面支持系統之一的MicroWindows采用C++設計
?? C
?? 第 1 頁 / 共 2 頁
字號:
    _lgResetClipping();

    _lgOutportb (0x3ce, 3);
    _lgOutportb (0x3cf, 0x08);          /* AND pen */
    _lgSetColor (LG_WHITE);
    _lgSetBgColor (LG_BLACK);
    _lgPutFont (_lgMScreenMask, _lgMLastX, _lgMLastY, 16, 16);
    _lgOutportb (0x3ce, 3);
    _lgOutportb (0x3cf, 0x10);          /* OR pen */
    _lgPutFont (_lgMCursorMask, _lgMLastX, _lgMLastY, 16, 16);
    _lgSetColor   (bc);
    _lgSetBgColor (bgc);
    _lgSetXOR (_lgXOR);                 /* restore pen mode */

    _lgClipX1=bcx1; _lgClipY1=bcy1;
    _lgClipX2=bcx2; _lgClipY2=bcy2;
}

BYTE _lgGetMouseButton ()
{
    _lgUpdateMouse();

    if (_lgMLButtonHitted == TRUE && _lgMButton == LGM_BUTTONUP)
    {
        _lgMLButtonHitted = FALSE;
    }

    return (_lgMButton);
}

int  _lgGetMouseX ()
{
    _lgUpdateMouse();
    return (_lgMLastX);
}

int  _lgGetMouseY ()
{
    _lgUpdateMouse();
    return (_lgMLastY);
}

void _lgMouseTempHide(int x1, int y1, int x2, int y2)
{
    int bcx1=_lgClipX1, bcx2=_lgClipX2, bcy1=_lgClipY1, bcy2=_lgClipY2;
    int oca, ocb;
    BOOL hide = FALSE;

    if (_lgMouseActive == FALSE) return;
    if (_lgCursorTempHide || _lgMouseHided) return;

    if (x1==-1 && y1==-1)
    {
        hide = TRUE;
    }
    else
    {
        _lgClipX1=x1-8;
        _lgClipY1=y1-4;
        _lgClipX2=x2+8;
        _lgClipY2=y2+4;

        oca=_lgClipOutcode (_lgMLastX, _lgMLastY);
        ocb=_lgClipOutcode (_lgMLastX+16, _lgMLastY+16);

        if (_lgClipAccept(oca, ocb))
        {
            if (!_lgClipReject (oca, ocb)) hide = TRUE;
        }
        else
        {
            hide = TRUE;
        }
    }

    if (hide == TRUE)
    {
        _lgMRestoreBack();
        _lgCursorTempHide=TRUE;
    }

    _lgClipX1=bcx1;
    _lgClipY1=bcy1;
    _lgClipX2=bcx2;
    _lgClipY2=bcy2;
}

void _lgMouseTempShow()
{
    if (_lgMouseHided) return;

    if (_lgCursorTempHide==TRUE)
    {
        _lgCursorTempHide=FALSE;
        _lgMSaveBack();
        _lgDisplayCursor();
    }
}

void _lgUpdateMouse ()
{
    int     x, y, state;

    if (_lgMouseActive == FALSE) return;

    _lgMouseCall (3, 0, 0, 0);
    x     = _lgCX;
    y     = _lgDX;
    state = _lgBX;

    if (x!=_lgMLastX || y!=_lgMLastY)   /* mouse moved */
    {
        _lgMRestoreBack();
        _lgMLastX  = x;
        _lgMLastY  = y;
        _lgMSaveBack();
        _lgDisplayCursor();
    }

    _lgMButton = LGM_MOVE;

    if (state & 1)          /* 1 = LBUTTON_DOWN */
    {
        if (_lgMLButtonHitted == TRUE)
        {
            _lgMButton = LGM_DRAG;
        }
        else
        {
            _lgMButton = LGM_BUTTONDOWN;
        }

        _lgMLButtonHitted = TRUE;
    }
    else
    {
        if (_lgMLButtonHitted == TRUE)
        {
            _lgMButton = LGM_BUTTONUP;
        }
    }
}

void _lgLineClipper(int x1, int y1, int x2, int y2)
{
    int  tmp;
    int  outcode1=_lgClipOutcode(x1, y1), outcode2=_lgClipOutcode(x2, y2);
    int  x3, y3, x4, y4, swap=0;
    long buf, dx, dy;

    _lgClipOut=1;

    while (_lgClipAccept(outcode1, outcode2))
    {
        if (_lgClipReject (outcode1, outcode2)) break;
        if (outcode1==_lgClipInside)
        {
            tmp=x2; x2=x1; x1=tmp;
            tmp=y2; y2=y1; y1=tmp;
            tmp=outcode2; outcode2=outcode1; outcode1=tmp;
            swap=1;
        }

        dx=x2-x1;
        dy=y2-y1;

        if (outcode1 & _lgClipTop)
        {
            if (dy) buf=dx*(long)(_lgClipY1-y1)/dy;
            x1+=buf;
            y1 =_lgClipY1;
        }
        else if (outcode1 & _lgClipBottom)
        {
            if (dy) buf=dx*(long)(_lgClipY2-y1)/dy;
            x1+=buf;
            y1 =_lgClipY2;
        }
        else if (outcode1 & _lgClipRight)
        {
            if (dx) buf=dy*(long)(_lgClipX2-x1)/dx;
            y1+=buf;
            x1 =_lgClipX2;
        }
        else if (outcode1 & _lgClipLeft)
        {
            if (dx) buf=dy*(long)(_lgClipX1-x1)/dx;
            y1+=buf;
            x1 =_lgClipX1;
        }
        outcode1=_lgClipOutcode(x1, y1);
    }

    if (!_lgClipAccept(outcode1, outcode2))
    {
        if (swap)
        {
            _lgRX1=x2;
            _lgRY1=y2;
            _lgRX2=x1;
            _lgRY2=y1;
        }
        else
        {
            _lgRX1=x1;
            _lgRY1=y1;
            _lgRX2=x2;
            _lgRY2=y2;
        }
        _lgClipOut=0;   /* still a drawable line */
    }
}

void _lgRectClipper(int x1, int y1, int x2, int y2)
{
    int tmp;
    int outcode1=_lgClipOutcode(x1, y1), outcode2=_lgClipOutcode(x2, y2);
    int x3, y3, x4, y4;

    _lgClipOut=1;
    while (_lgClipAccept(outcode1, outcode2))
    {
        if (_lgClipReject (outcode1, outcode2)) break;
        if (outcode1==_lgClipInside)
        {
            tmp=x2; x2=x1; x1=tmp;
            tmp=y2; y2=y1; y1=tmp;
            tmp=outcode2; outcode2=outcode1; outcode1=tmp;
        }

        if (outcode1 & _lgClipTop)
        {
            y1 =_lgClipY1;
        }
        else if (outcode1 & _lgClipBottom)
        {
            y1 =_lgClipY2;
        }
        else if (outcode1 & _lgClipRight)
        {
            x1 =_lgClipX2;
        }
        else if (outcode1 & _lgClipLeft)
        {
            x1 =_lgClipX1;
        }
        outcode1=_lgClipOutcode(x1, y1);
    }

    if (!_lgClipAccept(outcode1, outcode2))
    {
        x3=x1; x4=x2; y3=y1; y4=y2;
        if (x1>x2)
        {
            x3=x2;
            x4=x1;
        }
        if (y1>y2)
        {
            y3=y2;
            y4=y1;
        }

        _lgRX1=x3;
        _lgRY1=y3;
        _lgRX2=x4;
        _lgRY2=y4;
        _lgClipOut=0;
    }
}

/**********************************************************
 *
 *      1001 | 1000 | 1010
 *     ------+------+------
 *      0001 | 0000 | 0010      Cohen-Sutherland's outcode
 *     ------+------+------
 *      0101 | 0100 | 0110
 *
 *********************************************************/

int  _lgClipOutcode(int x , int y)
{
    int out;
    if (y<_lgClipY1) out=_lgClipTop;
    else if (y>_lgClipY2) out=_lgClipBottom;
    else out=_lgClipInside;

    if (x<_lgClipX1) out|=_lgClipLeft;
    else if (x>_lgClipX2) out|=_lgClipRight;

    return (out);
}

void    _lgGetImage (char *image, int x1, int y1, int x2, int y2)
{
    register int xc, yc;
    int x3, x4;
    unsigned int yaddr, addr;
    char p;

    x3=x1 >> 3;
    x4=x2 >> 3;

    for (yc=y1; yc<=y2; yc++)
    {
        yaddr=_lgYaddr[yc];

        for (p=0; p<4; p++)
        {
            _lgOutportb (0x3ce, 4);
            _lgOutportb (0x3cf, p);

            for (xc=x3; xc<=x4; xc++)
            {
                addr=yaddr+xc;
                *image++ = *(_lgDBitmap + addr);
            }
        }
    }

}

void    _lgPutImage (char *image, int x1, int y1, int x2, int y2)
{
    register int xc, yc;
    int x3, x4;
    unsigned yaddr, addr;
    char p;

    x3=x1 >> 3;
    x4=x2 >> 3;

    _lgOutportb (0x3ce, 3);
    _lgOutportb (0x3cf, 0);
    _lgOutportb (0x3ce, 5);
    _lgOutportb (0x3cf, 0);
    _lgOutportb (0x3ce, 8);
    _lgOutportb (0x3cf, 0xff);

    for (yc=y1; yc<=y2; yc++)
    {
        yaddr=_lgYaddr[yc];

        for (p=0; p<4; p++)
        {
            _lgOutportb (0x3c4, 2);
            _lgOutportb (0x3c5, _lgBitPlane[p]);

            for (xc=x3; xc<=x4; xc++)
            {
                addr=yaddr+xc;
                *(_lgDBitmap+addr)=*image++;
            }
        }
    }

    _lgOutportb (0x3ce, 5);
    _lgOutportb (0x3cf, 2);
    _lgOutportb (0x3c4, 2);
    _lgOutportb (0x3c5, 0x0f);
    _lgSetXOR (_lgXOR);                 /* restore pen mode */
}

int     _lgImageSize (int x1, int y1, int x2, int y2)
{
    return (((((x2 - x1) << 3) + 1) * (y2 - y1 + 1)) >> 2);
}

void    _lgPutFont  (char *image, int x, int y, int width, int height)
{
    register int xc, yc;
    int  bkc=_lgColor, bytewidth, yaddr, addr;
    BYTE *data, next, offset, mask;
    static BYTE mmask;

    _lgRectClipper (x, y, x+width-1, y+height-1);
    if (_lgClipOut) return;

    if (width & 7) bytewidth=(width >> 3)+1;
    else           bytewidth=(width >> 3);

    _lgOutportb (0x3ce, 8);

    for (yc=_lgRY1; yc<=_lgRY2; yc++)
    {
        data = image + bytewidth * (yc - y);
        next = (*data++);
        offset = (_lgRX1 - x);
        yaddr = _lgYaddr[yc];

        for (xc=_lgRX1; xc<=_lgRX2; xc++)
        {
            addr=yaddr + (xc >> 3);
            if (next & (0x80 >> offset)) _lgColor=bkc;
            else _lgColor=_lgBgColor;

           _lgOutportb (0x3cf, _lgMask[xc & 7]);
            mmask=*(_lgDBitmap+addr);
            *(_lgDBitmap+addr)=_lgColor;

            offset++;

            if (offset & 8)     /* offset > 7 */
            {
                offset=0;
                next=*data++;
            }
        }

    }

    _lgColor=bkc;
}

void    _lgPutDIB   (char *image, int x, int y, int width, int height)
{
    register int xc, yc;
    int  bkc=_lgColor;
    char *data;

    _lgRectClipper (x, y, x+width-1, y+height-1);
    if (_lgClipOut) return;
    _lgMouseTempHide (_lgRX1, _lgRY1, _lgRX2, _lgRY2);

    for (yc=_lgRY1; yc<=_lgRY2; yc++)
    {
        data = image + ((yc - y) * width) + (_lgRX1 - x);

        for (xc=_lgRX1; xc<=_lgRX2; xc++)
        {
            _lgColor = *data++;
            _lgLowPoint (xc, yc);
        }
    }

    _lgColor = bkc;
    _lgMouseTempShow();
}

int _lgTextWidth  (char *text)
{
    return (strlen(text) * 8);
}

int _lgTextHeight (char *text)
{
    if (text) return (15);
    return (0);
}

void _lgHideMouse ()
{
    if (_lgMouseHided == TRUE) return;
    _lgMRestoreBack ();
    _lgMouseHided = TRUE;
}

void _lgShowMouse ()
{
    if (_lgMouseHided == FALSE) return;
    _lgMouseHided = FALSE;
    _lgMSaveBack ();
}

BOOL _lgIsMouseHide (void)
{
    return (_lgMouseHided);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区二区果冻传媒| 国产一区二区主播在线| 亚洲精品一区二区三区福利| 欧美男人的天堂一二区| 欧美性一级生活| 色老头久久综合| 在线观看亚洲精品视频| 欧美视频一区在线| 欧美日韩国产中文| 欧美一区二区三区白人| 欧美v日韩v国产v| 亚洲精品一线二线三线无人区| 欧美一级xxx| 欧美成人bangbros| 久久久99精品免费观看不卡| 中文字幕国产精品一区二区| 一区在线观看免费| 亚洲一区精品在线| 蜜臀a∨国产成人精品| 国产一区二区在线视频| gogo大胆日本视频一区| 在线国产亚洲欧美| 欧美sm极限捆绑bd| 国产精品天干天干在线综合| 一区二区三区欧美久久| 日韩不卡手机在线v区| 精品中文字幕一区二区| 北条麻妃一区二区三区| 91高清视频在线| 日韩一级黄色片| 日本一区二区视频在线| 亚洲一区二区在线免费观看视频| 日韩在线卡一卡二| 国产成人在线视频网址| 欧美揉bbbbb揉bbbbb| 日韩欧美国产小视频| 国产精品国产精品国产专区不片| 亚洲高清免费观看 | 中文字幕精品一区| 亚洲日本电影在线| 视频一区视频二区中文字幕| 国产a久久麻豆| 5566中文字幕一区二区电影| 中文字幕不卡在线| 日韩精品亚洲一区二区三区免费| 大桥未久av一区二区三区中文| 欧美视频一区二区三区四区 | 成人黄动漫网站免费app| 在线观看免费视频综合| 国产亚洲成aⅴ人片在线观看| 亚洲国产精品一区二区www | 欧美亚一区二区| 国产欧美日韩激情| 日本强好片久久久久久aaa| 99视频有精品| 久久婷婷国产综合国色天香| 午夜精品一区二区三区免费视频| 国产91丝袜在线观看| 欧美一区二区日韩| 亚洲一区二区三区视频在线播放| 懂色av一区二区夜夜嗨| 欧美xxxx在线观看| 午夜精品久久一牛影视| 日本韩国精品在线| 国产精品久久久爽爽爽麻豆色哟哟 | 91精品国产色综合久久ai换脸| 制服丝袜av成人在线看| 亚洲综合男人的天堂| av不卡免费电影| 国产欧美一区二区精品仙草咪| 日韩电影在线一区二区| 欧美日韩免费一区二区三区 | 国产欧美精品一区二区三区四区 | 亚洲精品一区二区三区四区高清 | 精品国产免费一区二区三区四区| 亚洲成人av在线电影| 欧美三级三级三级| 亚洲国产视频网站| 欧美三级韩国三级日本三斤| 亚洲线精品一区二区三区| 在线观看欧美黄色| 亚洲成人综合在线| 777亚洲妇女| 天天综合网天天综合色| 91精品国产综合久久精品图片 | 国产精品一区二区久激情瑜伽| 欧美大片在线观看一区| 国产一区日韩二区欧美三区| 26uuu国产电影一区二区| 国产剧情av麻豆香蕉精品| 26uuu色噜噜精品一区二区| 国产v日产∨综合v精品视频| 中文字幕一区二区三区四区不卡 | 国产麻豆视频精品| 国产三级三级三级精品8ⅰ区| 成人综合日日夜夜| 亚洲精品v日韩精品| 欧美精品v日韩精品v韩国精品v| 国产一区日韩二区欧美三区| 久久精品亚洲一区二区三区浴池| 99久久免费视频.com| 一区二区国产视频| 日韩情涩欧美日韩视频| 成人一区在线看| 一区二区视频在线| 这里只有精品电影| 国产suv一区二区三区88区| 亚洲精品第一国产综合野| 日韩视频免费直播| 成人美女视频在线观看18| 亚洲无人区一区| 久久婷婷久久一区二区三区| 在线观看成人免费视频| 精品在线播放午夜| 亚洲另类春色国产| 欧美v日韩v国产v| 91蜜桃视频在线| 久久99精品国产麻豆不卡| 亚洲欧美日韩一区二区 | 97精品国产97久久久久久久久久久久| 亚洲亚洲人成综合网络| 国产日韩欧美精品综合| 欧美另类videos死尸| 成人午夜在线视频| 蜜臀精品久久久久久蜜臀| 亚洲卡通欧美制服中文| 精品对白一区国产伦| 欧美日韩色一区| av网站免费线看精品| 国产在线观看免费一区| 天堂成人国产精品一区| 亚洲日本中文字幕区| 久久久久99精品一区| 日韩午夜在线观看| 91福利国产成人精品照片| 国产成人鲁色资源国产91色综| 日韩国产欧美在线观看| 亚洲线精品一区二区三区八戒| 国产欧美日韩不卡| 2023国产精品| 欧美xxxxxxxxx| 欧美一区二区三区在线观看视频| 91福利国产精品| 色综合久久久久| 97精品国产97久久久久久久久久久久| 国产精品一区一区三区| 国产综合色精品一区二区三区| 五月婷婷色综合| 天天影视涩香欲综合网| 午夜精品一区二区三区电影天堂| 一区二区成人在线观看| 亚洲乱码中文字幕综合| 亚洲天堂网中文字| 亚洲色图视频网站| ...中文天堂在线一区| 亚洲欧洲日本在线| 最新日韩在线视频| 亚洲免费观看高清完整版在线观看熊| 国产精品久久久久久久久晋中| 国产精品美女久久久久久久久| 久久久精品中文字幕麻豆发布| 久久久久久久久久久久久女国产乱| 精品国产乱码久久久久久浪潮 | 一本色道久久综合亚洲aⅴ蜜桃| 国产成人av网站| 成人av综合在线| 91日韩一区二区三区| 91久久精品一区二区三| 久久久777精品电影网影网| 国产三级精品三级在线专区| 国产精品麻豆久久久| 夜夜精品视频一区二区 | 中文字幕一区二区三区精华液| 国产精品不卡在线观看| 亚洲综合激情小说| 无吗不卡中文字幕| 国产综合色视频| 色综合久久综合网欧美综合网| 欧美乱熟臀69xxxxxx| 日韩免费高清电影| 欧美国产国产综合| 亚洲综合色区另类av| 韩国一区二区视频| 91丨九色porny丨蝌蚪| 欧美一区二区啪啪| 国产亚洲美州欧州综合国| 一区二区三区影院| 韩国女主播一区| 91精品福利在线| 欧美成人伊人久久综合网| 亚洲色图在线播放| 青青草原综合久久大伊人精品| 成人午夜视频网站| 欧美日韩一区二区三区不卡| 国产日韩一级二级三级| 午夜久久久久久久久| 成人白浆超碰人人人人| 555夜色666亚洲国产免| 中文字幕在线不卡一区二区三区 | 欧美精品一区二区在线播放|