📄 dgstshow.c
字号:
/**********************************************************************/
/*************** MTK CONFIDENTIAL & COPYRIGHTED ****************/
/*************** ****************/
/*************** $Modtime:: 05/10/03 6:15p $ ****************/
/*************** $Revision:: 2 $ ****************/
/*************** ****************/
/*************** Description : OSD ****************/
/*************** ****************/
/*************** Company : MediaTek Inc. ****************/
/*************** Programmer : ****************/
/**********************************************************************/
#define _DGSTSHOW_C_
#pragma NOAREGS
#include "general.h"
#include "osdshow.h"
#ifdef PLAYER_DIGEST
extern xdata strucDigest _rDigest; // megaa dgst time mark number
// *********************************************************************
// Function : void vOsdShowDgstMark(BYTE bItemIdx, BYTE bType, BYTE *pbStr)
// Description :
// Parameter :
// Return : None
// Note :
// *********************************************************************
void vOsdShowDgstMark(BYTE bItemIdx, BYTE bType, BYTE *pbStr) large
{
BYTE pbTmp[8];
BYTE pbNum[3]; // megaa dgst time mark number
BYTE bItemNo; // megaa dgst time mark number
BOOL fgHili = FALSE;
if (bItemIdx >= 9)
{
return;
}
pbTmp[0] = 0;
bItemNo = bItemIdx + 1 + _rDigest.bPageNo * DGST_VIEW_NS; // megaa dgst time mark number
if (bType != OSD_DGST_MARK_CLEAR)
{
if (bType & OSD_DGST_MARK_HILI)
{
fgHili = TRUE;
bType &= (~OSD_DGST_MARK_HILI);
}
}
switch (bType)
{
case OSD_DGST_MARK_NONE:
if (pbStr == 0)
{
if (bSharedInfo(SI_NTSC_PAL) == SV_NTSC)
{
vOsdPosClear(OSD_POS_NTSC_DGST_MARK_1 + bItemIdx);
}
else
{
vOsdPosClear(OSD_POS_PAL_DGST_MARK_1 + bItemIdx);
}
}
return;
case OSD_DGST_MARK_NO:
pbTmp[0] = 2;
if (pbStr != 0)
{
pbTmp[3] = bHEXToBCD(pbStr[0]); /* use pbTmp[3] as a temp variable */
pbTmp[1] = BCD_HI(pbTmp[3]) + '0';
pbTmp[2] = BCD_LO(pbTmp[3]) + '0';
}
break;
case OSD_DGST_MARK_TIME2:
// megaa dgst time mark number begin
pbTmp[0] = 5;
if (pbStr != 0)
{
pbTmp[1] = BCD_HI(pbStr[0]) + '0';
pbTmp[2] = BCD_LO(pbStr[0]) + '0';
pbTmp[3] = ':';
pbTmp[4] = BCD_HI(pbStr[1]) + '0';
pbTmp[5] = BCD_LO(pbStr[1]) + '0';
pbNum[0] = 2;
pbNum[1] = bItemNo / 10 + '0';
pbNum[2] = bItemNo % 10 + '0';
}
// megaa dgst time mark number end
break;
case OSD_DGST_MARK_TIME3:
// megaa dgst time mark number begin
pbTmp[0] = 7;
if (pbStr != 0)
{
pbTmp[1] = BCD_LO(pbStr[0]) + '0';
pbTmp[2] = ':';
pbTmp[3] = BCD_HI(pbStr[1]) + '0';
pbTmp[4] = BCD_LO(pbStr[1]) + '0';
pbTmp[5] = ':';
pbTmp[6] = BCD_HI(pbStr[2]) + '0';
pbTmp[7] = BCD_LO(pbStr[2]) + '0';
pbNum[0] = 2;
pbNum[1] = bItemNo / 10 + '0';
pbNum[2] = bItemNo % 10 + '0';
}
// megaa dgst time mark number end
break;
case OSD_DGST_MARK_CLEAR:
/* 2002/3/19
clear WB in burst mode, for not just clear one field */
vOsdSetSt(OSD_ST_BURST);
vClearWB(WB_DGST_DISP1);
vClearWB(WB_DGST_DISP2);
vClearWB(WB_DGST_DISP3);
vClearWB(WB_DGST_DISP1A);
vClearWB(WB_DGST_DISP2A);
vClearWB(WB_DGST_DISP3A);
vOsdSetSt(OSD_ST_NML);
/* 2002/3/19 end */
return;
default:
return;
}
if (pbStr != 0)
{
if (bSharedInfo(SI_NTSC_PAL) == SV_NTSC)
{
if (bType == OSD_DGST_MARK_TIME3 || bType == OSD_DGST_MARK_TIME2)
{
vOsdPosShowStr(OSD_POS_NTSC_DGST_MARK_1A + bItemIdx, pbTmp);
vOsdPosShowStr(OSD_POS_NTSC_DGST_MARK_1 + bItemIdx, pbNum);
}
else
{
vOsdPosShowStr(OSD_POS_NTSC_DGST_MARK_1 + bItemIdx, pbTmp);
}
}
else
{
if (bType == OSD_DGST_MARK_TIME3 || bType == OSD_DGST_MARK_TIME2)
{
vOsdPosShowStr(OSD_POS_PAL_DGST_MARK_1A + bItemIdx, pbTmp);
vOsdPosShowStr(OSD_POS_PAL_DGST_MARK_1 + bItemIdx, pbNum);
}
else
{
vOsdPosShowStr(OSD_POS_PAL_DGST_MARK_1 + bItemIdx, pbTmp);
}
}
}
if (fgHili)
{
if (pbTmp[0] > 0)
{
if (bSharedInfo(SI_NTSC_PAL) == SV_NTSC)
{
#ifdef HILI_USE_OSD
vOsdPosHili(OSD_POS_HILI_CLEAR, OSD_POS_NTSC_DGST_MARK_1, 0);
vOsdPosHili(OSD_POS_HILI_CLEAR, OSD_POS_NTSC_DGST_MARK_4, 0);
#endif
vOsdPosHili(OSD_POS_HILI_SHOW, OSD_POS_NTSC_DGST_MARK_1 + bItemIdx, pbTmp[0]);
}
else
{
#ifdef HILI_USE_OSD
vOsdPosHili(OSD_POS_HILI_CLEAR, OSD_POS_PAL_DGST_MARK_1, 0);
vOsdPosHili(OSD_POS_HILI_CLEAR, OSD_POS_PAL_DGST_MARK_4, 0);
#endif
vOsdPosHili(OSD_POS_HILI_SHOW, OSD_POS_PAL_DGST_MARK_1 + bItemIdx, pbTmp[0]);
}
}
else
{
vOsdPosHili(OSD_POS_HILI_CLEAR, 0, 0);
}
}
}
// *********************************************************************
// Function : void vOsdShowDgstMenuType(WORD wMsg, BYTE bParm)
// Description :
// Parameter :
// Return : None
// Note :
// *********************************************************************
void vOsdShowDgstMenuType(WORD wMsg, BYTE bParm) large
{
BYTE pbTmp[3];
vOsdPosClear(OSD_POS_DGST_MENU_TYPE);
if (bParm == 0)
{
pbTmp[0] = 0;
}
else
{
bParm = bHEXToBCD(bParm);
pbTmp[0] = 2;
pbTmp[1] = BCD_HI(bParm) + '0';
pbTmp[2] = BCD_LO(bParm) + '0';
}
if (wMsg != 0xffff)
{
if (pbTmp[0] == 0)
{
vOsdPosPaste(OSD_POS_DGST_MENU_TYPE, wMsg);
}
else
{
vOsdPosPasteArg(OSD_POS_DGST_MENU_TYPE, wMsg, pbTmp, 0);
}
}
}
// *********************************************************************
// Function : void vOsdShowDgstMenuSelect(BYTE bStart, BYTE bEnd, BYTE bSelNo, BYTE bMode)
// Description :
// Parameter :
// Return : None
// Note :
// *********************************************************************
void vOsdShowDgstMenuSelect(BYTE bStart, BYTE bEnd, BYTE bSelNo, BYTE bMode) large
{
BYTE pbTmp[7];
BYTE bKeySeq;
bKeySeq = bMode & 0x0f;
bMode = bMode & 0xf0;
vOsdPosClear(OSD_POS_DGST_MENU_SEL);
if ((bStart > 0) || (bEnd >= bStart))
{
bStart = bHEXToBCD(bStart);
bEnd = bHEXToBCD(bEnd);
bSelNo = bHEXToBCD(bSelNo);
pbTmp[0] = 6;
pbTmp[1] = BCD_HI(bStart) + '0';
pbTmp[2] = BCD_LO(bStart) + '0';
pbTmp[3] = BCD_HI(bEnd) + '0';
pbTmp[4] = BCD_LO(bEnd) + '0';
#ifdef NO_ADD10_KEY
if (bMode == OSD_DGST_SEL_HILI)
{
if (bKeySeq == 1)
{
pbTmp[5] = BCD_LO(bSelNo) + '0';
pbTmp[6] = ' ';
}
else if (bKeySeq == 2)
{
pbTmp[5] = BCD_HI(bSelNo) + '0';
pbTmp[6] = BCD_LO(bSelNo) + '0';
}
else
{
pbTmp[5] = '-';
pbTmp[6] = '-';
}
}
else
#endif /* NO_ADD10_KEY */
if (bSelNo == 0)
{
pbTmp[5] = '-';
pbTmp[6] = '-';
}
else
{
pbTmp[5] = BCD_HI(bSelNo) + '0';
pbTmp[6] = BCD_LO(bSelNo) + '0';
}
/* assume the digest page only one input field, the mark will use hili */
if (bMode == OSD_DGST_SEL_HILI)
{
vOsdSetInputField(OSD_POS_DGST_MENU_SEL);
}
else
{
vOsdClearInputField(OSD_POS_DGST_MENU_SEL);
}
vOsdPosPasteArg(OSD_POS_DGST_MENU_SEL, OSD_MSG_SELECT_RANGE, pbTmp, 0);
}
}
#endif /* PLAYER_DIGEST */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -