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

📄 flipshow.c

📁 MTK portableDVD 采用mtk1389方案的代码
💻 C
📖 第 1 页 / 共 2 页
字号:
/**********************************************************************/
/***************    MTK CONFIDENTIAL & COPYRIGHTED     ****************/
/***************                                       ****************/
/***************  $Modtime:: 05/03/21 8:31p    $       ****************/
/***************  $Revision: 2.0 $       ****************/
/***************                                       ****************/
/***************   Description : File Menu             ****************/
/***************                 Info Panel Module     ****************/
/***************                                       ****************/
/***************       Company : MediaTek Inc.         ****************/
/***************    Programmer : Jacob Lin             ****************/
/**********************************************************************/

#pragma NOAREGS

#define __FLIPSHOW_C_

#include "../general.h"
#include "../osdshow.h"
#include "flcomm.h"
#include "flctrl.h"
#include "flconfig.h"

#if (defined(FSMENU_INFO_PANEL) && defined(PLAYER_FLMENU))

static void vWord2Str(WORD wVal, BYTE *pbStr) large;
void vFlIpShowTimeRemain(BYTE bHour,BYTE bMin, BYTE bSec) large;
void vFlIpShowTotalTime(BYTE bHour,BYTE bMin, BYTE bSec) large;
void vFlIpShowBitrateNew(WORD wBitrate) large;

#ifdef FL_CHK_FOLDER_NS
  static void vFlIpShowFolderIndex(WORD wCurr) large;
#endif

static void vFlIpShowRptType(BYTE bRptType) large;
static void vFlIpShowListType(BYTE bType) large;
static void vFlIpShowEq(void) large;
static code BYTE pbISOFastDispTbl[] = { 0, 2, 4, 8, 16, 32 };
static code BYTE pbISOSlowDispTbl[] = { 0, 2, 4, 8, 16 };
typedef struct sInfoPanelArea
{
  WORD  wPanelPos[2];
  BYTE  bTimeout[2];
};

#define OSD_TIMEOUT_SHORTER  4 //tanglushan 0929

#ifdef BBK_NEW_GUI
#define MAX_SET_HLP_MSG         11
#endif

static code struct sInfoPanelArea _rInfoPanelArea[IP_INFO_MAX] =
{
  { { OSD_POS_FS_PLAYTIME,     OSD_POS_FS_PLAYTIME  }, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR    } },
  { { OSD_POS_FS_TOTALTIME,   OSD_POS_FS_TOTALTIME  }, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR    } },
	{ { OSD_POS_FS_TOTALTIME2, 	OSD_POS_FS_TOTALTIME2	}, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR 	 } },
	{ { OSD_POS_FS_OPTION,        OSD_POS_FS_OPTION   }, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR    } },
	{ { OSD_POS_FS_ZOOM,					 OSD_POS_FS_ZOOM		}, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR 	 } },
  { { OSD_POS_FS_SLIDE,           OSD_POS_FS_SLIDE  }, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR    } },
	{ { OSD_POS_FS_LIST_TYPE,		 OSD_POS_FS_INFO_BAR	}, { OSD_NO_DISAPPEAR, OSD_TIMEOUT_SHORTER } },
  { { OSD_POS_FS_RPT_TYPE,     OSD_POS_FS_INFO_BAR  }, { OSD_NO_DISAPPEAR, OSD_TIMEOUT_SHORTER } },
  { { OSD_POS_FS_PLAYLIST,      OSD_POS_FS_PLAYLIST }, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR    } },
  { { OSD_POS_FS_ITEM_INFO,    OSD_POS_FS_ITEM_INFO }, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR    } },  
  { { OSD_POS_AUTHOR,             OSD_POS_AUTHOR    }, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR    } },
  { { OSD_POS_TITLE,               OSD_POS_TITLE    }, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR    } },
  { { OSD_POS_ALBUM,               OSD_POS_ALBUM    }, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR    } },
  { { OSD_POS_GENRE,               OSD_POS_GENRE    }, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR    } },
  { { OSD_POS_BITRATE,            OSD_POS_BITRATE   }, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR    } },
  { { OSD_POS_ID3_TEXT,          OSD_POS_ID3_TEXT   }, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR    } },
  #ifdef SHUFFLEMODE_DISPLAY		//songchen 061031
  { { OSD_POS_SHUFFLEMODE,          OSD_POS_SHUFFLEMODE   }, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR    } },
  #endif
  { { OSD_POS_FS_ADD_TO_PLAYLIST,     OSD_POS_FS_ADD_TO_PLAYLIST   }, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR } }
};

////////////////////////////////////////////////////////////////////////////////
// Utility Function

static void vWord2Str(WORD wVal, BYTE *pbStr) large
{
	wVal = wWRDToBCD(wVal);

	if((wVal & 0xF000) != 0)
	{
    pbStr[0] = 4;
		pbStr[1] = BCD_HI(bHiByte(wVal)) + '0';
		pbStr[2] = BCD_LO(bHiByte(wVal)) + '0';
		pbStr[3] = BCD_HI(bLoByte(wVal)) + '0';
		pbStr[4] = BCD_LO(bLoByte(wVal)) + '0';
	}
	else if((wVal & 0x0F00) != 0)
	{
    pbStr[0] = 3;
		pbStr[1] = BCD_LO(bHiByte(wVal)) + '0';
		pbStr[2] = BCD_HI(bLoByte(wVal)) + '0';
		pbStr[3] = BCD_LO(bLoByte(wVal)) + '0';
	}
	else if((wVal & 0x00F0) != 0)
	{
    pbStr[0] = 2;
		pbStr[1] = BCD_HI(bLoByte(wVal)) + '0';
		pbStr[2] = BCD_LO(bLoByte(wVal)) + '0';
	}
	else
	{
    pbStr[0] = 1;
		pbStr[1] = BCD_LO(bLoByte(wVal)) + '0';
	}
}

static void vFlIpDrawInfo(BYTE bInfo, WORD wMsg, BYTE *pbStr) large
{
  BYTE  bTime;
  WORD  wPos;

  wPos  = _rInfoPanelArea[bInfo].wPanelPos[_bFlIpState];
  bTime = _rInfoPanelArea[bInfo].bTimeout[_bFlIpState];
  if (pbStr)
  {
    
    vOsdPosShowArg(wPos, wMsg, bTime, pbStr);
  }
  else
  {
    
    vOsdPosShow(wPos, wMsg, bTime);
  }
}

///////////////////////////////////////////////////////////////////////////////
//
static void vFlIpShowRptType(BYTE bRptType) large
{
  WORD  wMsg;

  switch(bRptType)
  {
    case SV_REPEAT_NONE:
      wMsg = OSD_MSG_MP3_REPEAT_OFF;
      break;
    case SV_REPEAT_ALL:
      wMsg = OSD_MSG_MP3_REPEAT_ALL;
      break;
    case SV_REPEAT_TRACK:
      wMsg = OSD_MSG_MP3_REPEAT_ONE;
      break;
    case SV_SINGLE:
      wMsg = OSD_MSG_MP3_SINGLE;
      break;
    default: 
      // TODO: add the error handling.
      return;
  }

  vFlIpDrawInfo(IP_INFO_RPT_TYPE, wMsg, 0);
}


void vFlIpShowEq(void) large
{
  _wStartX = 152;
  _wStartY = 360;
  _wEndX = SPTM_LINE_WIDTH;
  _wEndY = SPTM_LINE_HEIGHT;
  vShowEqBar(FL_MENU_WB, OSD_SPTM_SGRID, TRUE, 13, 8);
}

 void vFlIpShowTimeRemain(BYTE bHour,BYTE bMin, BYTE bSec) large
{
  BYTE pbTime[6];
  BYTE i;
	
  vSetMsgCol4(FL_MENU_WB, FLCOL_RED, FLCOL_RED, FLCOL_RED, FLCOL_WHITE);
	if(bSharedInfo(SI_MP3_TOTAL_TIME_HH) != 0xFF)
	{
  	vCheckTimeValid3(bHour,bMin, bSec);
		pbTime[0] = 5;
		pbTime[1] = BCD_LO(bHour) + '0';
    pbTime[2] = BCD_HI(bMin) + '0';
    pbTime[3] = BCD_LO(bMin) + '0';
    pbTime[4] = BCD_HI(bSec) + '0';
    pbTime[5] = BCD_LO(bSec) + '0';
		vFlIpDrawInfo(IP_INFO_PLAYTIME, OSD_MSG_TIME_RIGHT_3, pbTime);
	}

  vSetMsgCol4(FL_MENU_WB, 0, 0, 0, FLCOL_WHITE);
}

void vFlIpShowTotalTime(BYTE bHour,BYTE bMin, BYTE bSec) large
{
  BYTE pbTime[6];
	BYTE i;

  vCheckTimeValid3(bHour, bMin, bSec);

  vSetMsgCol4(FL_MENU_WB, FLCOL_RED, FLCOL_RED, FLCOL_RED, FLCOL_GRAY);

  pbTime[0] = 5;
  pbTime[1] = BCD_LO(bHour) + '0';
  pbTime[2] = BCD_HI(bMin) + '0';
  pbTime[3] = BCD_LO(bMin) + '0';
  pbTime[4] = BCD_HI(bSec) + '0';
  pbTime[5] = BCD_LO(bSec) + '0';
  vFlIpDrawInfo(IP_INFO_TOTALTIME2, OSD_MSG_TIME_RIGHT_3, pbTime);

  vSetMsgCol4(FL_MENU_WB, 0, 0, 0, FLCOL_WHITE);
}

 void vFlIpShowBitrateNew(WORD wBitrate) large
{
   BYTE pbBr[5];
  
#ifdef GUI_II_YWB
   _wStartX = FS_BITRATE_X+ FS_INFO_STR_EXTRA ; 	//songchen 061015
   _wStartY = FS_BITRATE_Y; 
   vOsdClearPos(FL_MENU_WB, 400, 30);	
#endif
   if (wBitrate != 0xFFFF)
   {
     vWord2Str(wBitrate, pbBr);
   }
   else
   {
     pbBr[0] = 1;
		 pbBr[1] = '0';
   } 

   switch(pbBr[0])
   {
	   case 4:
	     vOsdPosPasteArg(OSD_POS_BITRATE, OSD_MSG_FL_BITRATE4, pbBr, 0);
	     break;
		 case 3:
		   vOsdPosPasteArg(OSD_POS_BITRATE, OSD_MSG_FL_BITRATE3, pbBr, 0);
	     break;
     case 2:
		   vOsdPosPasteArg(OSD_POS_BITRATE, OSD_MSG_FL_BITRATE2, pbBr, 0);
	     break;
		 case 1:
		   pbBr[2] = ' ';
		   vOsdPosPasteArg(OSD_POS_BITRATE, OSD_MSG_FL_BITRATE2, pbBr, 0);
			 break;
		 default:
		 	 break;
   }
}
 
#ifdef SHUFFLEMODE_DISPLAY		//songchen 061101
void vFlIpShowShuffleMode(BYTE bShufflemode) large 
{
   _wStartX = FS_SHUFFLEMODE_X + FS_INFO_STR_EXTRA ; 	//songchen 061015
   _wStartY = FS_SHUFFLEMODE_Y; 
   vOsdClearPos(FL_MENU_WB, 400, 30);	 
   if(bShufflemode == SV_SHUFFLE)
   {
      vOsdMsgPaste(FL_MENU_WB,OSD_MSG_ON);
   }
   else
   {
      vOsdMsgPaste(FL_MENU_WB,OSD_MSG_OFF);
   }
}
#endif


static code WORD _pwFlHelpMessage[MAX_SET_HLP_MSG] = { // include OFF
  /* 00 */ OSD_MSG_NULL, //OSD_MSG_HELP_LIST_TYPE,
  /* 01 */ OSD_MSG_NULL, //OSD_MSG_HELP_SLIDE_TIME,
  /* 02 */ OSD_MSG_NULL, //OSD_MSG_HELP_FILE_SORT,
  /* 03 */ OSD_MSG_NULL, //OSD_MSG_HELP_REPEAT_MODE,
  /* 04 */ OSD_MSG_NULL, //OSD_MSG_HELP_OPEN_PLAYLIST,
  /* 05 */ OSD_MSG_NULL, //OSD_MSG_HELP_PLAY_INFO,
  /* 06 */ OSD_MSG_NULL, //OSD_MSG_HELP_ENTER_FOLDER,
  /* 07 */ OSD_MSG_NULL, //OSD_MSG_HELP_PRESS_PLAY,
  /* 08 */ OSD_MSG_FL_ADD_TO_PLAYLIST,
  /* 09 */ OSD_MSG_FL_DEL_FROM_PLAYLIST,
  /* 10 */ OSD_MSG_SWITCH_OPTION
};

 static void vFlIpShowAddToPlayList(BYTE bParam) large
 {
   WORD  wMsg;
   wMsg = _pwFlHelpMessage[bParam];
   vSetMsgCol4(FL_MENU_WB, 0, 0, 0, FLCOL_YELLOW);
   vFlIpDrawInfo(IP_INFO_ADD_TO_PLAY_LIST, wMsg, 0);
   vSetMsgCol4(FL_MENU_WB, 0, 0, 0, FLCOL_WHITE);
 }

 static void vFlIpShowSlideTime(BYTE bParam) large
 {
   BYTE pbTime[3];
   WORD  wMsg;
   bParam = bHEXToBCD(bParam);
   
	 if(BCD_HI(bParam) > 0)
	 {
	   pbTime[0] = 2;
	   pbTime[1] = BCD_HI(bParam) + '0';
	   pbTime[2] = BCD_LO(bParam) + '0';
	   wMsg = OSD_MSG_FL_SLIDE_TIME;
	 }
	 else
	 {
	   pbTime[0] = 1;
	   pbTime[1] = BCD_LO(bParam) + '0';
	   wMsg = OSD_MSG_FL_SLIDE_TIME1;
	 }
	 
   vFlIpDrawInfo(IP_INFO_SLIDE, wMsg, pbTime);
 }
 
 static void vFlIpShowListType(BYTE bType) large
 {
   WORD  wMsg;
   switch(bType)
   {
    case FLPARM_LIST_FOLDER:
      wMsg = OSD_MSG_FL_FOLDER;
      break;
    case FLPARM_LIST_DISC:
      wMsg = OSD_MSG_FL_DISC;
      break;
    case FLPARM_LIST_PLAYLIST:
      wMsg = OSD_MSG_FL_PLAYLIST;
      break;
    case FLPARM_LIST_INVALID:
      wMsg = OSD_MSG_MP3_NORMAL_MODE;
      break;
   }
   vFlIpDrawInfo(IP_INFO_LIST_TYPE, wMsg, 0);
 }

 
 static void  vFlIpShowItemInfo(void) large
 {
   vFlIpDrawInfo(IP_INFO_ITEM_INFO, OSD_MSG_FL_PLAY_INFO, 0);  
 }



 static void  vFlIpShowFileType(BYTE bType) large
 {
   WORD  wMsg;
   //wMsg = _pwFlFileTypeMeg[bType];
   switch(bType)
   {
     //case NO_FILE:
     //  wMsg = OSD_MSG_PLAY_NONE;		//songchenx message:no types.
     // break;	 	
     case AUDIO_FILE:
       wMsg = OSD_MSG_PLAY_MP3_ONLY;

⌨️ 快捷键说明

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