📄 fmdisplay.c
字号:
unsigned int Temp_DrawMode;
TempColor = LCD_GetColor();
Temp_DrawMode = LCD_SetTextMode(LCD_DRAWMODE_TRANS);
if (FmDisplayFlag & FM_DISPFLAG_SUBMENU_BK) {
//LCD_SetDispRect(RADIO_SUBMENUBK_PIC_X, RADIO_SUBMENUBK_PIC_Y, (RADIO_SUBMENUBK_PIC_X + RADIO_SUBMENUBK_PIC_XSIZE - 1), (RADIO_SUBMENUBK_PIC_Y + RADIO_SUBMENUBK_PIC_YSIZE - 1));
DisplayPicture(RADIO_SUBMENUBK_PIC_X, RADIO_SUBMENUBK_PIC_Y, RADIO_SUBMENUBK_PIC_XSIZE, RADIO_SUBMENUBK_PIC_YSIZE, RADIO_SUBMENUBK_PIC);
}
if (FmDisplayFlag & FM_DISPFLAG_SUBMENU_SEL) {
LCD_SetColor(COLOR_BLACK);
for (temp = 0; temp < 5; temp ++) {
DisplayPicture(RADIO_SUBMENUBK_PIC_X, (RADIO_SUB_MENU_TXT_Y + (temp * RADIO_SUB_MENU_TXT_YSTEP)),
RADIO_SUBMENUBK_PIC_XSIZE, RADIO_SUB_MENU_TXT_YSTEP,
(NFA_RADIO_SUBMENUBK_PIC + ((unsigned long)(((RADIO_SUB_MENU_TXT_Y - RADIO_SUBMENUBK_PIC_Y) + (temp * RADIO_SUB_MENU_TXT_YSTEP)) * RADIO_SUBMENUBK_PIC_XSIZE * 2))));
if(temp == FmFunctionSele) {
if ((FmFunctionSele == FM_STATE_SAVE) || (FmFunctionSele == FM_STATE_DEL)) {
DisplayPicture(RADIO_SUBMENU_ARROW_PIC_X, (RADIO_SUB_MENU_TXT_Y + (temp * RADIO_SUB_MENU_TXT_YSTEP)) + 2,
RADIO_SUBMENU_ARROW_PIC_XSIZE, RADIO_SUBMENU_ARROW_PIC_YSIZE, RADIO_SUBMENU_ARROW_ARROW);
}
LCD_SetTextMode(LCD_DRAWMODE_REV);
}
DisplayMenuStr(RADIO_SUB_MENU_TXT_X, (RADIO_SUB_MENU_TXT_Y + (temp * RADIO_SUB_MENU_TXT_YSTEP)), RADIO_SUB_MENU_TXT_XSIZE, RADIO_SUB_MENU_TXT_YSIZE, LCD_TEXTALIGN_LEFT, (NFA_RADIO_TEXT + (unsigned long)(temp) * MENU_PER_BYTE));
LCD_SetTextMode(LCD_DRAWMODE_TRANS);
}
}
FmDisplayFlag = FM_DISPFLAG_NULL;
LCD_SetTextMode(Temp_DrawMode);
LCD_SetColor(TempColor);
}
/*------------------------------------------------------------------------------
Function:
Input:
Output:
------------------------------------------------------------------------------*/
__attribute__((section(".fm_text,\"ax\"")))
void FmFreq2Ascii(unsigned int chl, unsigned int freq, unsigned int *pDispBuf)
{
pDispBuf[0] = 'C';
pDispBuf[1] = 'H';
pDispBuf[2] = (chl+1)/10 + '0';
pDispBuf[3] = (chl+1)%10 + '0';
pDispBuf[4] = ':';
pDispBuf[5] = ' ';
pDispBuf[8] = '.';
pDispBuf[10] = 'M';
pDispBuf[11] = 'H';
pDispBuf[12] = 'z';
pDispBuf[13] = 0;
if(freq != 0){
pDispBuf[5] = freq /10000;
pDispBuf[5] += (pDispBuf[5]?'0':' ');
pDispBuf[6] = (freq%10000)/1000 + '0';
pDispBuf[7] = (freq%1000)/100 + '0';
pDispBuf[9] = (freq%100)/10 + '0';
}else{
pDispBuf[6] = 'E';
pDispBuf[7] = 'm';
pDispBuf[8] = 'p';
pDispBuf[9] = 't';
pDispBuf[10] = 'y';
pDispBuf[11] = 0;
}
}
/*------------------------------------------------------------------------------
Function:
Input:
Output:
------------------------------------------------------------------------------*/
__attribute__((section(".fm_text,\"ax\"")))
void DisplayFmList(void)
{
unsigned int i,j,m;
unsigned int mode_tmp;
unsigned int temp, TempColor, Temp_DrawMode;
unsigned int per_id = PrevCh;
unsigned int cur_id = CurCh;
unsigned int k;
unsigned int *pFmFreq;
unsigned int FmDispBuf[MENU_PER_BYTE];
TempColor = LCD_GetColor();
Temp_DrawMode = LCD_SetTextMode(LCD_DRAWMODE_TRANS);
if (FmDisplayFlag & FM_DISPFLAG_LIST_BK) {
//LCD_SetDispRect(RADIO_LISTBK_PIC_X, RADIO_LISTBK_PIC_Y, (RADIO_LISTBK_PIC_X + RADIO_LISTBK_PIC_XSIZE - 1), (RADIO_LISTBK_PIC_Y + RADIO_LISTBK_PIC_YSIZE - 1));
DisplayPicture(RADIO_LISTBK_PIC_X,RADIO_LISTBK_PIC_Y,RADIO_LISTBK_PIC_XSIZE, RADIO_LISTBK_PIC_YSIZE, RADIO_LISTBK_PIC);
k = cur_id / DEL_FM_SCREEN_PER_LINE;
k = k * DEL_FM_SCREEN_PER_LINE;
pFmFreq = &GlobalFmVar.FmFreqArray[k];
LCD_SetColor(COLOR_BLACK);
for (i = 0; i < DEL_FM_SCREEN_PER_LINE; i++, pFmFreq++) {
FmFreq2Ascii(i+k, *pFmFreq, FmDispBuf);
if ((i + k) == cur_id) LCD_SetTextMode(LCD_DRAWMODE_REV);
LCD_NFDispStringAt(RADIO_SUB_LIST_TXT_X, (RADIO_SUB_LIST_TXT_Y + i * RADIO_SUB_LIST_TXT_YSTEP), FmDispBuf);
LCD_SetTextMode(LCD_DRAWMODE_TRANS);
}
if (cur_id < DEL_FM_SCREEN_PER_LINE) {
DisplayPicture(RADIO_LIST_UPICON_PIC_X,RADIO_LIST_UPICON_PIC_Y,RADIO_LIST_UPICON_PIC_XSIZE, RADIO_LIST_UPICON_PIC_YSIZE, RADIO_LIST_UPICON_ARROWBK);
} else {
DisplayPicture(RADIO_LIST_UPICON_PIC_X,RADIO_LIST_UPICON_PIC_Y,RADIO_LIST_UPICON_PIC_XSIZE, RADIO_LIST_UPICON_PIC_YSIZE, RADIO_LIST_UPICON_ARROW);
}
temp = cur_id / DEL_FM_SCREEN_PER_LINE;
if (((temp + 1) * DEL_FM_SCREEN_PER_LINE) > FREQMAXNUMBLE) {
DisplayPicture(RADIO_LIST_DOWNICON_PIC_X,RADIO_LIST_DOWNICON_PIC_Y,RADIO_LIST_DOWNICON_PIC_XSIZE, RADIO_LIST_DOWNICON_PIC_YSIZE, RADIO_LIST_DOWNICON_ARROWBK);
} else {
DisplayPicture(RADIO_LIST_DOWNICON_PIC_X,RADIO_LIST_DOWNICON_PIC_Y,RADIO_LIST_DOWNICON_PIC_XSIZE, RADIO_LIST_DOWNICON_PIC_YSIZE, RADIO_LIST_DOWNICON_ARROW);
}
}
if (FmDisplayFlag & FM_DISPFLAG_LIST_SEL) {
if (cur_id < DEL_FM_SCREEN_PER_LINE) {
DisplayPicture(RADIO_LIST_UPICON_PIC_X,RADIO_LIST_UPICON_PIC_Y,RADIO_LIST_UPICON_PIC_XSIZE, RADIO_LIST_UPICON_PIC_YSIZE, RADIO_LIST_UPICON_ARROWBK);
} else {
DisplayPicture(RADIO_LIST_UPICON_PIC_X,RADIO_LIST_UPICON_PIC_Y,RADIO_LIST_UPICON_PIC_XSIZE, RADIO_LIST_UPICON_PIC_YSIZE, RADIO_LIST_UPICON_ARROW);
}
temp = cur_id / DEL_FM_SCREEN_PER_LINE;
if (((temp + 1) * DEL_FM_SCREEN_PER_LINE) > FREQMAXNUMBLE) {
DisplayPicture(RADIO_LIST_DOWNICON_PIC_X,RADIO_LIST_DOWNICON_PIC_Y,RADIO_LIST_DOWNICON_PIC_XSIZE, RADIO_LIST_DOWNICON_PIC_YSIZE, RADIO_LIST_DOWNICON_ARROWBK);
} else {
DisplayPicture(RADIO_LIST_DOWNICON_PIC_X,RADIO_LIST_DOWNICON_PIC_Y,RADIO_LIST_DOWNICON_PIC_XSIZE, RADIO_LIST_DOWNICON_PIC_YSIZE, RADIO_LIST_DOWNICON_ARROW);
}
if((per_id / DEL_FM_SCREEN_PER_LINE) != temp) {
DisplayPicture(RADIO_LISTBK_PIC_X, RADIO_SUB_LIST_TXT_Y,
RADIO_LISTBK_PIC_XSIZE, (RADIO_SUB_LIST_TXT_YSTEP * DEL_FM_SCREEN_PER_LINE),
(RADIO_LISTBK_PIC + (unsigned long)(RADIO_SUB_LIST_TXT_Y - RADIO_LISTBK_PIC_Y) * RADIO_LISTBK_PIC_XSIZE * 2));
if(cur_id == (FREQMAXNUMBLE - 1) && (per_id == 0)){
m = cur_id%DEL_FM_SCREEN_PER_LINE;
k = cur_id - m;
pFmFreq = &GlobalFmVar.FmFreqArray[k];
}else if(((per_id % DEL_FM_SCREEN_PER_LINE)==0)&&((cur_id%DEL_FM_SCREEN_PER_LINE)==(DEL_FM_SCREEN_PER_LINE-1))){
m = cur_id%DEL_FM_SCREEN_PER_LINE;
k = cur_id - m;
pFmFreq = &GlobalFmVar.FmFreqArray[k];
}else{
pFmFreq = &GlobalFmVar.FmFreqArray[cur_id];
m = FREQMAXNUMBLE - (cur_id+1);
k = cur_id;
}
LCD_SetColor(COLOR_BLACK);
for (i=0; (i<DEL_FM_SCREEN_PER_LINE && i<=m); i++, pFmFreq++) {
FmFreq2Ascii(k+i, *pFmFreq, FmDispBuf);
if ((i + k) == cur_id) LCD_SetTextMode(LCD_DRAWMODE_REV);
LCD_NFDispStringAt(RADIO_SUB_LIST_TXT_X, (RADIO_SUB_LIST_TXT_Y + i * RADIO_SUB_LIST_TXT_YSTEP), FmDispBuf);
LCD_SetTextMode(LCD_DRAWMODE_TRANS);
}
}else{
j = per_id%DEL_FM_SCREEN_PER_LINE;
i = cur_id%DEL_FM_SCREEN_PER_LINE;
LCD_SetColor(COLOR_BLACK);
DisplayPicture(RADIO_LISTBK_PIC_X, (RADIO_SUB_LIST_TXT_Y + j * RADIO_SUB_LIST_TXT_YSTEP),
RADIO_LISTBK_PIC_XSIZE, RADIO_SUB_LIST_TXT_YSTEP,
(RADIO_LISTBK_PIC + (unsigned long)((RADIO_SUB_LIST_TXT_Y - RADIO_LISTBK_PIC_Y) + j * RADIO_SUB_LIST_TXT_YSTEP) * RADIO_LISTBK_PIC_XSIZE * 2));
FmFreq2Ascii(per_id, GlobalFmVar.FmFreqArray[per_id], FmDispBuf);
LCD_NFDispStringAt(RADIO_SUB_LIST_TXT_X, (RADIO_SUB_LIST_TXT_Y + j * RADIO_SUB_LIST_TXT_YSTEP), FmDispBuf);
DisplayPicture(RADIO_LISTBK_PIC_X, (RADIO_SUB_LIST_TXT_Y + i * RADIO_SUB_LIST_TXT_YSTEP),
RADIO_LISTBK_PIC_XSIZE, RADIO_SUB_LIST_TXT_YSTEP,
(RADIO_LISTBK_PIC + (unsigned long)((RADIO_SUB_LIST_TXT_Y - RADIO_LISTBK_PIC_Y) + i * RADIO_SUB_LIST_TXT_YSTEP) * RADIO_LISTBK_PIC_XSIZE * 2));
FmFreq2Ascii(cur_id, GlobalFmVar.FmFreqArray[cur_id], FmDispBuf);
LCD_SetTextMode(LCD_DRAWMODE_REV);
LCD_NFDispStringAt(RADIO_SUB_LIST_TXT_X, (RADIO_SUB_LIST_TXT_Y + i * RADIO_SUB_LIST_TXT_YSTEP), FmDispBuf);
}
LCD_SetColor(TempColor);
}
FmDisplayFlag = FM_DISPFLAG_NULL;
LCD_SetTextMode(Temp_DrawMode);
LCD_SetColor(TempColor);
}
#endif
//******************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -