📄 fljview.c
字号:
}
/**
* Leave the object (called when we try to move the focus away).
*/
WORD wFlJvLeave(BOOL bSuicide) large
{
WORD wItem;
if (_wCurrItem != 0xFFFF)
wItem = _wCurrItem;
else
wItem = (WORD)bSharedInfo(SI_JPG_ITEM_IDX_HI) * 256 + bSharedInfo(SI_JPG_ITEM_IDX_LO);
// - 1. stop the decoding if the decoder is going
#if 0
if (bSuicide)
{
// vSendUopCmd(UOP_STOP, SV_JPG_STOP_ALL_STATE, 0x0, 0x0);
// vFlMnSetUopRetJob(UOP_STOP, UOP_RET_CHG_CMDTGT);
vFlSendUopCmd(UOP_STOP, SV_JPG_STOP_ALL_STATE, UOP_RET_CHG_CMDTGT);
}
#endif
if (bSuicide)
{
vSendUopCmd(UOP_STOP, SV_JPG_STOP_ALL_STATE, 0x0, 0x0);
}
// - 2. hide the hilit for digest menu
vHideHL(FLDGTMN_HILIT);
// - TOFIX: the index may be ambigous to reflect the current item
return (wItem);
}
/**
* Enter the object (called when we try to move the focus in).
*/
void vFlJvEnter(WORD wItem) large
{
#ifdef WB_ALLOC_MIN
vOsdShowWb(OSD_WB_RESET);
vCreateWBEx(FL_DGTMN_WB);
vSetTransEn(FL_DGTMN_WB, 0);
// - draw the buttons on digest menu
vFlJvDrawDgtBtns(bEepromReadByte(OSD_LANG_POSITION));
#endif
_rOsdStateCtx.bTimeType = OSD_SHOW_DISABLE;
//vEnableWB(WB_OVERLAY_MSG2);
// - set hilit color
vSetHLCol(FLDGTMN_HILIT, FLDGTMN_HILIT_COL);
if (!fgIsInSetupMenu())
{
vEnableWB(WB_NORMAL_HEAD1);
vEnableWB(WB_NORMAL_HEAD2);
}
if (bSharedInfo(SI_JPG_MODE) == JPEGMOD_DIGEST)
{
vDisableWB(WB_NORMAL_VOL);
//vDeleteWB(WB_NORMAL_VOL);
vEnableWB(FL_DGTMN_WB);
vFlJvDgtMnHil();
}
// - set shared info to config RISC
vSetSharedInfo(SI_PREVIEW_MODE, FALSE);
vSetSharedInfo(SI_JPG_ROTATE_AUTO_SLIDE, (0x80|FL_JPEG_SLIDESHOW_INTERVAL));
//vSetSharedInfo(SI_JPG_DIGEST_BG, 0x1);
// - set the foreground module as JPEG DECODER
vFlCtrlSetFg(FLMD_JPEG_DECODER);
while(bSharedInfo(SI_DDISC_PB_MODULE) != SV_DDISC_MODULE_JPG);
if (bSharedInfo(SI_DISC_TYPE) == SV_PCD)
{
if (bSharedInfo(SI_JPG_MODE) != JPEGMOD_DIGEST)
{
vSetSharedInfo(SI_PREVIEW_MODE, FALSE);
vSendUopCmd(UOP_PLAY, 0x0, 0x0, 0x0);
}
if (fgIsInSetupMenu())
{
// - pause jpg decoding
vSendUopCmd(UOP_PAUSE, 0x01, 0x01, 0x00);
//vFsMenuFreezeDec(TRUE);
}
}
_bFlVdoPbcStt = SV_PLAY;
if (_rFlCmdLock.bPath != FL_CMDPATH_SEL_1)
{
vFlClRls();
}
return;
}
/**
* We send a click item command from object "jpeg viewer" and handle the
* return here.
*/
static void vFlJvRetClickItem(void) large
{
vFlCmdDone();
vFlClRls();
return;
}
/**
* Handle the JPEG state change notification.
*/
static void vFlJvChgJpgState(BYTE bStt) large
{
WORD wIdx;
BYTE bMode;
// - get the index of the current item of JPEG module and
// the operation mode
bLoByte(wIdx) = bSharedInfo(SI_JPG_ITEM_IDX_LO);
bHiByte(wIdx) = bSharedInfo(SI_JPG_ITEM_IDX_HI);
bMode = bSharedInfo(SI_JPG_MODE);
switch (bStt)
{
case JPEGSTT_DEC_STRT:
if ((bMode == JPEGMOD_NORMAL) || (bMode == JPEGMOD_SLIDESHOW))
{
#ifdef FLJV_SHOW_DEC_STATUS
vOsdPosShow(OSD_POS_PBC_2, OSD_MSG_JPG_DECODING, OSD_NO_DISAPPEAR);
#endif
vFlUpdateVfd(TRUE);//10/15amFALSE);
}
else if (bMode == JPEGMOD_DIGEST)
{
if (_bFlJvDgtItemIdx == 0)
{
vFlJvDgtMnMnHil();
}
}
break;
case JPEGSTT_DEC_FSH:
case JPEGSTT_DEC_ABT:
if (bMode == JPEGMOD_NORMAL)
{
#ifdef FLJV_SHOW_DEC_STATUS
vOsdPosShow(OSD_POS_PBC_2, OSD_MSG_JPG_DECODING, 1);
#endif
}
else if (bMode == JPEGMOD_DIGEST)
{
// - TODO: do nothing here
}
break;
case JPEGSTT_DEC_ERR:
break;
default:
// - wrong case
break;
}
return;
}
/**
* IR_CMD_DONE handler of "JVIEW MAIN VIDEO".
*/
BOOL fgFlJvMvIrCmdDoneHdr(void) large
{
BYTE bTemp;
if (FL_ACK(_dwIrDoneParm) == FL_CMD_ASSERT)
{
// - get file list command assertion here
switch(bSharedInfo(FL_CMD_BLK_SA))
{
case FLCMD_CLICK_ITEM:
vFlJvRetClickItem();
break;
default:
// - TODO: other case
break;
}
}
else
{
// - notification
switch (FL_ACK(_dwIrDoneParm))
{
case SI_MP3_STT:
_fgFlMdChg = TRUE;
break;
case SI_JPG_STT:
vFlJvChgJpgState(FL_PARM1(_dwIrDoneParm));
break;
case SI_JPG_MODE:
if (FL_PARM1(_dwIrDoneParm) == JPEGMOD_DIGEST)
{
vFlJvShowDgtMn();
}
break;
case SI_JPG_SLIDE_SHOW_DONE:
if (bSharedInfo(SI_DISC_TYPE) == SV_PCD)
{
// - for PCD, turn on digest mode
vFlJvDgtOn();
}
else
{
// - for DATA disc, stop the module totally and change command target
// back to file menu
vSendUopCmd(UOP_STOP, SV_JPG_STOP_ALL_STATE, 0x0, 0x0);
vFlSetCmdTarget(FL_CMD_TARGET_MENU);
}
break;
case SI_DDISC_PB_MODULE:
break;
#ifdef FLJV_SHOW_ROTATE_PAN_MSG
case SI_JPG_ROTATE_PAN_ACK:
bTemp = bSharedInfo(SI_JPG_ROTATE_PAN_ACK);
if ((bTemp &0xF0) == 0x10) // JPG_ACK_ROTATING
{
#ifdef BBK_MENU//to show diffrent osd for CCLKW/CLKW/INVERT/MIRROR
if (((bSharedInfo(SI_JPG_ROTATE_PAN_ACK) & 0xF) == SV_LEFT) || ((bSharedInfo(SI_JPG_ROTATE_PAN_ACK) & 0xF) == SV_RIGHT))
{
vOsdPosShow(OSD_POS_ERROR, OSD_MSG_BBK_ROTATING_90, 4);
}
else
{
vOsdPosShow(OSD_POS_ERROR, OSD_MSG_BBK_ROTATING_180, 4);
}
#else
vFlShowError(OSD_POS_ERROR, OSD_MSG_ROTATING, 4);
#endif
}
else
{
#ifndef BBK_MENU
switch (bTemp & 0x0F)
{
case SV_UP:
vFlShowError(OSD_POS_ERROR, OSD_MSG_PAN_UP, 4);
break;
case SV_DOWN:
vFlShowError(OSD_POS_ERROR, OSD_MSG_PAN_DOWN, 4);
break;
case SV_LEFT:
vFlShowError(OSD_POS_ERROR, OSD_MSG_PAN_LEFT, 4);
break;
case SV_RIGHT:
vFlShowError(OSD_POS_ERROR, OSD_MSG_PAN_RIGHT, 4);
break;
}
#endif
}
break;
#endif
case FL_CMD_ASSERT:
// - "FS LIST" command ack, this should not happen here
default:
// - other notification and command ack.
return FALSE;
}
}
return TRUE;
}
static BOOL fgFlJvOnIrSelDone(void) large
{
WORD wIdx;
WORD wFldrNs;
wIdx = (WORD) _rNumInStateCtx.bDig[0] * 100 + _rNumInStateCtx.bDig[1] * 10 + _rNumInStateCtx.bDig[2];
if (_wFlMnListLen >= 1000)
{
wIdx = wIdx * 10 + _rNumInStateCtx.bDig[3];
}
if ((wIdx != 0) && (wIdx <= _wFlMnListLen))
{
#if 0
if (fgIsPcdPlay())
{
vFlCmdClickItem(_bFlMnListId, wIdx);
}
else
#endif
{
wIdx--;
if (bSharedInfo(SI_JPG_MODE) == JPEGMOD_DIGEST)
{
if (wIdx > (bSharedInfo(SI_THUMBNAIL_16_IDX_HI)))
return TRUE;
wIdx = wFlJvGetDgtItemIdx(wIdx);
}
_wCurrItem = wIdx;
_bFlMnCurItemIdx = wIdx % FLMN_ITEM_N;
if (fgFlClLock(FL_CMDPATH_SEL_0))
{
fgFlCmdGetItems(_bFlMnListId, wIdx - _bFlMnCurItemIdx);//, FLCMD_RET_OP_SEL);
}
}
}
//10/18am bg
else
{
vOsdShowError(SV_ERR_INVALID_OPERATION, OSD_TIMEOUT_SHORT);
}
//18/18am end
return TRUE;
}
/**
* IR_CMD_DONE handler of object "JVIEWER DIGEST MENU".
*
* RETURN: the return value indicates if we grabbed this IR.
*/
BOOL fgFlJvDgtMnIrCmdDoneHdr(void) large
{
BYTE bItemNs;
if (FL_ACK(_dwIrDoneParm) == FL_CMD_ASSERT)
{
// - get file list command assertion here
switch(bSharedInfo(FL_CMD_BLK_SA))
{
case FLCMD_CLICK_ITEM:
vFlJvRetClickItem();
break;
default:
// - TODO: other case
break;
}
}
else
{
switch (FL_ACK(_dwIrDoneParm))
{
case SI_JPG_STT:
// - state of the JPEG module changed
if (FL_PARM1(_dwIrDoneParm) == JPEGSTT_DEC_STRT)
{
bItemNs = bSharedInfo(SI_THUMBNAIL_16_IDX_HI) + 1;
if (bItemNs == 1)
{
_bFlJvDgtItemIdx = 0;
_bFlJvDgtMnOn = FLJVDGTMN_OBJ_MN;
vFlJvDgtMnMnHil(); // - first time to hilit the item
}
// - read in the list index of the thumbnail item
//wFlJvGetDgtItemIdx(bItemNs - 1);
#if 0
// - when JPEG decoding starts under digest mode, increase the item
// number counter
_bFlJvDgtItemNs ++;
//if (_bFlJvDgtItemNs == 1)
if ((_bFlJvDgtItemNs % DGT_MN_NS) == 1)
vFlJvDgtMnMnHil(); // - first tme to hilit the item
// - read in the list index of the thumbnail item
vFlJvDgtRdIdx(_bFlJvDgtItemNs - 1);
#endif
}
break;
case SI_JPG_MODE:
// - the module back from digest mode
if (FL_PARM1(_dwIrDoneParm) != JPEGMOD_DIGEST)
{
// - bury the menu
vFlJvBuryDgtMn();
vEnableWB(WB_NORMAL_VOL);
}
break;
case SI_JPG_SLIDE_SHOW_DONE:
// - slide show done
//vOsdShowError(SV_ERR_GENERAL, FL_MSG_TIMEOUT);
break;
case FL_CMD_ASSERT:
// - "FS LIST" command ack, this should not happen here
default:
// - other notification and command ack.
return FALSE;
}
}
return TRUE;
}
#if 0 // - JACOB: for backup
BOOL fgFlJvDgtMnIrCmdDoneHdr(void) large
{
switch (FL_ACK(_dwIrDoneParm))
{
case SI_JPG_STT:
// - state of the JPEG module changed
if (FL_PARM1(_dwIrDoneParm) == JPEGSTT_DEC_STRT)
{
// - when JPEG decoding starts under digest mode, increase the item
// number counter
_bFlJvDgtItemNs ++;
if (_bFlJvDgtItemNs == 1)
vFlJvDgtMnMnHil(); // - first tme to hilit the item
// - read in the list index of the thumbnail item
vFlJvDgtRdIdx(_bFlJvDgtItemNs - 1);
}
break;
case SI_JPG_MODE:
// - the module back from digest mode
if (FL_PARM1(_dwIrDoneParm) != JPEGMOD_DIGEST)
{
// - bury the menu
vFlJvBuryDgtMn();
}
break;
case SI_JPG_SLIDE_SHOW_DONE:
// - slide show done
//vOsdShowError(SV_ERR_GENERAL, FL_MSG_TIMEOUT);
break;
case FL_CMD_ASSERT:
// - "FS LIST" command ack, this should not happen here
default:
// - other notification and command ack.
return FALSE;
}
return TRUE;
}
#endif //0
////////////////////////////////////////////////////////////////////////////////
// Jpeg View IR Key Handler
/**
* IR_ENTER handlder of "JVIEWER DIGEST MENU".
*/
void vFlJvDgtMnIrEnterHdr(void) large
{
switch (_bFlJvDgtMnOn)
{
case FLJVDGTMN_OBJ_MN:
// - select item from item menu
vSendUopCmd(UOP_DIGITAL_BTN, _bFlJvDgtItemIdx, 0x0, 0x0);
break;
case FLJVDGTMN_BTN_SS:
vSendUopCmd(UOP_PLAY, bSharedInfo(SI_THUMBNAIL_1_IDX_HI), bSharedInfo(SI_THUMBNAIL_1_IDX_LO), 0x00);
break;
case FLJVDGTMN_BTN_HP:
// - show help menu
vFlSetCmdTarget(FL_CMD_TARGET_HELP);
//vOsdShowError(SV_ERR_GENERAL, FL_MSG_TIMEOUT);
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -