📄 fljview.c
字号:
// - draw the buttons on digest menu
vFlJvDrawDgtBtns(bEepromReadByte(OSD_LANG_POSITION));
#endif
// - control flags
_bFlJvOn = FLJV_OBJ_MV;
_fgPcdFirst = TRUE;
#if defined(TRANSITION_SPECIAL_EFFECT)
_bFlJvTransEff = 0;
vSetSharedInfo(SI_JPG_TRANSITION_EFFECT, _rFlJvTransEff[_bFlJvTransEff].bCode);
#endif
return TRUE;
}
/**
* 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);
#if (DRAM_SZ == DRAM_2M) || defined(USE_DRAM_CFG1)
vOsdSetMemBlk(OSD_MEM_BLK_DYNAMIC, OSD_MEM_DEFAULT);
#endif
// - 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
#ifndef HILI_USE_OSD
vHideHL(FLDGTMN_HILIT);
#endif
#ifdef FLJV_SHOW_DEC_STATUS
// 20050524, if user press stop or menu key when decoding is still shown, it'll not be cleared. And it'll appear when MPS is playing
vOsdPosClear(OSD_POS_PBC_2) ;
#endif
// - 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
#if (DRAM_SZ == DRAM_2M) || defined(USE_DRAM_CFG1)
vOsdSetMemBlk(OSD_MEM_BLK_STATIC, OSD_MEM_DEFAULT);
#endif
vOsdShowWb(OSD_WB_RESET);
#ifdef JPEG_DDISC_DIGEST_ENABLE
vCreateWBEx(FL_DGTMN_WB);
vSetTransEn(FL_DGTMN_WB, 0);
// - draw the buttons on digest menu
vFlJvDrawDgtBtns(bEepromReadByte(OSD_LANG_POSITION));
#endif
#endif
_rOsdStateCtx.bTimeType = OSD_SHOW_DISABLE;
//vEnableWB(WB_OVERLAY_MSG2);
#ifndef HILI_USE_OSD
// - set hilit color
vSetHLCol(FLDGTMN_HILIT, FLDGTMN_HILIT_COL);
#endif
#if 1//(DRAM_SZ != DRAM_2M)
#ifdef SUPPORT_DRM
if ((!fgIsInSetupMenu())&&(!fgIsInDRMShow()))
#else
if (!fgIsInSetupMenu())
#endif
{
vEnableWB(WB_NORMAL_HEAD1);
vEnableWB(WB_NORMAL_HEAD2);
}
#endif
#ifdef JPEG_DDISC_DIGEST_ENABLE
if (bSharedInfo(SI_JPG_MODE) == JPEGMOD_DIGEST)
{
vDisableWB(WB_NORMAL_VOL);
//vDeleteWB(WB_NORMAL_VOL);
vEnableWB(FL_DGTMN_WB);
vFlJvDgtMnHil();
}
#endif
#if 1//defined(TRANSITION_SPECIAL_EFFECT)
// - 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);
#endif
// - set the foreground module as JPEG DECODER
vFlCtrlSetFg(FLMD_JPEG_DECODER);
while(bSharedInfo(SI_DDISC_PB_MODULE) != SV_DDISC_MODULE_JPG);
#ifdef SUPPORT_PCD
if (bSharedInfo(SI_DISC_TYPE) == SV_PCD)
{
if (bSharedInfo(SI_JPG_MODE) != JPEGMOD_DIGEST)
{
vSetSharedInfo(SI_PREVIEW_MODE, FALSE);
if(_fgPcdFirst)
{
vSendUopCmd(UOP_PLAY, 0x0, 0x0, 0x0);
_fgPcdFirst = FALSE;
}
}
if (fgIsInSetupMenu())
{
// - pause jpg decoding
vSendUopCmd(UOP_PAUSE, 0x01, 0x01, 0x00);
//vFsMenuFreezeDec(TRUE);
}
}
#endif
_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
// 20050527, PL00001050, if in select, don't show decoding.
if (_rSearchStateCtx.bType != SEARCH_ISO_FILE)
vOsdPosShow(OSD_POS_PBC_2, OSD_MSG_JPG_DECODING, OSD_NO_DISAPPEAR);
#endif
vFlUpdateVfd(FALSE);
}
#ifdef JPEG_DDISC_DIGEST_ENABLE
else if (bMode == JPEGMOD_DIGEST)
{
if (_bFlJvDgtItemIdx == 0)
{
vFlJvDgtMnMnHil();
}
}
#endif
break;
case JPEGSTT_DEC_FSH:
case JPEGSTT_DEC_ABT:
if ((bMode == JPEGMOD_NORMAL) || (bMode == JPEGMOD_SLIDESHOW))
{
#ifdef FLJV_SHOW_DEC_STATUS
// 20050527, PL00001050, if in select, don't show decoding.
if (_rSearchStateCtx.bType != SEARCH_ISO_FILE)
// vOsdPosShow(OSD_POS_PBC_2, OSD_MSG_JPG_DECODING, 1);
vOsdPosClear(OSD_POS_PBC_2) ; // 20050511, clear the OSD immediately when decoding finished
#endif
}
#ifdef JPEG_DDISC_DIGEST_ENABLE
else if (bMode == JPEGMOD_DIGEST)
{
// - TODO: do nothing here
}
break;
#endif
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;
#ifdef JPEG_DDISC_DIGEST_ENABLE
case SI_JPG_MODE:
if (FL_PARM1(_dwIrDoneParm) == JPEGMOD_DIGEST)
{
vFlJvShowDgtMn();
}
break;
#endif
case SI_JPG_SLIDE_SHOW_DONE:
#ifdef JPEG_DDISC_DIGEST_ENABLE
if (bSharedInfo(SI_DISC_TYPE) == SV_PCD)
{
// - for PCD, turn on digest mode
vFlJvDgtOn();
}
else
#endif
{
// - 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);
//if (fgFlClLock(FL_CMDPATH_RPLC_CMDTGT))//cl 0512 test
vFlSetCmdTarget(FL_CMD_TARGET_MENU);
}
break;
case SI_DDISC_PB_MODULE:
break;
case SI_JPG_ROTATE_PAN_ACK:
bTemp = bSharedInfo(SI_JPG_ROTATE_PAN_ACK);
#ifdef FLJV_SHOW_ROTATE_PAN_MSG
if ((bTemp &0xF0) == 0x10) // JPG_ACK_ROTATING
{
vFlShowError(OSD_POS_ERROR, OSD_MSG_ROTATING, 4);
// 20050421, IS00002562, set to pause mode when rotate, so that play/pause key can work.
_bFlVdoPbcStt = SV_PAUSE;
}
else
{
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;
}
}
#else
if ((bTemp &0xF0) == 0x10) // JPG_ACK_ROTATING
{
// 20050421, IS00002562, set to pause mode when rotate, so that play/pause key can work.
_bFlVdoPbcStt = SV_PAUSE;
}
#endif
break;
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--;
#ifdef JPEG_DDISC_DIGEST_ENABLE
if (bSharedInfo(SI_JPG_MODE) == JPEGMOD_DIGEST)
{
if (wIdx > (bSharedInfo(SI_THUMBNAIL_16_IDX_HI)))
return TRUE;
wIdx = wFlJvGetDgtItemIdx(wIdx);
}
#endif
_wCurrItem = wIdx;
_bFlMnCurItemIdx = wIdx % FLMN_ITEM_N;
if (fgFlClLock(FL_CMDPATH_SEL_0))
{
fgFlCmdGetItems(_bFlMnListId, wIdx - _bFlMnCurItemIdx);//, FLCMD_RET_OP_SEL);
}
}
// vSendUopCmd(UOP_STOP, SV_JPG_STOP_ALL_STATE, 0x0, 0x0);
//vFlCmdClickItem(_bFlMnListId, wIdx, FLCMD_RET_OP_CMDACK);
}
return TRUE;
}
#ifdef JPEG_DDISC_DIGEST_ENABLE
/**
* 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
#ifdef JPEG_DDISC_DIGEST_ENABLE
if (FL_PARM1(_dwIrDoneParm) != JPEGMOD_DIGEST)
{
// - bury the menu
vFlJvBuryDgtMn();
vEnableWB(WB_NORMAL_VOL);
}
break;
#endif
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -