📄 stpmain.c
字号:
if (prMenu->prEntry[i-1]->wType == ENTRY_TYPE_NULL)
{
return;
}
_wStartY = 2;
_wEndY = 32;
_wStartX = 30 + (50+30) * (i-1);
_wEndX = _wStartX + 50;
switch(i)
{
case 1: vGrpButtonCreate(CODE_PAGE_ASC, WB_SETUP_HEAD, i+20, MENU_BUTTON_GROUP, 2, OSD_MSG_1, 20, 0);
break;
case 2: vGrpButtonCreate(CODE_PAGE_ASC, WB_SETUP_HEAD, i+20, MENU_BUTTON_GROUP, 2, OSD_MSG_2, 20, 0);
break;
case 3: vGrpButtonCreate(CODE_PAGE_ASC, WB_SETUP_HEAD, i+20, MENU_BUTTON_GROUP, 2, OSD_MSG_3, 20, 0);
break;
case 4: vGrpButtonCreate(CODE_PAGE_ASC, WB_SETUP_HEAD, i+20, MENU_BUTTON_GROUP, 2, OSD_MSG_4, 20, 0);
break;
case 5: vGrpButtonCreate(CODE_PAGE_ASC, WB_SETUP_HEAD, i+20, MENU_BUTTON_GROUP, 2, OSD_MSG_5, 20, 0);
break;
case 6: vGrpButtonCreate(CODE_PAGE_ASC, WB_SETUP_HEAD, i+20, MENU_BUTTON_GROUP, 2, OSD_MSG_6, 20, 0);
break;
}
if (i==_bMenuCur)
{
vGrpButtonActivate(WB_SETUP_HEAD, i+20, BTN_STYLE_HILIGHT);
}
else if (_wMenuInvalid & (1<<i))
vGrpButtonDeactivate(WB_SETUP_HEAD, i+20, BTN_STYLE_NORMAL);
else
vGrpButtonDeactivate(WB_SETUP_HEAD, i+20, BTN_STYLE_INVALID);
}
#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;
if (prMenu->prEntry[bIndex-1]->wBmpIdx != 0xFFFF)
{
if (fgEnable == TRUE)
{
vPasteBmp(WB_SETUP_HEAD, prMenu->prEntry[bIndex-1]->wBmpIdx);
}
else
{
//vRectangle(WB_SETUP_HEAD, 0, 0, 1, 0); [runma] del line
vPasteBmp(WB_SETUP_HEAD, prMenu->prEntry[bIndex-1]->wBmpIdx);
//make icon be gray.
//vChgColRep(WB_SETUP_HEAD, 1,0);
#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 sinco. Joyce RD1...
#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;
}
else if (wEntryType == TYPE_SPK_CONFIG)
{
if(_bOsdState != STPSTT_OPTION) return;
prEntry = _rMenuRoot.prMenu[prEntry->wEEPos]->prEntry[_bDataCur];
if(prEntry == NULL) return; //this option is not tunable.
// pbStr[0]=5;
// pbStr[4]='c';
// pbStr[5]='m';
//bOpt=10; //[runma] add line, for chanel delay only.
}
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_V_SLIDER_SIGNED:
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; //[runma] add line
bOpt = bHEXToBCD(bOpt);
// if ((char) bOpt < 0)
// {
pbStr[bTemp++] = BCD_HI(bOpt) + 48;//'0';
pbStr[bTemp++] = BCD_LO(bOpt) + 48;//'0';
// }
// else
// {
// pbStr[1] = BCD_HI(bOpt) + 48;//'0';
// pbStr[2] = BCD_LO(bOpt) + 48;//'0';
// }
vOsdShowStr(WB_SETUP_ITEM, pbStr);
break;
case ENTRY_TYPE_V_SLIDER:
case ENTRY_TYPE_H_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;
default:
// pbStr[0] = 0;
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;
}
//return prEntry->prData[bOpt]->wEntryMsg;
}
// *********************************************************************
// Function : void vShowMenu(void) large
// Description : show a Menu
// 1. clear setup screen
// 2. get valid item
// 3. run the page special function
// 4. show head and message wb message
// 5. show item wb
// Parameter : None
// Return : None
// *********************************************************************
static void vShowMenu(sMenu *prMenu) large
{
if ((prMenu->bType == PAGE_TYPE_H_DIALOG) || (prMenu->bType == PAGE_TYPE_V_DIALOG))
{
vDrawDialog(prMenu);
//vDialogInit(prMenu);
//vDialogDrawEntry(prMenu);
//[runma] add these four lines here is a waste.
#ifndef IC_CHECK_OSD
vOsdPasteBmpXY(0, 0, WB_SETUP_HEAD, BMP_LT_CORNER);
#endif
vOsdPasteBmpXY(0, SETUP_MSG_END_Y-SETUP_MSG_START_Y-15, WB_SETUP_MSG, BMP_LB_CORNER);
#ifndef IC_CHECK_OSD
vOsdPasteBmpXY(SETUP_HEAD_END_X - SETUP_HEAD_START_X - 15, 0, WB_SETUP_HEAD, BMP_RT_CORNER);
#endif
vOsdPasteBmpXY(SETUP_MSG_END_X - SETUP_MSG_START_X - 15, SETUP_MSG_END_Y-SETUP_MSG_START_Y-15, WB_SETUP_MSG, BMP_RB_CORNER);
}
else
{
vDrawMenu(prMenu);
}
}
static void vDrawMenu(sMenu *prMenu) large
{
BYTE (code *bDeal)(WORD wEEPos, BYTE bValue) large;
BYTE bTemp;
BYTE bTempItem;
BYTE bStart;
BYTE pbStr[10];
// 1. clear setup screen
vClearItemRng();
vClearMsgRng();
#ifndef IC_CHECK_OSD
vOsdPasteBmpXY(0, 0, WB_SETUP_HEAD, BMP_LT_CORNER);
#endif
vOsdPasteBmpXY(0, SETUP_MSG_END_Y-SETUP_MSG_START_Y-15, WB_SETUP_MSG, BMP_LB_CORNER);
#ifndef IC_CHECK_OSD
vOsdPasteBmpXY(SETUP_HEAD_END_X - SETUP_HEAD_START_X - 15, 0, WB_SETUP_HEAD, BMP_RT_CORNER);
#endif
vOsdPasteBmpXY(SETUP_MSG_END_X - SETUP_MSG_START_X - 15, SETUP_MSG_END_Y-SETUP_MSG_START_Y-15, WB_SETUP_MSG, BMP_RB_CORNER);
bTempItem = _bEntry;
// 2. get valid item
_wInvalid = 0xFFFF;
// _wHidden = 0xFFFF;
vChkValid(prMenu->bInvType);
// find first valid item
if (_wInvalid == 0)
return;
while (!(_wInvalid & (0x01<<_bEntry-1)))
{
_bEntry ++;
}
if (!(_wInvalid & (0x01<<_bPrevItem-1)))
{
_bPrevItem = INVALID_ENTRY;
}
// 3. run the page special function
vDrawSpecificPage(prMenu->bMenuType);
#if 0 //?
#ifdef SETUP_ENABLE_TEST_TONE
if (!_fgTestTone)
#endif
{
//if (_bPrevMenu != 0xFE)
if (_bPrevMenu != INVALID_MENU)
{
vShowSetupMsg(prMenu->wMsgMsg);
}
else
{
// first time to page
//vShowSetupMsg(prMenu->prEntry[_bEntry-1]->wMsgMsg);
vShowSetupMsg(prMenu->prEntry[bTempItem-1]->wMsgMsg);
}
}
#endif
bTempItem = _bEntry;
_bPrevMenu = _bMenu;
// vSetMsgCol4(WB_SETUP_HEAD, 0, 0, 0, 2);
// vSetupEntryShowXY(MSG_X_IN_CENTER, HEAD_MSG_Y, _rMenuRoot.prMenu[_bMenu]->wHdrMsg, WB_SETUP_HEAD);
//_fgHeadInfChg = FALSE;
if ((prMenu->bType == PAGE_TYPE_MAINMENU) ||
(prMenu->bType == PAGE_NML))
// || (prMenu->bType == PAGE_TXT))
{
bStart = bCalMaxMinShow(prMenu->bType, prMenu->bTotalEntry, _rMenuRoot.bEntryNo);
#ifdef CHK_PASSWD_VCD_EN
if ((_bMenu == THREED_PAGE) && (bEepromReadByte(VCD_PASSWRD_POSITION) == FALSE))
{
bStart = 1;
_bMinShowData = 2;
}
#endif
//Show page title. [runma] add block
if((prMenu->bType == PAGE_NML)||(_bOsdState == STPSTT_MAINMENU)) //r
{
_wStartX = 0;
_wStartY = 0; //STP_MENU_START_Y - NML_SPACE;
_wEndX = SETUP_ITEM_END_X - SETUP_ITEM_START_X-1;
_wEndY = _wStartY + STP_MENU_ENTRY_H;
vRectangle(WB_SETUP_ITEM, 0, 0, TRUE, ENTRY_COL_DARKGRAY);
vSetItemPos(1,1); //set page title position. 0,1 is not good .
_wStartY = 0;
vSetMsgCol4(WB_SETUP_ITEM, ENTRY_COL_DARKGRAY, ENTRY_COL_DARKGRAY, ENTRY_COL_BLACK, ENTRY_COL_PINK); //[runma], modify for pro design.
vOsdPasteMsgXY(_wStartX,_wStartY, WB_SETUP_ITEM,prMenu->wHdrMsg);
}
//[runma] end of block
for(bTemp = _bMinShowData - 1; bTemp < _bMaxShowData; bTemp++)
{
// if ((_bMenu==MAIN_PAGE) && (prMenu->prEntry[bTemp]->wEEPos == VER_PAGE) && (_bShowVerIdx != 0x0F))
// continue;
if (prMenu->prEntry[bTemp]->wType == ENTRY_TYPE_NULL)
{
continue;
}
// if (!(_wHidden & (1 << bTemp)))
// continue;
_bEntry = bTemp;
vSetItemPos(bTemp+1, _bMinShowData);
// _bEntry = bGetItemIdx(bTemp+1);
// vSetItemPos(_bEntry, _bMinShowData);
if (_wInvalid & (1<<bTemp))
vSetMsgCol4(WB_SETUP_ITEM, ENTRY_COL_BG, ENTRY_COL_BG, ENTRY_COL_BLACK, ENTRY_COL_WHITE); //[runma], _bg -> _black
else
vSetMsgCol4(WB_SETUP_ITEM, ENTRY_COL_BG, ENTRY_COL_BG, ENTRY_COL_BG /*ENTRY_COL_BLACK*/, ENTRY_COL_DARKGRAY); //[runma], _bg -> _black, yellow->green
vSetupEntryShow(prMenu->prEntry[bTemp]->wEntryMsg, WB_SETUP_ITEM);
//if (prMenu->bType != PAGE_TYPE_SUBMENU) //[runma] mark off.
//{
vShowEntryValue(prMenu->prEntry[bTemp],TRUE);
//}
#ifdef ITEM_SHOW_BMP
_wStartX = 10;
if (prMenu->prEntry[bTemp]->wBmpIdx != 0xFFFF)
{
vPasteBmp(WB_SETUP_ITEM, prMenu->prEntry[bTemp]->wBmpIdx);
}
#endif
}
}
_bEntry = bTempItem;
if(_bOsdState != STPSTT_MAINMENU) //r
{
vEntryAct();
vShowRelatedMsg(prMenu);
}
else
{
vShowRelatedMsg(_rMenuRoot.prMenu[0]);
}
#if (SETUP_MENU_DATA_STYLE == STP_STICK_DATA)
#if 0 //r add 1 -> 0
_bDataCur = prMenu->prEntry[_bEntry-1]->wMaxOpt+1;
_bDataSel = bGetOptFromEeprom(prMenu->prEntry[_bEntry-1]);
if(_bOsdState != STPSTT_MAINMENU) //r
vCtrlDraw(prMenu->prEntry[_bEntry-1]->wType, _bEntry);
_bDataCur=_bDataSel;
#else
if(_bOsdState != STPSTT_MAINMENU) //r
{
_bDataCur = prMenu->prEntry[_bEntry-1]->wMaxOpt+1;
_bDataSel = bGetOptFromEeprom(prMenu->prEntry[_bEntry-1]);
#if(defined(DOWNMIX_SHOW_UI)||defined(SETUP_INVALID_ITEM)||defined(SETUP_CHECK_INVALID_HDCD))
_bInvalidItem = 0xff;
vChkItemValid(_bMenu,_bEntry);
#endif
vCtrlDraw(prMenu->prEntry[_bEntry-1]->wType, _bEntry);
_bDataCur=_bDataSel;
}
#endif
#endif
}
#if 0
void vSetPanelStartPos(BYTE bCtrlType, BYTE bIndex) large
{
//WORD w = (WORD) STP_MENU_START_Y + (WORD)(bIndex + 1) * STP_MENU_ENTRY_H;
switch(bCtrlType)
{
case ENTRY_TYPE_H_SLIDER:
//_wStartX = STP_ENTRY_START_X + STP_MENU_ENTRY_H * (bIndex-bStart);
_wStartX = STP_ENTRY_START_X + bDistance * (bIndex-bStart);
_wStartY = STP_MENU_START_Y + 100;
_wEndY = 180 + 100;
_wEndX = _wStartX + H_SLIDER_WIDTH;
break;
case ENTRY_TYPE_H_SLIDER_SIGNED:
break;
}
_wStartX = STP_ENTRY_START_X + STP_MENU_ENTRY_H * (bTemp-bStart);
_wStartY = STP_MENU_START_Y + 120;
_wEndY = _wStartY + ((WORD)bOptMaxEntryNum(_rMenuRoot, _bMenu, bTemp+1))<<3;
_wStartX = STP_ENTRY_START_X + STP_MENU_ENTRY_H * (bTemp-bStart);
_wStartY = STP_MENU_START_Y + 100;
_wEndY = 180 + 100;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -