📄 bbktuner.c
字号:
if(AM_STEP_9K == _eAmStep)
{
if((wFreq > AM_CH_9K_MAX) || (AM_CH_9K_MAX <= AM_CH_MIN))
{
return(FALSE);
}
else
{
dwTemp = ((DWRD)(wFreq - AM_CH_MIN)) * (MENU_SLOT_WIDTH - MENU_SLIDE_WIDTH + 1);
*prPostion = (WORD)(dwTemp / (AM_CH_9K_MAX - AM_CH_MIN) + MENU_SLOT_START_X);
}
}
else
{
if((wFreq > AM_CH_10K_MAX) || (AM_CH_10K_MAX <= AM_CH_MIN))
{
return(FALSE);
}
else
{
dwTemp = ((DWRD)(wFreq - AM_CH_MIN)) * (MENU_SLOT_WIDTH - MENU_SLIDE_WIDTH + 1);
*prPostion = (WORD)(dwTemp / (AM_CH_10K_MAX - AM_CH_MIN) + MENU_SLOT_START_X);
}
}
}
}
return(TRUE);
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
static void vTnrShowMenuPoint(BYTE bStationNo, BOOL fgHili, BOOL fgShow) large
{
BYTE bBodyCol;
BYTE bSlideCol;
BYTE bFillCol;
WORD wPosition;
BYTE i;
for(i = 0; i < _bFmAmStationMax; i++)
{
if((i != (bStationNo - 1)) && (_wStationFreq[bStationNo - 1] == _wStationFreq[i]))
{
return;
}
}
vTnrGetSlotSlideCol(fgHili, &bFillCol, &bBodyCol, &bSlideCol);
if(fgShow)
{
if(fgTnrGetSlidePos(_wStationFreq[bStationNo - 1], &wPosition) == TRUE)
{
_wStartX = wPosition;
_wStartY = MENU_SLOT_START_Y;
_wEndX = _wStartX + MENU_POINT_WIDTH - 1;
_wEndY = MENU_SLOT_END_Y;
vRectangle(WB_TUNER_MENU, 0, 0, TRUE, bSlideCol);
}
}
else
{
if(fgTnrGetSlidePos(_wStationFreq[bStationNo - 1], &wPosition) == TRUE)
{
_wStartX = wPosition;
_wStartY = MENU_SLOT_START_Y;
_wEndX = _wStartX + MENU_POINT_WIDTH - 1;
_wEndY = MENU_SLOT_END_Y;
vRectangle(WB_TUNER_MENU, 0, 0, TRUE, bBodyCol);
}
}
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
static void vTnrShowMenuSlide(BOOL fgShow) large
{
BYTE bBodyCol;
BYTE bSlideCol;
BYTE bFillCol;
WORD wPosition;
BYTE i;
WORD wFreqOffL;
WORD wFreqOffR;
if(TUNER_STATE_BROWSER == _eTunerState && TUNER_BRW_STATE_HEAD == _eTunerBrwState)
{
vTnrGetSlotSlideCol(TRUE, &bFillCol, &bBodyCol, &bSlideCol);
}
else
{
vTnrGetSlotSlideCol(FALSE, &bFillCol, &bBodyCol, &bSlideCol);
}
if(fgShow)
{
if(fgTnrGetSlidePos(_wActiveFreq, &wPosition) == TRUE)
{
vSetMsgCol4(WB_TUNER_MENU, bFillCol, bFillCol, bFillCol, bSlideCol);
vOsdPasteMsgXY(wPosition, MENU_SLIDE_START_Y, WB_TUNER_MENU, OSD_MSG_TUNER_SLIDE);
}
}
else
{
if(fgTnrGetSlidePos(_wActiveFreq, &wPosition) == TRUE)
{
vSetMsgCol4(WB_TUNER_MENU, bFillCol, bFillCol, bFillCol, bFillCol);
vOsdPasteMsgXY(wPosition, MENU_SLIDE_START_Y, WB_TUNER_MENU, OSD_MSG_TUNER_SLIDE);
_wStartX = wPosition;
_wStartY = MENU_SLOT_START_Y;
_wEndX = wPosition + MENU_SLIDE_WIDTH;
_wEndY = MENU_SLOT_END_Y;
vRectangle(WB_TUNER_MENU, 0, 0, TRUE, bBodyCol);
if(_wActiveFreq >= 8)
{
wFreqOffL = _wActiveFreq - 8;
}
else
{
wFreqOffL = 0;
}
wFreqOffR = _wActiveFreq + 8;
}
for(i=0; i<_bFmAmStationMax; i++)
{
if(_wStationFreq[i] >= wFreqOffL && _wStationFreq[i] <= wFreqOffR)
{
if(fgTnrGetSlidePos(_wStationFreq[i], &wPosition) == TRUE)
{
_wStartX = wPosition;
_wStartY = MENU_SLOT_START_Y;
_wEndX = _wStartX + MENU_POINT_WIDTH - 1;
_wEndY = MENU_SLOT_END_Y;
vRectangle(WB_TUNER_MENU, 0, 0, TRUE, bSlideCol);
}
}
}
}
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
static void vTnrDrawMenuSlotSlide(BOOL fgInit, BOOL fgHili) large
{
BYTE bBodyCol;
BYTE bSlideCol;
BYTE bFillCol;
WORD wPosition;
BYTE i;
vTnrGetSlotSlideCol(fgHili, &bFillCol, &bBodyCol, &bSlideCol);
/*Clear slide area first!*/
_wStartX = MENU_SLOT_START_X;
_wEndX = MENU_SLOT_END_X + 4;
_wStartY = MENU_SLIDE_START_Y;
_wEndY = MENU_SLIDE_END_Y;
vChgColRep(WB_TUNER_MENU, bSlideCol, bFillCol);
/*show slot!*/
_wStartX = MENU_SLOT_START_X;
_wStartY = MENU_SLOT_START_Y;
_wEndX = MENU_SLOT_END_X;
_wEndY = MENU_SLOT_END_Y;
vRectangle(WB_TUNER_MENU, 0, 0, TRUE, bBodyCol);
if(fgInit)
{
return;
}
/*show frequency's points*/
for(i=0; i<_bFmAmStationMax; i++)
{
if(fgTnrGetSlidePos(_wStationFreq[i], &wPosition) == TRUE)
{
_wStartX = wPosition;
_wStartY = MENU_SLOT_START_Y;
_wEndX = _wStartX + MENU_POINT_WIDTH - 1;
_wEndY = MENU_SLOT_END_Y;
vRectangle(WB_TUNER_MENU, 0, 0, TRUE, bSlideCol);
}
}
/*show slide*/
if(fgTnrGetSlidePos(_wActiveFreq, &wPosition) == TRUE)
{
vSetMsgCol4(WB_TUNER_MENU, bFillCol, bFillCol, bFillCol, bSlideCol);
vOsdPasteMsgXY(wPosition, MENU_SLIDE_START_Y, WB_TUNER_MENU, OSD_MSG_TUNER_SLIDE);
}
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
static BOOL fgTnrGetNextFreq(BOOL fgUp) large
{
BOOL fgRet = FALSE;
WORD wFreq;
if(fgUp)
{
if(TUNER_BAND_FM == _eTunerBand)
{
if(_wActiveFreq < FM_CH_MAX)
{
_wActiveFreq ++;
fgRet = TRUE;
}
}
else if(TUNER_BAND_AM == _eTunerBand)
{
if(AM_STEP_9K == _eAmStep)
{
if(_wActiveFreq < AM_CH_9K_MAX)
{
_wActiveFreq ++;
fgRet = TRUE;
}
}
else
{
if(_wActiveFreq < AM_CH_10K_MAX)
{
_wActiveFreq ++;
fgRet = TRUE;
}
}
}
}
else
{
if(TUNER_BAND_FM == _eTunerBand)
{
if(_wActiveFreq > FM_CH_MIN)
{
_wActiveFreq --;
fgRet = TRUE;
}
}
else if(TUNER_BAND_AM == _eTunerBand)
{
if(_wActiveFreq > AM_CH_MIN)
{
_wActiveFreq --;
fgRet = TRUE;
}
}
}
if(fgRet)
{
wFreq = _wActiveFreq;
if(fgGetRealFreq(&wFreq))
{
vVfdShowFreq(wFreq, _eTunerBand);
}
}
return(fgRet);
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
static void vTnrDrawMainMenuChNum(void) large
{
BYTE i;
BYTE bChStr[4];
BYTE bChTmp;
if(_bStationNo > _bFmAmStationMax)
{
_bStationNo = _bFmAmStationMax;
}
bChTmp = _bStationNo;
bChStr[0] = 1;
bChStr[1] = (bChTmp / 10) + '0';
bChStr[2] = 1;
bChStr[3] = (bChTmp % 10) + '0';
for(i=0; i<CHANNEL_INPUT_NS; i++)
{
if(i == _eChInput)
{
vSetMsgCol4(WB_TUNER_MENU, TUNER_MENU_RED44, TUNER_MENU_RED44, TUNER_MENU_RED44, TUNER_MENU_WHITE44);
}
else
{
vSetMsgCol4(WB_TUNER_MENU, TUNER_MENU_WHITE41, TUNER_MENU_WHITE41, TUNER_MENU_WHITE41, TUNER_MENU_WHITE44);
}
switch(i)
{
case CHANNEL_INPUT_1:
vOsdShowStrXY(MENU_CH_DIG1_START_X, MENU_CH_DIG1_START_Y, WB_TUNER_MENU, bChStr + 0);
break;
case CHANNEL_INPUT_2:
vOsdShowStrXY(MENU_CH_DIG2_START_X, MENU_CH_DIG2_START_Y, WB_TUNER_MENU, bChStr + 2);
break;
default:
break;
}
}
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
static void vTnrDrawMainMenuChannel(void) large
{
vSetMsgCol4(WB_TUNER_MENU, TUNER_MENU_GRAY43, TUNER_MENU_GRAY43, TUNER_MENU_GRAY43, TUNER_MENU_WHITE44);
vOsdPasteMsgXY(MENU_CH_MSG_START_X, MENU_CH_MSG_START_Y, WB_TUNER_MENU, OSD_MSG_TUNER_CHANNEL);
vTnrDrawMainMenuChNum();
/*Paste up and down arrow!*/
vOsdPasteBmpXY(MENU_CH_UPBMP_START_X, MENU_CH_UPBMP_START_Y, WB_TUNER_MENU, BMP_TUNER_UP);
vOsdPasteBmpXY(MENU_CH_DOWNBMP_START_X, MENU_CH_DOWNBMP_START_Y, WB_TUNER_MENU, BMP_TUNER_DOWN);
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
static void vTnrMainMenuHiliArrow(BOOL fgUp, BOOL fgHili) large
{
if(fgUp)
{
vSetStartEndXY(MENU_CH_UPBMP_START_X, MENU_CH_UPBMP_START_Y, MENU_CH_UPBMP_END_X , MENU_CH_UPBMP_END_Y);
}
else
{
vSetStartEndXY(MENU_CH_DOWNBMP_START_X, MENU_CH_DOWNBMP_START_Y, MENU_CH_DOWNBMP_END_X, MENU_CH_DOWNBMP_END_Y);
}
if(fgHili)
{
vChgColRep(WB_TUNER_MENU, TUNER_MENU_WHITE44, TUNER_MENU_RED44);
}
else
{
vChgColRep(WB_TUNER_MENU, TUNER_MENU_RED44, TUNER_MENU_WHITE44);
}
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
static void vTnrDrawMainMenuRect(void) large
{
vSetStartEndXY(TUNER_MAIN_MENU_START_X, TUNER_MAIN_MENU_START_Y, TUNER_MAIN_MENU_END_X - 1, TUNER_MAIN_MENU_END_Y - 1);
vRectangle(WB_TUNER_MENU, 0, 0, TRUE, TUNER_MENU_GRAY43);
vSetStartEndXY(TUNER_MAIN_MENU_START_X, TUNER_MAIN_MENU_START_Y, TUNER_MAIN_MENU_END_X, TUNER_MAIN_MENU_END_Y);
vHnrPasteCorner(WB_TUNER_MENU, BMP_CORNER_TL_B75_TRA, BMP_CORNER_TR_B75_TRA, BMP_CORNER_BL_B75_TRA, BMP_CORNER_BR_B75_TRA);
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
void vTnrDrawMainMenu(BOOL fgInit) large
{
_eChInput = CHANNEL_INPUT_1;
vTnrDrawMainMenuRect();
vTnrDrawMenuMsgFrequency(FALSE);
vTnrDrawMenuSlotSlide(fgInit, FALSE);
vTnrDrawMainMenuChannel();
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
static void vTnrMenuEnterStation(void) large
{
//vTnrMainMenuHiliArrow(TRUE, FALSE);
//vTnrMainMenuHiliArrow(FALSE, FALSE);
if(_bStationNo > _bFmAmStationMax || _bStationNo < 1)
{
_bStationNo = 1;
}
vTnrShowMenuSlide(FALSE);
_wActiveFreq = _wStationFreq[_bStationNo - 1];
vTnrShowMenuSlide(TRUE);
vTunerSaveChannel();
vStartIFCounter(_wActiveFreq, FALSE);
vTnrShowActiveFrequency();
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
static BOOL fgTnrMenuCancelKey(void) large
{
BYTE bChTmp;
vTnrMainMenuHiliArrow(TRUE, FALSE);
vTnrMainMenuHiliArrow(FALSE, FALSE);
_bStationNo = bTunerReadChannel();
_eChInput = CHANNEL_INPUT_1;
vTnrDrawMainMenuChNum();
return(UOP_OK);
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
static BOOL fgTnrMenuNumKey(void) large
{
BYTE bTmp;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -