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

📄 fljview.c

📁 MTK 1389E SOURCE CODE
💻 C
📖 第 1 页 / 共 3 页
字号:
  // - 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 + -