📄 stpmain.c
字号:
{
vSetWBTcColor(WB_SETUP_HEAD);
vSetWBTcColor(WB_SETUP_ITEM);
vSetWBTcColor(WB_SETUP_MSG);
}
// *********************************************************************
// Function : void vSetupInitState(void) large
// Description : init setup menu,
// 1. disable all previous white boards
// 2. set page relative variable
// 3. create setup menu white boards
// 4. show page
// 5. enable white boards
// Parameter : None
// Return : None
// *********************************************************************
void vSetupInitState(void) large
{
BYTE bTemp;
#ifdef PLAYER_FLMENU
if (fgFlCheckStatus(FL_STATUS_IN_MENU))
{
// tmp
vOsdSetSt(OSD_ST_BURST);
vDisableWB(FSMENU_OSD_WBIDX_BASIC);
//vDisableWB(FSMENU_INFO); //windy
vOsdSetSt(OSD_ST_NML);
// wFlMnLeave();
}
#endif
#ifdef SRV_SHOW_ERROR_COUNTER
_bSrvShowErrIdx = 0;
vClearWB(WB_NORMAL_VOL);
#endif
_bRegChgIdx = 0;
_bEnVerIdx = 0;
_bMinShowDat = 0;
_fgReset = FALSE;
_bMinShowData = 1;
_bMaxShowData = _rMenuRoot.bEntryNo;
_bMainMenu = 1;
_fgInSubmenu = FALSE;
_fgInDialog = FALSE;
_bRegChgIdx = 0;
// - disable all previous white board
vOsdShowWb(OSD_WB_DISABLE);
#if (DRAM_SZ == DRAM_2M) || defined(USE_DRAM_CFG1)
while (bSharedInfo(SI_OSD_CMD_Q_LEN));
if (!(fgIsIsoPlay()||fgIsPcdPlay()) || (_bFlCmdTarget == FL_CMD_TARGET_MPEG))//0728
vOsdSetMemBlk(OSD_MEM_BLK_DYNAMIC, OSD_MEM_DEFAULT);
/*
Mark the 'fgIsPcdPlay()' condition by Bright_liu 2005/11/24, for CQ(PL00001441),
when the PCD is in digest mode, press the IR_SETUP 2 times, the screen is disturbed.
*/
else if((_bFlCmdTarget == FL_CMD_TARGET_JPEG)/*||fgIsPcdPlay()*/)
vOsdSetMemBlk(OSD_MEM_BLK_DYNAMIC, OSD_MEM_JPEG_SLIDESHOW);
#endif
// - create setup menu white board and enable them
#ifdef SETUP_MENU_TRUECOLOR
vCreateWB(WB_SETUP_ITEM, TRUE);
vCreateWB(WB_SETUP_HEAD, TRUE);
vCreateWB(WB_SETUP_MSG, TRUE);
#else
vCreateWB(WB_SETUP_ITEM, FALSE);
vCreateWB(WB_SETUP_HEAD, FALSE);
vCreateWB(WB_SETUP_MSG, FALSE);
#endif
vOsdSetSt(OSD_ST_BATCH);
vSetWbCol();
// 1. hide HL, disable change color
vSetTransDis(WB_SETUP_ITEM);
// 2. set page relative variable
_bPrevMenu = INVALID_MENU;
vSetNewMenu(GENERAL_PAGE);
_bOsdState = STPSTT_MAINMENU;
_wMenuInvalid = 0xFFFF;
_bMenuCur = 1; //r not used.
vShowMenuRoot(_rMenuRoot.prMenu[MAIN_PAGE]);
vDrawMenuBtn(_rMenuRoot.prMenu[MAIN_PAGE], 1, TRUE);
// 4. show page
vShowMenu(_rMenuRoot.prMenu[_bMenu]); //r
vShowSetupMsg(_rMenuRoot.prMenu[MAIN_PAGE]->prEntry[_bMainMenu-1]->wMsgMsg); //r
vOsdSetSt(OSD_ST_NML);
if (fgFlCheckStatus(FL_STATUS_IN_MENU))
{
if(!fgIsIsoPlay())//for WMA issue
//we don't need to show logo when playing data disc to avoid to cover dsp WMA code
{
if (!fgIsPcdPlay())
vPlayerShowLogo(DVD_STOP_LOGO, DVD_LOGO_COLOR);
}
}
vOsdSetSt(OSD_ST_BURST);
vEnableWB(WB_SETUP_MSG);
vEnableWB(WB_SETUP_HEAD);
vEnableWB(WB_SETUP_ITEM);
vOsdSetSt(OSD_ST_NML);
bTemp = bSharedInfo(SI_LUMINANCE);
if ((bTemp == SV_LUMINANCE_DELAY_0) || (bTemp == SV_LUMINANCE_DELAY_1))
{
if (bEepromReadByte(LUMINANCE_POS) != bTemp)
{
fgEepromWriteByte(LUMINANCE_POS, bTemp);
}
}
else
{
fgEepromWriteByte(LUMINANCE_POS, SV_LUMINANCE_DELAY_1);
}
}
// *********************************************************************
// Function : void vCalMaxMinShow(void) large
// Description : Calculate the min/max item could be show on the white board,
// Draw up/down mark if overall items larger than show
// Parameter : None
// Return : None
// *********************************************************************
BYTE bCalMaxMinShow(BYTE bPageType, BYTE bPageT, BYTE bPageM) large
{
BYTE bStart = 0;
BYTE bTotal;
if (bPageT > bPageM)
{
bTotal = bPageM;
if ((_bPrevItem != 0xFF) && (_bPrevItem > _bEntry))
{
bStart = _bEntry - 1;
}
else if (_bEntry > bTotal)
{
bStart = _bEntry - bTotal ;
}
if ((bStart + bPageM) > bPageT)
{
bStart = bPageT - bPageM ;
}
_bMinShowData = bStart + 1;
_bMaxShowData = bStart + bTotal;
if (_bMaxShowData > bPageT)
{
_bMaxShowData = bPageT;
}
}
else
{
bTotal = bPageT;
_bMinShowData = 1;
_bMaxShowData = bTotal;
}
return (bStart);
}
static BOOL fgCalEntryShowRange(BYTE bTotalEntry, BYTE bTotalLine) large
{
BYTE bStart = 0;
BYTE bTotal;
if ((_bEntry >= _bMinShowData) && (_bEntry <= _bMaxShowData))
{
return FALSE;
}
if (_bEntry < _bMinShowData)
{
_bMinShowData --;
}
else if (_bEntry > _bMaxShowData)
{
_bMinShowData ++;
}
_bMaxShowData = _bMinShowData + bTotalLine;
if (_bMaxShowData > bTotalEntry)
{
_bMaxShowData = bTotalEntry;
_bMinShowData = bTotalEntry - bTotalLine;
}
return TRUE;
}
#ifdef SETUP_USE_TAB
void vShowTabOn(BYTE bTabIndex) large
{
_wStartX = SETUP_TAB_START_X + bTabIndex * (SETUP_TAB_WIDTH + SETUP_TAB_GAP);
_wStartY = SETUP_TAB_START_Y;
_wEndX = _wStartX + SETUP_TAB_WIDTH;
_wEndY = _wStartY + SETUP_TAB_HEIGHT;
vRectangle(WB_SETUP_HEAD,0,0,1,4);//FLCOLOR_GRAY
vSetMsgCol4(WB_SETUP_HEAD, 4, 4, 4, 3);
vOsdPasteMsgXY(_rTabMag[bTabIndex].wStartX,_rTabMag[bTabIndex].wStartY,WB_SETUP_HEAD,_rTabMag[bTabIndex].wMsgIndex);
}
void vShowTabOff(BYTE bTabIndex) large
{
_wStartX = SETUP_TAB_START_X + bTabIndex * (SETUP_TAB_WIDTH + SETUP_TAB_GAP);
_wStartY = SETUP_TAB_START_Y;
_wEndX = _wStartX + SETUP_TAB_WIDTH;
_wEndY = _wStartY + SETUP_TAB_HEIGHT;
vRectangle(WB_SETUP_HEAD,0,0,1,5);//FLCOLOR_LIGHT_GREEN
vSetMsgCol4(WB_SETUP_HEAD, 5, 5, 5, 3);
vOsdPasteMsgXY(_rTabMag[bTabIndex].wStartX,_rTabMag[bTabIndex].wStartY,WB_SETUP_HEAD,_rTabMag[bTabIndex].wMsgIndex);
}
void vSetupUseTab(BYTE bWBIndex, BYTE bTabIndex) large
{
BYTE bTmp;
for(bTmp = 0;bTmp < SETUP_TAB_NUM;bTmp++)
{
if(bTmp != bTabIndex)
vShowTabOff(bTmp);
else
vShowTabOn(bTmp);
}
}
#endif
static void vShowMenuRoot(sMenu *prMenu) large
{
BYTE i;
WORD wGap;
wGap = (SETUP_HEAD_W - MENU_BMP_W * prMenu->bTotalEntry) / (prMenu->bTotalEntry + 1);
_wStartY = (SETUP_HEAD_H - MENU_BMP_H) / 2;
for (i=1; i<=prMenu->bTotalEntry; i++)
{
#ifndef SETUP_USE_TAB
if (prMenu->prEntry[i-1]->wType == ENTRY_TYPE_NULL)
{
return;
}
#endif
_wStartX = wGap * i + MENU_BMP_W * (i-1);
_wEndX = _wStartX + MENU_BMP_W;
_wEndY = _wStartY + MENU_BMP_H;
#ifndef SETUP_USE_TAB
if (prMenu->prEntry[i-1]->wBmpIdx != 0xFFFF)
#endif
{
// vPasteBmp(WB_SETUP_HEAD, prMenu->prEntry[i-1]->wBmpIdx);
vSetupUseTab(WB_SETUP_HEAD, i-1);
#ifdef STPMN_HEAD_GRAY
vChgColRep(WB_SETUP_HEAD, 4,13);
vChgColRep(WB_SETUP_HEAD, 5,11);
vChgColRep(WB_SETUP_HEAD, 6,10);
vChgColRep(WB_SETUP_HEAD, 8,11);
vChgColRep(WB_SETUP_HEAD, 12,13);
vChgColRep(WB_SETUP_HEAD, 15,13);
#else
#if (SETUP_HEAD_BITMAP == BITMAP_JYC2)
vChgColRep(WB_SETUP_HEAD, 1,11);
vChgColRep(WB_SETUP_HEAD, 14,11); //r add line for Joyce RD1...
#else
vChgColRep(WB_SETUP_HEAD, 1,0);
#endif
#endif
}
}
}
static void vDrawMenuBtn(sMenu *prMenu, BYTE bIndex, BOOL fgEnable) large
{
WORD wGap;
wGap = (SETUP_HEAD_W - MENU_BMP_W * prMenu->bTotalEntry) / (prMenu->bTotalEntry + 1);
_wStartX = wGap * bIndex + MENU_BMP_W * (bIndex-1);
_wEndX = _wStartX + MENU_BMP_W;
_wStartY = (SETUP_HEAD_H - MENU_BMP_H) / 2;
_wEndY = _wStartY + MENU_BMP_H;
#ifndef SETUP_USE_TAB
if (prMenu->prEntry[bIndex-1]->wBmpIdx != 0xFFFF)
#endif
{
if (fgEnable == TRUE)
{
// vPasteBmp(WB_SETUP_HEAD, prMenu->prEntry[bIndex-1]->wBmpIdx);
vSetupUseTab(WB_SETUP_HEAD, bIndex-1);
}
else
{
// vPasteBmp(WB_SETUP_HEAD, prMenu->prEntry[bIndex-1]->wBmpIdx);
vSetupUseTab(WB_SETUP_HEAD, bIndex-1);
#ifdef STPMN_HEAD_GRAY
vChgColRep(WB_SETUP_HEAD, 4,13);
vChgColRep(WB_SETUP_HEAD, 5,11);
vChgColRep(WB_SETUP_HEAD, 6,10);
vChgColRep(WB_SETUP_HEAD, 8,11);
vChgColRep(WB_SETUP_HEAD, 12,13);
vChgColRep(WB_SETUP_HEAD, 15,13);
#else
#if (SETUP_HEAD_BITMAP == BITMAP_JYC2)
vChgColRep(WB_SETUP_HEAD, 1,11);
vChgColRep(WB_SETUP_HEAD, 14,11);
#else
vChgColRep(WB_SETUP_HEAD, 1,0);
#endif
#endif
}
}
}
void vShowEntryValue(sEntry *prEntry, BOOL fgIfAutoSetXY) large
{
BYTE bOpt=1;
WORD wMsg;
BYTE pbStr[7];
BYTE bTemp;
WORD wEntryType;
// Set to empty string.
pbStr[0] = 3; //[runma] 4 -> 3
pbStr[1] = pbStr[2] = pbStr[3] = 32; //' ';
wEntryType = prEntry->wType;
if (wEntryType == ENTRY_TYPE_DIALOG)
{
prEntry = _rMenuRoot.prMenu[prEntry->wEEPos]->prEntry[0];
}
else if (wEntryType == ENTRY_TYPE_SUBMENU)
{
return;
}
if(fgIfAutoSetXY)
{
_wStartX = STP_ENTRY_START_X + STP_VALUE_START_X;
_wEndX = STP_ENTRY_START_X + STP_ENTRY_END_X; //[runma] add word -6
_wEndY = _wStartY + STP_MENU_ENTRY_H;
vRectangle(WB_SETUP_ITEM, 0, 0, 1, ENTRY_COL_BG);
}
vSetMsgCol4(WB_SETUP_ITEM, 0, 0, ENTRY_COL_BLACK, ENTRY_COL_YELLOW);
bOpt = bGetOptFromEeprom(prEntry);
switch(prEntry->wType)
{
case ENTRY_TYPE_H_SLIDER_SIGNED:
bTemp=1;
if ((char) bOpt < 0)
{
pbStr[bTemp++] = 45; //'-';
bOpt = (BYTE )(0 - (char) bOpt);
}
if(bOpt>99) bOpt=99;
bOpt = bHEXToBCD(bOpt);
pbStr[bTemp++] = BCD_HI(bOpt) + 48;//'0';
pbStr[bTemp++] = BCD_LO(bOpt) + 48;//'0';
vOsdShowStr(WB_SETUP_ITEM, pbStr);
break;
#ifdef PLAYER_KARAOKE
case ENTRY_TYPE_V_SLIDER:
case ENTRY_TYPE_NUM:
bTemp=0;
if(bOpt>199)
{
pbStr[++bTemp]=50;//'2';
bOpt = bOpt -200;
}
else if(bOpt>99)
{
pbStr[++bTemp]=49;//'1';
bOpt = bOpt -100;
}
bOpt = bHEXToBCD(bOpt);
pbStr[++bTemp] = BCD_HI(bOpt) + 48;//'0';
pbStr[++bTemp] = BCD_LO(bOpt) + 48;//'0';
if(wEntryType == TYPE_SPK_CONFIG)
{
if(pbStr[1]=='0')
{
pbStr[1]=' ';
if(pbStr[2]=='0')
pbStr[2]=' ';
}
pbStr[++bTemp] = '0';
pbStr[++bTemp] = 'c';
pbStr[++bTemp] = 'm';
pbStr[0]=bTemp;
}
//pbStr[0]=bTemp;
vOsdShowStr(WB_SETUP_ITEM, pbStr);
break;
#endif
default:
if(prEntry->prData == 0) //[runma] add block
{
pbStr[0] = 3;
pbStr[1] = 32;//' ';
pbStr[2] = 32;//' ';
pbStr[3] = 32;//' ';
vOsdShowStr(WB_SETUP_ITEM, pbStr); //[runma] end of block
}
else
{
wMsg = prEntry->prData[bOpt]->wValMsg;
if (wMsg == OSD_MSG_EMPTY)
{
pbStr[0] = 3;
pbStr[3] = 32;//' '; //[runma] 1->3
bOpt = bHEXToBCD(bOpt);
pbStr[1] = 32;//' ';//BCD_HI(bOpt) + '0'; //[runma] 2->1
pbStr[2] = 32;//' ';//BCD_LO(bOpt) + '0'; //[runma] 3->2
vOsdShowStr(WB_SETUP_ITEM, pbStr);
}
else if((wMsg == OSD_MSG_FUNC_NUMBER) ||(wMsg == OSD_MSG_FUNC_MINUS3))
{
if(wMsg == OSD_MSG_FUNC_MINUS3)
bOpt = (char)bOpt -3;
bTemp=1;
if ((char) bOpt < 0)
{
pbStr[bTemp++] = 45; //'-';
bOpt = (BYTE )(0 - (char) bOpt);
}
if(bOpt>99) bOpt=99; //[runma] add line
bOpt = bHEXToBCD(bOpt);
pbStr[bTemp++] = BCD_HI(bOpt) + 48;//'0';
pbStr[bTemp++] = BCD_LO(bOpt) + 48;//'0';
vOsdShowStr(WB_SETUP_ITEM, pbStr);
}
else
{
vOsdMsgPaste(WB_SETUP_ITEM, wMsg);
}
}
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -