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

📄 lc_menu.c

📁 ESS3890+SL原代码(1*16内存)
💻 C
字号:
/* Copyright 2003, ESS Technology, Inc.					*//* SCCSID @(#)lc_menu.c	4.2 05/23/03 *//* Based on filesys.c	1.11 02/17/03 */#include "vcxi.h"#include "const.h"#include "filesys.h"#include "nav_menu.h"#include "fsosd.h"#include "util.h"#ifdef MP3#include "mp3.h"#endif/*------------------------------------------------------------------------ * Debugging macros *------------------------------------------------------------------------*/#ifdef DEBUG_OSDint osdreg=1;#define CPRINTF(a,b) {osdreg+=3;if(osdreg>13)osdreg=1;debug_osd(a,b,osdreg);}#else#define CPRINTF(a,b)#endif#if 0int bpt;#define BREAKPOINT(x) {bpt=x;while(bpt) VCX_service();}#else#define BREAKPOINT(x) #endif/*------------------------------------------------------------------------ * Private defines *------------------------------------------------------------------------*/#define ItemNum		(NPOSD_LINES*2)#define HorzSpace	10/*------------------------------------------------------------------------ * Global or external variables *------------------------------------------------------------------------*/#ifdef HOST_SLAVEint temp_mp3_song=0;#endif/*------------------------------------------------------------------------ * Private variables *------------------------------------------------------------------------*//*------------------------------------------------------------------------ * Private functions *------------------------------------------------------------------------*/#if ((defined(MP3) || defined(GAMEBOY)) && defined(NON_PLAY_OSD))static MP3_page_buf(int, int);static MP3_highlight(int);static void MP3_track(void);static void MP3_menu(void);void MP3_select(void);int MP3_song(void);void track_to_mp3(int);#endif/*------------------------------------------------------------------------ * Begin function listing *------------------------------------------------------------------------*/#if (defined(MP3) || defined(GAMEBOY))#ifdef NON_PLAY_OSDstatic char MP3_DIR[32]="FOLDER  : ";static char MP3_PAGE[] = "PAGE XX/XX";static char mp3_select;static MP3_page_buf(int cur_page, int total_pages){    int bcd_num;        bcd_num = hex2bcd[cur_page];    MP3_PAGE[5] = ((bcd_num >> 4) & 0xf) + '0';    MP3_PAGE[6] = (bcd_num & 0xf) + '0';        bcd_num = hex2bcd[total_pages];    MP3_PAGE[8] = ((bcd_num >> 4) & 0xf) + '0';    MP3_PAGE[9] = (bcd_num & 0xf) + '0';}/* list MP3 directory */static void MP3_track(){    int i,j;    int x=1,y=0;    int list_track;    int file_cnt = 0;        NPOSD_clear_all();    list_track = real_track[mp3_dir];        CG_menu_on = 1; /* OSD menu is ON */    i = 0;    do {	MP3_DIR[i+10] = iso9660_dir[list_track].name[i];	i++;    } while (iso9660_dir[list_track].name[i]);    MP3_DIR[i+10] = 0;    OUTOSD(4, MP3_DIR, MP3_DIR, 0);    mp3_page = mp3_song/ItemNum;    mp3_select = mp3_song-mp3_page*ItemNum;    MP3_page_buf(mp3_page+1, (iso9660_dir[list_track].dir-1)/ItemNum+1);    OUTOSD(8, MP3_PAGE, MP3_PAGE, 0);        for (i=0; i<iso9660_file_cnt; i++){	if (iso9660_file[i].dir == list_track){	    if (file_cnt >= ItemNum*mp3_page){	        NPOSD_output(x,y,iso9660_file[i].name);#ifdef MP3_VERT_LISTING		y++;		if (y >= NPOSD_LINES) {		    y = 0;		    x += HorzSpace;		    if (x > (HorzSpace+1)) break;		}#else	        x += HorzSpace;	        if (x > (HorzSpace+1)){		    x = 1;		    y++;		    if (y >= NPOSD_LINES) break;		}#endif	    }	    file_cnt++;	}    }    MP3_highlight(mp3_select);}/* list MP3 root (those directories with MP3 files */static void MP3_menu(){    int i,j;    int x=1,y=0;        CLEARALLOSD();        CG_menu_on = 1; /* OSD menu is ON */    mp3_root_page = mp3_dir/ItemNum;    mp3_select = mp3_dir-mp3_root_page*ItemNum;    MP3_page_buf(mp3_root_page+1, mp3_total_page+1);    OUTOSD(8, MP3_PAGE, MP3_PAGE, 0);    MP3_DIR[10] = 'R';    MP3_DIR[11] = 'O';    MP3_DIR[12] = 'O';    MP3_DIR[13] = 'T';    MP3_DIR[14] = 0;    OUTOSD(4, MP3_DIR, MP3_DIR, 0);        for (i=mp3_root_page*ItemNum; i<real_track_cnt; i++){        NPOSD_output(x,y,iso9660_dir[real_track[i]].name);#ifdef MP3_VERT_LISTING	y++;	if (y >= NPOSD_LINES) {	    y = 0;	    x += HorzSpace;	    if (x > (HorzSpace+1)) break;	}#else        x += HorzSpace;        if (x > (HorzSpace+1)){            x = 1;            y++;            if (y >= NPOSD_LINES) break;        }#endif    }    MP3_highlight(mp3_select);}/* list MP3 info */void MP3_select(){    if (mp3_menu_changed == 1){        if (in_mp3_root)            MP3_menu();        else	    MP3_track();    }    else if (mp3_menu_changed == 2)	OUTOSD(8, MP3_PAGE, MP3_PAGE, 0);    else if (mp3_menu_changed == 3)	OUTOSD(4, MP3_DIR, MP3_DIR, 0);        mp3_menu_changed = 0;}/* "point out" the selection */static MP3_highlight(int item){    int x, y;    char rt_arrow[2] = {FONT_RIGHT, 0};    #ifdef MP3_VERT_LISTING    if (item >= NPOSD_LINES) {	x = HorzSpace;	y = item - NPOSD_LINES;    } else {	x = 0;	y = item;    }#else    x = (item & 0x1) ? HorzSpace: 0;    y = (item >> 1);#endif    NPOSD_output(x, y, rt_arrow);}#endif /* NON_PLAY_OSD *//* move MP3 item selection */void MP3_item(int des){    if (in_mp3_root){        mp3_dir += des;	if ((des > 0) && (mp3_dir >= real_track_cnt))            mp3_dir = 0;	if ((des < 0) && (mp3_dir < 0))	    mp3_dir = real_track_cnt - 1;    }    else{        mp3_song += des;        if ((des > 0) && (mp3_song >= iso9660_dir[real_track[mp3_dir]].dir))            mp3_song = 0;        if ((des < 0) && (mp3_song < 0))	    mp3_song = iso9660_dir[real_track[mp3_dir]].dir - 1;    }    mp3_menu_changed = 1;}/* convert selection to real MP3 fileno. */int MP3_song(){    int i;    int tmp = 0;    for (i=0;i<mp3_dir;i++){	tmp += iso9660_dir[real_track[i]].dir;    }    tmp += (mp3_song+1);    return(tmp);}/* real MP3 fileno to directory+songno. */void track_to_mp3(int track){    int id;    MP3_VBR_gain = DEF_VBR_GAIN; /* Set to default value */    mp3_dir = 0;    mp3_song = 0;    in_mp3_root = 0;#ifdef DATA_CD     id = (iso9660_file[track-1].loc) >> 24;#endif    track--;    while (track >= iso9660_dir[real_track[mp3_dir]].dir){	track -= iso9660_dir[real_track[mp3_dir]].dir;	mp3_dir++;    }    mp3_song = track;#ifdef NON_PLAY_OSD    MP3_track();#endif}#endif#ifdef HOST_SLAVE/*******************************************************************//* For MP3 dics,  in Entry_state change the cussor position and    *//* update the display Page according the global variable: mp3_song *//* Input: mp3_song                                                 *//* Output: cur_track_index;  mp3_dir.                              *//*******************************************************************/  int haottt=0;int temp_song_num=0, sub_sum_song_num=0;void mp3_osd_change(){    unsigned char i;    temp_mp3_song = mp3_song;    haottt = mp3_song;    for (i=0; i < real_track_cnt; i++) {	sub_sum_song_num = temp_song_num;	temp_song_num += iso9660_dir[real_track[i]].dir;	if((haottt-1) < temp_song_num) {	    mp3_dir = i;   	    haottt = haottt - sub_sum_song_num -1 ;	    temp_song_num=0; sub_sum_song_num=0;	    break;	}    }    mp3_song = haottt;        in_mp3_root=0;     /* mp3_dir=0; */    /* MP3_item(0);*/        mp3_menu_changed=1;    MP3_track();    mp3_menu_changed=0;}extern int cur_track_index;int get_track_index_from_mp3song(){    /* get absolute cur_track_index based on zero */    int i, temp_number=0;        for(i=0; i<mp3_dir; i++) {	temp_number += iso9660_dir[real_track[i]].dir;    }        temp_number += mp3_song;    cur_track_index = temp_number;         return (temp_number);}void mp3_osd_change_dir(int dir_id){    int i, temp_absolute_num=0;        mp3_dir = dir_id;  /* mp3_dir= (0 ... real_track_cnt) */        for (i=0; i<real_track_cnt; i++) {	temp_absolute_num += iso9660_dir[real_track[i]].dir;    }        cur_track_index = temp_absolute_num;        mp3_song = 0;    in_mp3_root=0;     mp3_menu_changed=1;    MP3_track();    mp3_menu_changed=0;}void mp3_osd_back_root(){    int old_mp3_dir;    /* mp3_dir = 0;*/     in_mp3_root = 1;     /* mp3_menu_changed=1; */        MP3_menu();    cur_track_index=0;}void mp3_osd_enter_subdir(){     mp3_song=0;    in_mp3_root = 0;    mp3_osd_change_dir(mp3_dir);    mp3_song = 0;}#endif /* HOST_SLAVE */

⌨️ 快捷键说明

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