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

📄 digest.c

📁 MTK 1389E SOURCE CODE
💻 C
📖 第 1 页 / 共 4 页
字号:
      break;

    case DA_DGST_TYPE_SPOTLIGHT:
      if (bDom == SV_ATSTT_DOM)
      {
        bParm1 = (SV_DGST_SPOTLIGHT << 4) | DGST_VIEW_NS;
      }
      else
      {
        fgRet = FALSE;
      }
      break;

    case DA_DGST_TYPE_BOOKMARK:
      if ((bDom == SV_VTSTT_DOM) || (bDom == SV_ATSTT_DOM))
      {
        bParm1 = (SV_DGST_BOOKMARK << 4) | DGST_VIEW_NS;
      }
      else
      {
        fgRet = FALSE;
      }
      break;
#endif
    default:
      _rDigest.bType = DGST_TYPE_NONE;
      break;
  }

  if (fgRet == TRUE)
  {
    _rDigest.bTypeParm = bParm2;

    if (_rDigest.bType == DGST_TYPE_NONE)
    {
      /* error condition! */
      vSetExitInputState();
    }
    else
    {
      vSendUopCmd(UOP_DIGEST, bParm1, bParm2, bParm3);
    }
  }

  return (fgRet);
}

// *********************************************************************
// Function :
// Description :
// Parameter :
// Return    :
// *********************************************************************
BOOL fgDgstPlayControl(BYTE bCmd, bParm) large
{
  BOOL fgRet = TRUE;

  switch (bCmd)
  {
    case SV_DGST_RESUME:
      /* send resume play */
#if 0
      if (_rDigest.fgResume == TRUE)
      {
        vSendUopCmd(UOP_RESUME_PLAY, 0, 0, 0);
      }
      else
      {
        /* TODO: show logo or ? */
        vSendUopCmd(UOP_STOP, 0, 0, 0);
      }
#else
      vSendUopCmd(UOP_DIGEST, 0, 0, 0);
#endif
      break;

    case SV_DGST_PLAY:
    {
      if (bParm < 1)
      {
        bParm = 1;
      }
      else if (bParm > _rDigest.bSelNoMax)
      {
        bParm = _rDigest.bSelNoMax;
      }

      if (_rDigest.bType == DGST_TYPE_BOOKMARK)
      {
        if (fgIsBookmarkItemValid(bParm - 1) == FALSE)
        {
          fgRet = FALSE;
          break;
        }
      }

      vSendUopCmd(UOP_DIGITAL_BTN, bParm, 0, 0);
      break;
    } /* SV_DGST_PLAY */

    case SV_DGST_NEXT:
      vSendUopCmd(UOP_NEXT, 0, 0, 0);
      _rDigest.bPageNo += 1;
      break;

    case SV_DGST_PREV:
      vSendUopCmd(UOP_PREVIOUS, 0, 0, 0);
      _rDigest.bPageNo -= 1;
      break;

    default:
      break;
  } /* switch (bCmd) */

  return (fgRet);
}

// *********************************************************************
// Function :
// Description :
// Parameter :
// Return    :
// *********************************************************************
void vDgstGotoTypeItem(BYTE bItem) large
{
  if (bItem >= _rDigest.bSelNoMax)
  {
    return;
  }

#ifdef HILI_USE_OSD
  vOsdPosHili(OSD_POS_HILI_CLEAR, OSD_POS_DGST_TYPE_LINE_1, 0);
#endif
  vOsdPosHili(OSD_POS_HILI_SHOW, OSD_POS_DGST_TYPE_LINE_1 + 1 + bItem, 0);

  _rDigest.bCurItem = bItem;
}

// *********************************************************************
// Function :
// Description :
// Parameter :
// Return    :
// *********************************************************************
void vDgstTypeInit(BYTE fgInit) large
{
  BYTE bPbcState = bSharedInfo(SI_PBC_STATE);

  /* chnage OSD mode to user mode */
  vOsdShowWb(OSD_WB_USER);

  _rDigest.bState = DGST_STATE_TYPE;
  _rDigest.bType = DGST_TYPE_NONE;

//#ifdef ALL_WB_USE_TRUECOLOR
//  vCreateWB(WB_DGST_TYPE, TRUE);
//  vSetWBTcColor(WB_DGST_TYPE);
//#else
//  vCreateWB(WB_DGST_TYPE, FALSE);
//#endif
  vCreateWBEx(WB_DGST_TYPE);

#ifdef FONT_NO_BORDER
  vSetMsgCol4(WB_DGST_TYPE, 0, 1, 1, 3);
#else
  #ifdef HILI_USE_OSD
    vSetMsgCol4(WB_DGST_TYPE, 0, 0, 2, 3);
  #else
  vSetMsgCol4(WB_DGST_TYPE, 0, 1, 2, 3);
  #endif
#endif
  vEnableWB(WB_DGST_TYPE);

  if (fgIsDvdPlay())
  {
#ifdef SUPPORT_DVD_AUDIO
    if (bSharedInfo(SI_DISC_TYPE) == SV_DVD_AUDIO)
    {
      if (_rDigest.fgResume == TRUE)
      {
        vDgstShowTypePage(DGST_TYPE_PAGE_DVD_AUDIO_PLAY);
      }
      else
      {
        vDgstShowTypePage(DGST_TYPE_PAGE_DVD_AUDIO_STOP);
      }
    }
    else
#endif
    {
      if (_rDigest.fgResume == TRUE)
      {
        vDgstShowTypePage(DGST_TYPE_PAGE_DVD_PLAY);
      }
      else
      {
        vDgstShowTypePage(DGST_TYPE_PAGE_DVD_STOP);
      }
    }
  }
#ifdef VCD_SUPPORT  
  else if (fgIsVcdPlay())
  {
    if (_rDigest.fgResume == TRUE)
    {
      vDgstShowTypePage(DGST_TYPE_PAGE_VCD_PLAY);
    }
    else
    {
      vDgstShowTypePage(DGST_TYPE_PAGE_VCD_STOP);
    }
  }
#endif  

  vDgstGotoTypeItem(0);
}

// *********************************************************************
// Function :
// Description :
// Parameter :
// Return    :
// *********************************************************************
void vDgstTypeExit(void) large
{
  vDeleteWB(WB_DGST_TYPE);

  /* restore OSD mode */
  vOsdShowWb(OSD_WB_RESTORE);
}

// *********************************************************************
// Function :
// Description :
// Parameter :
// Return    :
// *********************************************************************
BOOL fgDgstTypeState(void) large
{
  BOOL fgRet = TRUE;
  BYTE bIdx, bDispIdx, bTypeValid;

  switch (_bIRKey)
  {
    case IR_UP:
      if (_rDigest.bCurItem > 0)
      {
        vDgstGotoTypeItem(_rDigest.bCurItem - 1);
      }
      break;

    case IR_DOWN:
      if (_rDigest.bCurItem + 1 < _rDigest.bSelNoMax)
      {
        vDgstGotoTypeItem(_rDigest.bCurItem + 1);
      }
      break;

    case IR_ENTER:
    case IR_PLAY:
    case IR_PLAY_ENTER:
    case IR_PLAY_PAUSE:
    {
      bDispIdx = 0;
      bTypeValid = _rDigest.bTypeParm;

      for (bIdx = 0; bIdx < prDgstTypeMenu[_rDigest.bPageNo].bNo; bIdx++)
      {
        if (bTypeValid & (1 << bIdx))
        {
          bDispIdx++;
          if (bDispIdx == (_rDigest.bCurItem + 1))
          {
            break;
          }
        }
      }

      if ((bDispIdx > 0) && (bDispIdx <= _rDigest.bSelNoMax))
      {
        /* send UOP command first */
        if (fgDgstTypeSelect((prDgstTypeMenu[_rDigest.bPageNo].prList)[bIdx].bType) == TRUE)
        {
          /* wait it return */
          vDgstTypeExit();
          /* wait UOP return */
          vDgstInitInit(TRUE);
          break;
        }
      }

      /* range check invalid, force escape input state */
      vSetExitInputState();
      break;
    }

    case IR_TIME_OUT:
      vSetExitInputState();
      break;

    default:
    {
      fgRet = FALSE;
      break;
    }
  } /* switch (_bIRKey) */

  return (fgRet);
}

// *********************************************************************
// Button Select Sub-state Functions
// *********************************************************************

// *********************************************************************
// Function :
// Description :
// Parameter :
// Return    :
// *********************************************************************
static code WORD pwDgstMenuPageType[DGST_TYPE_MAX] = {
  0xffff,                 /* DGST_TYPE_NONE       */
  OSD_MSG_TYPE_TRK,       /* DGST_TYPE_TRACK      */
  OSD_MSG_TYPE_TTL,       /* DGST_TYPE_TITLE      */
  OSD_MSG_TYPE_PTT,       /* DGST_TYPE_CHAPTER    */
  OSD_MSG_TYPE_TIME_DISC, /* DGST_TYPE_TIME_DISC  */
  OSD_MSG_TYPE_TIME_TRK,  /* DGST_TYPE_TIME_TRK   */
  OSD_MSG_TYPE_TIME_TTL,  /* DGST_TYPE_TIME_TTL   */
  OSD_MSG_TYPE_TIME_PTT,  /* DGST_TYPE_TIME_PTT   */
  OSD_MSG_TYPE_BOOKMARK,  /* DGST_TYPE_BOOKMARK   */
  OSD_MSG_TYPE_PROGRAM,   /* DGST_TYPE_PROGRAM    */
  OSD_MSG_TYPE_STROBE,    /* DGST_TYPE_STROBE     */
#ifdef SUPPORT_DVD_AUDIO
  0xffff,                 /* DA_DGST_TYPE_NONE      */
  OSD_MSG_DGST_GROUP,     /* DA_DGST_TYPE_GROUP     */
  OSD_MSG_DGST_TRACK,     /* DA_DGST_TYPE_TRAC      */
  OSD_MSG_DGST_TIME_GRP,  /* DA_DGST_TYPE_TIME_GRP  */
  OSD_MSG_DGST_TIME_TRK,  /* DA_DGST_TYPE_TIME_TRK  */
  OSD_MSG_DGST_INDEX,     /* DA_DGST_TYPE_INDEX     */
  OSD_MSG_DGST_SPOTLIGHT, /* DA_DGST_TYPE_SPOTLIGHT */
  OSD_MSG_TYPE_PROGRAM    /* DA_DGST_TYPE_BOOKMARK  */
#endif
};

void vDgstShowMenuPageType(void) large
{
  BYTE bParm = 0;
  WORD wMsg = 0xffff;

  if (_rDigest.bType < DGST_TYPE_MAX)
  {
    wMsg = pwDgstMenuPageType[_rDigest.bType];
  }

  switch (_rDigest.bType)
  {
    case DGST_TYPE_CHAPTER:
    case DGST_TYPE_TIME_TTL:
      bParm = bSharedInfo(SI_TT_NO);
      break;

    case DGST_TYPE_TIME_PTT:
      bParm = bSharedInfo(SI_CHAP_NO);
      break;

    case DGST_TYPE_TIME_TRK:
      bParm = bSharedInfo(SI_TRACK_NO);
      break;
#ifdef SUPPORT_DVD_AUDIO
    case DA_DGST_TYPE_GROUP:
    case DA_DGST_TYPE_TIME_GRP:
      bParm = bSharedInfo(SI_GRP_NO);
      break;
      
    case DA_DGST_TYPE_TRACK:
    case DA_DGST_TYPE_TIME_TRK:
      bParm = bSharedInfo(SI_TRACK_NO);
      break;
#endif
#if 0       
    case DA_DGST_TYPE_INDEX:
    case DA_DGST_TYPE_SPOTLIGHT:
    case DA_DGST_TYPE_BOOKMARK:
#endif

    default:
      break;
  }

  vSetMsgCol4(WB_DGST_MENU, 0, 0, 0, 3);
  vOsdShowDgstMenuType(wMsg, bParm);
}

// *********************************************************************
// Function :
// Description :
// Parameter :
// Return    :
// *********************************************************************
void vDgstShowMenuPageButton(void) large
{
  vSetBtnCol(WB_DGST_MENU, 15, 0, 2, 3);
#ifdef NUI_OSD_STYLE
  vSetMsgCol4(WB_DGST_MENU, 15, 0, 2, 3);
#else
  vSetMsgCol4(WB_DGST_MENU, 15, 0, 0, 3);
#endif
  
  _wStartY = 2 * LINE_HEIGHT ;
  _wEndY = 3 * LINE_HEIGHT-1;
  
  /* PREV button */
  _wStartX = 0.5 * EFONT_WIDTH;
  _wEndX = 7 * EFONT_WIDTH;
  if (_rDigest.bPageNo > 0)
  {
    //vOsdPosPaste(OSD_POS_DGST_BTN_1, OSD_MSG_PREV_PAGE);
    vCreateMsgButton(WB_DGST_MENU, DGST_MENU_BTN_PREV, 0, OSD_MSG_PREV_PAGE, 10, 0);
    vUnselButton(WB_DGST_MENU, DGST_MENU_BTN_PREV);
    _rDigest.fgPrevValid = TRUE;
  }
  else
  {
    //vOsdPosClear(OSD_POS_DGST_BTN_1);
    vRectangle(WB_DGST_MENU, 0, 0, 1, 0);
    _rDigest.fgPrevValid = FALSE;
  }

  /* EXIT button */
  //vOsdPosPaste(OSD_POS_DGST_BTN_2, OSD_MSG_EXIT);
  _wStartX = 7.5 * EFONT_WIDTH;
  _wEndX = _wStartX + 6 * EFONT_WIDTH;
  vCreateMsgButton(WB_DGST_MENU, DGST_MENU_BTN_EXIT, 0, OSD_MSG_EXIT, 10, 0);
  vUnselButton(WB_DGST_MENU, DGST_MENU_BTN_EXIT);

  /* MENU button */
  //vOsdPosPaste(OSD_POS_DGST_BTN_3, OSD_MSG_MENU);
  _wStartX = 14.5 * EFONT_WIDTH;
  _wEndX = _wStartX + 6 * EFONT_WIDTH;
  vCreateMsgButton(WB_DGST_MENU, DGST_MENU_BTN_MENU, 0, OSD_MSG_MENU, 10, 0);
  vUnselButton(WB_DGST_MENU, DGST_MENU_BTN_MENU);

  /* NEXT button */
#ifdef NUI_OSD_STYLE
  _wStartX = 20.5 * EFONT_WIDTH;
#else
  _wStartX = 21.5 * EFONT_WIDTH;
#endif
  _wEndX = _wStartX + 6.5 * EFONT_WIDTH;
  if ((_rDigest.bPageNo + 1) * DGST_VIEW_NS < _rDigest.bSelNoMax)
  {
    //vOsdPosPaste(OSD_POS_DGST_BTN_4, OSD_MSG_NEXT_PAGE);
    vCreateMsgButton(WB_DGST_MENU, DGST_MENU_BTN_NEXT, 0, OSD_MSG_NEXT_PAGE, 10, 0);
    vUnselButton(WB_DGST_MENU, DGST_MENU_BTN_NEXT);
    _rDigest.fgNextValid = TRUE;
  }
  else
  {
    //vOsdPosClear(OSD_POS_DGST_BTN_4);
    vRectangle(WB_DGST_MENU, 0, 0, 1, 0);
    _rDigest.fgNextValid = FALSE;
  }
}

// *********************************************************************
// Function :
// Description :
// Parameter :
// Return    :
// *********************************************************************
void vDgstMenuGotoItem(BYTE bItem) large
{
#ifdef NUI_OSD_STYLE
  vSetMsgCol4(WB_DGST_MENU, 0, 0, 2, 3);
#else
  vSetMsgCol4(WB_DGST_MENU, 0, 0, 0, 3);
#endif
  
  switch(_rDigest.bCurItem)
  {
    case DGST_MENU_BTN_PREV:
      if (_rDigest.fgPrevValid != FALSE)
      {
        vUnselButton(WB_DGST_MENU, _rDigest.bCurItem);
      }
      break;
    case DGST_MENU_BTN_NEXT:
      if (_rDigest.fgNextValid != FALSE)
      {
        vUnselButton(WB_DGST_MENU, _rDigest.bCurItem);
      }      
      break;
    case DGST_MENU_BTN_EXIT:
    case DGST_MENU_BTN_MENU:
    default:
      vUnselButton(WB_DGST_MENU, _rDigest.bCurItem);
  }

  if (bItem == DGST_MENU_BTN_PREV)
  {
    if (_rDigest.fgPrevValid == TRUE)
    {
      _rDigest.bCurItem = DGST_MENU_BTN_PREV;
    }
    else
    {
      _rDigest.bCurItem = DGST_MENU_BTN_PREV + 1;
    }
  }
  else if (bItem >= DGST_MENU_BTN_NEXT)
  {
    if (_rDigest.fgNextValid == TRUE)
    {
      _rDigest.bCurItem = DGST_MENU_BTN_NEXT;
    }
    else
    {
      _rDigest.bCurItem = DGST_MENU_BTN_NEXT - 1;
    }
  }
  else
  {
    _rDigest.bCurItem = bItem;
  }

⌨️ 快捷键说明

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