www.pudn.com > dv981-hd.rar > FLCTRL.C


/**********************************************************************/ 
/***************    MTK CONFIDENTIAL & COPYRIGHTED     ****************/ 
/***************                                       ****************/ 
/***************  $Modtime:: 03/08/06 8:16p    $       ****************/ 
/***************  $Revision: 5.0 $       ****************/ 
/***************                                       ****************/ 
/***************   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 BBK//bywhy 2003/04/05 
 
#ifdef NEW_TVSYSTEM_MODE 
extern BOOL _fgVideoMode; 
#endif 
 
BYTE BBKSlider(void) large 
{ 
	BYTE i; 
/*10/16am 
  if(bSharedInfo(SI_PSCAN_EN) == SV_ON) 
  { 
   if(bSharedInfo(SI_TV_SYSTEM) == SV_PAL) 
  	i = 3; 
   else 
  	i = 5; 
  } 
  else 
  { 
   if(bSharedInfo(SI_TV_SYSTEM) == SV_PAL) 
  	i = 3; 
   else 
  	i = 5; 
  } 
*/ 
     if(_fgVideoMode) 
     	{ 
	if(bSharedInfo(SI_TV_SYSTEM) == SV_PAL) 
	 i = 3; 
	else 
	 i = 5; 
     	} 
    else 
    	{ 
	if(bSharedInfo(SI_NTSC_PAL) == SV_PAL) 
	 i = 3; 
	else 
	 i = 5; 
    	} 
 
#if defined(OPDV972_BES) || defined(THAI981) || defined(ELM981) 
  return (5); 
#else 
  return (i); 
#endif 
} 
#endif 
void vDrawSlider(WORD wCurrNo, WORD wTotalNs) large 
{ 
  WORD wOffset; 
  WORD wBtnLen; 
 
#ifndef FL_USE_LOGO 
#ifdef BBK 
  _wStartX = FS_SLIDER_X + BBKSlider(); 
  _wEndX = FS_SLIDER_X + FS_SLIDER_W + BBKSlider(); 
#else 
  _wStartX = FS_SLIDER_X; 
  _wEndX = FS_SLIDER_X + FS_SLIDER_W; 
#endif 
  _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); 
} 
 
void vMoveSlider(WORD wCurr, WORD wTotal, BOOL fgShow) large 
{ 
  WORD  wOffset, wBtnLen; 
  DWRD  dwTmp; 
 
  if ((wTotal == 0) || (wCurr > wTotal))   //dengsu 0719 
    return; 
  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); 
    } 
  } 
 
#ifdef BBK 
  #if defined(MT1389_REV_C)   //dengsu 0719 
  _wStartX = FS_SLIDER_X + BBKSlider() + 1; 
  #else 
  _wStartX = FS_SLIDER_X + BBKSlider(); 
  #endif 
  _wEndX = FS_SLIDER_X + FS_SLIDER_W + BBKSlider(); 
#else 
  _wStartX = FS_SLIDER_X; 
  _wEndX = FS_SLIDER_X + FS_SLIDER_W; 
#endif 
  _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, 0); 
#else 
    vRectangle(FL_MENU_WB, 0, 0, 1, FLCOLOR_BLACK); 
#endif 
 
//bywhy 2003/04/05 
#ifdef BBK 
    _wEndX = _wStartX = FS_SLIDER_X + FS_SLIDER_W - 1 + BBKSlider(); 
#else 
    _wEndX = _wStartX = FS_SLIDER_X + FS_SLIDER_W - 1; 
#endif 
  } 
} 
 
#ifndef FL_USE_LOGO 
void vDrawSpin(void) large 
{ 
#ifdef BBK 
  _wStartX = FS_SLIDER_X + BBKSlider(); 
#else 
  _wStartX = FS_SLIDER_X; 
#endif 
  _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 
{ 
#ifdef BBK 
  _wStartX = FS_SLIDER_X + BBKSlider(); 
  _wEndX = FS_SLIDER_X + FS_SLIDER_W + BBKSlider(); 
#else 
  _wStartX = FS_SLIDER_X; 
  _wEndX = FS_SLIDER_X + FS_SLIDER_W; 
#endif 
  _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; 
   
  wGap = (_wEndX - _wStartX) / (PROGRESS_BAR); 
 
  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); 
    else 
      vOsdShowLine(FSMENU_INFO, FLCOLOR_BLACK, 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); 
  } 
} 
 
#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