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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? gdi.c

?? 車載電子影音系統(tǒng)dvd播放系統(tǒng)原程序代碼
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
        //printf("start:%d  ", wCnt);

        for (j=0; j<bStrLen; j++)
        {
            bWidth = ((__wGDIString[j+1] & 0xF000) >> 10); // get width ( >> 12 * 4)
            for (k=0; k<bWidth; k++) // if variable sized font, the width depends on each char
            //for (k=bWidth; k>0; k--)
            {
                switch (bMode)
                {
                case 0:
                    break;
                case 1:                                      
                    break;
                case 2:
                    bTemp1 = _GetFontBit2(__wGDIString[j+1], k, i);
                    switch(bTemp1)
                    {
                        case 0:
                            *pbBuffer++ = __bTextBgColor;
                            break;
                        case 1:
                            *pbBuffer++ = __bTextFgColor;
                            break;
                        case 2:
                            *pbBuffer++ = __bShadowColor_1;
                            break;
                        case 3:
                            *pbBuffer++ = __bShadowColor_2;
                            break;
                    }
                    break;
                }
                wCnt++;
            }

        }

        //printf("mid:%d  ", wCnt);

        // check if we need to read back the pixels (1, 2, 3) from DRAM
        bTemp1 = (BYTE)((__wGDIx + wCnt - m) % (1L << (4-bMode)));
        if (bTemp1)
        {
            // read back the DWORD where the end point is in
            W99AV_ReadDRAMData( _dwGDIHeaders[0] + (wCnt >> (4 - bMode)), &_dwGDIHeaders[1] );
#if  IO == IO_PCI
            Swap((BYTE*)&_dwGDIHeaders[1]);
#endif
            // also put the other pixels in the buffer
            for (m=0; m<(1L << (4-bMode))-bTemp1; m++)
            {
                switch (bMode)
                {
                case 0:
                    break;
                case 1:
                    //_Get4Bits( ((BYTE *)&_dwGDIHeaders[1]) + (bTemp1 + m)/2, wCnt%2, &j);
                    //_Put4Bits(pbBuffer, wCnt%2, j);
                    //if (wCnt%2)
                    //    pbBuffer++;
                    break;
                case 2:
                    *pbBuffer++ = *((BYTE*) (&_dwGDIHeaders[1]) + bTemp1 + m);
                    break;
                }
                wCnt++;
                
            }
        }

        
        //if ((__wGDIy + i) % 2) // check whether the line is in top or bottom field
        //    _dwGDIHeaders[0] = __RegionList[__bCurrentRegionId].dwBAddr+4+_dwGDITemp + ((DWORD)i*__RegionList[__bCurrentRegionId].wWidth>>2);
        //else
        //    _dwGDIHeaders[0] = __RegionList[__bCurrentRegionId].dwTAddr+4+_dwGDITemp + ((DWORD)i*__RegionList[__bCurrentRegionId].wWidth>>2);
        
        // output one line to DRAM with burst write, each time 14 DWORD
        pbBuffer = __bPixelBuffer;

        //printf("end:%d\n", wCnt);

        wCnt = wCnt >> (4 - bMode);
#if  IO == IO_PCI
        for (m=0; m<wCnt; m++)
            Swap(pbBuffer+m*4);
#endif
        //pbBuffer[3] = 5;
        //pbBuffer[2] = 5;
        W99AV_WriteDRAMBurst(_dwGDIHeaders[0], (DWORD*)pbBuffer, wCnt);
        /*
        for (m=0; m<wCnt/14; m++)
        {
            W99AV_WriteDRAMBurst(_dwGDIHeaders[0], (DWORD*)pbBuffer, 14);
            pbBuffer = pbBuffer + 56; // 56 => 14 * 4
            _dwGDIHeaders[0] = _dwGDIHeaders[0] + 14;
        }
        if (wCnt % 14)
            W99AV_WriteDRAMBurst(_dwGDIHeaders[0], (DWORD*)pbBuffer, wCnt % 14);
        */
    }

    

#endif  //#ifndef GDI_EMULATION
#endif //#ifndef NO_GDI
}

#ifdef SUPPORT_UNICODE
// Alan2.36 adds the following function
//  *********************************************************************
//  Function    :   GDI_DrawUnicodeString
//  Description :   This function output the unicode text
//  Arguments   :   wMaxWidth : The maximum width of the string can be drawn.
//                  The rest string will not be drawn.
//                  If set to 0, it means to draw the whole the string. 
//  Global Var  :   __wGDIString[]: the array stores the char index
//                  __wGDIx, __wGDIy: the start point(x, y)
//  Return      :   none
//  Side Effect :
//  *********************************************************************

void GDI_DrawUnicodeString(WORD wMaxWidth) //WORD wX, WORD wY)
{
#ifndef NO_GDI
    GDI_DrawUnicodeString_GXA(wMaxWidth);
    return;
#endif //#ifndef NO_GDI
}

//  *********************************************************************
//  Function    :   GDI_DrawAsciiString
//  Description :   This function output the ascii text
//  Arguments   :   wMaxWidth : The maximum width of the string can be drawn
//                  The rest string will not be drawn.
//                  If set to 0, it means to draw the whole the string 
//  Global Var  :   __wGDIString[]: the array stores the char index
//                  __wGDIx, __wGDIy: the start point(x, y)
//  Return      :   none
//  Side Effect :
//  *********************************************************************

void GDI_DrawAsciiString(WORD wMaxWidth)
{
#ifndef NO_GDI
    GDI_DrawAsciiString_GXA(wMaxWidth);
    return;
#endif //#ifndef NO_GDI
}
#endif


//  *********************************************************************
//  Function    :   GDI_FillRect
//  Description :   This function fills the rectangle
//  Arguments   :   pParm points to the PARM_RECT 
//  Return      :   none  
//  Side Effect : 
//  Note        :  
//  *********************************************************************


void GDI_FillRect(PARM_RECT *pParm)
{
#ifndef NO_GDI
#ifndef GDI_EMULATION

    if (__bCurrentRegionId >= NUMBER_OF_REGION) 
        return;

    if (pParm->rect.wLeft >= __RegionList[__bCurrentRegionId].wWidth ||
        // Brian1.08, don't check height, so region 0 can do "Off Screen" 
        //pParm->rect.wTop >= __RegionList[__bCurrentRegionId].wHeight ||
        pParm->rect.wLeft > pParm->rect.wRight ||
        pParm->rect.wTop > pParm->rect.wBottom)
        return; // the position is not in the area

    if (pParm->rect.wRight >= __RegionList[__bCurrentRegionId].wWidth)
        pParm->rect.wRight = (WORD)__RegionList[__bCurrentRegionId].wWidth-1;

    // Brian1.08, don't check height, so region 0 can do "Off Screen"
    //if (pParm->rect.wBottom >= __RegionList[__bCurrentRegionId].wHeight)
    //    pParm->rect.wBottom = (WORD)__RegionList[__bCurrentRegionId].wHeight-1;

    if (pParm->rect.wRight == pParm->rect.wLeft) // Brian1.22, width need to be 2n, doesn't support 1-pixel width 
        return;

    GDI_FillRect_GXA(pParm);


#else

    BYTE    m, bTemp, bTemp1;
    WORD    i, k, bWidth, bHeight;
    BYTE    *pbBuffer;
    WORD    wCnt;
    BYTE    bMode;


    
    if (__bCurrentRegionId >= NUMBER_OF_REGION) 
        return;

    if (pParm->rect.wLeft >= __RegionList[__bCurrentRegionId].wWidth ||
        pParm->rect.wTop >= __RegionList[__bCurrentRegionId].wHeight ||
        pParm->rect.wLeft > pParm->rect.wRight ||
        pParm->rect.wTop > pParm->rect.wBottom)
        return; // the position is not in the area

    if (pParm->rect.wRight >= __RegionList[__bCurrentRegionId].wWidth)
        pParm->rect.wRight = (WORD)__RegionList[__bCurrentRegionId].wWidth-1;
    if (pParm->rect.wBottom >= __RegionList[__bCurrentRegionId].wHeight)
        pParm->rect.wBottom = (WORD)__RegionList[__bCurrentRegionId].wHeight-1;


    
    GDI_FillRect_GXA(pParm);
    return;

    
    bWidth = pParm->rect.wRight - pParm->rect.wLeft + 1; 
    bHeight = pParm->rect.wBottom - pParm->rect.wTop + 1;
    bMode = __RegionList[__bCurrentRegionId].bColorMode;

    _dwGDITemp = ((DWORD)(pParm->rect.wTop/2)*__RegionList[__bCurrentRegionId].wWidth + pParm->rect.wLeft);
    // 256 color, one BYTE contains 1 pixel
    bTemp = (BYTE)(_dwGDITemp% (1L << (4-bMode)));
    _dwGDITemp = _dwGDITemp >> (4 - bMode) ; //Calculate which DRAM DWORD the pixel is located
    for (i=0; i<bHeight; i++)
    {
        // check whether the line is in top or bottom field
        // _dwGDIHeaders[0] contains the starting DWORD in DRAM for each line
        if ((pParm->rect.wTop + i) % 2) 
            _dwGDIHeaders[0] = __RegionList[__bCurrentRegionId].dwBAddr+4+_dwGDITemp + ((DWORD)(i/2)*__RegionList[__bCurrentRegionId].wWidth>> (4 - bMode));
        else
        {
            if (pParm->rect.wTop%2)
                _dwGDIHeaders[0] = __RegionList[__bCurrentRegionId].dwTAddr+4+_dwGDITemp + ((DWORD)((i/2)+1)*__RegionList[__bCurrentRegionId].wWidth>> (4 - bMode));
            else
                _dwGDIHeaders[0] = __RegionList[__bCurrentRegionId].dwTAddr+4+_dwGDITemp + ((DWORD)(i/2)*__RegionList[__bCurrentRegionId].wWidth>> (4 - bMode));
        }
        wCnt = 0;
        pbBuffer = __bPixelBuffer;
        m=0;
        if (bTemp) // the starting point is not on the DWORD bundary, so must read back the pixels (0, 1, 2) before it
        {
            W99AV_ReadDRAMData( _dwGDIHeaders[0], &_dwGDIHeaders[1] );
#if  IO == IO_PCI
            Swap((BYTE*)&_dwGDIHeaders[1]);
#endif
            for (m=0; m<bTemp; m++)
            {
                switch (bMode)
                {
                case 0:
                    break;
                case 1:
                    //_Get4Bits( ((BYTE *)&_dwGDIHeaders[1]) + m/2, wCnt%2, &bTemp1);
                    //_Put4Bits(pbBuffer, wCnt%2, bTemp1);
                    //if (wCnt%2)
                    //    pbBuffer++;
                    break;
                case 2:                    
                    *pbBuffer++ = *((BYTE*) (&_dwGDIHeaders[1]) + m);
                    break;
                }
                wCnt++;
            }
            
            
        }
        //printf("start:%d  ", wCnt);

        //for (j=0; j<bStrLen; j++)
        {
            for (k=0; k<bWidth; k++) // if variable sized font, the width depends on each char
            //for (k=bWidth; k>0; k--)
            {
                switch (bMode)
                {
                case 0:
                    break;
                case 1:
                    
                        
                    //_Put4Bits(pbBuffer, wCnt%2, bColor);
                        

                    //if (wCnt%2)
                    //    pbBuffer++;
                    break;
                case 2:
                        *pbBuffer++ = pParm->bColor;
                    
                    break;
                }
                wCnt++;
            }

        }

        //printf("mid:%d  ", wCnt);

        // check if we need to read back the pixels (1, 2, 3) from DRAM
        bTemp1 = (BYTE)((pParm->rect.wLeft + wCnt - m) % (1L << (4-bMode)));
        if (bTemp1)
        {
            // read back the DWORD where the end point is in
            W99AV_ReadDRAMData( _dwGDIHeaders[0] + (wCnt >> (4 - bMode)), &_dwGDIHeaders[1] );
#if  IO == IO_PCI
            Swap((BYTE*)&_dwGDIHeaders[1]);
#endif
            // also put the other pixels in the buffer
            for (m=0; m<(1L << (4-bMode))-bTemp1; m++)
            {
                switch (bMode)
                {
                case 0:
                    break;
                case 1:
                    //_Get4Bits( ((BYTE *)&_dwGDIHeaders[1]) + (bTemp1 + m)/2, wCnt%2, &j);
                    //_Put4Bits(pbBuffer, wCnt%2, j);
                    //if (wCnt%2)
                    //    pbBuffer++;
                    break;
                case 2:
                    *pbBuffer++ = *((BYTE*) (&_dwGDIHeaders[1]) + bTemp1 + m);
                    break;
                }
                wCnt++;
                
            }
        }

        
        //if ((__wGDIy + i) % 2) // check whether the line is in top or bottom field
        //    _dwGDIHeaders[0] = __RegionList[__bCurrentRegionId].dwBAddr+4+_dwGDITemp + ((DWORD)i*__RegionList[__bCurrentRegionId].wWidth>>2);
        //else
        //    _dwGDIHeaders[0] = __RegionList[__bCurrentRegionId].dwTAddr+4+_dwGDITemp + ((DWORD)i*__RegionList[__bCurrentRegionId].wWidth>>2);
        
        // output one line to DRAM with burst write, each time 14 DWORD
        pbBuffer = __bPixelBuffer;

        //printf("end:%d\n", wCnt);

        wCnt = wCnt >> (4 - bMode);
#if  IO == IO_PCI
        for (m=0; m<wCnt; m++)
            Swap(pbBuffer+m*4);
#endif
        //pbBuffer[3] = 5;
        //pbBuffer[2] = 5;
        W99AV_WriteDRAMBurst(_dwGDIHeaders[0], (DWORD*)pbBuffer, wCnt);
        /*
        for (m=0; m<wCnt/14; m++)
        {
            W99AV_WriteDRAMBurst(_dwGDIHeaders[0], (DWORD*)pbBuffer, 14);
            pbBuffer = pbBuffer + 56; // 56 => 14 * 4
            _dwGDIHeaders[0] = _dwGDIHeaders[0] + 14;
        }
        if (wCnt % 14)
            W99AV_WriteDRAMBurst(_dwGDIHeaders[0], (DWORD*)pbBuffer, wCnt % 14);
        */
    }

    
#endif //#ifndef GDI_EMULATION
#endif  //#ifndef NO_GDI
}

//  *********************************************************************
//  Function    :   GDI_LoadBMP
//  Description :   This function load the BMP data from code array into BMP OSD region
//              :   the region is decided by the __bCurrentRegionId
//  Arguments   :   pParm: point to a Bitmap structure 
//                  The Bitmap data is generated by bmp2data tool
//  Return      :   None
//  Side Effect :
//  ** Note **  :   In order to speed up the load process and reduce the complexity
//              :   We have made the following assumption, and we must follow it.
//              :   [1] bitmap width is 4-pixel alignment
//              :   [2] bitmap height is even
//              :   [3] The destination X-coordinate must be 4-pixel alignme

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩高清国产一区在线| 99视频一区二区| 欧美日韩中文字幕一区| 亚洲一级二级在线| 欧美日韩亚洲高清一区二区| 日韩av中文在线观看| 2欧美一区二区三区在线观看视频| 免费观看一级特黄欧美大片| 日韩三级.com| 麻豆视频观看网址久久| 精品sm在线观看| 亚洲成a人片在线不卡一二三区 | 久久国产精品99精品国产| 欧美一级久久久久久久大片| 亚洲va在线va天堂| 久久婷婷久久一区二区三区| 99视频在线观看一区三区| 亚洲第一二三四区| 久久婷婷国产综合精品青草| 99久久精品国产麻豆演员表| 午夜激情久久久| 国产欧美精品一区二区三区四区 | av成人免费在线观看| 亚洲综合成人网| 精品国一区二区三区| 91在线观看一区二区| 秋霞午夜鲁丝一区二区老狼| 国产日韩欧美电影| 欧美日韩精品免费| 成人一区二区三区中文字幕| 亚洲一区二区精品3399| 久久久青草青青国产亚洲免观| 色www精品视频在线观看| 久久av老司机精品网站导航| 亚洲欧美日韩电影| 久久综合九色综合欧美就去吻| 91精品办公室少妇高潮对白| 国产一区二区三区不卡在线观看| 日韩久久一区二区| 精品99一区二区三区| 欧美在线综合视频| 国产91对白在线观看九色| 图片区日韩欧美亚洲| 国产精品福利av| 精品国产91久久久久久久妲己| 欧美在线视频全部完| 国产999精品久久久久久绿帽| 午夜视频久久久久久| 中文字幕在线观看一区二区| 欧美xfplay| 在线综合+亚洲+欧美中文字幕| 99国产精品久久久久久久久久久| 国产在线一区二区| 免费在线看成人av| 亚洲国产精品一区二区久久| 国产精品传媒视频| 久久久精品欧美丰满| 日韩欧美高清一区| 欧美人与性动xxxx| 欧美性猛交xxxx黑人交| 99国产精品久| 懂色av一区二区夜夜嗨| 国产精品一区二区在线观看不卡| 人人精品人人爱| 日韩高清不卡在线| 日韩中文字幕区一区有砖一区| 亚洲国产日韩在线一区模特| 亚洲美女视频一区| 亚洲美女视频一区| 亚洲精品大片www| 一区二区三区四区蜜桃| 亚洲免费av在线| 亚洲色图欧洲色图| 亚洲老妇xxxxxx| 一区二区三区精品视频在线| 亚洲精品国产a| 悠悠色在线精品| 亚洲在线中文字幕| 亚洲国产美女搞黄色| 亚洲第一搞黄网站| 免费看日韩精品| 国产伦精品一区二区三区视频青涩 | 国产·精品毛片| 国产91丝袜在线播放| 成人av免费在线观看| aaa欧美日韩| 日本韩国欧美一区二区三区| 在线观看亚洲一区| 欧美精品一卡两卡| 日韩欧美美女一区二区三区| xf在线a精品一区二区视频网站| 久久久久亚洲蜜桃| 亚洲天堂精品在线观看| 亚洲电影在线免费观看| 午夜不卡av免费| 精品一区二区三区蜜桃| 国产一区二区三区不卡在线观看| 成人激情黄色小说| 91精选在线观看| 免费日韩伦理电影| 成人综合婷婷国产精品久久免费| 亚洲第一二三四区| 久久不见久久见免费视频1| 国产一区二区不卡在线| 99久久久久久| 成人免费av在线| 欧美日韩国产综合一区二区三区| 欧美群妇大交群的观看方式 | 中文字幕亚洲电影| 亚洲免费三区一区二区| 亚洲精品国产一区二区精华液| 久久久精品国产免费观看同学| 国产精品污网站| 精品免费视频.| 国产性色一区二区| 久久久91精品国产一区二区三区| 91在线观看成人| 看电视剧不卡顿的网站| 天堂蜜桃91精品| 国产精品久久久一区麻豆最新章节| 欧美最新大片在线看 | 欧美精品在线视频| 国产不卡高清在线观看视频| av亚洲精华国产精华| 91蜜桃视频在线| 91免费版在线| 欧美视频一区二区| 在线播放日韩导航| 中文字幕中文字幕一区| 美美哒免费高清在线观看视频一区二区| 日本系列欧美系列| 91免费观看在线| 一本一道久久a久久精品| 欧美喷水一区二区| 国产精品三级视频| 成人app软件下载大全免费| 不卡一区二区中文字幕| 93久久精品日日躁夜夜躁欧美| 亚洲成av人在线观看| 日韩欧美另类在线| 国产精品一区二区黑丝| 91在线视频免费91| 国产精品夫妻自拍| www.日韩精品| 蜜臀av性久久久久蜜臀aⅴ四虎| 久久精品国产第一区二区三区| 91无套直看片红桃| 91麻豆国产精品久久| 欧美精品tushy高清| 亚洲另类一区二区| 久久久久国色av免费看影院| 亚洲色图一区二区三区| 国产视频视频一区| 日本特黄久久久高潮| 欧美三级视频在线观看| 一区二区三区四区激情 | 色94色欧美sute亚洲13| 中文字幕亚洲电影| 92精品国产成人观看免费| 国产精品精品国产色婷婷| 美腿丝袜亚洲一区| 日韩午夜激情免费电影| 日本视频中文字幕一区二区三区| 91网页版在线| 亚洲综合一区二区三区| 欧美性极品少妇| 亚洲色图.com| 色94色欧美sute亚洲线路二| 国产成人精品在线看| 欧美国产精品v| 99免费精品在线| 亚洲人成精品久久久久久 | 欧美日韩国产系列| 日韩电影在线看| 日韩欧美www| 久久激情综合网| 久久精品男人的天堂| 床上的激情91.| 亚洲免费成人av| 欧美二区在线观看| 精品在线观看视频| 欧美国产成人在线| 色8久久精品久久久久久蜜| 亚洲一区二区三区三| 欧美一区二区三区公司| 国产一区二区0| ●精品国产综合乱码久久久久| 91国偷自产一区二区三区观看| 亚洲大片在线观看| xf在线a精品一区二区视频网站| 国产一区二区三区免费播放| 国产精品色哟哟| 欧美日韩在线三区| 国内成人精品2018免费看| 国产精品欧美综合在线| 欧美日韩午夜精品| 国产精品一二三四| 一区二区三区不卡视频在线观看| 7777精品伊人久久久大香线蕉完整版| 韩国中文字幕2020精品|