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

📄 stpmain.c

📁 MTK 1389E SOURCE CODE
💻 C
📖 第 1 页 / 共 5 页
字号:
{
  vSetWBTcColor(WB_SETUP_HEAD);
  vSetWBTcColor(WB_SETUP_ITEM);
  vSetWBTcColor(WB_SETUP_MSG);
}

// *********************************************************************
// Function : void vSetupInitState(void) large
// Description : init setup menu,
//                1. disable all previous white boards
//                2. set page relative variable
//                3. create setup menu white boards
//                4. show page
//                5. enable white boards
// Parameter : None
// Return    : None
// *********************************************************************
void vSetupInitState(void) large
{
  BYTE bTemp;

#ifdef PLAYER_FLMENU
  if (fgFlCheckStatus(FL_STATUS_IN_MENU))
  {
    // tmp
    vOsdSetSt(OSD_ST_BURST);
    vDisableWB(FSMENU_OSD_WBIDX_BASIC);
    //vDisableWB(FSMENU_INFO);       //windy
    vOsdSetSt(OSD_ST_NML);
//    wFlMnLeave();
  }
#endif

#ifdef SRV_SHOW_ERROR_COUNTER
  _bSrvShowErrIdx = 0;
  vClearWB(WB_NORMAL_VOL);
#endif

  _bRegChgIdx = 0;
  _bEnVerIdx = 0;
  _bMinShowDat = 0;
  _fgReset = FALSE;
  _bMinShowData = 1;
  _bMaxShowData = _rMenuRoot.bEntryNo;
  _bMainMenu = 1;
  _fgInSubmenu = FALSE;
  _fgInDialog = FALSE;
  _bRegChgIdx = 0;

  // - disable all previous white board
  vOsdShowWb(OSD_WB_DISABLE);

#if (DRAM_SZ == DRAM_2M) || defined(USE_DRAM_CFG1)
  while (bSharedInfo(SI_OSD_CMD_Q_LEN));
  if (!(fgIsIsoPlay()||fgIsPcdPlay()) || (_bFlCmdTarget == FL_CMD_TARGET_MPEG))//0728
    vOsdSetMemBlk(OSD_MEM_BLK_DYNAMIC, OSD_MEM_DEFAULT);
/* 
    Mark the 'fgIsPcdPlay()' condition by Bright_liu 2005/11/24, for CQ(PL00001441),
    when the PCD is in digest mode, press the IR_SETUP 2 times, the screen is disturbed.
*/
  else if((_bFlCmdTarget == FL_CMD_TARGET_JPEG)/*||fgIsPcdPlay()*/)
    vOsdSetMemBlk(OSD_MEM_BLK_DYNAMIC, OSD_MEM_JPEG_SLIDESHOW);
#endif

  // - create setup menu white board and enable them
#ifdef SETUP_MENU_TRUECOLOR
  vCreateWB(WB_SETUP_ITEM, TRUE);
  vCreateWB(WB_SETUP_HEAD, TRUE);
  vCreateWB(WB_SETUP_MSG, TRUE);
#else
  vCreateWB(WB_SETUP_ITEM, FALSE);
  vCreateWB(WB_SETUP_HEAD, FALSE);
  vCreateWB(WB_SETUP_MSG, FALSE);
#endif

  vOsdSetSt(OSD_ST_BATCH);

  vSetWbCol();

  // 1. hide HL, disable change color
  vSetTransDis(WB_SETUP_ITEM);

  // 2. set page relative variable
  _bPrevMenu = INVALID_MENU;

   vSetNewMenu(GENERAL_PAGE);
  _bOsdState = STPSTT_MAINMENU;


  _wMenuInvalid = 0xFFFF;
  _bMenuCur = 1; //r not used.
  vShowMenuRoot(_rMenuRoot.prMenu[MAIN_PAGE]);
  vDrawMenuBtn(_rMenuRoot.prMenu[MAIN_PAGE], 1, TRUE);

  // 4. show page
  vShowMenu(_rMenuRoot.prMenu[_bMenu]); //r
  vShowSetupMsg(_rMenuRoot.prMenu[MAIN_PAGE]->prEntry[_bMainMenu-1]->wMsgMsg); //r

  vOsdSetSt(OSD_ST_NML);

  if (fgFlCheckStatus(FL_STATUS_IN_MENU))
  {
    if(!fgIsIsoPlay())//for WMA issue
                      //we don't need to show logo when playing data disc to avoid to cover dsp WMA code
    {
      if (!fgIsPcdPlay())
      vPlayerShowLogo(DVD_STOP_LOGO, DVD_LOGO_COLOR);
    }
  }

  vOsdSetSt(OSD_ST_BURST);
  vEnableWB(WB_SETUP_MSG);
  vEnableWB(WB_SETUP_HEAD);
  vEnableWB(WB_SETUP_ITEM);
  vOsdSetSt(OSD_ST_NML);

  bTemp = bSharedInfo(SI_LUMINANCE);
  if ((bTemp == SV_LUMINANCE_DELAY_0) || (bTemp == SV_LUMINANCE_DELAY_1))
  {
    if (bEepromReadByte(LUMINANCE_POS) != bTemp)
    {
      fgEepromWriteByte(LUMINANCE_POS, bTemp);
    }
  }
  else
  {
    fgEepromWriteByte(LUMINANCE_POS, SV_LUMINANCE_DELAY_1);
  }
}


// *********************************************************************
// Function : void vCalMaxMinShow(void) large
// Description : Calculate the min/max item could be show on the white board,
//               Draw up/down mark if overall items larger than show
// Parameter : None
// Return    : None
// *********************************************************************
BYTE bCalMaxMinShow(BYTE bPageType, BYTE bPageT, BYTE bPageM) large
{
  BYTE bStart = 0;
  BYTE bTotal;

  if (bPageT > bPageM)
  {
    bTotal = bPageM;
    if ((_bPrevItem != 0xFF) && (_bPrevItem > _bEntry))
    {
      bStart = _bEntry - 1;
    }
    else if (_bEntry > bTotal)
    {
      bStart = _bEntry - bTotal ;
    }
    if ((bStart + bPageM) > bPageT)
    {
      bStart = bPageT - bPageM ;
    }
    _bMinShowData = bStart + 1;
    _bMaxShowData = bStart + bTotal;
    if (_bMaxShowData > bPageT)
    {
      _bMaxShowData = bPageT;
    }
  }
  else
  {
    bTotal = bPageT;
    _bMinShowData = 1;
    _bMaxShowData = bTotal;
  }
  return (bStart);
}


static BOOL fgCalEntryShowRange(BYTE bTotalEntry, BYTE bTotalLine) large
{
  BYTE bStart = 0;
  BYTE bTotal;

  if ((_bEntry >= _bMinShowData) && (_bEntry <= _bMaxShowData))
  {
    return FALSE;
  }

  if (_bEntry < _bMinShowData)
  {
    _bMinShowData --;
  }
  else if (_bEntry > _bMaxShowData)
  {
    _bMinShowData ++;
  }

  _bMaxShowData = _bMinShowData + bTotalLine;
  if (_bMaxShowData > bTotalEntry)
  {
    _bMaxShowData = bTotalEntry;
    _bMinShowData = bTotalEntry - bTotalLine;
  }

  return TRUE;
}

#ifdef SETUP_USE_TAB
void vShowTabOn(BYTE bTabIndex) large
{
  _wStartX = SETUP_TAB_START_X + bTabIndex * (SETUP_TAB_WIDTH + SETUP_TAB_GAP);
  _wStartY = SETUP_TAB_START_Y;
  _wEndX = _wStartX + SETUP_TAB_WIDTH;
  _wEndY = _wStartY + SETUP_TAB_HEIGHT;
  vRectangle(WB_SETUP_HEAD,0,0,1,4);//FLCOLOR_GRAY

  vSetMsgCol4(WB_SETUP_HEAD, 4, 4, 4, 3);
  vOsdPasteMsgXY(_rTabMag[bTabIndex].wStartX,_rTabMag[bTabIndex].wStartY,WB_SETUP_HEAD,_rTabMag[bTabIndex].wMsgIndex);
}
void vShowTabOff(BYTE bTabIndex) large
{
  _wStartX = SETUP_TAB_START_X + bTabIndex * (SETUP_TAB_WIDTH + SETUP_TAB_GAP);
  _wStartY = SETUP_TAB_START_Y;
  _wEndX = _wStartX + SETUP_TAB_WIDTH;
  _wEndY = _wStartY + SETUP_TAB_HEIGHT;
  vRectangle(WB_SETUP_HEAD,0,0,1,5);//FLCOLOR_LIGHT_GREEN

  vSetMsgCol4(WB_SETUP_HEAD, 5, 5, 5, 3);
  vOsdPasteMsgXY(_rTabMag[bTabIndex].wStartX,_rTabMag[bTabIndex].wStartY,WB_SETUP_HEAD,_rTabMag[bTabIndex].wMsgIndex);
}
void vSetupUseTab(BYTE bWBIndex, BYTE bTabIndex) large
{
  BYTE bTmp;

  for(bTmp = 0;bTmp < SETUP_TAB_NUM;bTmp++)
  {
    if(bTmp != bTabIndex)
      vShowTabOff(bTmp);
    else
      vShowTabOn(bTmp);
  }
}
#endif

static void vShowMenuRoot(sMenu *prMenu) large
{
  BYTE  i;
  WORD  wGap;

  wGap = (SETUP_HEAD_W - MENU_BMP_W * prMenu->bTotalEntry) / (prMenu->bTotalEntry + 1);
  _wStartY = (SETUP_HEAD_H - MENU_BMP_H) / 2;

  for (i=1; i<=prMenu->bTotalEntry; i++)
  {
#ifndef SETUP_USE_TAB
    if (prMenu->prEntry[i-1]->wType == ENTRY_TYPE_NULL)
    {
      return;
    }
#endif

    _wStartX = wGap * i + MENU_BMP_W * (i-1);
    _wEndX = _wStartX + MENU_BMP_W;
    _wEndY = _wStartY + MENU_BMP_H;

#ifndef SETUP_USE_TAB
    if (prMenu->prEntry[i-1]->wBmpIdx != 0xFFFF)
#endif
    {
//      vPasteBmp(WB_SETUP_HEAD, prMenu->prEntry[i-1]->wBmpIdx);
      vSetupUseTab(WB_SETUP_HEAD, i-1);

      #ifdef STPMN_HEAD_GRAY
      vChgColRep(WB_SETUP_HEAD, 4,13);
      vChgColRep(WB_SETUP_HEAD, 5,11);
      vChgColRep(WB_SETUP_HEAD, 6,10);
      vChgColRep(WB_SETUP_HEAD, 8,11);
      vChgColRep(WB_SETUP_HEAD, 12,13);
      vChgColRep(WB_SETUP_HEAD, 15,13);
      #else

        #if (SETUP_HEAD_BITMAP == BITMAP_JYC2)
      vChgColRep(WB_SETUP_HEAD, 1,11);
      vChgColRep(WB_SETUP_HEAD, 14,11); //r add line for Joyce RD1...
        #else
      vChgColRep(WB_SETUP_HEAD, 1,0);
        #endif

      #endif

    }
  }
}

static void vDrawMenuBtn(sMenu *prMenu, BYTE bIndex, BOOL fgEnable) large
{
  WORD  wGap;

  wGap = (SETUP_HEAD_W - MENU_BMP_W * prMenu->bTotalEntry) / (prMenu->bTotalEntry + 1);
  _wStartX = wGap * bIndex + MENU_BMP_W * (bIndex-1);
  _wEndX = _wStartX + MENU_BMP_W;
  _wStartY = (SETUP_HEAD_H - MENU_BMP_H) / 2;
  _wEndY = _wStartY + MENU_BMP_H;

#ifndef SETUP_USE_TAB
  if (prMenu->prEntry[bIndex-1]->wBmpIdx != 0xFFFF)
#endif
  {
    if (fgEnable == TRUE)
    {
//      vPasteBmp(WB_SETUP_HEAD, prMenu->prEntry[bIndex-1]->wBmpIdx);
        vSetupUseTab(WB_SETUP_HEAD, bIndex-1);
    }
    else
    {
//      vPasteBmp(WB_SETUP_HEAD, prMenu->prEntry[bIndex-1]->wBmpIdx);
        vSetupUseTab(WB_SETUP_HEAD, bIndex-1);

      #ifdef STPMN_HEAD_GRAY
      vChgColRep(WB_SETUP_HEAD, 4,13);
      vChgColRep(WB_SETUP_HEAD, 5,11);
      vChgColRep(WB_SETUP_HEAD, 6,10);
      vChgColRep(WB_SETUP_HEAD, 8,11);
      vChgColRep(WB_SETUP_HEAD, 12,13);
      vChgColRep(WB_SETUP_HEAD, 15,13);
      #else
        #if (SETUP_HEAD_BITMAP == BITMAP_JYC2)
      vChgColRep(WB_SETUP_HEAD, 1,11);
      vChgColRep(WB_SETUP_HEAD, 14,11);
        #else
      vChgColRep(WB_SETUP_HEAD, 1,0);
        #endif
      #endif


    }
  }
}

void vShowEntryValue(sEntry *prEntry, BOOL fgIfAutoSetXY) large
{
  BYTE bOpt=1;
  WORD wMsg;
  BYTE pbStr[7];
  BYTE bTemp;
  WORD wEntryType;

  // Set to empty string.
  pbStr[0] = 3; //[runma] 4 -> 3
  pbStr[1] = pbStr[2] = pbStr[3] = 32; //' ';

  wEntryType = prEntry->wType;

  if (wEntryType == ENTRY_TYPE_DIALOG)
  {
    prEntry = _rMenuRoot.prMenu[prEntry->wEEPos]->prEntry[0];
  }
  else if (wEntryType == ENTRY_TYPE_SUBMENU)
  {
    return;
  }

  if(fgIfAutoSetXY)
  {
    _wStartX = STP_ENTRY_START_X + STP_VALUE_START_X;
    _wEndX = STP_ENTRY_START_X + STP_ENTRY_END_X; //[runma] add word -6
    _wEndY = _wStartY + STP_MENU_ENTRY_H;
    vRectangle(WB_SETUP_ITEM, 0, 0, 1, ENTRY_COL_BG);
  }

  vSetMsgCol4(WB_SETUP_ITEM, 0, 0, ENTRY_COL_BLACK, ENTRY_COL_YELLOW);
  bOpt = bGetOptFromEeprom(prEntry);

  switch(prEntry->wType)
  {
    case ENTRY_TYPE_H_SLIDER_SIGNED:
      bTemp=1;
      if ((char) bOpt < 0)
      {
        pbStr[bTemp++] = 45; //'-';
        bOpt = (BYTE )(0 - (char) bOpt);
      }
      if(bOpt>99) bOpt=99;
      bOpt = bHEXToBCD(bOpt);
      pbStr[bTemp++] = BCD_HI(bOpt) + 48;//'0';
      pbStr[bTemp++] = BCD_LO(bOpt) + 48;//'0';
      vOsdShowStr(WB_SETUP_ITEM, pbStr);
      break;
#ifdef PLAYER_KARAOKE
    case ENTRY_TYPE_V_SLIDER:
    case ENTRY_TYPE_NUM:

      bTemp=0;
      if(bOpt>199)
      {
        pbStr[++bTemp]=50;//'2';
        bOpt = bOpt -200;
      } 
      else if(bOpt>99)
      {
        pbStr[++bTemp]=49;//'1';
        bOpt = bOpt -100;
      } 

      bOpt = bHEXToBCD(bOpt);
      pbStr[++bTemp] = BCD_HI(bOpt) + 48;//'0';
      pbStr[++bTemp] = BCD_LO(bOpt) + 48;//'0';
      if(wEntryType == TYPE_SPK_CONFIG)
      {
          if(pbStr[1]=='0')
          {
            pbStr[1]=' ';
            if(pbStr[2]=='0')
              pbStr[2]=' ';
          }
          pbStr[++bTemp] = '0';
          pbStr[++bTemp] = 'c';
          pbStr[++bTemp] = 'm';
          pbStr[0]=bTemp;
      }
      //pbStr[0]=bTemp;
      vOsdShowStr(WB_SETUP_ITEM, pbStr);
      break;  
	 #endif
    default:
      if(prEntry->prData == 0) //[runma] add block
      {
        pbStr[0] = 3;
        pbStr[1] = 32;//' ';
        pbStr[2] = 32;//' ';
        pbStr[3] = 32;//' ';
        vOsdShowStr(WB_SETUP_ITEM, pbStr); //[runma] end of block
      }
      else
      {
        wMsg = prEntry->prData[bOpt]->wValMsg;

        if (wMsg == OSD_MSG_EMPTY)
        {
          pbStr[0] = 3;
          pbStr[3] = 32;//' '; //[runma] 1->3
          bOpt = bHEXToBCD(bOpt);
          pbStr[1] = 32;//' ';//BCD_HI(bOpt) + '0'; //[runma] 2->1
          pbStr[2] = 32;//' ';//BCD_LO(bOpt) + '0'; //[runma] 3->2
          vOsdShowStr(WB_SETUP_ITEM, pbStr);
        }

        else if((wMsg == OSD_MSG_FUNC_NUMBER) ||(wMsg == OSD_MSG_FUNC_MINUS3))
        {
          if(wMsg == OSD_MSG_FUNC_MINUS3)
            bOpt = (char)bOpt -3;

          bTemp=1;
          if ((char) bOpt < 0)
          {
            pbStr[bTemp++] = 45; //'-';
            bOpt = (BYTE )(0 - (char) bOpt);
          }

          if(bOpt>99) bOpt=99; //[runma] add line
          bOpt = bHEXToBCD(bOpt);
          pbStr[bTemp++] = BCD_HI(bOpt) + 48;//'0';
          pbStr[bTemp++] = BCD_LO(bOpt) + 48;//'0';
          vOsdShowStr(WB_SETUP_ITEM, pbStr);
        }

        else
        {
          vOsdMsgPaste(WB_SETUP_ITEM, wMsg);
        }
      }
    break;

⌨️ 快捷键说明

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