?? digest.c
字號:
break;
case DA_DGST_TYPE_INDEX:
if (bDom == SV_ATSTT_DOM)
{
bParm1 = (SV_DGST_INDEX << 4) | DGST_VIEW_NS;
}
else
{
fgRet = FALSE;
}
break;
case DA_DGST_TYPE_SPOTLIGHT:
if (bDom == SV_ATSTT_DOM)
{
bParm1 = (SV_DGST_SPOTLIGHT << 4) | DGST_VIEW_NS;
}
else
{
fgRet = FALSE;
}
break;
case DA_DGST_TYPE_BOOKMARK:
if ((bDom == SV_VTSTT_DOM) || (bDom == SV_ATSTT_DOM))
{
bParm1 = (SV_DGST_BOOKMARK << 4) | DGST_VIEW_NS;
}
else
{
fgRet = FALSE;
}
break;
#endif
default:
_rDigest.bType = DGST_TYPE_NONE;
break;
}
if (fgRet == TRUE)
{
_rDigest.bTypeParm = bParm2;
if (_rDigest.bType == DGST_TYPE_NONE)
{
/* error condition! */
vSetExitInputState();
}
else
{
vSendUopCmd(UOP_DIGEST, bParm1, bParm2, bParm3);
}
}
return (fgRet);
}
// *********************************************************************
// Function :
// Description :
// Parameter :
// Return :
// *********************************************************************
BOOL fgDgstPlayControl(BYTE bCmd, bParm) large
{
BOOL fgRet = TRUE;
switch (bCmd)
{
case SV_DGST_RESUME:
/* send resume play */
#if 0
if (_rDigest.fgResume == TRUE)
{
vSendUopCmd(UOP_RESUME_PLAY, 0, 0, 0);
}
else
{
/* TODO: show logo or ? */
vSendUopCmd(UOP_STOP, 0, 0, 0);
}
#else
vSendUopCmd(UOP_DIGEST, 0, 0, 0);
#endif
break;
case SV_DGST_PLAY:
{
if (bParm < 1)
{
bParm = 1;
}
else if (bParm > _rDigest.bSelNoMax)
{
bParm = _rDigest.bSelNoMax;
}
if (_rDigest.bType == DGST_TYPE_BOOKMARK)
{
if (fgIsBookmarkItemValid(bParm - 1) == FALSE)
{
fgRet = FALSE;
break;
}
}
vSendUopCmd(UOP_DIGITAL_BTN, bParm, 0, 0);
break;
} /* SV_DGST_PLAY */
case SV_DGST_NEXT:
vSendUopCmd(UOP_NEXT, 0, 0, 0);
_rDigest.bPageNo += 1;
break;
case SV_DGST_PREV:
vSendUopCmd(UOP_PREVIOUS, 0, 0, 0);
_rDigest.bPageNo -= 1;
break;
default:
break;
} /* switch (bCmd) */
return (fgRet);
}
// *********************************************************************
// Function :
// Description :
// Parameter :
// Return :
// *********************************************************************
void vDgstGotoTypeItem(BYTE bItem) large
{
if (bItem >= _rDigest.bSelNoMax)
{
return;
}
#ifdef HILI_USE_OSD
vOsdPosHili(OSD_POS_HILI_CLEAR, OSD_POS_DGST_TYPE_LINE_1, 0);
#endif
vOsdPosHili(OSD_POS_HILI_SHOW, OSD_POS_DGST_TYPE_LINE_1 + 1 + bItem, 0);
_rDigest.bCurItem = bItem;
}
// *********************************************************************
// Function :
// Description :
// Parameter :
// Return :
// *********************************************************************
void vDgstTypeInit(BYTE fgInit) large
{
BYTE bPbcState = bSharedInfo(SI_PBC_STATE);
/* chnage OSD mode to user mode */
vOsdShowWb(OSD_WB_USER);
_rDigest.bState = DGST_STATE_TYPE;
_rDigest.bType = DGST_TYPE_NONE;
//#ifdef ALL_WB_USE_TRUECOLOR
// vCreateWB(WB_DGST_TYPE, TRUE);
// vSetWBTcColor(WB_DGST_TYPE);
//#else
// vCreateWB(WB_DGST_TYPE, FALSE);
//#endif
vCreateWBEx(WB_DGST_TYPE);
#ifdef FONT_NO_BORDER
vSetMsgCol4(WB_DGST_TYPE, 0, 1, 1, 3);
#else
#ifdef HILI_USE_OSD
vSetMsgCol4(WB_DGST_TYPE, 0, 0, 2, 3);
#else
vSetMsgCol4(WB_DGST_TYPE, 0, 1, 2, 3);
#endif
#endif
vEnableWB(WB_DGST_TYPE);
if (fgIsDvdPlay())
{
#ifdef SUPPORT_DVD_AUDIO
if (bSharedInfo(SI_DISC_TYPE) == SV_DVD_AUDIO)
{
if (_rDigest.fgResume == TRUE)
{
vDgstShowTypePage(DGST_TYPE_PAGE_DVD_AUDIO_PLAY);
}
else
{
vDgstShowTypePage(DGST_TYPE_PAGE_DVD_AUDIO_STOP);
}
}
else
#endif
{
if (_rDigest.fgResume == TRUE)
{
vDgstShowTypePage(DGST_TYPE_PAGE_DVD_PLAY);
}
else
{
vDgstShowTypePage(DGST_TYPE_PAGE_DVD_STOP);
}
}
}
else if (fgIsVcdPlay())
{
if (_rDigest.fgResume == TRUE)
{
vDgstShowTypePage(DGST_TYPE_PAGE_VCD_PLAY);
}
else
{
vDgstShowTypePage(DGST_TYPE_PAGE_VCD_STOP);
}
}
#ifdef MPS_DIGEST
// alfonso : for mps playing
else if (fgIsIsoPlay())
{
if (_rDigest.fgResume == TRUE)
{
vDgstShowTypePage(DGST_TYPE_PAGE_MPS_PLAY);
}
else
{
vDgstShowTypePage(DGST_TYPE_PAGE_MPS_STOP);
}
}
#endif /* MPS_DIGEST */
vDgstGotoTypeItem(0);
}
// *********************************************************************
// Function :
// Description :
// Parameter :
// Return :
// *********************************************************************
void vDgstTypeExit(void) large
{
vDeleteWB(WB_DGST_TYPE);
/* restore OSD mode */
vOsdShowWb(OSD_WB_RESTORE);
}
// *********************************************************************
// Function :
// Description :
// Parameter :
// Return :
// *********************************************************************
BOOL fgDgstTypeState(void) large
{
BOOL fgRet = TRUE;
BYTE bIdx, bDispIdx, bTypeValid;
switch (_bIRKey)
{
case IR_UP:
if (_rDigest.bCurItem > 0)
{
vDgstGotoTypeItem(_rDigest.bCurItem - 1);
}
break;
case IR_DOWN:
if (_rDigest.bCurItem + 1 < _rDigest.bSelNoMax)
{
vDgstGotoTypeItem(_rDigest.bCurItem + 1);
}
break;
case IR_ENTER:
case IR_PLAY:
case IR_PLAY_ENTER:
case IR_PLAY_PAUSE:
{
bDispIdx = 0;
bTypeValid = _rDigest.bTypeParm;
for (bIdx = 0; bIdx < prDgstTypeMenu[_rDigest.bPageNo].bNo; bIdx++)
{
if (bTypeValid & (1 << bIdx))
{
bDispIdx++;
if (bDispIdx == (_rDigest.bCurItem + 1))
{
break;
}
}
}
if ((bDispIdx > 0) && (bDispIdx <= _rDigest.bSelNoMax))
{
/* send UOP command first */
if (fgDgstTypeSelect((prDgstTypeMenu[_rDigest.bPageNo].prList)[bIdx].bType) == TRUE)
{
/* wait it return */
vDgstTypeExit();
/* wait UOP return */
vDgstInitInit(TRUE);
break;
}
}
/* range check invalid, force escape input state */
vSetExitInputState();
break;
}
case IR_TIME_OUT:
vSetExitInputState();
break;
default:
{
fgRet = FALSE;
break;
}
} /* switch (_bIRKey) */
return (fgRet);
}
// *********************************************************************
// Button Select Sub-state Functions
// *********************************************************************
// *********************************************************************
// Function :
// Description :
// Parameter :
// Return :
// *********************************************************************
static code WORD pwDgstMenuPageType[DGST_TYPE_MAX] = {
0xffff, /* DGST_TYPE_NONE */
OSD_MSG_TYPE_TRK, /* DGST_TYPE_TRACK */
OSD_MSG_TYPE_TTL, /* DGST_TYPE_TITLE */
OSD_MSG_TYPE_PTT, /* DGST_TYPE_CHAPTER */
OSD_MSG_TYPE_TIME_DISC, /* DGST_TYPE_TIME_DISC */
OSD_MSG_TYPE_TIME_TRK, /* DGST_TYPE_TIME_TRK */
OSD_MSG_TYPE_TIME_TTL, /* DGST_TYPE_TIME_TTL */
OSD_MSG_TYPE_TIME_PTT, /* DGST_TYPE_TIME_PTT */
OSD_MSG_TYPE_BOOKMARK, /* DGST_TYPE_BOOKMARK */
OSD_MSG_TYPE_PROGRAM, /* DGST_TYPE_PROGRAM */
OSD_MSG_TYPE_STROBE, /* DGST_TYPE_STROBE */
#ifdef SUPPORT_DVD_AUDIO
0xffff, /* DA_DGST_TYPE_NONE */
OSD_MSG_DGST_GROUP, /* DA_DGST_TYPE_GROUP */
OSD_MSG_DGST_TRACK, /* DA_DGST_TYPE_TRAC */
OSD_MSG_DGST_TIME_GRP, /* DA_DGST_TYPE_TIME_GRP */
OSD_MSG_DGST_TIME_TRK, /* DA_DGST_TYPE_TIME_TRK */
OSD_MSG_DGST_INDEX, /* DA_DGST_TYPE_INDEX */
OSD_MSG_DGST_SPOTLIGHT, /* DA_DGST_TYPE_SPOTLIGHT */
OSD_MSG_TYPE_PROGRAM /* DA_DGST_TYPE_BOOKMARK */
#endif
};
void vDgstShowMenuPageType(void) large
{
BYTE bParm = 0;
WORD wMsg = 0xffff;
if (_rDigest.bType < DGST_TYPE_MAX)
{
wMsg = pwDgstMenuPageType[_rDigest.bType];
}
switch (_rDigest.bType)
{
case DGST_TYPE_CHAPTER:
case DGST_TYPE_TIME_TTL:
bParm = bSharedInfo(SI_TT_NO);
break;
case DGST_TYPE_TIME_PTT:
bParm = bSharedInfo(SI_CHAP_NO);
break;
case DGST_TYPE_TIME_TRK:
bParm = bSharedInfo(SI_TRACK_NO);
break;
#ifdef SUPPORT_DVD_AUDIO
case DA_DGST_TYPE_GROUP:
case DA_DGST_TYPE_TIME_GRP:
bParm = bSharedInfo(SI_GRP_NO);
break;
case DA_DGST_TYPE_TRACK:
case DA_DGST_TYPE_TIME_TRK:
bParm = bSharedInfo(SI_TRACK_NO);
break;
#endif
#if 0
case DA_DGST_TYPE_INDEX:
case DA_DGST_TYPE_SPOTLIGHT:
case DA_DGST_TYPE_BOOKMARK:
#endif
default:
break;
}
vSetMsgCol4(WB_DGST_MENU, 0, 0, 0, 3);
vOsdShowDgstMenuType(wMsg, bParm);
}
// *********************************************************************
// Function :
// Description :
// Parameter :
// Return :
// *********************************************************************
void vDgstShowMenuPageButton(void) large
{
vSetBtnCol(WB_DGST_MENU, 15, 0, 2, 3);
#ifdef NUI_OSD_STYLE
vSetMsgCol4(WB_DGST_MENU, 15, 0, 2, 3);
#else
vSetMsgCol4(WB_DGST_MENU, 15, 0, 0, 3);
#endif
_wStartY = 2 * LINE_HEIGHT ;
_wEndY = 3 * LINE_HEIGHT-1;
/* PREV button */
_wStartX = 0.5 * EFONT_WIDTH;
_wEndX = 7 * EFONT_WIDTH;
if (_rDigest.bPageNo > 0)
{
//vOsdPosPaste(OSD_POS_DGST_BTN_1, OSD_MSG_PREV_PAGE);
vCreateMsgButton(WB_DGST_MENU, DGST_MENU_BTN_PREV, 0, OSD_MSG_PREV_PAGE, 10, 0);
vUnselButton(WB_DGST_MENU, DGST_MENU_BTN_PREV);
_rDigest.fgPrevValid = TRUE;
}
else
{
//vOsdPosClear(OSD_POS_DGST_BTN_1);
vRectangle(WB_DGST_MENU, 0, 0, 1, 0);
_rDigest.fgPrevValid = FALSE;
}
/* EXIT button */
//vOsdPosPaste(OSD_POS_DGST_BTN_2, OSD_MSG_EXIT);
_wStartX = 7.5 * EFONT_WIDTH;
_wEndX = _wStartX + 6 * EFONT_WIDTH;
vCreateMsgButton(WB_DGST_MENU, DGST_MENU_BTN_EXIT, 0, OSD_MSG_EXIT, 10, 0);
vUnselButton(WB_DGST_MENU, DGST_MENU_BTN_EXIT);
/* MENU button */
//vOsdPosPaste(OSD_POS_DGST_BTN_3, OSD_MSG_MENU);
_wStartX = 14.5 * EFONT_WIDTH;
_wEndX = _wStartX + 6 * EFONT_WIDTH;
vCreateMsgButton(WB_DGST_MENU, DGST_MENU_BTN_MENU, 0, OSD_MSG_MENU, 10, 0);
vUnselButton(WB_DGST_MENU, DGST_MENU_BTN_MENU);
/* NEXT button */
#ifdef NUI_OSD_STYLE
_wStartX = 20.5 * EFONT_WIDTH;
#else
_wStartX = 21.5 * EFONT_WIDTH;
#endif
_wEndX = _wStartX + 6.5 * EFONT_WIDTH;
if ((_rDigest.bPageNo + 1) * DGST_VIEW_NS < _rDigest.bSelNoMax)
{
//vOsdPosPaste(OSD_POS_DGST_BTN_4, OSD_MSG_NEXT_PAGE);
vCreateMsgButton(WB_DGST_MENU, DGST_MENU_BTN_NEXT, 0, OSD_MSG_NEXT_PAGE, 10, 0);
vUnselButton(WB_DGST_MENU, DGST_MENU_BTN_NEXT);
_rDigest.fgNextValid = TRUE;
}
else
{
//vOsdPosClear(OSD_POS_DGST_BTN_4);
vRectangle(WB_DGST_MENU, 0, 0, 1, 0);
_rDigest.fgNextValid = FALSE;
}
}
// *********************************************************************
// Function :
// Description :
// Parameter :
// Return :
// *********************************************************************
void vDgstMenuGotoItem(BYTE bItem) large
{
vOsdSetSt(OSD_ST_BATCH);//Gapha:When playback DVD,enter digest, the osd can't display completely at once.
#ifdef NUI_OSD_STYLE
vSetMsgCol4(WB_DGST_MENU, 0, 0, 2, 3);
#else
vSetMsgCol4(WB_DGST_MENU, 0, 0, 0, 3);
#endif
switch(_rDigest.bCurItem)
{
case DGST_MENU_BTN_PREV:
if (_rDigest.fgPrevValid != FALSE)
{
vUnselButton(WB_DGST_MENU, _rDigest.bCurItem);
}
break;
case DGST_MENU_BTN_NEXT:
if (_rDigest.fgNextValid != FALSE)
{
vUnselButton(WB_DGST_MENU, _rDigest.bCurItem);
}
break;
case DGST_MENU_BTN_EXIT:
case DGST_MENU_BTN_MENU:
default:
vUnselButton(WB_DGST_MENU, _rDigest.bCurItem);
}
if (bItem == DGST_MENU_BTN_PREV)
{
if (_rDigest.fgPrevValid == TRUE)
{
_rDigest.bCurItem = DGST_MENU_BTN_PREV;
}
else
{
_rDigest.bCurItem = DGST_MENU_BTN_PREV + 1;
}
}
else if (bItem >= DGST_MENU_BTN_NEXT)
{
if (_rDigest.fgNextValid == TRUE)
{
_rDigest.bCurItem = DGST_MENU_BTN_NEXT;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -