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

📄 fljview.c

📁 mtk1389L latest sourcecode enjoy
💻 C
📖 第 1 页 / 共 3 页
字号:
  }
  vRectangle(WB_DGST_HILI, 0, 0, 1, FLJVDGTMN_OBJ_COLOR); // while color.
#else
  // - display the hilit
  vSetHLRng(FLDGTMN_HILIT, 0xFF);
  vShowHL(FLDGTMN_HILIT);
#endif
  return;
}

/**
 * Demo how to read the exe list index of image item on digest menu.
 */
WORD wFlJvGetDgtItemIdx(BYTE bItemIdx) large
{
  WORD wIdx;

  if (bItemIdx >= (bSharedInfo(SI_THUMBNAIL_16_IDX_HI) + 1))
    return 0xFFFF;

  bLoByte(wIdx) = bSharedInfo(SI_JPG_THUMBNAIL_START + 2*bItemIdx);
  bHiByte(wIdx) = bSharedInfo(SI_JPG_THUMBNAIL_START + (2*bItemIdx+1));

  return wIdx;
}

/**
 * Init Obj JVIEW.
 */
BOOL fgFlJvInit(void) large
{
  // - init UI component
#ifndef WB_ALLOC_MIN
  vCreateWB(FL_DGTMN_WB, TRUE);
  vSetWBTcColor(FL_DGTMN_WB);
  vDisableWB(FL_DGTMN_WB);

  vSetTransEn(FL_DGTMN_WB, 0);

  // - draw the buttons on digest menu
  vFlJvDrawDgtBtns(bEepromReadByte(OSD_LANG_POSITION));
#endif

  // - control flags
  _bFlJvOn = FLJV_OBJ_MV;

  _bFlJvTransEff = 0;
  vSetSharedInfo(SI_JPG_TRANSITION_EFFECT, _rFlJvTransEff[_bFlJvTransEff].bCode);

  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);

  // - 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
#ifdef HILI_USE_OSD
  vDisableWB(WB_DGST_HILI);
#else
  vHideHL(FLDGTMN_HILIT);
#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
/*
  Add by Bright_liu 2005/08/31/, for CQ(PL00101097,  PL0010109)
  The first time to enter PCD/JPG, some OSD can not be showed.
*/
  vOsdShowWb(OSD_WB_DISABLE);
  
  vOsdShowWb(OSD_WB_RESET);
/*
  Add it by Bright_liu 2005/11/15, for CQ(PL00205010)
  when loading PCD disc, it not show the disc type.
*/
  if(bSharedInfo(SI_DISC_TYPE) == SV_PCD)
  {
    vOsdPosShow(OSD_POS_DISC_TYPE, OSD_MSG_PICTURE_CD, OSD_TIMEOUT);
  }
  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
#ifndef HILI_USE_OSD
  vSetHLCol(FLDGTMN_HILIT, FLDGTMN_HILIT_COL);
#endif

  #ifdef SUPPORT_DRM
  if ((!fgIsInSetupMenu())&&(!fgIsInDRMShow()))
  #else
  if (!fgIsInSetupMenu()
	#ifdef SUPPORT_MODE_SWITCH_MENU //yan 070409
    || (!fgIsInSmsMenuShow())  
	#endif
  )
  #endif
  {
    vEnableWB(WB_NORMAL_HEAD1);
    vEnableWB(WB_NORMAL_HEAD2);
  }

  if (bSharedInfo(SI_JPG_MODE) == JPEGMOD_DIGEST)
  {
    vDisableWB(WB_NORMAL_VOL);
    //vDeleteWB(WB_NORMAL_VOL);
// 20050526, redraw the digest menu, or OSD hilight can't be shown.
#ifdef HILI_USE_OSD
    vFlJvShowDgtMn ();
#else
    vEnableWB(FL_DGTMN_WB);
    vFlJvDgtMnHil();
#endif
  }

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

#ifdef SUPPORT_EMD
static void vFlJvRetAddItem(void) large
{
  WORD  wBlkPtr, wItem;
  BYTE  bRCode;

  wBlkPtr = FL_CMD_BLK_SA + 1;
  bRCode = bSharedInfo(wBlkPtr ++);

  vFlCmdDone();

  if (bRCode == FLRET_S_OK)
  {
    switch (bFlClPath())
    {
    case FL_CMDPATH_MV:
      if (_fgFlSrcSet)
      {
        _fgFlFmving = TRUE;
      }
      _fgFlSrcSet = !_fgFlSrcSet;
      break;
    }
  }
  else
  {
    _fgFlSrcSet = FALSE;
    _fgFlFmving = FALSE;
  }

  vFlClRls();
}

static void vFlJvRetDelItem(void) large
{
  WORD  wBlkPtr, wItem;
  BYTE  bRCode;

  wBlkPtr = FL_CMD_BLK_SA + 1;
  bRCode = bSharedInfo(wBlkPtr ++);

  vFlCmdDone();

  if (bRCode == FLRET_S_OK)
  {
    switch (bFlClPath())
    {
    case FL_CMDPATH_MV:
      vFlClRls();
      break;
    }
  }
  else
  {
    _fgFlSrcSet = FALSE;
    _fgFlFmving = FALSE;
  }

  vFlClRls();
}
#endif  // SUPPORT_EMD

/**
 * 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(FALSE);
      }
      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;
  #ifdef SUPPORT_EMD
      case FLCMD_ADD_ITEM:
        vFlJvRetAddItem();
        break;
      case FLCMD_DEL_ITEM:
        vFlJvRetDelItem();
        break;
  #endif
      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
          fgFlJvDgtOn();
        }
        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
        {
          vFlShowError(OSD_POS_ERROR, OSD_MSG_ROTATING, 4);
        }
        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;
          }
        }
        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);
      }
    }
//    vSendUopCmd(UOP_STOP, SV_JPG_STOP_ALL_STATE, 0x0, 0x0);
    //vFlCmdClickItem(_bFlMnListId, wIdx, FLCMD_RET_OP_CMDACK);
  }

  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;
  #ifdef SUPPORT_EMD
      case FLCMD_ADD_ITEM:
        vFlJvRetAddItem();
        break;
      case FLCMD_DEL_ITEM:
        vFlJvRetDelItem();
        break;
  #endif
      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;
/*
      Modify it By Bright_liu /2005/10/20/, for CQ(PL00205060)
      Modify it again by Bright_liu 2005/12/15, for CQ(PL00001634)
      1.when fresh the digest JPG, move the hilight to the first one, otherwise it maybe on a invalid item
      2.when finish more than one jpg but not all, it is enable to move the hilight to valid item.
*/
        if ( _bFlJvDgtItemIdx >= bItemNs)
        {
          _bFlJvDgtItemIdx = 0;
          _bFlJvDgtMnOn = FLJVDGTMN_OBJ_MN;
          vFlJvDgtMnMnHil();  // - first time to hilit the item
/*
add it by Bright_liu 2005/09/12/, for CQ(PL00001222):
*/
#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

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

⌨️ 快捷键说明

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