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

📄 bbktuner.c

📁 关于收音功能代码,并且显示在OSD和VFD上
💻 C
📖 第 1 页 / 共 5 页
字号:

		case TUNER_BRW_ITEM_AMSTEP:
			bMaxItem = AM_STEP_MAX;
		break;

		default:
		return;
	}

	if(0 == bDataVal)
	{
		bCornerTopLeft     = BMP_CORNER_TL_RED_TRA;
		bCornerTopRight    = BMP_CORNER_TR_RED_TRA;
		bCornerBottomLeft  = BMP_CORNER_BL_RED_B75;
		bCornerBottomRight = BMP_CORNER_BR_RED_B75;
	}
	else if(bMaxItem == bDataVal)
	{
		bCornerTopLeft     = BMP_CORNER_TL_RED_B75;
		bCornerTopRight    = BMP_CORNER_TR_RED_B75;
		bCornerBottomLeft  = BMP_CORNER_BL_RED_TRA;
		bCornerBottomRight = BMP_CORNER_BR_RED_TRA;
	}
	else
	{
		bCornerTopLeft     = BMP_CORNER_TL_RED_B75;
		bCornerTopRight    = BMP_CORNER_TR_RED_B75;
		bCornerBottomLeft  = BMP_CORNER_BL_RED_B75;
		bCornerBottomRight = BMP_CORNER_BR_RED_B75;
	}

	vHnrPasteCorner(WB_TUNER_MENU, bCornerTopLeft, bCornerTopRight, bCornerBottomLeft, bCornerBottomRight);
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static void vTnrDrawBrwHeadRect(BOOL fgHili) large
{
	vSetStartEndXY(TUNER_BROWSER_HEAD_START_X, TUNER_BROWSER_HEAD_START_Y, TUNER_BROWSER_HEAD_END_X - 1, TUNER_BROWSER_HEAD_END_Y- 1);

	if(fgHili)
	{
		vRectangle(WB_TUNER_MENU, 0, 0, TRUE, TUNER_MENU_RED44);
	}
	else
	{
		vRectangle(WB_TUNER_MENU, 0, 0, TRUE, TUNER_MENU_GRAY43);
	}

	vSetStartEndXY(TUNER_BROWSER_HEAD_START_X, TUNER_BROWSER_HEAD_START_Y, TUNER_BROWSER_HEAD_END_X, TUNER_BROWSER_HEAD_END_Y);

	if(fgHili)
	{
		vHnrPasteCorner(WB_TUNER_MENU, BMP_CORNER_TL_RED_TRA, BMP_CORNER_TR_RED_TRA, BMP_CORNER_BL_RED_TRA, BMP_CORNER_BR_RED_TRA);
	}
	else
	{
		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    : 
***************************************************************************************/
static void vTnrDrawBrwItemRect(BYTE fgHili) large
{
	BYTE bFillCol;
	BYTE bBodyCol;

	vTnrBrwGetItemCol(TUNER_BRW_ITEM_NONE, fgHili, &bBodyCol, &bFillCol);

	vSetStartEndXY(TUNER_BRW_ITEM_RECT_START_X, TUNER_BRW_ITEM_RECT_START_Y, TUNER_BRW_ITEM_RECT_END_X - 1, TUNER_BRW_ITEM_RECT_END_Y- 1);
	vRectangle(WB_TUNER_MENU, 0, 0, TRUE, bFillCol);

	vSetStartEndXY(TUNER_BRW_ITEM_RECT_START_X, TUNER_BRW_ITEM_RECT_START_Y, TUNER_BRW_ITEM_RECT_END_X, TUNER_BRW_ITEM_RECT_END_Y);
	vTnrBrwItemDataCorner(fgHili);
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static void vTnrDrawBrwItem(BYTE bItemVal, BOOL fgHili) large
{
	BYTE bFillCol;
	BYTE bBodyCol;
	WORD wStartY;

	vTnrBrwGetItemCol(TUNER_BRW_ITEM_NONE, fgHili, &bBodyCol, &bFillCol);
	vSetMsgCol4(WB_TUNER_MENU, bFillCol, bFillCol, bFillCol, bBodyCol);

	if(TUNER_BRW_ITEM_LINE == bItemVal)
	{
		wStartY = _wItemStY(bItemVal) + TUNER_BRW_ITEM_LINE_OFFSET_Y;
		vSetStartEndXY(TUNER_BRW_ITEM_RECT_START_X, wStartY, TUNER_BRW_ITEM_RECT_END_X - 1, wStartY + 1);
		vRectangle(WB_TUNER_MENU, 0, 0, TRUE, bBodyCol);
	}
	else
	{
		if(TUNER_BRW_ITEM_SIGNAL == bItemVal && TUNER_BAND_AM == _eTunerBand)
		{
			vSetMsgCol4(WB_TUNER_MENU, bFillCol, bFillCol, bFillCol, TUNER_MENU_WHITE43);
		}
		else if(TUNER_BRW_ITEM_AMSTEP == bItemVal && TUNER_BAND_FM == _eTunerBand)
		{
			vSetMsgCol4(WB_TUNER_MENU, bFillCol, bFillCol, bFillCol, TUNER_MENU_WHITE43);
		}

		wStartY = _wItemStY(bItemVal) + TUNER_BRW_ITEM_MSG_OFFSET_Y;
		vOsdPasteMsgXY(TUNER_BRW_ITEM_MSG_START_X, wStartY, WB_TUNER_MENU, _wItemMsg(bItemVal));
	}
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static void vTnrDrawBrwItemData(BYTE bItemVal, BOOL fgHili) large
{
	BYTE bFillCol;
	BYTE bBodyCol;
	WORD wStartY;
	BYTE bChannel[3];

	vTnrBrwGetItemCol(bItemVal, fgHili, &bBodyCol, &bFillCol);

	wStartY = _wItemStY(bItemVal) + TUNER_BRW_ITEM_MSG_OFFSET_Y;

	switch(bItemVal)
	{
		case TUNER_BRW_ITEM_CHANNEL:
			bChannel[0] = 3;
			bChannel[1] = ' ';
			bChannel[2] = _bStationNo / 10 + '0';
			bChannel[3] = _bStationNo % 10 + '0';

			if('0' == bChannel[2])
			{
				bChannel[2] = ' ';
			}

			vSetMsgCol4(WB_TUNER_MENU, bFillCol, bFillCol, bFillCol, bBodyCol);
			vOsdPasteStrRightXY(TUNER_BRW_ITEM_VAL_END_X, wStartY, WB_TUNER_MENU, bChannel);
		break;

		case TUNER_BRW_ITEM_BAND:
			if(_eTunerBand < TUNER_BAND_NS)
			{
				/*Clear first*/
				vSetMsgCol4(WB_TUNER_MENU, bFillCol, bFillCol, bFillCol, bFillCol);
				vOsdPasteMsgRightXY(TUNER_BRW_ITEM_VAL_END_X, wStartY, WB_TUNER_MENU, OSD_MSG_TUNER_AM);

				vSetMsgCol4(WB_TUNER_MENU, bFillCol, bFillCol, bFillCol, bBodyCol);
				vOsdPasteMsgRightXY(TUNER_BRW_ITEM_VAL_END_X, wStartY, WB_TUNER_MENU, _sTunerBrwDataBand[_eTunerBand].wDataVal);
			}
		break;

		case TUNER_BRW_ITEM_SIGNAL:
			if(_eSignalType < TUNER_SIGNAL_NS)
			{
				/*Clear first*/
				vSetMsgCol4(WB_TUNER_MENU, bFillCol, bFillCol, bFillCol, bFillCol);
				vOsdPasteMsgRightXY(TUNER_BRW_ITEM_VAL_END_X, wStartY, WB_TUNER_MENU, OSD_MSG_TUNER_VAL_STEREO);

				if(TUNER_BAND_FM == _eTunerBand)
				{
					vSetMsgCol4(WB_TUNER_MENU, bFillCol, bFillCol, bFillCol, bBodyCol);
				}
				else if(TUNER_BAND_AM == _eTunerBand)
				{
					vSetMsgCol4(WB_TUNER_MENU, bFillCol, bFillCol, bFillCol, TUNER_MENU_WHITE43);
				}

				vOsdPasteMsgRightXY(TUNER_BRW_ITEM_VAL_END_X, wStartY, WB_TUNER_MENU, _sTunerBrwDataSignal[_eSignalType].wDataVal);
			}
		break;

		case TUNER_BRW_ITEM_AMSTEP:
			if(_eAmStep < AM_STEP_NS)
			{
				/*Clear first*/
				vSetMsgCol4(WB_TUNER_MENU, bFillCol, bFillCol, bFillCol, bFillCol);
				vOsdPasteMsgRightXY(TUNER_BRW_ITEM_VAL_END_X, wStartY, WB_TUNER_MENU, OSD_MSG_TUNER_VAL_10KSTEP);

				if(TUNER_BAND_AM == _eTunerBand)
				{
					vSetMsgCol4(WB_TUNER_MENU, bFillCol, bFillCol, bFillCol, bBodyCol);
				}
				else if(TUNER_BAND_FM == _eTunerBand)
				{
					vSetMsgCol4(WB_TUNER_MENU, bFillCol, bFillCol, bFillCol, TUNER_MENU_WHITE43);
				}

				vOsdPasteMsgRightXY(TUNER_BRW_ITEM_VAL_END_X, wStartY, WB_TUNER_MENU, _sTunerBrwDataAmstep[_eAmStep].wDataVal);
			}
		break;

		default:
		break;
	}
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static void vTnrDrawBrwItemNest(BYTE bItemVal, BOOL fgShow) large
{
	if(TUNER_STATE_BROWSER != _eTunerBrwState)
	{
		return;
	}

	if(TUNER_BRW_ITEM_LINE == bItemVal || TUNER_BRW_ITEM_AUTO == bItemVal)
	{
		return;
	}

	if((bItemVal == _eTunerBrwItem) && (bItemVal < TUNER_BRW_ITEM_NS))
	{
		if(fgShow)
		{
			vOsdPasteBmpXY(TUNER_BRW_ITEM_NEST_START_X, _wItemStY(bItemVal) + TUENR_BRW_ITEM_NEST_OFFSET_Y, WB_TUNER_MENU, BMP_TUNER_NESTED);
		}
		else
		{
			vSetStartEndXY(TUNER_BRW_ITEM_NEST_START_X, _wItemStY(bItemVal), 
				TUNER_BRW_ITEM_NEST_START_X + TUNER_BRW_NEST_BMP_WIDTH , _wItemStY(bItemVal) + TUNER_BRW_ITEM_HEIGHT);

			vRectangle(WB_TUNER_MENU, 0, 0, TRUE, TUNER_MENU_GRAY43);
		}
	}
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static void vTnrBrwDrawDataDot(BYTE bItemVal, BYTE bDataCur,BOOL fgShow, BOOL fgSelect, BOOL fgHili) large
{
	BYTE bBgCol;
	BYTE bBodyCol;
	BYTE bNumCol;
	BYTE bFillCol;
	WORD wStartY;

	vTnrBrwGetDatCol(fgHili, &bBgCol, &bBodyCol, &bNumCol, &bFillCol);

	if(!fgShow)
	{
		bBodyCol = bFillCol;
	}
	else if(fgSelect)
	{
		bFillCol = TUNER_MENU_RED44;
	}

	vSetMsgCol4(WB_TUNER_MENU, bFillCol, bFillCol, bFillCol, bBodyCol);

	switch(bItemVal)
	{
		case TUNER_BRW_ITEM_BAND:
			wStartY = TUNER_BRW_DATA_BAND_START_Y + TUNER_BRW_DATA_SELECT_HEIGHT * bDataCur;
		break;

		case TUNER_BRW_ITEM_SIGNAL:
			wStartY = TUNER_BRW_DATA_SIGNAL_START_Y + TUNER_BRW_DATA_SELECT_HEIGHT * bDataCur;
		break;

		case TUNER_BRW_ITEM_AMSTEP:
			wStartY = TUNER_BRW_DATA_STEP_START_Y + TUNER_BRW_DATA_SELECT_HEIGHT * bDataCur;
		break;

		default:
		break;	
	}

	vOsdPasteMsgXY(TUNER_BRW_DOT_START_X, wStartY + TUNER_BRW_DATA_MSG_OFFSET_Y, 
		WB_TUNER_MENU, OSD_MSG_SELECT_ROUND);
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static void vTnrBrwShowArrow(BYTE bItemVal, BOOL fgHili) large
{
	switch(bItemVal)
	{
		case TUNER_BRW_ITEM_CHANNEL:
			if(fgHili)
			{
				vOsdPasteBmpXY(TUNER_BRW_ARROW_START_X, TUNER_BRW_CH_UPBMP_START_Y, WB_TUNER_MENU, BMP_TUNER_UP); 
				vOsdPasteBmpXY(TUNER_BRW_ARROW_START_X, TUNER_BRW_CH_DOWNBMP_START_Y, WB_TUNER_MENU, BMP_TUNER_DOWN); 
			}
			else
			{
				vSetStartEndXY(TUNER_BRW_ARROW_START_X, TUNER_BRW_CH_UPBMP_START_Y, TUNER_BRW_ARROW_END_X , TUNER_BRW_CH_UPBMP_END_Y);
				vRectangle(WB_TUNER_MENU, 0, 0, TRUE, TUNER_MENU_GRAY42);
				vSetStartEndXY(TUNER_BRW_ARROW_START_X, TUNER_BRW_CH_DOWNBMP_START_Y, TUNER_BRW_ARROW_END_X , TUNER_BRW_CH_DOWNBMP_END_Y);
				vRectangle(WB_TUNER_MENU, 0, 0, TRUE, TUNER_MENU_GRAY42);
			}
		break;

		case TUNER_BRW_ITEM_SAVE:
			if(fgHili)
			{
				vOsdPasteBmpXY(TUNER_BRW_ARROW_START_X, TUNER_BRW_SAVECH_UPBMP_START_Y, WB_TUNER_MENU, BMP_TUNER_UP); 
				vOsdPasteBmpXY(TUNER_BRW_ARROW_START_X, TUNER_BRW_SAVECH_DOWNBMP_START_Y, WB_TUNER_MENU, BMP_TUNER_DOWN); 
			}
			else
			{
				vSetStartEndXY(TUNER_BRW_ARROW_START_X, TUNER_BRW_SAVECH_UPBMP_START_Y, TUNER_BRW_ARROW_END_X , TUNER_BRW_SAVECH_UPBMP_END_Y);
				vRectangle(WB_TUNER_MENU, 0, 0, TRUE, TUNER_MENU_GRAY42);
				vSetStartEndXY(TUNER_BRW_ARROW_START_X, TUNER_BRW_SAVECH_DOWNBMP_START_Y, TUNER_BRW_ARROW_END_X , TUNER_BRW_SAVECH_DOWNBMP_END_Y);
				vRectangle(WB_TUNER_MENU, 0, 0, TRUE, TUNER_MENU_GRAY42);
			}
			break;

		default:
		break;
	}
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static void vTnrBrwHeadAreaHili(BOOL fgHili) large
{
	vSetStartEndXY(TUNER_BROWSER_HEAD_START_X, TUNER_BROWSER_HEAD_START_Y, 
		TUNER_BROWSER_HEAD_END_X , TUNER_BROWSER_HEAD_END_Y);

	if(fgHili)
	{
		vChgColRep(WB_TUNER_MENU, TUNER_MENU_GRAY43, TUNER_MENU_RED44);
		vChgColRep(WB_TUNER_MENU, TUNER_MENU_WHITE41, TUNER_MENU_RED41);
		vChgColRep(WB_TUNER_MENU, TUNER_MENU_YELLOW, TUNER_MENU_WHITE);
	}
	else
	{
		vChgColRep(WB_TUNER_MENU, TUNER_MENU_RED44, TUNER_MENU_GRAY43);
		vChgColRep(WB_TUNER_MENU, TUNER_MENU_RED41, TUNER_MENU_WHITE41);
		vChgColRep(WB_TUNER_MENU, TUNER_MENU_WHITE, TUNER_MENU_YELLOW);
	}
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static void vTnrBrwItemAreaHili(BOOL fgHili) large
{
	vSetStartEndXY(TUNER_BRW_ITEM_RECT_START_X, TUNER_BRW_ITEM_RECT_START_Y, 
		TUNER_BRW_ITEM_RECT_END_X , TUNER_BRW_ITEM_RECT_END_Y);

	if(fgHili)
	{
		vChgColRep(WB_TUNER_MENU, TUNER_MENU_WHITE42, TUNER_MENU_WHITE44);
		vChgColRep(WB_TUNER_MENU, TUNER_MENU_GRAY42, TUNER_MENU_GRAY43);
		vChgColRep(WB_TUNER_MENU, TUNER_MENU_RED42, TUNER_MENU_RED44);
	}
	else
	{
		vChgColRep(WB_TUNER_MENU, TUNER_MENU_WHITE44, TUNER_MENU_WHITE42);
		vChgColRep(WB_TUNER_MENU, TUNER_MENU_GRAY43, TUNER_MENU_GRAY42);
		vChgColRep(WB_TUNER_MENU, TUNER_MENU_RED44, TUNER_MENU_RED42);
	}
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static void vTnrBrwDataAreaHili(BOOL fgHili) large
{
	vSetStartEndXY(TUNER_BRW_DATA_AREA_START_X, TUNER_BRW_DATA_AREA_START_Y, 
		TUNER_BRW_DATA_AREA_END_X , TUNER_BRW_DATA_AREA_END_Y);

	if(fgHili)
	{
		vChgColRep(WB_TUNER_MENU, TUNER_MENU_WHITE42, TUNER_MENU_WHITE44);
		vChgColRep(WB_TUNER_MENU, TUNER_MENU_GRAY42, TUNER_MENU_GRAY43);
		vChgColRep(WB_TUNER_MENU, TUNER_MENU_BLACK41, TUNER_MENU_RED);
	}
	else
	{
		vChgColRep(WB_TUNER_MENU, TUNER_MENU_WHITE44, TUNER_MENU_WHITE42);
		vChgColRep(WB_TUNER_MENU, TUNER_MENU_GRAY43, TUNER_MENU_GRAY42);
		vChgColRep(WB_TUNER_MENU, TUNER_MENU_RED, TUNER_MENU_BLACK41);
		vChgColRep(WB_TUNER_MENU, TUNER_MENU_RED44, TUNER_MENU_GRAY42);
	}
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static void vTnrBrwClearData(void) large
{
	vSetStartEndXY(TUNER_BRW_DATA_AREA_START_X, TUNER_BRW_DATA_AREA_START_Y, 
		TUNER_BRW_DATA_AREA_END_X , TUNER_BRW_DATA_AREA_END_Y);

	vRectangle(WB_TUNER_MENU, 0, 0, TRUE, TUNER_MENU_BG);
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static void vTnrBrwItemItemHili(BYTE bItemVal, BYTE fgHili) large
{
	if(TUNER_BRW_ITEM_LINE == bItemVal || bItemVal > TUNER_BRW_ITEM_MAX)
	{
		return;
	}

	if(fgHili)
	{
		vTnrDrawBrwItemNest(bItemVal, TRUE);
	}
	else
	{
		vTnrDrawBrwItemNest(bItemVal, FALSE);
	}

	vSetStartEndXY(TUNER_BRW_ITEM_RECT_START_X, _wItemStY(bItemVal), 
		TUNER_BRW_ITEM_RECT_END_X - 1, _wItemStY(bItemVal) + TUNER_BRW_ITEM_HEIGHT - 1);

	if(fgHili)
	{
		vChgColRep(WB_TUNER_MENU, TUNER_MENU_GRAY43, TUNER_MENU_RED44);

		vSetStartEndXY(TUNER_BRW_ITEM_RECT_START_X + 1, _wItemStY(bItemVal), 
			TUNER_BRW_ITEM_RECT_END_X, _wItemStY(bItemVal) + TUNER_BRW_ITEM_HEIGHT);

		vTnrBrwItemItemCorner(bItemVal);
	}
	else

⌨️ 快捷键说明

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