📄 videorendereroverlay.cpp
字号:
/*
///////////////////////////////////////////////////////////////////////////////
// //
// Copyright (C) 2006-2008 Beijing, pengzhen (pengzhenxp@yahoo.com.cn) //
// //
///////////////////////////////////////////////////////////////////////////////
*/
//#include "stdafx.h"
#include "VideoRendererOverlay.h"
#include "VideoRendererOverlay1.h"
#include "VideoRendererOverlay1.cpp"
#include "VideoRendererOverlay2.cpp"
#include "VideoRendererOverlay3.cpp"
MediaVideoRendererOverlay :: MediaVideoRendererOverlay()
{
m_pdd=NULL;
m_pddsPrimary=NULL;
m_pddsOverlay=NULL;
m_pddClipper=NULL;
//DrawEmpty() ;
};
MediaVideoRendererOverlay :: ~MediaVideoRendererOverlay()
{
DrawFree( ) ;
}
void MediaVideoRendererOverlay :: DrawEmpty()
{
m_pdd=NULL;
m_pddsPrimary=NULL;
m_pddsOverlay=NULL;
m_pddClipper=NULL;
memset( &m_ovfx , 0x00, sizeof(m_ovfx) );
m_dwUpdateFlags=FALSE;
memset( &m_rsRect , 0x00, sizeof(m_rsRect) );
memset( &m_rdRect , 0x00, sizeof(m_rdRect) );
memset( &m_rsRect_op , 0x00, sizeof(m_rsRect_op) );
memset( &m_rdRect_op , 0x00, sizeof(m_rdRect_op) );
m_rdWid =1 ;
m_rdHei =1 ;
m_hWnd =NULL;
m_width =0 ;
m_pitch =0 ;
m_height =0 ;
m_pSurfacePhyAddress = NULL;
m_pSurfaceAddress = NULL ;
m_iCurCardOverlayNo=0 ;
m_iCurCardOverlayNo_Bak=0 ;
m_iCurCardFullFlag=FALSE ;
//m_bIsOverlayFlag =FALSE ;
//m_bIsOverlayRGBFlag =FALSE ;
//memset( m_rsRect_bak , 0x00, sizeof(m_rsRect_bak) );
#ifdef __INSERT_FONT__
//memset( m_pFontPos , 0x00, sizeof(m_pFontPos) );
//memset( m_pFontView , 0x00, sizeof(m_pFontView) );
#endif //__INSERT_FONT__
}
void MediaVideoRendererOverlay::DrawFree( )
{
//if( m_pSurfaceAddress )
//ZeroMemory( m_pSurfaceAddress, m_pitch*m_height );
if(lpdd)
{
lpdd->RestoreAllSurfaces();
lpdd->RestoreDisplayMode();
lpdd->SetCooperativeLevel(NULL, DDSCL_NORMAL);
}
if(lpddsOverlay)
{
lpddsOverlay->Restore();
}
if(lpddsPrimary)
{
lpddsPrimary->Restore();
}
DestroyDraws() ;
}
BOOL MediaVideoRendererOverlay::DrawInit(int width, int height)
{
//DrawFree( ) ;
DrawEmpty() ;
m_ovfx.dwSize = sizeof(DDOVERLAYFX);
m_dwUpdateFlags = DDOVER_SHOW | DDOVER_DDFX | DDOVER_KEYDESTOVERRIDE ;
m_bIsOverlayFlag = FALSE ;
m_width = width;
m_pitch = width*2;
m_height = height;
m_rsRect.left = 0;
m_rsRect.top = 0;
m_rsRect.right = m_width;
m_rsRect.bottom = m_height;
m_rdRect_op = m_rdRect = m_rsRect_op = m_rsRect;
/*
* create primary
*/
if(! CreatePdd( ) )
{
DestroyDraws() ; return FALSE;
}
/*
* create primary
*/
if(! CreatePrimary( ) )
{
DestroyDraws() ; return FALSE;
}
/*
* get RGB format
*/
if(m_iColorFormat==-1) GetRGBFormat() ;
/*
* create Overlay
*/
if(! CreateOverlay( width, height ) )
{
DestroyDraws() ; return FALSE;
}
/*
* Create a Clipper to avoid
* the overlay staying on top
*/
#define CreateMyClipper() m_pdd->CreateClipper(0, &lpddClipper, NULL)
if(FAILED( CreateMyClipper() ))
{
DestroyDraws() ; return FALSE;
}
if( !m_bIsOverlayRGBFlag ) m_bIsOverlayFlag = TRUE ;
return TRUE ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -