⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fljview.c

📁 MTK 1389E SOURCE CODE
💻 C
📖 第 1 页 / 共 3 页
字号:
    //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;
  case FLJVDGTMN_BTN_NT:
    //_bFlJvDgtItemIdx = 0;
    //_bFlJvDgtMnOn = FLJVDGTMN_OBJ_MN;
    vSendUopCmd(UOP_NEXT, 0x0, 0x0, 0x0);
    break;
  case FLJVDGTMN_BTN_PV:
    //_bFlJvDgtItemIdx = 0;
    //_bFlJvDgtMnOn = FLJVDGTMN_OBJ_MN;
    vSendUopCmd(UOP_PREVIOUS, 0x0, 0x0, 0x0);
    break;
  default:
    // - error handling
    break;
  }

  return;
}
#endif //JPEG_DDISC_DIGEST_ENABLE
/**
 * General IR_TRANS_EFF handler of "JVIEW and JVIEW DIGEST MENU".
 */
static BOOL fgFlJvOnIrTransEff(void) large
{
#if defined(TRANSITION_SPECIAL_EFFECT)
   _bFlJvTransEff = (++_bFlJvTransEff) % FLJV_MAX_TRANS_EFF;
  vSetSharedInfo(SI_JPG_TRANSITION_EFFECT, _rFlJvTransEff[_bFlJvTransEff].bCode);
  vFlShowError(OSD_POS_ERROR, _rFlJvTransEff[_bFlJvTransEff].wMsg, 4);
#endif
  return TRUE;
}


static BOOL fgFlJvOnIrPlay(void) large
{
  //if (bSharedInfo(SI_PBC_STATE) == SV_PAUSE)
  if (_bFlVdoPbcStt == SV_PAUSE)
  {
    vSendUopCmd(UOP_PLAY, 0x00, bSharedInfo(SI_JPG_ITEM_IDX_LO), bSharedInfo(SI_JPG_ITEM_IDX_HI));
    _bFlVdoPbcStt = SV_PLAY ;   //nicle[04\07\27] fix jpeg pause once, can't pause anymore.
  }

  return TRUE;
}

/**
 * IR_PAUSE handler of "JVIEW".
 *
 * NOTE: PCD only. to stop the slide show but do _NOT_ show digest.
 */
static BOOL fgFlJvOnIrPause(void) large
{
#ifdef FLJV_PAUSE_PLAY_SHOW_NEXT
  WORD  wIdx, wTotal;
#endif
// 20050412, though SOPPORT_PCD is not defined, we still use INPUT_STATE_PCD_ZOOM for JPEG
//#if defined(SOPPORT_PCD)
  if (fgIsInputStateValid(INPUT_STATE_PCD_ZOOM))
  {
    vFlShowError(OSD_POS_ERROR, OSD_MSG_ERROR, OSD_TIMEOUT_SHORT); 
    return TRUE;
  }  
//#endif  
  if (_bFlVdoPbcStt == SV_PAUSE)
  {
#ifdef FLJV_PAUSE_PLAY_SHOW_NEXT
    wIdx = (WORD) bSharedInfo(SI_JPG_ITEM_IDX_HI) * 256 + (WORD) bSharedInfo(SI_JPG_ITEM_IDX_LO);
    // todo : check if wIdx is the last picture
    wIdx ++;
    vSendUopCmd(UOP_PLAY, 0x00, bLoByte(wIdx), bHiByte(wIdx));
#else
    vSendUopCmd(UOP_PLAY, 0x00, bSharedInfo(SI_JPG_ITEM_IDX_LO), bSharedInfo(SI_JPG_ITEM_IDX_HI));
#endif
    _bFlVdoPbcStt = SV_PLAY;
    return TRUE;
  }
  //else if (bSharedInfo(SI_PBC_STATE) == SV_PLAY)
  else if (_bFlVdoPbcStt == SV_PLAY)
  {
    vSendUopCmd(UOP_PAUSE, 0x0, 0x0, 0x0);
    _bFlVdoPbcStt = SV_PAUSE;
    return TRUE;
  }

  return FALSE;
}
#ifdef JPEG_DDISC_DIGEST_ENABLE
/**
 * IR_DIR (LEFT, RIGHT, UP and DOWN) handler of "JVIEW DIGEST MENU".
 */
void vFlJvDgtMnIrDirHdr(void) large
{
  switch (_bFlJvDgtMnOn)
  {
  case FLJVDGTMN_OBJ_MN:
    vFlJvDgtMnMnIrDirHdr();
    break;
  case FLJVDGTMN_BTN_SS:
  case FLJVDGTMN_BTN_HP:
  case FLJVDGTMN_BTN_NT:
  case FLJVDGTMN_BTN_PV:
    vFlJvDgtMnBtnsIrDirHdr();
    break;
  default:
    // - error handling
    break;
  }

  return;
}

/**
 * IR_DIR (LEFT, RIGHT, UP and DOWN) handler of "JVIEW DIGEST MENU ITEM MENU".
 *
 * NOTE: Adjust the global variable _bFlJvDgtItemIdx to indicate
 *   the current item.
 */
void vFlJvDgtMnMnIrDirHdr(void) large
{
  BYTE  bItemNs = bSharedInfo(SI_THUMBNAIL_16_IDX_HI) + 1; 
  
  switch (_bIRKey)
  {
  case IR_RIGHT:
    // - move to next right item
    _bFlJvDgtItemIdx ++;
    if ((_bFlJvDgtItemIdx % DGT_MN_X_DIM_NS) == 0)
      _bFlJvDgtItemIdx -= DGT_MN_X_DIM_NS;
    else if (_bFlJvDgtItemIdx >= bItemNs)
      _bFlJvDgtItemIdx -= (bItemNs % DGT_MN_X_DIM_NS);
    break;
  case IR_LEFT:
    // - move to next left item
    _bFlJvDgtItemIdx = ((_bFlJvDgtItemIdx % DGT_MN_X_DIM_NS) == 0) ? 
      (_bFlJvDgtItemIdx + (DGT_MN_X_DIM_NS - 1)) : 
        (_bFlJvDgtItemIdx - 1);
    if (_bFlJvDgtItemIdx >= bItemNs)
      _bFlJvDgtItemIdx = bItemNs -1;
      //_bFlJvDgtItemIdx -= (DGT_MN_NS - bItemNs);
    break;
  case IR_UP:
    // - move to upper item
    if (_bFlJvDgtItemIdx < DGT_MN_X_DIM_NS) // - first row
      // - move to function buttons
      _bFlJvDgtMnOn = FLJVDGTMN_BTN_SS;
    else
      _bFlJvDgtItemIdx -= DGT_MN_X_DIM_NS;
    break;
  case IR_DOWN:
    // - move to lower item
    if ((_bFlJvDgtItemIdx + DGT_MN_X_DIM_NS) >= bItemNs)
      _bFlJvDgtMnOn = FLJVDGTMN_BTN_SS;
    else
      _bFlJvDgtItemIdx += DGT_MN_X_DIM_NS;
    break;
  default:
    // - this should _NOT_ happen
    return;
  }

  vFlJvDgtMnHil();

  return;
}

/**
 * IR_DIR (LEFT, RIGHT, UP and DOWN) handler of "JVIEW DIGEST MENU BUTTONS".
 */
void vFlJvDgtMnBtnsIrDirHdr(void) large
{
  switch (_bIRKey)
  {
  case IR_RIGHT:
    // - move the next button
    if (_bFlJvDgtMnOn == FLJVDGTMN_BTN_SS)
      _bFlJvDgtMnOn = FLJVDGTMN_BTN_HP;
    else if (_bFlJvDgtMnOn == FLJVDGTMN_BTN_HP)
      _bFlJvDgtMnOn = FLJVDGTMN_BTN_PV;
    else if (_bFlJvDgtMnOn == FLJVDGTMN_BTN_PV)
      _bFlJvDgtMnOn = FLJVDGTMN_BTN_NT;
    else
      _bFlJvDgtMnOn = FLJVDGTMN_BTN_SS;
    break;
  case IR_LEFT:
    // - move to previous button
    if (_bFlJvDgtMnOn == FLJVDGTMN_BTN_SS)
      _bFlJvDgtMnOn = FLJVDGTMN_BTN_NT;
    else if (_bFlJvDgtMnOn == FLJVDGTMN_BTN_HP)
      _bFlJvDgtMnOn = FLJVDGTMN_BTN_SS;
    else if (_bFlJvDgtMnOn == FLJVDGTMN_BTN_PV)
      _bFlJvDgtMnOn = FLJVDGTMN_BTN_HP;
    else
      _bFlJvDgtMnOn = FLJVDGTMN_BTN_PV;
    break;
  case IR_UP:
  case IR_DOWN:
  default:
    // - move to menu
    _bFlJvDgtMnOn = FLJVDGTMN_OBJ_MN;
    break;
  }

  vFlJvDgtMnHil();

  return;
}
#endif
/**
 * Focus on object "MAIN VIDEO - JVIEWER".
 */

BOOL fgFlJvOnMv(void) large
{
  BOOL fgIsGrabbed = TRUE;

#ifndef JPEG_DDISC_DIGEST_ENABLE
  //if (bSharedInfo(SI_DISC_TYPE) != SV_PCD)//oneway 
  {
    if (_bIRKey == IR_STOP)
      _bIRKey = IR_ROOT_MENU;
  }
#endif
#if 0//oneway
  if (bSharedInfo(SI_DISC_TYPE) == SV_PCD)
  {
    if (_bIRKey == IR_ROOT_MENU)
      _bIRKey = IR_STOP;
  }  
#endif
  switch (_bIRKey)
  {
  case IR_CMD_DONE:
    fgIsGrabbed = fgFlJvMvIrCmdDoneHdr();
    break;
#ifdef JPEG_DDISC_DIGEST_ENABLE
  case IR_STOP:
    // - turn on digest menu
    vFlJvDgtOn();
    break;
#endif    
#if 0
  case IR_LEFT:
  case IR_RIGHT:
  case IR_UP:
  case IR_DOWN:
    fgIsGrabbed = FALSE;
    break;
#endif
  case IR_NEXT:
    vSendUopCmd(UOP_NEXT, 0, 0, 0);
    break;
  case IR_PREV:
    vSendUopCmd(UOP_PREVIOUS, 0, 0, 0);
    break;
  case IR_ROOT_MENU:
    // - back to file menu state
    fgIsGrabbed = TRUE;
    // - stop the JPEG module and turn back to "PBC_STOP_STATE"
    //      the JPEG module will go back to background and
    //      we will get the PB_MODULE notification
    //vSendUopCmd(UOP_STOP, SV_JPG_STOP_ALL_STATE, 0x0, 0x0);
    if (fgFlClLock(FL_CMDPATH_RPLC_CMDTGT))
      vFlSetCmdTarget(FL_CMD_TARGET_MENU);
    //vFlCtrlRefocus(IR_ROOT_MENU);
    break;
  case IR_PROGRAM:
    fgIsGrabbed = fgFlJvOnIrTransEff();
    break;
  case IR_AUD_KEY_PLUS:
  case IR_AUD_KEY_MINUS:
  case IR_MARK:  
  case IR_RANDOM:
#if 1
  case IR_MEMORY:
    vFlShowError(OSD_POS_ERROR, OSD_MSG_ERROR, OSD_TIMEOUT_SHORT);  
    fgIsGrabbed = TRUE;
    break;
#else
    fgIsGrabbed = fgFlJvOnIrTransEff();
    vOsdShowError(SV_ERR_INVALID_OPERATION, OSD_TIMEOUT_SHORT);
    break;
#endif    
  case IR_PLAY_ENTER:
  case IR_PLAY:
  case IR_ENTER:
  case IR_PLAY_PAUSE:
    fgIsGrabbed = fgFlJvOnIrPlay();
    break;
  case IR_PAUSE:
    fgIsGrabbed = fgFlJvOnIrPause();
    break;
  case IR_MUTE:
  case IR_FF:
  case IR_FR:
    #if 1//def JPG_INFO
    vFlShowError(OSD_POS_ERROR, OSD_MSG_ERROR, OSD_TIMEOUT_SHORT);  
    #endif
/*
    if (bSharedInfo(SI_DISC_TYPE) == SV_PCD)
      vFlShowError(OSD_POS_ERROR, SV_ERR_DISC_NOT_SUPPORT, OSD_TIMEOUT_SHORT);
    else
      vFlShowError(OSD_POS_ERROR, SV_ERR_GENERAL, OSD_TIMEOUT_SHORT);
*/
    fgIsGrabbed = TRUE;
    break;
  case IR_SELECT_DONE:
    fgIsGrabbed = fgFlJvOnIrSelDone();
    break;
  case IR_DISPLAY:
    break;
  default:
    fgIsGrabbed = FALSE;
    
    break;
  }

  return fgIsGrabbed;
}
#ifdef JPEG_DDISC_DIGEST_ENABLE
/**
 * Focus on JVIEW digest menu.
 */
BOOL fgFlJvOnDgtMn(void) large
{
  BOOL fgIsGrabbed = TRUE;

  switch (_bIRKey)
  {
  case IR_CMD_DONE:
    fgIsGrabbed = fgFlJvDgtMnIrCmdDoneHdr();
    break;
  case IR_PLAY:
  case IR_ENTER:
  case IR_PLAY_ENTER:  
  case IR_PLAY_PAUSE:  
    vFlJvDgtMnIrEnterHdr();
    break;
  case IR_SELECT_DONE:
    fgIsGrabbed = fgFlJvOnIrSelDone();
    break;
  case IR_STOP:
    break;
  case IR_LEFT:
  case IR_RIGHT:
  case IR_UP:
  case IR_DOWN:
    vFlJvDgtMnIrDirHdr();
    break;
  case IR_NEXT:
  case IR_PREV:
    //_bFlJvDgtItemIdx = 0;
    //_bFlJvDgtMnOn = FLJVDGTMN_OBJ_MN;
    fgIsGrabbed = FALSE;
    break;
  case IR_ROOT_MENU:
    if (bSharedInfo(SI_DISC_TYPE) != SV_PCD)
    {
      if (fgFlClLock(FL_CMDPATH_RPLC_CMDTGT))
      {
        vFlSetCmdTarget(FL_CMD_TARGET_MENU);
      }
    }
    else
    {
      vFlShowError(OSD_POS_ERROR, OSD_MSG_ERROR, OSD_TIMEOUT_SHORT);
    }  
    break;
  default:
    fgIsGrabbed = FALSE;
    break;
  }

  return fgIsGrabbed;
}
#endif
/**
 * IR dispatcher when the focus is on the object.
 */
BOOL fgFlOnJv(void) large
{
  BOOL fgIsGrabbed;

  switch (_bFlJvOn)
  {
  case FLJV_OBJ_MV:
    fgIsGrabbed = fgFlJvOnMv();
    break;
#ifdef JPEG_DDISC_DIGEST_ENABLE    
  case FLJV_OBJ_DGTMN:
    fgIsGrabbed = fgFlJvOnDgtMn();
    break;
#endif    
  default:
    fgIsGrabbed = FALSE;
    break;
  }

  // - the second level handler
  if (fgIsGrabbed == FALSE)
  {
    switch (_bIRKey)
    {
    case IR_CMD_DONE:
      fgIsGrabbed = TRUE;
      break;
    default:
      // - keep the fgIsGrabbed as "FALSE" to pass the IRs
      break;
    }
  }

  return fgIsGrabbed;
}
#ifdef JPEG_DDISC_DIGEST_ENABLE
void vFlJvChgLang(BYTE bLang) large
{
  vFlJvDrawDgtBtns(bLang);
}
#endif
#if 0
void vFlJvHandleUopRet(BYTE bUopId) large
{
  if (_bFlWaitUopRet == bUopId)
  {
    switch(bUopId)
    {
      
      case UOP_NEXT:
      case UOP_PREVIOUS:
//        _bFlJvDgtItemIdx = 0;
//        _bFlJvDgtMnOn = FLJVDGTMN_OBJ_MN;
        break;

/*
      case UOP_STOP:
        switch (_bFlUopRetJob)
        {
        }
        break;
*/
    }
  }
}
#endif

#endif  // #ifdef PLAYER_FLMENU

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -