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

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

?? hwblt.cpp

?? 6410BSP3
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
                iRotate = DMDO_0;
                break;
            case DMDO_270:
                iRotate = DMDO_90;
                break;
            }

            /// Set Destination Surface to real Framebuffer Surface
            m_oG2D->SetDstSurface(pdescDstSurface);
            /// Set Destination Clipping window Rect
            if(pBltParms->prclClip)
            {
                m_oG2D->SetClipWindow(pBltParms->prclClip);
            }
            else
            {
                m_oG2D->SetClipWindow(prclDst);
            }

            /// SWAP rect
            SWAP(prclDst->top, prclDst->bottom, LONG);
            SWAP(prclDst->left, prclDst->right, LONG);

            EnterCriticalSection(&m_cs2D);
            m_oG2D->BitBlt( prclSrc, prclDst, m_oG2D->GetRotType(iRotate));
            LeaveCriticalSection(&m_cs2D);
            /// Recover rect
            SWAP(prclDst->top, prclDst->bottom, LONG);
            SWAP(prclDst->left, prclDst->right, LONG);

            RETAILMSG(DISP_ZONE_TEMP,(TEXT("XY Flip R:%d\n"), iRotate));

            return TRUE;
        }
        //RotateRectl(prclDst);
        //RotateRectlBack(prclDst);

        /// Mirroring is needed.
        if( ((pBltParms->bltFlags & BLT_STRETCH) == BLT_STRETCH) 
            &&  ((prclDst->left > prclDst->right) || (prclDst->top > prclDst->bottom) )
            )
        {
            RotateRectl(prclDst);

            RECTL   t_rect;
            DWORD   dwSrcWidth;
            DWORD   dwSrcHeight;
            SURFACE_DESCRIPTOR descScratch;

            dwSrcWidth = ABS(prclSrc->right - prclSrc->left);
            dwSrcHeight  = ABS(prclSrc->bottom - prclSrc->top);

            /// Set Scratch Destination Region
            t_rect.left = 0;
            t_rect.top = 0;
            t_rect.right = dwSrcWidth;
            t_rect.bottom = dwSrcHeight;

            RETAILMSG(DISP_ZONE_TEMP,(TEXT("t_rect,justbitbltflip(%d,%d)~(%d,%d), R:%d\r\n"), 
                t_rect.left,t_rect.top,t_rect.right,t_rect.bottom,iRotate));
            DumpBltParms(pBltParms);

            /// In mirror case, source region does not change.
            /// only destination's regions has reverse coordinate, this cannot be negative.

            /// This is Difference between source and destination.
            if(iRotate == DMDO_0)   
            {
                //  RotateRectlBack(prclDst);
                if(prclDst->right < prclDst->left)
                {
                //  RotateRectl(prclDst);
                    RETAILMSG(DISP_ZONE_TEMP, (TEXT("BitBlt Y-axis flip: R:%d\r\n"),pBltParms->pDst->Rotate()));
                    /// Set Destination Surface to real Framebuffer Surface
                    m_oG2D->SetDstSurface(pdescDstSurface);

                    RETAILMSG(DISP_ZONE_TEMP,(TEXT("BY TBSWAP:%d,%d,%d,%d,%d\n"),pBltParms->prclDst->left,pBltParms->prclDst->top,pBltParms->prclDst->right,pBltParms->prclDst->bottom, iRotate));
                    /// Y-axis mirror case. left-right inversion
                    /// Swap left, right coordinate
                    SWAP(prclDst->right, prclDst->left, LONG);

                    RETAILMSG(DISP_ZONE_TEMP,(TEXT("BY TASWAP:%d,%d,%d,%d,%d\n"),pBltParms->prclDst->left,pBltParms->prclDst->top,pBltParms->prclDst->right,pBltParms->prclDst->bottom, iRotate));
                    /// Set Destination Clipping window Rect
                    if(pBltParms->prclClip)
                    {
                        m_oG2D->SetClipWindow(pBltParms->prclClip);
                    }
                    else
                    {
                        m_oG2D->SetClipWindow(prclDst);
                    }

                    /// Set Y-axis flip flag
                    EnterCriticalSection(&m_cs2D);
                    m_oG2D->FlipBlt( prclSrc, prclDst,  FLIP_Y );
                    LeaveCriticalSection(&m_cs2D);
                    /// recover left, right coordinate
                    SWAP(prclDst->right, prclDst->left, LONG);

                    return TRUE;
                }
                else if(prclDst->bottom < prclDst->top)
                {
                    //  RotateRectl(prclDst);
                    RETAILMSG(DISP_ZONE_TEMP, (TEXT("BitBlt X-axis flip: R:%d\r\n"),pBltParms->pDst->Rotate()));
                    /// Set Destination Surface to real Framebuffer Surface
                    m_oG2D->SetDstSurface(pdescDstSurface);

                    RETAILMSG(DISP_ZONE_TEMP,(TEXT("BX TBSWAP:%d,%d,%d,%d,%d\n"),pBltParms->prclDst->left,pBltParms->prclDst->top,pBltParms->prclDst->right,pBltParms->prclDst->bottom, iRotate));
                    /// X-axis mirror case. up-down inversion
                    /// Swap top, bottom coordinate
                    SWAP(prclDst->top, prclDst->bottom, LONG);
                    RETAILMSG(DISP_ZONE_TEMP,(TEXT("BX TASWAP:%d,%d,%d,%d,%d\n"),pBltParms->prclDst->left,pBltParms->prclDst->top,pBltParms->prclDst->right,pBltParms->prclDst->bottom, iRotate));
                    /// Set Destination Clipping window Rect
                    if(pBltParms->prclClip)
                    {
                        m_oG2D->SetClipWindow(pBltParms->prclClip);
                    }
                    else
                    {
                        m_oG2D->SetClipWindow(prclDst);
                    }

                    /// Set X-axis flip flag
                    EnterCriticalSection(&m_cs2D);
                    m_oG2D->FlipBlt( prclSrc, prclDst,  FLIP_X );
                    LeaveCriticalSection(&m_cs2D);
                    /// recover top, bottom coordinate
                    SWAP(prclDst->top, prclDst->bottom, LONG);

                    return TRUE;
                   }
                //  RotateRectl(prclDst);
            }
            else if(iRotate == DMDO_90 || iRotate == DMDO_270)
            {
                RotateRectlBack(prclDst);
                /// Original Coordinate
                RETAILMSG(DISP_ZONE_TEMP, (TEXT("R:%d, DR:%d, DST(%d,%d,%d,%d)\r\n"),pBltParms->pDst->Rotate(), iRotate, 
                    pBltParms->prclDst->left,
                    pBltParms->prclDst->top,
                    pBltParms->prclDst->right,
                    pBltParms->prclDst->bottom));
                /// if screen rotation is not DMDO_0. we need to bitblt once more. and use scratch memory
                if(prclDst->right < prclDst->left)
                {
                    RotateRectl(prclDst);
                    /// Screen rotated 
                    /// if 90, 270 degree, that is T,B Swaped and rotate 
                    ///  +-----+ (L,T)
                    ///  |     |
                    ///  |     |       
                    ///  |     |
                    ///  +-----+
                    /// (R,B)

                    /// Allocation Scratch Framebuffer for Flip Operation.
                    DDGPESurf *ScratchSurf;

                    AllocSurface(&ScratchSurf, dwSrcWidth, dwSrcHeight, pBltParms->pDst->Format(), EGPEFormatToEDDGPEPixelFormat[pBltParms->pDst->Format()], GPE_REQUIRE_VIDEO_MEMORY);
                    if(ScratchSurf == NULL)
                    {
                        RETAILMSG(DISP_ZONE_WARNING,(TEXT("Scratch Surface Allocation is failed. %d\n"), __LINE__));
#if 0//USE_PACSURF, To increase video memory is better than to use system memory as Video Surface
                        RETAILMSG(TRUE,(TEXT("try to allocate surface usign PA Surface\r\n")));
                        PACSurf *ScratchSurf;
#endif
                        RETAILMSG(DISP_ZONE_WARNING,(TEXT("Maybe There's no sufficient video memory. please increase video memory\r\n")));
                        RETAILMSG(DISP_ZONE_WARNING,(TEXT("try to redirect to SW Emulated Bitblt\r\n")));
                        return FALSE;
                    }

                    /// Set Scratch Surface Information
                    descScratch.dwBaseaddr = (m_VideoMemoryPhysicalBase + ScratchSurf->OffsetInVideoMemory());
                    descScratch.dwColorMode = GetHWColorFormat(pBltParms->pDst);
                    descScratch.dwHoriRes = dwSrcWidth;
                    descScratch.dwVertRes = dwSrcHeight;

                    /// Set Destination Surface as Scratch Surface
                    m_oG2D->SetDstSurface(&descScratch);
                    /// Set Destination Clipping window Rect
                    m_oG2D->SetClipWindow(&t_rect);

                    /// Y-axis mirror case. left-right inversion

                    EnterCriticalSection(&m_cs2D);
                    m_oG2D->FlipBlt( prclSrc, &t_rect,  FLIP_Y );
                    LeaveCriticalSection(&m_cs2D);

                    /// Set Source Address to Scratch Memory
                    m_oG2D->SetSrcSurface(&descScratch);
                    /// Set Destination Surface to real Framebuffer Surface
                    m_oG2D->SetDstSurface(pdescDstSurface);

                    /// Swap left, right coordinate
                    /// Y-axis mirror case. left-right inversion
                    RETAILMSG(DISP_ZONE_TEMP,(TEXT("B TBSWAP:%d,%d,%d,%d,%d,%d\n"),pBltParms->prclDst->left,pBltParms->prclDst->top,pBltParms->prclDst->right,pBltParms->prclDst->bottom, iRotate, m_oG2D->GetRotType(iRotate)));
                    SWAP(prclDst->top, prclDst->bottom, LONG);
                    /// Set Destination Clipping window Rect
                    if(pBltParms->prclClip)
                    {
                        m_oG2D->SetClipWindow(pBltParms->prclClip);
                    }
                    else
                    {
                        m_oG2D->SetClipWindow(prclDst);
                    }

                    /// Set Y-axis flip flag
                    EnterCriticalSection(&m_cs2D);
                    m_oG2D->BitBlt( &t_rect, prclDst,  m_oG2D->GetRotType(iRotate) );
                    LeaveCriticalSection(&m_cs2D);
                    /// recover left, right coordinate
                    SWAP(prclDst->top, prclDst->bottom, LONG);

                    /// Disallocate Scratch Surface
                    delete ScratchSurf;

                    RETAILMSG(DISP_ZONE_TEMP, (TEXT("BitBlt Y-axis flip: R:%d\r\n"),pBltParms->pDst->Rotate()));

                    //  RotateRectl(prclDst);

                    return TRUE;

                }
                else if(prclDst->bottom < prclDst->top)
                {
                    RotateRectl(prclDst);
                    /// Allocation Scratch Framebuffer for Flip Operation.
                    DDGPESurf *ScratchSurf;

                    AllocSurface(&ScratchSurf, dwSrcWidth, dwSrcHeight, pBltParms->pDst->Format(), EGPEFormatToEDDGPEPixelFormat[pBltParms->pDst->Format()], GPE_REQUIRE_VIDEO_MEMORY);
                    if(ScratchSurf == NULL)
                    {
                        RETAILMSG(DISP_ZONE_WARNING,(TEXT("Scratch Surface Allocation is failed. %d\n"), __LINE__));
#if 0//USE_PACSURF, To increase video memory is better than to use system memory as Video Surface
                        RETAILMSG(TRUE,(TEXT("try to allocate surface usign PA Surface\r\n")));
                        PACSurf *ScratchSurf;
#endif
                        RETAILMSG(DISP_ZONE_WARNING,(TEXT("Maybe There's no sufficient video memory. please increase video memory\r\n")));
                        RETAILMSG(DISP_ZONE_WARNING,(TEXT("try to redirect to SW Emulated Bitblt\r\n")));
                        return FALSE;
                    }

                    /// Set Scratch Surface Information
                    descScratch.dwBaseaddr = (m_VideoMemoryPhysicalBase + ScratchSurf->OffsetInVideoMemory());
                    descScratch.dwColorMode = GetHWColorFormat(pBltParms->pDst);
                    descScratch.dwHoriRes = dwSrcWidth;
                    descScratch.dwVertRes = dwSrcHeight;

                    /// Set Destination Surface to Scratch Surface
                    m_oG2D->SetDstSurface(&descScratch);
                    /// Set Destination Clipping window Rect
                    m_oG2D->SetClipWindow(&t_rect);

                    /// X-axis mirror case. top-bottom inversion
                    RETAILMSG(DISP_ZONE_TEMP,(TEXT("B LRSWAP:%d,%d,%d,%d,%d,%d\n"),pBltParms->prclDst->left,pBltParms->prclDst->top,pBltParms->prclDst->right,pBltParms->prclDst->bottom, iRotate, m_oG2D->GetRotType(iRotate)));
                    EnterCriticalSection(&m_cs2D);
                    m_oG2D->FlipBlt( prclSrc, &t_rect,  FLIP_X );
                    LeaveCriticalSection(&m_cs2D);

                    /// Set Source Address to Scratch Memory
                    m_oG2D->SetSrcSurface(&descScratch);
                    /// Set Destination Surface to real Framebuffer Surface
                    m_oG2D->SetDstSurface(pdescDstSurface);

                    /// Swap left, right coordinate    
                    /// LT <-> RB
                    SWAP(prclDst->left, prclDst->right, LONG);
                    /// Set Destination Clipping window Rect
                    if(pBltParms->prclClip)
                    {
                        m_oG2D->SetClipWindow(pBltParms->prclClip);
                    }
                    else
                    {
                        m_oG2D->SetClipWindow(prclDst);
                    }

                    /// Set Y-axis flip flag
                    EnterCriticalSection(&m_cs2D);
                    m_oG2D->BitBlt( &t_rect, prclDst,  m_oG2D->GetRotType(iRotate) );
                    LeaveCriticalSection(&m_cs2D);
                    /// recover left, right coordinate

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品久久天天躁| 亚洲理论在线观看| 久久国产精品99久久人人澡| 久久国产人妖系列| 99麻豆久久久国产精品免费优播| 在线不卡一区二区| 亚洲欧洲性图库| 久久精品国产久精国产爱| 欧洲精品一区二区| 亚洲欧美综合色| 国产一区 二区 三区一级| 欧美日韩国产色站一区二区三区| 成人免费一区二区三区在线观看| 精品一区二区三区欧美| 在线观看日韩av先锋影音电影院| 久久毛片高清国产| 免费看欧美美女黄的网站| 色哟哟一区二区在线观看 | 中文字幕亚洲欧美在线不卡| 日韩精品亚洲一区| 色香蕉成人二区免费| 久久综合五月天婷婷伊人| 日精品一区二区| 欧美性淫爽ww久久久久无| 《视频一区视频二区| 岛国精品一区二区| 久久综合色鬼综合色| 卡一卡二国产精品| 制服丝袜亚洲色图| 五月婷婷激情综合| 欧美久久高跟鞋激| 亚洲超丰满肉感bbw| 色又黄又爽网站www久久| 亚洲色图欧洲色图| 色88888久久久久久影院野外 | 精品噜噜噜噜久久久久久久久试看| 亚洲一二三四区| 欧美午夜免费电影| 午夜亚洲福利老司机| 欧美撒尿777hd撒尿| 性欧美大战久久久久久久久| 欧美高清激情brazzers| 日韩黄色在线观看| 日韩你懂的电影在线观看| 麻豆91免费看| 欧美mv日韩mv| 成人午夜激情在线| 亚洲人妖av一区二区| 在线免费观看日本欧美| 午夜欧美在线一二页| 欧美电视剧免费全集观看| 国产精品一区二区三区99| 国产色一区二区| 色婷婷精品大视频在线蜜桃视频| 五月婷婷激情综合网| 日韩美女一区二区三区四区| 国产一二精品视频| 中文字幕一区在线观看| 欧美亚男人的天堂| 国产在线麻豆精品观看| 最新国产精品久久精品| 欧美另类高清zo欧美| 极品尤物av久久免费看| 亚洲欧美一区二区视频| 884aa四虎影成人精品一区| 国产一区二区三区高清播放| 亚洲男人天堂一区| 日韩精品一区二区三区四区| 成人av中文字幕| 亚洲成人av在线电影| 精品日韩在线一区| voyeur盗摄精品| 免费在线看一区| 国产精品福利一区| 日韩精品一区二区三区在线| 91美女片黄在线观看| 久久疯狂做爰流白浆xx| 一区二区在线观看av| 精品日韩欧美在线| 欧洲亚洲国产日韩| 成人午夜私人影院| 日本va欧美va精品| 一区二区三区四区在线播放 | 亚洲精选视频在线| 精品奇米国产一区二区三区| 色94色欧美sute亚洲13| 国产传媒久久文化传媒| 日韩国产高清影视| 亚洲综合小说图片| 亚洲欧洲性图库| 国产日韩欧美精品在线| 欧美精品国产精品| 色天天综合色天天久久| 粉嫩一区二区三区在线看| 美女在线观看视频一区二区| 一区二区三区免费观看| 国产欧美一区二区精品仙草咪| 日韩一区二区高清| 欧美日韩国产成人在线91| 一本到不卡精品视频在线观看 | 国产永久精品大片wwwapp| 一区二区三区日韩在线观看| 亚洲欧洲成人精品av97| 国产视频在线观看一区二区三区| 91精品国产入口| 91.xcao| 欧美视频中文一区二区三区在线观看| 国产福利不卡视频| 国产精品乡下勾搭老头1| 久久99精品国产.久久久久久| 性做久久久久久久免费看| 一区二区三区四区不卡视频| 亚洲欧美精品午睡沙发| 国产精品视频第一区| 欧美国产欧美综合| 中文字幕av一区二区三区| 国产欧美综合色| 国产精品日日摸夜夜摸av| 欧美国产一区二区| 国产精品人成在线观看免费| 中文字幕制服丝袜一区二区三区| 日本一区二区三区国色天香| 国产精品污污网站在线观看| 国产精品视频一二三区| 国产精品久线观看视频| 亚洲色图20p| 亚洲高清不卡在线| 丝袜美腿亚洲色图| 六月丁香婷婷色狠狠久久| 国产美女精品一区二区三区| 成人精品鲁一区一区二区| 成人一区二区在线观看| 99re成人精品视频| 欧美日韩你懂得| 精品国产第一区二区三区观看体验| 欧美一区二视频| 国产日韩av一区二区| 亚洲欧洲国产日本综合| 亚洲第一电影网| 九一九一国产精品| 成人激情综合网站| 欧美亚洲动漫精品| 亚洲精品一区二区三区香蕉| 中文字幕一区二区视频| 亚洲一二三区不卡| 韩国av一区二区三区在线观看| 成人av影院在线| 欧美精选午夜久久久乱码6080| 精品国产麻豆免费人成网站| 国产精品丝袜黑色高跟| 亚洲aaa精品| 大胆亚洲人体视频| 欧美久久久影院| 中文字幕制服丝袜成人av| 亚洲成人午夜电影| 成人午夜看片网址| 日韩欧美视频在线| 亚洲欧美一区二区视频| 韩国av一区二区| 欧美猛男超大videosgay| 国产日本一区二区| 天天色 色综合| 99久久精品99国产精品 | 国产日韩v精品一区二区| 一片黄亚洲嫩模| 粉嫩高潮美女一区二区三区 | 色网站国产精品| 久久久精品国产免大香伊| 亚洲一区在线视频| 成人av资源在线观看| 欧美mv日韩mv国产网站| 亚洲成人精品影院| av在线不卡免费看| 精品国产精品一区二区夜夜嗨| 一区二区三区视频在线看| 国产精品一二一区| 日韩一本二本av| 亚洲午夜av在线| 91性感美女视频| 欧美激情中文不卡| 国产在线精品一区二区| 制服丝袜亚洲播放| 一级日本不卡的影视| 成人av网站大全| 欧美国产欧美亚州国产日韩mv天天看完整| 日韩激情一二三区| 欧美日韩成人综合天天影院| 亚洲精品高清在线观看| 国产激情视频一区二区在线观看 | 欧美日韩国产综合一区二区| 亚洲视频一区二区在线| 国产成人三级在线观看| 久久综合资源网| 国产一区二区三区综合| 日韩欧美一区在线| 麻豆国产精品官网| 欧美一区二区三区日韩视频| 天天影视涩香欲综合网| 欧美女孩性生活视频| 亚洲chinese男男1069|