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

📄 fljview.c

📁 mtk1389L latest sourcecode enjoy
💻 C
📖 第 1 页 / 共 3 页
字号:
      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, 0x00, bSharedInfo(SI_THUMBNAIL_1_IDX_LO), bSharedInfo(SI_THUMBNAIL_1_IDX_HI));
    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:
  case FLJVDGTMN_BTN_PV:
    //_bFlJvDgtItemIdx = 0;
    //_bFlJvDgtMnOn = FLJVDGTMN_OBJ_MN;
/*
Mark it by Bright_liu 2005/09/12/, for CQ(PL00001222):
*/
#if  0  // #ifdef HILI_USE_OSD
    // - Clean the OSD Highlight of SS/HELP MENU/PREV/NEXT.
    _wStartX = DGT_BTN_SS_L;
    _wEndX = DGT_BTN_SS_L + DGT_BTN_SS_W + DGT_BTN_HP_W + DGT_BTN_PV_W 
             + DGT_BTN_NT_W + 3*DGT_BTN_H_GAP + DGT_BTN_HL_RB;
    _wStartY = DGT_BTN_T;
    _wEndY = _wStartY + DGT_BTN_PV_H;
    vChgColRep(FL_DGTMN_WB, FLJVDGTMN_BTN_COLOR, 0);    
#endif
    if (_bFlJvDgtMnOn == FLJVDGTMN_BTN_NT)
      vSendUopCmd(UOP_NEXT, 0x0, 0x0, 0x0);
    else
      vSendUopCmd(UOP_PREVIOUS, 0x0, 0x0, 0x0);
    break;
  default:
    // - error handling
    break;
  }
}

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

  return TRUE;
}


static BOOL fgFlJvOnIrPlay(void) large
{
  if (fgIsInputStateValid(INPUT_STATE_PCD_ZOOM))
  {
    vFlShowError(OSD_POS_ERROR, OSD_MSG_ERROR, OSD_TIMEOUT_SHORT);
    return TRUE;
  }

  if (_bFlVdoPbcStt == SV_PAUSE)
  {
#ifdef MT1389_REV_HD
    // - Resume to decoding.
    vSendUopCmd(UOP_PLAY, 0x0, 0x0, 0x0);
#else    
    vSendUopCmd(UOP_PLAY, 0x00, bSharedInfo(SI_JPG_ITEM_IDX_LO), bSharedInfo(SI_JPG_ITEM_IDX_HI));
#endif
    _bFlVdoPbcStt = SV_PLAY;
  }
  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

  if (fgIsInputStateValid(INPUT_STATE_PCD_ZOOM))
  {
    vFlShowError(OSD_POS_ERROR, OSD_MSG_ERROR, OSD_TIMEOUT_SHORT);
    return TRUE;
  }

  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
#ifdef MT1389_REV_HD
    vSendUopCmd(UOP_PAUSE, 0x0, 0x02, 0x0);
#else
    vSendUopCmd(UOP_PLAY, 0x00, bSharedInfo(SI_JPG_ITEM_IDX_LO), bSharedInfo(SI_JPG_ITEM_IDX_HI));
#endif    
#endif
    _bFlVdoPbcStt = SV_PLAY;
    return TRUE;
  }
  //else if (bSharedInfo(SI_PBC_STATE) == SV_PLAY)
  else if (_bFlVdoPbcStt == SV_PLAY)
  {
#ifdef MT1389_REV_HD
    vSendUopCmd(UOP_PAUSE, 0x0, 0x01, 0x0);
#else    
    vSendUopCmd(UOP_PAUSE, 0x0, 0x0, 0x0);
#endif    
    _bFlVdoPbcStt = SV_PAUSE;
    return TRUE;
  }

  return FALSE;
}

#ifdef SUPPORT_EMD
static BOOL fgFlJvOnIrCopy(void) large
{
  DWRD  dwAddr;
  BYTE  bLen;
  //WORD  wPos;

  if (!_fgFlSrcSet)
  {
    if (fgFlClLock(FL_CMDPATH_MV))
    {
    #if 0
      wPos = FL_ITEM_FIELD(_bFlMnCurItemIdx);
      dwAddr = dwMakeDWord(wPos);

      vFlCmdAddItem(FL_ADD_FILE_TO_CB,
                    wFlGetListBaseDir(_bFlMnListId), dwAddr, bSharedInfo(wPos + 4), 0);
    #endif

      dwAddr = dwMakeDWord(SI_JPG_ITEM_INFO_B1);
      dwAddr += 4;
      bLen = bReadDRAMTbl(bLoByte(wHiWord(dwAddr)), wLoWord(dwAddr));
      dwAddr++;

      vFlCmdAddItem(FL_ADD_FILE_TO_CB,
                    wFlGetListBaseDir(_bFlMnListId), dwAddr, bLen, 0);
    }
  }
  else
  {
    if (fgFlClLock(FL_CMDPATH_MV))
    {
      vFlCmdAddItem(FL_ADD_CB_TO_FILE,
                    wFlGetListBaseDir(_bFlMnListId), 0, 0,0);
    }
  }

  return TRUE;
}

static BOOL fgFlJvOnIrDelete(void) large
{
  return TRUE;
}
#endif

/**
 * 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;
}

/**
 * Focus on object "MAIN VIDEO - JVIEWER".
 */
BOOL fgFlJvOnMv(void) large
{
  BYTE  i;
  BOOL  fgIsGrabbed = TRUE;

#ifndef JPEG_DDISC_DIGEST_ENABLE
  if (bSharedInfo(SI_DISC_TYPE) != SV_PCD)
  {
    if (_bIRKey == IR_STOP)
      _bIRKey = IR_ROOT_MENU;
  }
#endif

  if (bSharedInfo(SI_DISC_TYPE) == SV_PCD)
  {
    if (_bIRKey == IR_ROOT_MENU)
      _bIRKey = IR_STOP;
  }


  for (i = 0; i <  sizeof(_rFlJvIrHandler) / sizeof(_rFlJvIrHandler[0]); i++)
  {
    if (_bIRKey == _rFlJvIrHandler[i].bIrKey)
    {
      fgIsGrabbed = _rFlJvIrHandler[i].pHandler();
      return fgIsGrabbed;
    }
  }

  switch (_bIRKey)
  {
#if 0
  case IR_CMD_DONE:
    fgIsGrabbed = fgFlJvMvIrCmdDoneHdr();
    break;
  case IR_STOP:
    // - turn on digest menu
    fgIsGrabbed = fgFlJvDgtOn();
    break;
#endif
#if 0
  case IR_LEFT:
  case IR_RIGHT:
  case IR_UP:
  case IR_DOWN:
    fgIsGrabbed = FALSE;
    break;
#endif
  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;
#if 0
  case IR_PROGRAM:
    fgIsGrabbed = fgFlJvOnIrTransEff();
    break;
  case IR_PLAY_ENTER:
  case IR_PLAY:
  case IR_ENTER:
  case IR_PLAY_PAUSE:
    fgIsGrabbed = fgFlJvOnIrPlay();
    break;
  case IR_PAUSE:
    fgIsGrabbed = fgFlJvOnIrPause();
    break;
#endif
  case IR_FF:
  case IR_FR:
    vFlShowError(OSD_POS_ERROR, OSD_MSG_ERROR, OSD_TIMEOUT_SHORT);
/*
    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;
#if 0
  case IR_SELECT_DONE:
    fgIsGrabbed = fgFlJvOnIrSelDone();
    break;
#endif

#ifdef SUPPORT_EMD
  case IR_COPY:
    fgIsGrabbed = fgFlJvOnIrCopy();
    break;
  case IR_DELETE:
    fgIsGrabbed = fgFlJvOnIrDelete();
    break;
#endif

#ifdef JPEG_MTKMARKER
  case IR_DISPLAY:
    vSendUopCmd(UOP_MEMORY, 0x0, 0x0, 0x0);
    break;
#endif
  default:
    fgIsGrabbed = FALSE;
    break;
  }

  return fgIsGrabbed;
}

/**
 * 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;
#ifdef SUPPORT_EMD
  case IR_COPY:
    fgIsGrabbed = fgFlJvOnIrCopy();
    break;
  case IR_DELETE:
    fgIsGrabbed = fgFlJvOnIrDelete();
    break;
#endif

  default:
    fgIsGrabbed = FALSE;
    break;
  }

  return fgIsGrabbed;
}

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

  switch (_bFlJvOn)
  {
  case FLJV_OBJ_MV:
    fgIsGrabbed = fgFlJvOnMv();
    break;
  case FLJV_OBJ_DGTMN:
    fgIsGrabbed = fgFlJvOnDgtMn();
    break;
  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;
}

void vFlJvChgLang(BYTE bLang) large
{
  vFlJvDrawDgtBtns(bLang);
  vFlJvDgtMnHil () ;    // Redraw hilight
}

#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 + -