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

📄 digest.c

📁 MTK 1389E SOURCE CODE
💻 C
📖 第 1 页 / 共 4 页
字号:
  /* change state */
  _rDigest.bState = DGST_STATE_MENU;

  //vOsdPosHili(OSD_POS_HILI_SHOW, OSD_POS_DGST_BTN_1 + _rDigest.bCurItem, 0);
  vOsdPosHili(OSD_POS_HILI_CLEAR, 0, 0);
#ifdef NUI_OSD_STYLE
  vSetMsgCol4(WB_DGST_MENU, 15, 15, 2, 3);
#else
  vSetMsgCol4(WB_DGST_MENU, 15, 15, 15, 3);
#endif
  vSelButton(WB_DGST_MENU, _rDigest.bCurItem);
}

// *********************************************************************
// Function :
// Description :
// Parameter :
// Return    :
// *********************************************************************
void vDgstNextPage(void) large
{
  if (_rDigest.fgNextValid == TRUE)
  {
    _rDigest.fgDispValid = FALSE;

    fgDgstPlayControl(SV_DGST_NEXT, 0);
    vOsdShowDgstMark(0, OSD_DGST_MARK_CLEAR, 0);
    vDgstShowMenuPageButton();
    vDgstDispInit(FALSE);
    if ((_rDigest.bState == DGST_STATE_MENU) && (_rDigest.bCurItem == DGST_MENU_BTN_NEXT))
    {
      vDgstMenuGotoItem(DGST_MENU_BTN_NEXT);
    }
    else
    {
      vDgstMenuGotoItem(DGST_MENU_BTN_EXIT);
    }
  }
}

// *********************************************************************
// Function :
// Description :
// Parameter :
// Return    :
// *********************************************************************
void vDgstPrevPage(void) large
{
  if (_rDigest.fgPrevValid == TRUE)
  {
    _rDigest.fgDispValid = FALSE;

    fgDgstPlayControl(SV_DGST_PREV, 0);
    vOsdShowDgstMark(0, OSD_DGST_MARK_CLEAR, 0);
    vDgstShowMenuPageButton();
    vDgstDispInit(FALSE);
    if ((_rDigest.bState == DGST_STATE_MENU) && (_rDigest.bCurItem == DGST_MENU_BTN_PREV))
    {
      vDgstMenuGotoItem(DGST_MENU_BTN_PREV);
    }
    else
    {
      vDgstMenuGotoItem(DGST_MENU_BTN_EXIT);
    }
  }
}

// *********************************************************************
// Function :
// Description :
// Parameter :
// Return    :
// *********************************************************************
void vDgstMenuBtnActive(void) large
{
  switch (_rDigest.bCurItem)
  {
    case DGST_MENU_BTN_PREV:
      vDgstPrevPage();
      break;

    case DGST_MENU_BTN_EXIT:
      vDgstMenuExit(TRUE);
      _rDigest.bState = DGST_STATE_EXIT;
      /* escape in fgDigestState() */
      break;

    case DGST_MENU_BTN_MENU:
      vDgstDispExit();
      vDgstMenuExit(TRUE);
      if (_rDigest.fgResume == TRUE)
      {
        _rDigest.bState = DGST_STATE_RESUME;
        vDgstResumeInit(TRUE);
      }
      else
      {
        vDgstTypeInit(TRUE);
      }
      break;

    case DGST_MENU_BTN_NEXT:
      vDgstNextPage();
      break;
  }
}

// *********************************************************************
// Function :
// Description :
// Parameter :
// Return    :
// *********************************************************************
void vDgstMenuInit(BYTE fgInit) large
{
#if (DRAM_SZ == DRAM_2M) || defined(USE_DRAM_CFG1)
  vOsdSetMemBlk(OSD_MEM_BLK_DYNAMIC, OSD_MEM_DEFAULT);
#endif  
  
  if (fgInit == TRUE)
  {
    /* initial variables */
    _rDigest.fgDispValid = FALSE;
    _rDigest.bSelNoMax = bSharedInfo(SI_USR_DIGEST_NS);
    _rDigest.bPageNo = 0;

#ifdef ALL_WB_USE_TRUECOLOR
    vCreateWB(WB_DGST_MENU, TRUE);
    vSetWBTcColor(WB_DGST_MENU);
#else
    vCreateWB(WB_DGST_MENU, FALSE);
#endif
#ifdef NUI_OSD_STYLE
    vSetMsgCol4(WB_DGST_MENU,0,0,2,3); // 2 is the theme_fontoutline_color 
#endif

    vDgstShowMenuPageType();
    vOsdShowDgstMenuSelect(1, _rDigest.bSelNoMax, 0, 0); /* show select range, no hili */
    vDgstShowMenuPageButton();

#ifdef IR_SUPPORT_SHIFT_KEY
    if (fgIsKeyTblShift())
    {
      vSetShiftKeyMode(TRUE);
    }
    else /* normal key table */
    {
      vSetShiftKeyMode(FALSE);
    }
#endif /* IR_SUPPORT_SHIFT_KEY */

    vDgstDispInit(TRUE);

    /* chnage OSD mode to full screen mode */
    vOsdShowWb(OSD_WB_FULL_SCR);
    
    /* original enable WB in osdcore.c, now enable it here */
    vEnableWB(WB_DGST_DISP1);
    vEnableWB(WB_DGST_DISP1A);
    vEnableWB(WB_DGST_DISP2);
    vEnableWB(WB_DGST_DISP2A);
    vEnableWB(WB_DGST_MENU);
  }

  vDgstMenuGotoItem(DGST_MENU_BTN_EXIT);
}

// *********************************************************************
// Function :
// Description :
// Parameter :
// Return    :
// *********************************************************************
void vDgstMenuExit(BYTE fgResume) large
{
  if (fgResume)
  {
    fgDgstPlayControl(SV_DGST_RESUME, 0);
  }

  vDeleteWB(WB_DGST_MENU);
  
#if (DRAM_SZ == DRAM_2M) || defined(USE_DRAM_CFG1)
  vOsdSetMemBlk(OSD_MEM_BLK_STATIC, OSD_MEM_DEFAULT);
#endif
  
  /* restore OSD mode */
  vOsdShowWb(OSD_WB_RESTORE);
}

// *********************************************************************
// Function :
// Description :
// Parameter :
// Return    :
// *********************************************************************
BOOL fgDgstMenuState(void) large
{
  BOOL fgRet = TRUE;

  switch (_bIRKey)
  {
    case IR_UP:
    {
      vDgstNumInit(FALSE);
      break;
    }

    case IR_DOWN:
      if (_rDigest.fgDispValid)
      {
        /* change to display state */
        vDgstMenuBtnUnsel(DGST_STATE_DISP);
        vDgstDispGotoItem(0);
      }
      break;

    case IR_LEFT:
      if (_rDigest.bCurItem > 0)
      {
        vDgstMenuGotoItem(_rDigest.bCurItem - 1);
      }
      break;

    case IR_RIGHT:
      if (_rDigest.bCurItem < DGST_MENU_BTN_MAX - 1)
      {
        vDgstMenuGotoItem(_rDigest.bCurItem + 1);
      }
      break;

    case IR_ENTER:
    case IR_PLAY:
    case IR_PLAY_ENTER:
    case IR_PLAY_PAUSE:
    {
      vDgstMenuBtnActive();
      break;
    }

    case IR_NEXT:
      vDgstNextPage();
      break;

    case IR_PREV:
      vDgstPrevPage();
      break;

    case IR_TIME_OUT:
      vSetExitInputState();
      break;

    default:
    {
      if (_bIRKey <= IR_ADD10 || _bIRKey == IR_ADD5)  // megaa ADD5
      {
        vDgstNumInit(TRUE);
        fgRet = fgDgstNumState();
      }
      else
      {
        fgRet = FALSE;
      }
      break;
    }
  } /* switch (_bIRKey) */

  return (fgRet);
}

// *********************************************************************
// Display Select Sub-state Functions
// *********************************************************************

// *********************************************************************
// Function :
// Description :
// Parameter :
// Return    :
// *********************************************************************
void vDgstDispGotoItem(BYTE bItem)
{
  BYTE bType;

  if (bItem >= _rDigest.bPageItemMax)
  {
    bItem = _rDigest.bPageItemMax - 1;
  }

  switch(_rDigest.bType)
  {
    case DGST_TYPE_TRACK:
    case DGST_TYPE_TITLE:
    case DGST_TYPE_CHAPTER:
    case DGST_TYPE_BOOKMARK:
    case DGST_TYPE_PROGRAM:
#ifdef SUPPORT_DVD_AUDIO
    case DA_DGST_TYPE_GROUP:
    case DA_DGST_TYPE_TRACK:  
    case DA_DGST_TYPE_BOOKMARK:
#endif
      bType = OSD_DGST_MARK_NO;
      break;

    case DGST_TYPE_TIME_DISC:
    case DGST_TYPE_TIME_TRK:
#ifdef SUPPORT_DVD_AUDIO    
    case DA_DGST_TYPE_TIME_GRP:
    case DA_DGST_TYPE_TIME_TRK:
#endif
      bType = OSD_DGST_MARK_TIME2;
      break;

    case DGST_TYPE_TIME_TTL:
    case DGST_TYPE_TIME_PTT:
      bType = OSD_DGST_MARK_TIME3;
      break;

#if 0
    case DA_DGST_TYPE_INDEX:
    case DA_DGST_TYPE_SPOTLIGHT:
#endif
    case DGST_TYPE_STROBE:
    default:
      bType = OSD_DGST_MARK_NONE;
      break;
  }

  if (bType != OSD_DGST_MARK_NONE)
  {
    vOsdShowDgstMark(bItem, bType | OSD_DGST_MARK_HILI, 0);
  }

  /* change state */
  _rDigest.bState = DGST_STATE_DISP;
  _rDigest.bCurItem = bItem;
}

// *********************************************************************
// Function :
// Description :
// Parameter :
// Return    :
// *********************************************************************
void vDgstDispInit(BYTE fgInit) large
{
  BYTE bIdx;

  /* the white board has been created in vDgstMenuInit(), just show hili */
  if (fgInit == TRUE)
  {
#ifdef ALL_WB_USE_TRUECOLOR
    vCreateWB(WB_DGST_DISP1, TRUE);
    vSetWBTcColor(WB_DGST_DISP1);
    vSetTcPal(WB_DGST_DISP1, 1, BLEND_2, TRUECOLOR_BLACK);
    vCreateWB(WB_DGST_DISP1A, TRUE);
    vSetWBTcColor(WB_DGST_DISP1A);
    vSetTcPal(WB_DGST_DISP1A, 1, BLEND_2, TRUECOLOR_BLACK);
#else
    vCreateWB(WB_DGST_DISP1, FALSE);
    vSetPal(WB_DGST_DISP1, 1, BLEND_2, 0);
    vCreateWB(WB_DGST_DISP1A, FALSE);
    vSetPal(WB_DGST_DISP1A, 1, BLEND_2, 0);
#endif
#ifdef NUI_OSD_STYLE
    vSetMsgCol4(WB_DGST_DISP1, 0, 1, 1, 3);
#else
    vSetMsgCol4(WB_DGST_DISP1, 0, 0, 1, 3);
#endif
    vSetTransEn(WB_DGST_DISP1, 0);
    vClearWB(WB_DGST_DISP1);
    vSetMsgCol4(WB_DGST_DISP1A, 0, 0, 1, 3);
    vSetTransEn(WB_DGST_DISP1A, 0);
    vClearWB(WB_DGST_DISP1A);
    
#ifdef ALL_WB_USE_TRUECOLOR
    vCreateWB(WB_DGST_DISP2, TRUE);
    vSetWBTcColor(WB_DGST_DISP2);
    vSetTcPal(WB_DGST_DISP2, 1, BLEND_2, TRUECOLOR_BLACK);
    vCreateWB(WB_DGST_DISP2A, TRUE);
    vSetWBTcColor(WB_DGST_DISP2A);
    vSetTcPal(WB_DGST_DISP2A, 1, BLEND_2, TRUECOLOR_BLACK);
#else
    vCreateWB(WB_DGST_DISP2, FALSE);
    vSetPal(WB_DGST_DISP2, 1, BLEND_2, 0);
    vCreateWB(WB_DGST_DISP2A, FALSE);
    vSetPal(WB_DGST_DISP2A, 1, BLEND_2, 0);
#endif
#ifdef NUI_OSD_STYLE
    vSetMsgCol4(WB_DGST_DISP2, 0, 1, 1, 3);
#else
    vSetMsgCol4(WB_DGST_DISP2, 0, 0, 1, 3);
#endif
    vSetTransEn(WB_DGST_DISP2, 0);
    vClearWB(WB_DGST_DISP2);
    vSetMsgCol4(WB_DGST_DISP2A, 0, 0, 1, 3);
    vSetTransEn(WB_DGST_DISP2A, 0);
    vClearWB(WB_DGST_DISP2A);

    /* enable WB in vDgstMenuInit()  */
  }

  if (_rDigest.bSelNoMax >= (_rDigest.bPageNo + 1) * DGST_VIEW_NS)
  {
    _rDigest.bPageItemMax = DGST_VIEW_NS;
  }
  else
  {
    _rDigest.bPageItemMax = _rDigest.bSelNoMax - _rDigest.bPageNo * DGST_VIEW_NS;
  }

  // Hack code, show all mark at the same time
  vOsdSetSt(OSD_ST_BURST);
  for (bIdx = 0; bIdx < _rDigest.bPageItemMax; bIdx++)
  {
    vDgstShowDispMark(bIdx);
  }
  // Hack code
  vOsdSetSt(OSD_ST_NML);

  /* vDgstDispGotoItem(0); */
}

// *********************************************************************
// Function :
// Description :
// Parameter :
// Return    :
// *********************************************************************
void vDgstDispExit(void) large
{
  vDeleteWB(WB_DGST_DISP1);
  vDeleteWB(WB_DGST_DISP2);
  vDeleteWB(WB_DGST_DISP1A);
  vDeleteWB(WB_DGST_DISP2A);
}

// *********************************************************************
// Function :
// Description :
// Parameter :
// Return    :
// *********************************************************************
BOOL fgDgstDispState(void) large
{
  BOOL fgRet = TRUE;

  switch (_bIRKey)
  {
    case IR_UP:
      if (_rDigest.bCurItem >= DGST_COL_NS)
      {
        vDgstDispGotoItem(_rDigest.bCurItem - DGST_COL_NS);
      }
      break;

    case IR_LEFT:
      if (_rDigest.bCurItem > 0)
      {
        vDgstDispGotoItem(_rDigest.bCurItem - 1);
      }
      break;

    case IR_RIGHT:
      if (_rDigest.bCurItem + 1 < _rDigest.bPageItemMax)
      {
        vDgstDispGotoItem(_rDigest.bCurItem + 1);
      }
      break;

    case IR_DOWN:
      if (_rDigest.bCurItem + DGST_COL_NS < _rDigest.bPageItemMax)
      {
        vDgstDispGotoItem(_rDigest.bCurItem + DGST_COL_NS);
      }
      else
      {
#ifdef HILI_USE_OSD
        // - clear digest disp osd.
        if (bSharedInfo(SI_NTSC_PAL) == SV_NTSC)
        {
          vOsdPosHili(OSD_POS_HILI_CLEAR, OSD_POS_NTSC_DGST_MARK_1, 0);
          vOsdPosHili(OSD_POS_HILI_CLEAR, OSD_POS_NTSC_DGST_MARK_4, 0);
        }
        else
        {
          vOsdPosHili(OSD_POS_HILI_CLEAR, OSD_POS_PAL_DGST_MARK_1, 0);
          vOsdPosHili(OSD_POS_HILI_CLEAR, OSD_POS_PAL_DGST_MARK_4, 0);
        }
#endif
        vDgstNumInit(FALSE);
      }
      break;

    case IR_NEXT:
      vDgstNextPage();
      break;

    case IR_PREV:
      vDgstPrevPage();
      break;

    case IR_ENTER:
    case IR_PLAY:
    case IR_PLAY_ENTER:
    case IR_PLAY_PAUSE:
    {
      if (fgDgstPlayControl(SV_DGST_PLAY, _rDigest.bCurItem + _rDigest.bPageNo * DGST_VIEW_NS + 1) == TRUE)
      {
        vDgstDispExit();
        vDgstMenuExit(FALSE);
        _rDigest.bState = DGST_STATE_EXIT;

        vSetExitInputState();
      }
      break;
    }

    case IR_TIME_OUT:
      vSetExitInputState();
      break;

    default:
    {
      if (_bIRKey <= IR_ADD10 || _bIRKey == IR_ADD5)  // megaa ADD5

⌨️ 快捷键说明

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