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

📄 fsgui_osd.c

📁 dvd里面的一个文件系统的代码
💻 C
📖 第 1 页 / 共 3 页
字号:

	return done;
}

int FSGUI_NormalNext(void)
{
    int done = 0;
    UINT16 dir_real_index = 0;
    BYTE   need_new_dir = FALSE;
    UINT16 top = dir_set_top;
    int temp = 0x01 << pFsJpeg->gifsFuncBtn ;
 
    printf("##### FSGUI_NormalNext ---############--\n");
    if (FSGUI_IsFolderEnd(pFsJpeg->fsnav_dir_now, PAGE_DOWN) == TRUE)//(pFsJpeg->fsnav_trk_now == pFsJpeg->last_mp3_entry)//the last file in current dir
    {
        need_new_dir = TRUE;
    }
    else //if (pFsJpeg->fsnav_trk_now < pFsJpeg->last_mp3_entry)//not change dir
    {
        
        dir_real_index = dir_set[top];
        printf("\n-------not change dir---------\n");
        do
        {
            if (FSGUI_IsFolderEnd(pFsJpeg->fsnav_dir_now, PAGE_DOWN) == TRUE)//(pFsJpeg->fsnav_trk_now >= (iso9660_dir[pFsJpeg->fsnav_dir_now].dir - 1))
            {   
                need_new_dir = TRUE;
                
                break;
            } 
              
            pFsJpeg->fsnav_trk_now ++;
            
            printf("file:%d------type:%d, name=%s, pFsJpeg->gifsFuncBtn:%d\n",
                    pFsJpeg->fsnav_trk_now, 
                    FS_GetFileProperty(pFsJpeg->fsnav_trk_now+pFsJpeg->first_mp3_entry,FILE_PROPERTY_CATEGORY),
                    FS_GetFileProperty(pFsJpeg->fsnav_trk_now+pFsJpeg->first_mp3_entry,FILE_PROPERTY_NAME), 
                    pFsJpeg->gifsFuncBtn);
            //printf("file:%d------type:%d, name=%s, pFsJpeg->gifsFuncBtn:%d\n",pFsJpeg->fsnav_trk_now, iso9660_file[pFsJpeg->fsnav_trk_now+pFsJpeg->first_mp3_entry].type,iso9660_file[pFsJpeg->fsnav_trk_now+pFsJpeg->first_mp3_entry].name, pFsJpeg->gifsFuncBtn);

            if (FS_GetFileProperty((pFsJpeg->fsnav_trk_now + pFsJpeg->first_mp3_entry),FILE_PROPERTY_CATEGORY) == (pFsJpeg->gifsFuncBtn))
            //if (iso9660_file[(pFsJpeg->fsnav_trk_now + pFsJpeg->first_mp3_entry)].type == (pFsJpeg->gifsFuncBtn))
            {
                printf("\n### file FOUND---!!!!!!!!!!!\n");
                if (pFsJpeg->gifsFuncBtn == FS_FUNC_MP3)
                {//when playing MP3, must refresh GUI  
                    pFsJpeg->gifsState = FS_STATE_MP3;//after fs_MP3Mainloop, pFsJpeg->gifsState changed, must reset again.  
                    if (pFsJpeg->fsnav_dir_now == dir_real_index)//update GUI only when the dir in GUI is same with playing dir
			        {
                        if  ((info_mode == INFO_FULL) && (t_disp == 1))
                    	    show_info_banner_page();
                        else
                            FSGUI_OsdCmdDown();
                    		
                    }	
                    FSGUI_ShowCurrentSelection((pFsJpeg->fsnav_trk_now + pFsJpeg->first_mp3_entry));
                }
                break;
            }
           
        }while(1);
    }
    
    //change dir
    if (need_new_dir == TRUE)
    {
        printf("--------change dir----------------\n");
        do
        {
            if (top >= (pFsJpeg->iso9660_dir_cnt-1))
            {
                printf("############ all dir is played over --pFsJpeg->fsnav_trk_now:%d-\n",pFsJpeg->fsnav_trk_now);
                top = 0;
                //pFsJpeg->fsnav_dir_now = 0;
                pFsJpeg->gbfsSlide = 0;
                sys_cmd = 0;
                pFsJpeg->gifsState = FS_STATE_LIST;
                //fsGUI_RefreshMenu(1); 
                done = 1;
                break;
            }
                
            top++;
            dir_real_index = dir_set[top];
            
            printf(" iso9660_dir[dir_real_index].type=%x, 0x01 << pFsJpeg->gifsFuncBtn :%d, pFsJpeg->gifsFuncBtn:%d, cnt :%d ,name :%s\n",iso9660_dir[dir_real_index].type, temp, pFsJpeg->gifsFuncBtn, dir_real_index, iso9660_dir[dir_real_index].name);
            //printf("Compare result ;%x",((iso9660_dir[dir_real_index].type)& temp));
            
            if (((iso9660_dir[dir_real_index].type) & (0x01 << pFsJpeg->gifsFuncBtn)))
            {
                //printf("dir-----pFsJpeg->fsnav_trk_now=%d,loc=%x\n", pFsJpeg->fsnav_trk_now,FS_GetFileProperty(pFsJpeg->fsnav_trk_now,FILE_PROPERTY_LOCATION));
                ////printf("dir-----pFsJpeg->fsnav_trk_now=%d,loc=%x\n", pFsJpeg->fsnav_trk_now,iso9660_file[pFsJpeg->fsnav_trk_now].loc);
               // printf(" New dir entry iso9660_dir[dir_real_index].type=%x, cnt :%d ,name :%s\n",iso9660_dir[dir_real_index].type, dir_real_index, iso9660_dir[dir_real_index].name);
                dir_set_top = top;
                pFsJpeg->fsnav_dir_now = dir_real_index;
                CalcDirFirstPage(pFsJpeg->fsnav_dir_now);
                pFsJpeg->fsnav_trk_now = FSGUI_FindFirstFileForDir(pFsJpeg->gifsFuncBtn, pFsJpeg->fsnav_dir_now);
                if (pFsJpeg->gifsFuncBtn == FS_FUNC_MP3)//when playing MP3, must refresh GUI  
                {   
                    pFsJpeg->gifsState = FS_STATE_MP3; 
                    FSGUI_RefreshMenu(1);
                }          
                break; 
            }

        }while(1);

    }//if (need_new_dir == TRUE)


	return done;
}



//UINT16 CurrentFiles[800];//record the index of subdir and files of current DIR
//some parameters explaination
//
//CurentFiles[]    ---> record all the real index of subdir and files of a parent DIR
//                      NOTE: 
//                      Here I treat the subdir as file. But their index is different.
//                                            
//                      if subdir   value = real index of subdir + SUBFOLDER_BASE
//                      if file     value = real fill index in iso9660_file[]                        
//
//file_count_in_dir       ---->total files count of a DIR
//
//file_index_in_dir       ---> record the reordered index of files in CurentFiles[]
//                      main for UP/DOWN/LEFT/RIGHT to get  correct file_current_in_page .
//                      range: 0 ~ file_count_in_dir          
// 
//fsnav_dir_now    ---> real dir index value in iso9660_dir[] 
//                      range: 0 ~ (ISO_DIR_MAX-1)
//                    
//
//file_current_in_page     ---->file offset in current page.main for draw GUI.
//                      range: 0 ~ (ONEPAGE -1)
//
//file_array_in_page[]    ----->record the indexs in current page, the value from CurentFiles[].
//                      
//                                           

/*
 *Func: fsGUI_Osd_init
 *
 *Description:
 *  init some parametres
 *
 */
void FSGUI_Osdinit()
{
	osd_init_mainmenu();
	//osd_tog_region(0,OSD_ON);//
	//osd_tog_region(1,OSD_ON);//
	//osd_draw_rect(0, 0, (MENU_BTN_XLEN+24)*16, BUTTON_Y_DIFF*8, 0);//clear the region.
	
	
}

void FSGUI_OsdExitGUI()
{
	//fsGUI_Osdinit();
	system_state = SYSTEM_SETTING;
	printf("### EXIT FSOSD GUI----\n");
	
	//osd_init_mainmenu();
	menu_level = 0;
	menu_page = PLAYPAGE;
	HL_menu = PARENT_MENU;
	index_y1 = 0;
	osd_draw_rect(0, 0, (MENU_BTN_XLEN+24)*16, BUTTON_Y_DIFF*8, 0);//clear the region.
	//clear operation message
    osd_draw_hline_region(0, region[1].osd_w*2-2, 0, 0, region[1].osd_h, 1);
	show_mainmenu();
	ShowPlayState(0);
}
/*
 * Func: fsGUI_OsdMenu()
 *
 * Description:
 *
 *  Show whole FSGUI
 *
 */
void FSGUI_OsdMenu()
{	
	FSNav_MP3Init();
	pFsJpeg->fsnav_dir_now =  FSGUI_GetRootDir(); 
	CalcDirFirstPage(pFsJpeg->fsnav_dir_now);
	printf("### fsGUI_osdMenu---\n");
    pFsJpeg->gbfsSlide = 0;
    //show GUI menu
    
    FSGUI_RefreshMenu(0);

}

/*
 * Description:
 *    if the playing dir change, refresh GUI.
 *
 * INPUT:
 *    mode :  0, show Dir content, HL in  the first item.
 *    mode :  1, Show Dir content , HL according to the 
 *                                            pFsJpeg->fsnav_trk_now  
 *                                            pFsJpeg->first_mp3_entry
 *
 */
void FSGUI_RefreshMenu(int mode)
{
    int i = 0;
    
    
     if (info_mode)	//feeling 2004-05-26
		exit_info_banner_page(0);
		
    OSDGUI_Init();
    //osd_draw_rect(0, 0, (MENU_BTN_XLEN+24)*16, BUTTON_Y_DIFF*8, 0);//clear the region.
    OSDGUI_ShowDirInitPara();
    FSGUI_GetOneDirContent(pFsJpeg->fsnav_dir_now);
    //printf("In Refreshmenu pFsJpeg->fsnav_dir_now:%d,--\n",pFsJpeg->fsnav_dir_now);
    if (mode == 1)
    {
        //Get the value of "pFsJpeg->file_index_in_dir"
        for (i = 0; i < pFsJpeg->file_count_in_dir; i++)
        {
            if ((pFsJpeg->fsnav_trk_now + pFsJpeg->first_mp3_entry) == CurrentFiles[i])
            {
                pFsJpeg->file_index_in_dir = i;
                break;   
            }
        }
     }
    //printf("####in Refresh FsJpeg->file_index_in_dir:%d file_current_in_page:%d-pFsJpeg->fsnav_trk_now + pFsJpeg->first_mp3_entry-:%d \n",pFsJpeg->file_index_in_dir, pFsJpeg->file_current_in_page, pFsJpeg->fsnav_trk_now + pFsJpeg->first_mp3_entry);
	OSDGUI_GetCurrentPage(PAGE_DOWN);
	OSDGUI_DrawOnePage();
    //printf("### value : %d--\n",(pFsJpeg->file_array_in_page[pFsJpeg->file_current_in_page]));
	FSGUI_ShowCurrentSelection((pFsJpeg->file_array_in_page[pFsJpeg->file_current_in_page]));
    
    FSGUI_OperationInit();
}

/*
 * Description:
 *   after or before a operation, set initial state.
 *
 */
void FSGUI_OperationInit(void)
{
#ifdef SURRORT_MP3_PREPLAY
    FS_ClearPreplayFlag();
#endif//#ifdef SURRORT_MP3_PREPLAY
	
    FSGUI_ShowOperationMsg();
    
}


UINT32 FSGUI_OsdCmdSelect()
{
	UINT32 iRes = 0;
	//printf("****** FSGUI SELECT******\n");
	BYTE button_type;
	UINT16 file_now;//file in a page
    UINT16 file_total_now;//total file in array
    
    button_type = OSDGUI_GetSelButtonType(pFsJpeg->file_current_in_page);
    file_now = pFsJpeg->file_current_in_page;
    file_total_now = pFsJpeg->file_array_in_page[file_now];
      
	if(button_type == SUB_BUTTON)
        FSGUI_ShowCurrentSelection(file_total_now);
    else        
        FSGUI_OsdCmdRight();
        
        
    iRes = 0x20000 | sys_cmd;
    sys_cmd = 0;

    return iRes;
}


UINT32 FSGUI_OsdCmdPlay()
{
	UINT32 iRes = 0;
	UINT16 real_file_index = 0;
    UINT16 real_dir_index = 0;
    UINT16 current_file_index = 0;
	int i = 0;
	
    //set play state.    
    play_state = VCD_STATE_MP3_FILELIST;
    
    current_file_index = CurrentFiles[pFsJpeg->file_index_in_dir];
    
    //play file and folder
    if(current_file_index >= SUB_FOLDER_BASE)//if HL is folder,then get first file
    {
        real_dir_index = current_file_index - SUB_FOLDER_BASE;
        //printf("000000iso9660_dir[%d].name:%s\n",real_dir_index,iso9660_dir[real_dir_index].name);
        do
        {
            if(iso9660_dir[real_dir_index].dir > 0)
            {    
                real_file_index = pFsJpeg->Dir_entry[real_dir_index];
                break;
            }
            else
                real_dir_index ++;
        }while(1);
            
        //printf("111111iso9660_dir[%d].name:%s\n",real_dir_index,iso9660_dir[real_dir_index].name);
    }
    else//HL is file ,real file
        real_file_index = current_file_index;
    
    pFsJpeg->gifsFuncBtn = FS_GetFileProperty(real_file_index,FILE_PROPERTY_CATEGORY);
    //pFsJpeg->gifsFuncBtn = iso9660_file[real_file_index].type;
    real_dir_index = FS_GetFileProperty(real_file_index,FILE_PROPERTY_PARENT_FOLDER);
    //real_dir_index = iso9660_file[real_file_index].parent_dir;
    
    if (real_dir_index == FSGUI_GetRootDir())//curent dir is root dir.
    { //main to show selection  
        FSGUI_GetOneDirContent(real_dir_index);
        OSDGUI_GetCurrentPage(PAGE_DOWN);
    }
   
    //get dir_set[] index value
    for (i = 0; i < pFsJpeg->iso9660_dir_cnt; i++)
    {
        if(dir_set[i] == real_dir_index)
        {   
            dir_set_top = i;
            break;
        }
    }

    //get the current dir,trk
    pFsJpeg->fsnav_dir_now = real_dir_index;
    CalcDirFirstPage(pFsJpeg->fsnav_dir_now);
    pFsJpeg->fsnav_trk_now = real_file_index - pFsJpeg->first_mp3_entry;
    
    FSGUI_ShowCurrentSelection((pFsJpeg->file_array_in_page[pFsJpeg->file_current_in_page]));
    
    //according to type,get some  base value
    if(pFsJpeg->gifsFuncBtn == FS_FUNC_MP3)
    {
        pFsJpeg->gifsState = FS_STATE_MP3;
        FSNav_MP3Init();
    }
    else  if(pFsJpeg->gifsFuncBtn == FS_FUNC_JPEG)
    {
        //osd_init__(); 
        pFsJpeg->gifsState = FS_STATE_JPEG;
        cd_subtype = CDROM_JPEG;
        pFsJpeg->g_nJpegMode = JPEG_NORMAL_MODE;
        //close fsGUI
        osd_tog_region(0,OSD_OFF);
        osd_tog_region(1,OSD_OFF);
        osd_draw_rect(0, 0, (MENU_BTN_XLEN+24)*16, BUTTON_Y_DIFF*8, 0);//clear the region.
        pFsJpeg->gbfsSlide = 1;
    }
    
    
    //printf("IN fsGUI osd file:%d------type:%d, name=%s,parentdir :%s\n",
            //pFsJpeg->fsnav_trk_now, 
            //FS_GetFileProperty(pFsJpeg->fsnav_trk_now+pFsJpeg->first_mp3_entry, FILE_PROPERTY_CATEGORY),
            //FS_GetFileProperty(pFsJpeg->fsnav_trk_now+pFsJpeg->first_mp3_entry, FILE_PROPERTY_NAME), 
            //iso9660_dir[real_dir_index].name);
    ////printf("IN fsGUI osd file:%d------type:%d, name=%s,parentdir :%s\n",pFsJpeg->fsnav_trk_now, iso9660_file[pFsJpeg->fsnav_trk_now+pFsJpeg->first_mp3_entry].type,iso9660_file[pFsJpeg->fsnav_trk_now+pFsJpeg->first_mp3_entry].name, iso9660_dir[real_dir_index].name);
    
    iRes = CMD_FUNC | CMD_FUNC_PLAY;
    
    return iRes;
}

UINT32 FSGUI_OsdCmdUp()
{
	UINT32 iRes = 0;
	
    iRes = OSDGUI_CmdUp();

⌨️ 快捷键说明

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