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

📄 flctrl.c

📁 MTK 1389E SOURCE CODE
💻 C
字号:
/**********************************************************************/
/***************    MTK CONFIDENTIAL & COPYRIGHTED     ****************/
/***************                                       ****************/
/***************  $Modtime:: 04/08/27 9:39a    $       ****************/
/***************  $Revision:: 1                $       ****************/
/***************                                       ****************/
/***************   Description : File Menu             ****************/
/***************                 Info Panel Component  ****************/
/***************                                       ****************/
/***************       Company : MediaTek Inc.         ****************/
/***************    Programmer : Jacob Lin             ****************/
/**********************************************************************/

#define __FSLIST_CTRL_C_

#include "flspec.h"
#include "flcomm.h"
#include "flctrl.h"

#pragma NOAREGS

#ifdef PLAYER_FLMENU

#ifdef SHOW_FS_SLIDER
void vDrawSlider(WORD wCurrNo, WORD wTotalNs) large
{
  WORD wOffset;
  WORD wBtnLen;

#ifndef FL_USE_LOGO
  _wStartX = FS_SLIDER_X;
  _wEndX = FS_SLIDER_X + FS_SLIDER_W;
  _wStartY = FS_SLIDER_Y;
  _wEndY = FS_SLIDER_Y + (WORD) FS_SLIDER_H;
  vSetBtnCol(FL_MENU_WB, FLCOLOR_GREENBLUE, FLCOLOR_BLACK, FLCOLOR_WHITE, FLCOLOR_BLACK);
  vCreateButton(FL_MENU_WB, FS_SLIDER_BTN, 2);
  vUnselButton(FL_MENU_WB, FS_SLIDER_BTN);
#endif
  vMoveSlider(wCurrNo, wTotalNs, TRUE);
}
#endif

#ifdef SHOW_FS_SLIDER
void vMoveSlider(WORD wCurr, WORD wTotal, BOOL fgShow) large
{
  WORD  wOffset, wBtnLen;
  DWRD  dwTmp;

  if (wTotal == 1)
  {
    wBtnLen =  FS_SLIDER_H;
    wOffset = 0;
  }
  else
  {
    wBtnLen =  FS_SLIDER_H / (wTotal - 1);
    if (wBtnLen < 6)
      wBtnLen = 6;
    dwTmp = ((DWRD) wCurr) * (FS_SLIDER_H - wBtnLen - 2) / (wTotal - 1);
    wOffset = wLoWord(dwTmp);
  }

  if (wCurr != 0)
  {
    if (wCurr == wTotal - 1)
      wOffset = FS_SLIDER_H - wBtnLen - 2;
    else if (wBtnLen > 6) // if (wTotal < FS_SLIDER_H - wBtnLen)
    {
      wOffset += ((FS_SLIDER_H - wBtnLen) - (FS_SLIDER_H - wBtnLen) / (wTotal) * (wTotal)) * wCurr / (wTotal);
    }
  }

  _wStartX = FS_SLIDER_X;
  _wEndX = FS_SLIDER_X + FS_SLIDER_W;
  _wStartY = (WORD) FS_SLIDER_Y + wOffset;
  _wEndY = (WORD) FS_SLIDER_Y + wOffset + wBtnLen;
  

  if (fgShow)
  {
    vSetBtnCol(FL_MENU_WB, FLCOLOR_YELLOW, FLCOLOR_BLACK, FLCOLOR_YELLOW, FLCOLOR_BLACK);
    vCreateButton(FL_MENU_WB, FS_SLIDER_BTN+1, 2);
    vSelButton(FL_MENU_WB, FS_SLIDER_BTN+1);
  }
  else
  {
#ifdef FL_USE_LOGO
    //vRectangle(FL_MENU_WB, 0, 0, 1, FLCOLOR_WHITE);
    _wEndX += 4;
    vRectangle(FL_MENU_WB, 0, 0, 1, 0);
#else
    vRectangle(FL_MENU_WB, 0, 0, 1, FLCOLOR_BLACK);
#endif

    //_wEndX = _wStartX = FS_SLIDER_X + FS_SLIDER_W - 1;
//    if (_wStartY > 2)
//      _wStartY -= 2;
    
    //vOsdShowLine(FL_MENU_WB, FLCOLOR_WHITE, 2);
  }
}
#endif /* #ifdef SHOW_FS_SLIDER */

#ifndef FL_USE_LOGO
void vDrawSpin(void) large
{
  _wStartX = FS_SLIDER_X;
  _wStartY = FS_SLIDER_Y + FS_SLIDER_H;
  vSetMsgCol4(FL_MENU_WB, FLCOLOR_BLACK, FLCOLOR_BLACK, FLCOLOR_GRAY, FLCOLOR_GRAY);
  vOsdMsgPaste(FL_MENU_WB, OSD_MSG_FSUPDOWN1);
}

void vMoveSpin(BOOL fgUp) large
{
  _wStartX = FS_SLIDER_X;
  _wEndX = FS_SLIDER_X + FS_SLIDER_W;
  _wStartY = FS_SLIDER_Y + (WORD) FS_SLIDER_H;
  _wEndY = _wStartY + FS_SPIN_H;
  
  if (fgUp)
  {
    vSetMsgCol4(FL_MENU_WB, FLCOLOR_BLACK, FLCOLOR_BLACK, FLCOLOR_GRAY, FLCOLOR_YELLOW);    
  }
  else
  {
    vSetMsgCol4(FL_MENU_WB, FLCOLOR_BLACK, FLCOLOR_BLACK, FLCOLOR_YELLOW, FLCOLOR_GRAY);
  }
  vOsdMsgPaste(FL_MENU_WB, OSD_MSG_FSUPDOWN1);
}
#else
void vMoveSpin(BOOL fgUp) large
{
  return;
}
#endif

#define PROGRESS_BAR   20
void vDrawProgress(BYTE bCurr, BYTE bTotal) large
{
  BYTE  bPos, i;
  WORD  wGap, wStartX, wStartY;
  
  //vRectangle(FSMENU_INFO, 0, 0, 1, FLCOLOR_GRAY);
  wGap = (_wEndX - _wStartX) / (PROGRESS_BAR);

//  _wStartY += 4;
//  _wEndY -= 4;
  //_wStartY += 2;
  wStartY = _wStartY + 2;
  _wEndY -= 2;
  wStartX = _wStartX;

  for (i=1; i<=PROGRESS_BAR; i++)
  {
    _wEndX = _wStartX = wStartX + wGap * (i-1) + 3;
    _wStartY = wStartY + (20 - i - 1);
    if (i <= bCurr)
      vOsdShowLine(FSMENU_INFO, FLCOLOR_YELLOW, 2);
    
/*
    if (i < bCurr)
      vOsdShowLine(FSMENU_INFO, FLCOLOR_BLACK, 2);
    else
      vOsdShowLine(FSMENU_INFO, FLCOLOR_YELLOW, 2);
*/
  }
}

void vMoveProgress(BYTE bCurr, BYTE bTotal, BOOL fgShow) large
{
  WORD  wGap, wStartX;

  if ((bCurr > bTotal) || (bCurr == 0))
    return;

  wGap = (_wEndX - _wStartX) / (PROGRESS_BAR);
  
  _wStartY += (2 + 20 - bCurr - 1);
  _wEndY -= 2;
  _wEndX = _wStartX = _wStartX + wGap * (bCurr-1) + 3;

  if (fgShow == TRUE)
  {
    vOsdShowLine(FSMENU_INFO, FLCOLOR_YELLOW, 2);
  }
  else
  {
    //vOsdShowLine(FSMENU_INFO, FLCOLOR_BLACK, 2);
    vOsdShowLine(FSMENU_INFO, FLCOLOR_GREENBLUE, 2);
  }
}

#if 0
void vDrawScrollingScriptMsg(WORD wMsg, WORD wShift) large
{
  
}
#endif

#if 0 // - JACOB: unused now
void vDrawScrollingStr(BYTE *pbStr, WORD wShift) large
{
  BYTE bIdx, i;
  BYTE pbStr2[10];
  WORD wStartX, wStartY;

  bIdx = (BYTE) (wShift / 20);

  if (bIdx > pbStr[0])
    return;

  vRectangle(FL_MENU_WB, 0, 0, 1, 0);

  wStartX = _wStartX;
  wStartY = _wStartY;
  vSetMsgCol4(FL_MENU_WB, 0, 0, 0, 2);

  // 1st
  pbStr2[0] = 1;
  pbStr2[1] = pbStr[bIdx+1];
  _wStartX = wStartX + 20 - (wShift % 20);
  _wStartY = wStartY;
  vOsdShowStr(FL_MENU_WB, pbStr2);

  // mask
  _wStartX = wStartX;
  _wStartY = wStartY;
  _wEndX   = _wStartX + 20;
  _wEndY   = _wStartY + 32;
  vRectangle(FL_MENU_WB, 0, 0, 1, 0);
  
  // other
  pbStr2[0] = pbStr[0] - bIdx - 1;
  for (i=1; i <= pbStr2[0]; i++)
  {
    pbStr2[i] = pbStr[bIdx+i+1];
  }
  
  _wStartX = wStartX + 40 - (wShift % 20);
  _wStartY = wStartY;
  vOsdShowStr(FL_MENU_WB, pbStr2);
}
#endif //0


#if 0 

static code WORD pwComboBoxMsg[] =
{
  OSD_MSG_OPEN,
  OSD_MSG_CLOSE,
  OSD_MSG_PLAY
};

void vDrawComboBox(BYTE bWB) large
{
  WORD  wStartX, wEndX, wStartY, wEndY;
  
  if ((_wEndX - _wStartX) < 32 * 3)
    return;
  
  if ((_wEndY - _wStartY) < (2+2+32+2+2))
    return;

  wStartX = _wStartX;
  wEndX   = _wEndX;
  wStartY = _wStartY;
  wEndY   = _wEndY;

  vRectangle(bWB, 0, 0, 1, 0);
  
}

void vMoveComboBox() large
{
}

#endif

#if 0
void vDrawDigitalClock(BYTE bMin, BYTE bSec) large
{
  
}
#endif

#endif  // #ifdef PLAYER_FLMENU

⌨️ 快捷键说明

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