📄 mp3_osd.c
字号:
/******************************************************************************
* Filename : Mp3_OSD.c
* Start :
* By :
* Contact :
* Description :
******************************************************************************
*/
/******************************************************
* INCLUDES
*****************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "Sys_call_abstract.h"
#include "Basic_typedefs.h"
#include "Osd_consts.h"
#include "Osd_structure.h"
#include "OSD_Api.h"
#include "Osd_resources.h"
#include "Mp3_include.h"
#include "spi_api.h"
#include "Mp3_Osd.h"
#include "Codec.h"
#define MP3_OSD_TIMER 2500 //1600
extern SystemInfo_t SysInfo;
extern SysTimer_t gMp3_Reserved_Timer;
#if _MP3_300_
extern Mp3_FileInfo_t *gFileInfo;
extern USHORT gFileNumInFolder[MAX_FOLDER_NUM];
#else
extern Mp3_DirInfo_t gDirinfo[MAX_CONTENT_IN_PAGE];
extern Mp3_FolderInfo_t gFolderinfo[MAX_CONTENT_IN_PAGE];
#endif/* _MP3_300_ */
#if _SW_VOLUME_
extern UCHAR VolumeShowVal;
#endif
extern S5L_DisplayStdType_t gOutput_tv_system ;
extern Mp3_ControlArea_t gMp3Control;
extern Mp3_PageInfo_t *gPageinfo;
extern Mp3_FolderPageInfo_t *gFolderPage;
extern Mp3_Timeinfo_t gMp3_time;
extern BOOL bLeftRight_arrow_flag;
extern BOOL gTrkSelectEnd_flag;
extern BOOL gReturnFlag;//may050804
extern BOOL bInfoKey;
extern BOOL gMute;
extern char VfdDiscTurnF;
//extern UCHAR gNumber_output[3];
#if MP3_over_250
extern UCHAR Select_250;
#endif
extern UCHAR Tenplus,Fiveplus;
extern UCHAR gNumber_output;
extern USHORT gMp3TotalFile;
extern UCHAR ToneValue;
extern UCHAR gNumber[4];
BOOL gshowReserved1 = FALSE;
USHORT mp3_cur_track;
extern void Mp3_SendOSDMsgToNAVI(void);
extern BOOL bRemsec;
/******************************************************************************
* Function name : Mp3_ShowFoldOSD
* Arguments :
* IN
* OUT
* INOUT
* Return : void
* By : maymeng 050523 modified 050713
* Description : show current folder page osd
******************************************************************************
*/
void Mp3_ShowFoldOSD(USHORT focus_item)
{
#if _MP3_OSD_ENABLE
#if _MP3_300_
STR_DYN_ID string_id;
UCHAR acDirName [ MAX_FILE_DIR_NAME ], temp[MAXTRINO_STRING];
USHORT index;
USHORT pre_index =0;
USHORT folder_num;
USHORT first_file = 0;
char tmp_folderno[7];//maymeng 050713
ASSERT(focus_item < 10);
#if 1
memset(temp,0,sizeof(temp));
memset(acDirName,0,sizeof(acDirName));
memset(tmp_folderno,0,sizeof(tmp_folderno));
#else
CLEAR_STRING(temp);
CLEAR_STRING(acDirName);
CLEAR_STRING(tmp_folderno);
#endif
if( gFolderPage->page_index == (gFolderPage->total_page - 1))
folder_num = gFolderPage->total_num - gFolderPage->page_index*MAX_CONTENT_IN_PAGE;
else
folder_num = MAX_CONTENT_IN_PAGE;
for(index = 0; index < (/*gFolderPage->focus_index + */gFolderPage->page_index*MAX_CONTENT_IN_PAGE); index++)
first_file += gFileNumInFolder[index];
//first_file += gPageinfo->page_index*MAX_CONTENT_IN_PAGE;
pre_index = gFolderPage->page_index*MAX_CONTENT_IN_PAGE;
//pre_index = MAX_CONTENT_IN_PAGE -1 - gFolderPage->content_num;
for(index=0; index<folder_num;index++)
{
first_file += gFileNumInFolder[pre_index + index] ;
strncpy(acDirName, gFileInfo[first_file - 1].path, 6/*8*/);
if(acDirName[0] == '\0')//for "ROOT"folder display maymeng 050808
strcpy(acDirName,"ROOT");
if (strlen(acDirName) > FOLDER_WIDTH)
{
strncpy(temp, acDirName, 6/*MAXTRINO_STRLEN_FOLDER*/);
temp[6/*MAXTRINO_STRLEN_FOLDER*/] = '\0';
}
else
strcpy(temp, acDirName);
Check_String(temp);
sprintf(tmp_folderno, "%02d", ( gFolderPage->page_index*MAX_CONTENT_IN_PAGE + index + 1) );//maymeng 050713
string_id = gMp3_wnd[ ID_WND_EXP_FOLD_NUM1+ index].item_id;
strcpy((char *)gOsd_str_dyn[ string_id ], tmp_folderno);
string_id = gMp3_wnd[ ID_WND_EXP_FOLD_NAME1 + index].item_id;
strcpy((char *)gOsd_str_dyn[ string_id ], temp);
string_id = gMp3_wnd[ ID_WND_EXP_FOLD_ICON1 + index].item_id;
strcpy((char *)gOsd_str_dyn[ string_id ], FOLDER_ICON);
gMp3_wnd[ ID_WND_EXP_FOLD_NAME1+index].color= ID_COLOR_DARK_WHITE;
gMp3_wnd[ ID_WND_EXP_FOLD_NAME1+ index].status = HS_NEED_DRAW;
gMp3_wnd[ ID_WND_EXP_FOLD_ICON1+index].status = HS_NEED_DRAW;
gMp3_wnd[ ID_WND_EXP_FOLD_NUM1+index].status = HS_NEED_DRAW;
}
for( index = folder_num + 1; index <= MAX_CONTENT_IN_PAGE; index++)
{
string_id = gMp3_wnd[ ID_WND_EXP_FOLD_NAME1 + index - 1].item_id;
CLEAR_STRING(gOsd_str_dyn[ string_id ]);
string_id = gMp3_wnd[ ID_WND_EXP_FOLD_ICON1 + index - 1].item_id;
CLEAR_STRING(gOsd_str_dyn[ string_id ]);
string_id = gMp3_wnd[ ID_WND_EXP_FOLD_NUM1+ index - 1].item_id;
CLEAR_STRING(gOsd_str_dyn[ string_id ]);
gMp3_wnd[ ID_WND_EXP_FOLD_NAME1+ index - 1].status = HS_NEED_DRAW;
gMp3_wnd[ ID_WND_EXP_FOLD_ICON1+index - 1].status = HS_NEED_DRAW;
gMp3_wnd[ ID_WND_EXP_FOLD_NUM1+index - 1].status = HS_NEED_DRAW;
}
//highlight the sel dir
gMp3_wnd[ ID_WND_EXP_FOLD_NAME1+gFolderPage->focus_index].color= ID_COLOR_RED;
gMp3_wnd[ ID_WND_EXP_FOLD_NAME1+gFolderPage->focus_index].status= HS_NEED_DRAW;
OwSetCurrentWindowSet(gMp3_wnd);//maymeng 050707
ShowWindow(ID_WND_EXP_BG);
#else
STR_DYN_ID string_id;
UCHAR acDirName [ MAX_FILE_DIR_NAME ], temp[MAXTRINO_STRING];
int index;
ASSERT(focus_item < 10);
OwSetCurrentWindowSet(gMp3_wnd);
for(index=0; index<gFolderPage->content_num;index++)
{
strncpy(acDirName, gFolderinfo[index].name, 6/*8*/);
if(acDirName[0] == '\0')
strcpy(acDirName,"ROOT");
if (strlen(acDirName) > FOLDER_WIDTH)
{
strncpy(temp, acDirName, MAXTRINO_STRLEN_FOLDER );
temp[6/*MAXTRINO_STRLEN_FOLDER*/] = '\0';
}
else
strcpy(temp, acDirName);
Check_String(temp);
string_id = gMp3_wnd[ ID_WND_EXP_FOLD_NAME1 + index].item_id;
strcpy((char *)gOsd_str_dyn[ string_id ], temp);
string_id = gMp3_wnd[ ID_WND_EXP_FOLD_ICON1 + index].item_id;
strcpy((char *)gOsd_str_dyn[ string_id ], FOLDER_ICON);
gMp3_wnd[ ID_WND_EXP_FOLD_NAME1+index].color= ID_COLOR_DARK_WHITE;
gMp3_wnd[ ID_WND_EXP_FOLD_NAME1+ index].status = HS_NEED_DRAW;
gMp3_wnd[ ID_WND_EXP_FOLD_ICON1+index].status = HS_NEED_DRAW;
}
for( index = gFolderPage->content_num+1; index <= MAX_CONTENT_IN_PAGE; index++)
{
string_id = gMp3_wnd[ ID_WND_EXP_FOLD_NAME1 + index - 1].item_id;
CLEAR_STRING(gOsd_str_dyn[ string_id ]);
string_id = gMp3_wnd[ ID_WND_EXP_FOLD_ICON1 + index - 1].item_id;
CLEAR_STRING(gOsd_str_dyn[ string_id ]);
gMp3_wnd[ ID_WND_EXP_FOLD_NAME1+ index - 1].status = HS_NEED_DRAW;
gMp3_wnd[ ID_WND_EXP_FOLD_ICON1+index - 1].status = HS_NEED_DRAW;
}
//highlight the sel dir
gMp3_wnd[ ID_WND_EXP_FOLD_NAME1+gFolderPage->focus_index].color= ID_COLOR_RED;
gMp3_wnd[ ID_WND_EXP_FOLD_NAME1+gFolderPage->focus_index].status= HS_NEED_DRAW;
//gMp3_wnd[ ID_WND_EXP_FOLD_NAME1+gFolderPage->focus_index].color= ID_COLOR_RED;
//gMp3_wnd[ ID_WND_EXP_FOLD_NAME1+gFolderPage->focus_index].status= HS_NEED_DRAW;
OwSetCurrentWindowSet(gMp3_wnd);//maymeng 050707
ShowWindow(ID_WND_EXP_BG);
#endif/* _MP3_300_ */
#endif /* _MP3_OSD_ENABLE */
}
/******************************************************************************
* Function name : Mp3_ShowFileOSD
* Arguments :
* IN
* OUT
* INOUT
* Return : void
* By : wanghu
* Description : show current file page osd
******************************************************************************
*/
void Mp3_ShowFileOSD(USHORT focus_item)
{
#if _MP3_OSD_ENABLE
#if _MP3_300_
STR_DYN_ID string_id;
ULONG dircount = 1;
UCHAR acDirName [ MAX_FILE_DIR_NAME ], temp[14];
USHORT index;
USHORT file_num;
USHORT pre_index = 0;
UCHAR tmp_str_mp3fileno[7];//maymeng 050705
int i,length;//
ASSERT(focus_item < 10);
#if 1
memset(temp,0,sizeof(temp));
memset(acDirName,0,sizeof(acDirName));
memset(tmp_str_mp3fileno,0,sizeof(tmp_str_mp3fileno));
#else
CLEAR_STRING(acFileName);
CLEAR_STRING(acDirName);
CLEAR_STRING(tmp_str_mp3fileno);
#endif
// strcpy((char *)gOsd_str_dyn[ID_STR_EXP_DIRNAME_ICON], FOLDER_ICON);
// gMp3_wnd[ ID_WND_EXP_DIRNAME_ICON].status= HS_NEED_DRAW;
Check_String((char *)gPageinfo->path);
if((char *)gPageinfo->path[0] =='\0')
strcpy((char *)gPageinfo->path,"ROOT");
//strncpy((char *)gOsd_str_dyn[ID_STR_EXP_DIRNAME], (char *)gPageinfo->path, 8);
// gMp3_wnd[ ID_WND_EXP_DIRNAME].status= HS_NEED_DRAW;
if( gPageinfo->page_index == (gPageinfo->total_page - 1))
file_num = gPageinfo->total_num - gPageinfo->page_index*MAX_CONTENT_IN_PAGE;
else
file_num = MAX_CONTENT_IN_PAGE;
for(index = 0; index < (gFolderPage->focus_index + gFolderPage->page_index*MAX_CONTENT_IN_PAGE); index++)
pre_index += gFileNumInFolder[index];
pre_index += gPageinfo->page_index*MAX_CONTENT_IN_PAGE;
for(index = 0; index < file_num; index++)
{
strncpy(acDirName, gFileInfo[pre_index + index].name, 6/*8*/);
sprintf(tmp_str_mp3fileno, "%03d", ( gFileInfo[pre_index + index ].file_no + 1) );//maymeng 050705
length = strlen(tmp_str_mp3fileno);
for(i=0; i<length; i++)
{
if(tmp_str_mp3fileno[i] != gOsd_str_dyn[ID_WND_EXP_FILE_NUM1+ index][i])
break;
}//
if (strlen(acDirName) > FOLDER_WIDTH)
{
strncpy(temp, acDirName, 6/*MAXTRINO_STRLEN_FOLDER*/);
temp[6/*MAXTRINO_STRLEN_FOLDER*/] = '\0';
}
else
strcpy(temp, acDirName);
Check_String(temp);
strcat(temp,MP3_FILE_EXTN);
string_id = gMp3_wnd[ ID_WND_EXP_FILE_NAME1 + index].item_id;
strcpy((char *)gOsd_str_dyn[ string_id ], temp);
string_id = gMp3_wnd[ ID_WND_EXP_FILE_NUM1+ index].item_id;
//strcpy((char *)gOsd_str_dyn[ string_id ], FILE_ICON);
strcpy((char *)gOsd_str_dyn[ string_id ], (char *)( tmp_str_mp3fileno));//maymeng 050705
gMp3_wnd[ ID_WND_EXP_FILE_NAME1+index].color= ID_COLOR_DARK_WHITE;
gMp3_wnd[ ID_WND_EXP_FILE_NAME1+ index].status = HS_NEED_DRAW;
gMp3_wnd[ ID_WND_EXP_FILE_NUM1+index].status = HS_NEED_DRAW;
}
for( index = file_num + 1; index <= MAX_CONTENT_IN_PAGE; index++)
{
string_id = gMp3_wnd[ ID_WND_EXP_FILE_NAME1 + index - 1].item_id;
CLEAR_STRING(gOsd_str_dyn[ string_id ]);
string_id = gMp3_wnd[ ID_WND_EXP_FILE_NUM1+ index - 1].item_id;
CLEAR_STRING(gOsd_str_dyn[ string_id ]);
gMp3_wnd[ ID_WND_EXP_FILE_NAME1+index-1].status= HS_NEED_DRAW;
gMp3_wnd[ ID_WND_EXP_FILE_NUM1+index-1].status= HS_NEED_DRAW;
}
//highlight the sel dir
gMp3_wnd[ ID_WND_EXP_FILE_NAME1+gPageinfo->focus_index].color= ID_COLOR_RED;
gMp3_wnd[ ID_WND_EXP_FILE_NAME1+gPageinfo->focus_index].status= HS_NEED_DRAW;
OwSetCurrentWindowSet(gMp3_wnd);//maymeng 050707
ShowWindow(ID_WND_EXP_BG);
#else
STR_DYN_ID string_id;
ULONG dircount = 1;
UCHAR acFileName [ MAX_FILE_DIR_NAME ], acDirName [ MAX_FILE_DIR_NAME ], temp[MAXTRINO_STRING];
int index;
ASSERT(focus_item < 10);
OwSetCurrentWindowSet(gMp3_wnd);
//strcpy((char *)gOsd_str_dyn[ID_STR_EXP_DIRNAME_ICON], FOLDER_ICON);
//gMp3_wnd[ ID_WND_EXP_DIRNAME_ICON].status= HS_NEED_DRAW;
Check_String((char *)gPageinfo->path);
if((char *)gPageinfo->path[0] =='\0')
strcpy((char *)gPageinfo->path,"ROOT");
//strncpy((char *)gOsd_str_dyn[ID_STR_EXP_DIRNAME], (char *)gPageinfo->path, 8);
//gMp3_wnd[ ID_WND_EXP_DIRNAME].status= HS_NEED_DRAW;
for(index=0; index<gPageinfo->content_num;index++)
{
strncpy(acDirName, gDirinfo[index].name, 6/*8*/);
if (strlen(acDirName) > FOLDER_WIDTH)
{
strncpy(temp, acDirName, MAXTRINO_STRLEN_FOLDER );
temp[6] = '\0';
}
else
strcpy(temp, acDirName);
Check_String(temp);
string_id = gMp3_wnd[ ID_WND_EXP_FILE_NAME1 + index].item_id;
strcpy((char *)gOsd_str_dyn[ string_id ], temp);
string_id = gMp3_wnd[ ID_WND_EXP_FILE_NUM1+ index].item_id;
strcpy((char *)gOsd_str_dyn[ string_id ], FILE_ICON);
gMp3_wnd[ ID_WND_EXP_FILE_NAME1+index].color= ID_COLOR_DARK_WHITE;
gMp3_wnd[ ID_WND_EXP_FILE_NAME1+ index].status = HS_NEED_DRAW;
gMp3_wnd[ ID_WND_EXP_FILE_NUM1+index].status = HS_NEED_DRAW;
}
for( index = gPageinfo->content_num+1; index <= MAX_CONTENT_IN_PAGE; index++)
{
string_id = gMp3_wnd[ ID_WND_EXP_FILE_NAME1 + index - 1].item_id;
CLEAR_STRING(gOsd_str_dyn[ string_id ]);
string_id = gMp3_wnd[ ID_WND_EXP_FILE_NUM1+ index - 1].item_id;
CLEAR_STRING(gOsd_str_dyn[ string_id ]);
gMp3_wnd[ ID_WND_EXP_FILE_NAME1+index-1].status= HS_NEED_DRAW;
gMp3_wnd[ ID_WND_EXP_FILE_NUM1+index-1].status= HS_NEED_DRAW;
}
//highlight the sel dir
gMp3_wnd[ ID_WND_EXP_FILE_NAME1+gPageinfo->focus_index].color= ID_COLOR_RED;
gMp3_wnd[ ID_WND_EXP_FILE_NAME1+gPageinfo->focus_index].status= HS_NEED_DRAW;
OwSetCurrentWindowSet(gMp3_wnd);//maymeng 050707
ShowWindow(ID_WND_EXP_BG);
#endif
#endif /* _MP3_OSD_ENABLE */
}
/******************************************************************************
* Function name : Mp3_ShowFilePath
* Arguments :
* IN
* OUT
* INOUT
* Return : void
* By : maymeng 050711
* Description : show file path and file name on the reserved wnd
******************************************************************************
*/
void Mp3_ShowFilePath(void)
{
#if _MP3_OSD_ENABLE
UCHAR acFileName[ MAX_FILE_DIR_NAME ] ,acDirName[MAX_FILE_DIR_NAME];
UCHAR tempFile[14], tempDir[MAXTRINO_STRING];
UCHAR tempstring1[20], tempstring2[MAXTRINO_STRING];
USHORT pre_index = 0;
USHORT index,length;
//char* tempstring1;
//char* tempstring2;
#if 1
memset(acFileName,0,sizeof(acFileName));
memset(acDirName,0,sizeof(acDirName));
memset(tempFile,0,sizeof(tempFile));
memset(tempDir,0,sizeof(tempDir));
memset(tempstring1,0,sizeof(tempstring1));
#else
CLEAR_STRING(acFileName);
CLEAR_STRING(acDirName);
CLEAR_STRING(tempFile);
CLEAR_STRING(tempDir);
CLEAR_STRING(tempstring1);
CLEAR_STRING(tempstring2);
#endif
for(index = 0; index < (gFolderPage->focus_index + gFolderPage->page_index*MAX_CONTENT_IN_PAGE); index++)
pre_index += gFileNumInFolder[index];
pre_index += gPageinfo->page_index*MAX_CONTENT_IN_PAGE; //maymeng 050711
#if !_MP3_300_
strncpy(acFileName, gDirinfo[gPageinfo->focus_index].name, 6/*8*/);
#else
strncpy(acFileName, gFileInfo[gPageinfo->focus_index + pre_index].name, 6/*8*/);//maymeng 050707
strncpy(acDirName, gFileInfo[gPageinfo->focus_index + pre_index].path,6 /*8*/);
#endif/* _MP3_300_ */
if(acDirName[0] == '\0')//for "ROOT"folder display maymeng 050808
strcpy(acDirName,"ROOT");
if (strlen(acFileName) > FOLDER_WIDTH)
{
strncpy(tempFile, acFileName, 6/*MAXTRINO_STRLEN_FOLDER*/);
tempFile[6/*MAXTRINO_STRLEN_FOLDER*/] = '\0';
}
else
strcpy(tempFile, acFileName);
Check_String(tempFile);
strcat(tempFile,MP3_FILE_EXTN);
#if _MP3_300_
if (strlen(acDirName) > FOLDER_WIDTH)
{
strncpy(tempDir, acDirName, 6/*MAXTRINO_STRLEN_FOLDER*/);
tempDir[6/*MAXTRINO_STRLEN_FOLDER*/] = '\0';
}
else
strcpy(tempDir, acDirName);
Check_String(tempDir);
//strcpy(tempstring1, "[");
//strcat(tempstring1, tempDir);
//strcpy(tempstring2, "\]");
strcpy(tempstring2, "\134");
strcat(tempDir, tempstring2);
strcpy(tempstring1, tempDir);
strcat(tempstring1, tempFile);
strcpy((char *)gOsd_str_dyn[ ID_STR_EXP_RESERVED_FILENAME ], tempstring1);
#else
strcpy((char *)gOsd_str_dyn[ ID_STR_EXP_RESERVED_FILENAME ], tempFile);
#endif
gMp3_wnd[ID_WND_EXP_RESERVED_FILENAME].status=HS_NEED_DRAW;
#endif
}
/******************************************************************************
* Function name : Mp3_ShowInfo
* Arguments :
* IN
* OUT
* INOUT
* Return : void
* By : maymeng 050720
* Description : info-osd display
******************************************************************************
*/
void Mp3_ShowInfo(BOOL bInfoTrue)
{
#if _MP3_OSD_ENABLE
if(TRUE == bInfoTrue)
{
CLEAR_STRING(gOsd_str_dyn[ID_STR_EXP_NOTICE_FILENAME]);
CLEAR_STRING(gOsd_str_dyn[ID_STR_EXP_RESERVED_FILENAME]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -