📄 vremote.c
字号:
//vPasteBmp(WB_VRMT_ITEM,_bVrmtMenuItemBmpId[bTmp-9]); //[runma] mark off for mickey
// change color for it...
// to be done honnow...
_wStartX = _rFocusItem[_rVremote.bPosition].wStartX;
_wStartY = _rFocusItem[_rVremote.bPosition].wStartY;
_wEndX = _rFocusItem[_rVremote.bPosition].wStartX+42; //EndX-8;
_wEndY = _rFocusItem[_rVremote.bPosition].wStartY+42; //EndY-8;
vChgColRep(WB_VRMT_ITEM, 4, 3); //[runma] mickey, 2->4
#else
vPasteBmp(WB_VRMT_ITEM,BMP_VRMT_BARSEL);
vSetMsgCol4(WB_VRMT_ITEM, 0, 11, 8, 3);
vOsdPasteMsgXY(_wStartX+20,VRMT_MENU_ITEM1_STARTY+(bTmp-9)*(LINE_HEIGHT+2),WB_VRMT_ITEM,_wVrmtMenuItemMsgId[bTmp-9]);//OSD_NO_DISAPPEAR);
vSetMsgCol4(WB_VRMT_ITEM, 0, 9, 8, 3);
#endif
}
else // draw
{
#ifdef VRMT_NOMENU_ITEM
//vPasteBmp(WB_VRMT_ITEM,_bVrmtMenuItemBmpId[bTmp-9]); //[runma] mark off for mickey.
#else
vPasteBmp(WB_VRMT_ITEM,BMP_VRMT_BAR);
vOsdPasteMsgXY(_wStartX+20,VRMT_MENU_ITEM1_STARTY+(bTmp-9)*(LINE_HEIGHT+2),WB_VRMT_ITEM,_wVrmtMenuItemMsgId[bTmp-9]);//,OSD_NO_DISAPPEAR);
#endif
}
}
}
/*********************************************************************
Function : void vVremoteInit(BYTE fgInit) large
Description : Initial function when go into v-remote state.
Parameter :
Return :
**********************************************************************/
void vVremoteInit(BYTE fgInit) large
{
//Popup the vremote whiteboard
/* chnage OSD mode to user mode */
vOsdShowWb(OSD_WB_USER);
/* set menu type */
if (fgIsDvdPlay())
{
_rVremote.bMenuType = VRMT_MENU_TYPE_DVD;
}
else if (fgIsIsoPlay())
{
vSetExitInputState();
return;
}
else
{
_rVremote.bMenuType = VRMT_MENU_TYPE_NONE;
}
//create vremote whiteboard
#ifdef VRMT_WB_USE_TRUECOLOR
vCreateWB(WB_VRMT_ITEM, TRUE);
vSetWBTcColor(WB_VRMT_ITEM);
//set blend level for background color.
vSetTcPal(WB_VRMT_ITEM,1,BLEND_2,TRUECOLOR_DARKGRAY);
// vSetTcPal(WB_VRMT_ITEM,9,BLEND_1,TRUECOLOR_GRAY);
#else
vCreateWB(WB_VRMT_ITEM, FALSE);
//set blend level for background color.
vSetPal(WB_VRMT_ITEM,1,BLEND_1,COLOR_DARK_GRAY);
vSetPal(WB_VRMT_ITEM,9,BLEND_1,COLOR_GRAY);
#endif
// set idx 0 as transparent color.
vSetTransEn(WB_VRMT_ITEM,0);
//set message color of v-remote
vSetMsgCol4(WB_VRMT_ITEM, 0, 9, 8, 3);
//draw whole background ??
//vDrawBorderWB(WB_VRMT_ITEM, 0);
_rVremote.bState = VRMT_STATE_INIT;
_rVremote.bPosition = VRMT_INIT_POSI;
vVRMTRedrawAll();
//enable vremote whiteboard
vEnableWB(WB_VRMT_ITEM);
return;
}
/*********************************************************************
Function : void vVRMTSelectFocus(BYTE bPosition)
Description : In Vremote, highlight one item.
Parameter : bPosition is the position id within virtual remote controller.
Return :
**********************************************************************/
void vVRMTSelectFocus(BYTE bPosition) large
{
WORD wMsgIdx;
BYTE bTmp;
switch(bPosition)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
_wStartX = _rFocusItem[bPosition].wStartX+8;
_wStartY = _rFocusItem[bPosition].wStartY+8;
_wEndX = _rFocusItem[bPosition].wEndX-8;
_wEndY = _rFocusItem[bPosition].wEndY-8;
#ifdef VRMT_WB_USE_TRUECOLOR
//vRectangle(WB_VRMT_ITEM,2,11,FALSE,0); //for test
vChgColRep(WB_VRMT_ITEM, 15, 3);
#else
_wStartX += VREMOTE_START_X;
_wEndX += VREMOTE_START_X;
_wStartY += VREMOTE_START_Y;
_wEndY += VREMOTE_START_Y;
vChgColSetCol(WB_VRMT_ITEM, 3 , BLEND_3, COLOR_ORANGE);
vChgColRng(WB_VRMT_ITEM);
vChgColEn();
#endif
break;
case 9:
case 10:
case 11:
_wStartX = _rFocusItem[bPosition].wStartX;
_wStartY = _rFocusItem[bPosition].wStartY;
#ifdef VRMT_NOMENU_ITEM
//vPasteBmp(WB_VRMT_ITEM,_bVrmtMenuItemBmpId[bPosition-9]); //should be removed
// should hili bPosition TBD ... runma
_wStartX = _rFocusItem[bPosition].wStartX;//+8;
_wStartY = _rFocusItem[bPosition].wStartY;//+8;
_wEndX = _rFocusItem[bPosition].wStartX+42;//EndX-8;
_wEndY = _rFocusItem[bPosition].wStartY+42;//EndY-8;
vChgColRep(WB_VRMT_ITEM, 15, 3); //[runma] 2->4
#else
vPasteBmp(WB_VRMT_ITEM,BMP_VRMT_BARSEL);
vSetMsgCol4(WB_VRMT_ITEM, 0, 11, 8, 3);
vOsdPasteMsgXY(_wStartX+20,_wStartY,WB_VRMT_ITEM,_wVrmtMenuItemMsgId[bPosition-9]);//,OSD_NO_DISAPPEAR);
vSetMsgCol4(WB_VRMT_ITEM, 0, 9, 8, 3);
#endif
break;
default:
break;
}
}
/*********************************************************************
Function : void vVRMTUnselectFocus(BYTE bPosition)
Description : In Vremote, disable one item's highlight.
Parameter : bPosition is the position in the vremote.
Return :
**********************************************************************/
void vVRMTUnselectFocus(BYTE bPosition)
{
WORD wMsgIdx;
switch(bPosition)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
#ifdef VRMT_WB_USE_TRUECOLOR
_wStartX = _rFocusItem[bPosition].wStartX+8; //test
_wStartY = _rFocusItem[bPosition].wStartY+8; //test
_wEndX = _rFocusItem[bPosition].wEndX-8; //test
_wEndY = _rFocusItem[bPosition].wEndY-8; //test
//vRectangle(WB_VRMT_ITEM,2,7,FALSE,0); //test
vChgColRep(WB_VRMT_ITEM, 3, 15); // disable the hi light button
#else
vChgColDis();
#endif
break;
case 9:
case 10:
case 11:
_wStartX = _rFocusItem[bPosition].wStartX;
_wStartY = _rFocusItem[bPosition].wStartY;
#ifdef VRMT_NOMENU_ITEM
//vPasteBmp(WB_VRMT_ITEM,_bVrmtMenuItemBmpId[bPosition-9]); //should be removed.
// un-hili bPosition..TBD. by vChgColRep...runma
_wStartX = _rFocusItem[bPosition].wStartX;//+8;
_wStartY = _rFocusItem[bPosition].wStartY;//+8;
_wEndX = _rFocusItem[bPosition].wStartX+42; //EndX-8;
_wEndY = _rFocusItem[bPosition].wStartY+42; //EndY-8;
vChgColRep(WB_VRMT_ITEM, 3, 15); //[runma] 2->4 for mickey.
#else
vPasteBmp(WB_VRMT_ITEM,BMP_VRMT_BAR);
vSetMsgCol4(WB_VRMT_ITEM, 0, 9, 8, 3);
vOsdPasteMsgXY(_wStartX+20,_wStartY,WB_VRMT_ITEM,_wVrmtMenuItemMsgId[bPosition-9]);//,OSD_NO_DISAPPEAR);
#endif
break;
default:
break;
}
}
/*********************************************************************
Function : BOOL fgVremoteState(void) large
Description : State machine when vremote input state.
Parameter :
Return :
**********************************************************************/
BOOL fgVremoteState(void) large
{
BYTE bPbcState;
BOOL fgRet = TRUE;
switch (_bIRKey)
{
case IR_UP:
if(_rVremote.bPosition != _rFocusItem[_rVremote.bPosition].bUpLink)
{
if((_rVremote.bMenuType != VRMT_MENU_TYPE_NONE)||(_rFocusItem[_rVremote.bPosition].bUpLink!=11))
{
vVRMTUnselectFocus(_rVremote.bPosition);
_rVremote.bPosition = _rFocusItem[_rVremote.bPosition].bUpLink;
vVRMTSelectFocus(_rVremote.bPosition);
}
}
break;
case IR_LEFT:
if(_rVremote.bPosition != _rFocusItem[_rVremote.bPosition].bLeftLink)
{
vVRMTUnselectFocus(_rVremote.bPosition);
_rVremote.bPosition = _rFocusItem[_rVremote.bPosition].bLeftLink;
vVRMTSelectFocus(_rVremote.bPosition);
}
break;
case IR_RIGHT:
if(_rVremote.bPosition != _rFocusItem[_rVremote.bPosition].bRightLink)
{
vVRMTUnselectFocus(_rVremote.bPosition);
_rVremote.bPosition = _rFocusItem[_rVremote.bPosition].bRightLink;
vVRMTSelectFocus(_rVremote.bPosition);
}
break;
case IR_DOWN:
if(_rVremote.bPosition != _rFocusItem[_rVremote.bPosition].bDownLink)
{
vVRMTUnselectFocus(_rVremote.bPosition);
_rVremote.bPosition = _rFocusItem[_rVremote.bPosition].bDownLink;
vVRMTSelectFocus(_rVremote.bPosition);
}
break;
case IR_ENTER:
//case IR_PLAY:
case IR_PLAY_ENTER:
_bIRKey = _rFocusItem[_rVremote.bPosition].bIRKey;
fgRet = FALSE;
if(_bIRKey==IR_GOTO)
{
vSetExitInputState();
}
else if(_bIRKey==IR_PAUSE_STEP)
{
bPbcState = bSharedInfo(SI_PBC_STATE);
if ((bPbcState == SV_PAUSE) || (bPbcState == SV_STEP))
{
_bIRKey = IR_STEP;
}
else
{
_bIRKey = IR_PAUSE;
}
}
else if(_bIRKey==IR_ANGLE)
{
#if 0 //honnow...
vSendUopCmd(UOP_NEXT_AGL, 0, 0, 0);
if (!fgIsAngleShow())
{
vIrSetTimeOut(IR_TIMEOUT_ANGLE);
_rVremote.bState = VRMT_STATE_WAIT_TIMEOUT;
}
fgRet = TRUE;
#endif
}
else if(_bIRKey==IR_PLAY_RESUME)
{
if(bSharedInfo(SI_HLI_STATE)==SV_ON)
_bIRKey = IR_ENTER;
}
break;
case IR_PLAY:
case IR_FF:
case IR_FR:
case IR_SF:
case IR_SR:
case IR_NEXT:
case IR_PREV:
case IR_PAUSE:
case IR_PAUSE_STEP:
case IR_DISPLAY:
case IR_OSD_LANGUAGE:
case IR_AUDIO:
case IR_SUB_TITLE:
case IR_ANGLE:
case IR_NEXT_DLIST:
case IR_PREV_DLIST:
//case IR_TIME_OUT:
fgRet = FALSE;
break;
case IR_TIME_OUT:
#if 0 //honnow...
if(_rVremote.bState == VRMT_STATE_WAIT_TIMEOUT)
{
_rVremote.bState = VRMT_STATE_NORMAL;
if (!fgIsAngleShow())
vOsdShowAngle(OSD_ANGLE_CLEAR, 0, 0);
}
else
{
fgRet = FALSE;
}
#else
fgRet = FALSE;
#endif
break;
// case IR_ANGLE:
// vSendUopCmd(UOP_NEXT_AGL, 0, 0, 0);
// vIrSetTimeOut(IR_TIMEOUT_ANGLE);
// break;
case IR_VRMT:
vSetExitInputState();
break;
default:
fgRet = FALSE;
vSetExitInputState();
break;
}
return (fgRet);
}
/*********************************************************************
Function : void vVremoteExit(void) large
Description : Exit function when exiting vremote input mode.
Parameter :
Return :
**********************************************************************/
void vVremoteExit(void) large
{
vDeleteWB(WB_VRMT_ITEM);
/* restore OSD mode */
vOsdShowWb(OSD_WB_RESTORE);
#if 0
if(_rVremote.bState == VRMT_STATE_WAIT_TIMEOUT)
{
_rVremote.bState = VRMT_STATE_NORMAL;
if (!fgIsAngleShow())
vOsdShowAngle(OSD_ANGLE_CLEAR, 0, 0);
}
#endif
return;
}
#else
//dummy functions
void vVremoteInit(BYTE fgInit) large { return; }
BOOL fgVremoteState(void) large { return (FALSE); }
void vVremoteExit(void) large { return; }
//void vVremoteHandleUpdate(BYTE bItem, BYTE bVal) large { return; }
//void vVremoteUsrPbcChange(void) large { return; }
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -