fsGUI_osd.c
上传用户:poi891205
上传日期:2013-07-15
资源大小:9745k
文件大小:34k
源码类别:

DVD

开发平台:

C/C++

  1. /**************************************************************
  2. ** FILE
  3. ** fsGUI_osd.c
  4. **
  5. ** DESCRIPTION
  6. **  build a GUI like PC with OSD for MP3/JPEG/WMA ,ect.
  7. **
  8. **
  9. **   Creator:  zhaoyanhua
  10. **   Date:     2004-4-2 11:04
  11. ****************************************************************/
  12. #include "global.h"
  13. #include "func.h"
  14. #include "memmap.h"
  15. #include "util.h"
  16. #include "graph.h"
  17. #include "memcfg.h"
  18. #include "framebuf.h"
  19. #include "macro.h"
  20. #include "stc.h"
  21. #include "cfont.h"
  22. #include "vfdfunc.h"
  23. #include "osd.h"
  24. #include "image.h"
  25. #include "nesinit.h"
  26. #include "fs96602.h"
  27. #include "fsNAV.h"
  28. #include "fsGUI.h"
  29. #include "fsGUI1.h"
  30. #ifdef OP_UI
  31. #include "menu_def.h"
  32. #include "menu_page.h"
  33. #include "fsGUI_osd_def.h"
  34. #include "fsGUI_osd_func.h"
  35. #include "fs_OSD_bmp.h"
  36. #include "osdGUI_def.h"
  37. #include "osdGUI_func.h"
  38. #include "Infobanner_def.h"
  39. //mainmenu related
  40. extern int menu_page;
  41. extern int menu_level;
  42. extern int HL_menu;
  43. extern BYTE index_y1;
  44. UINT16 dir_set_top = 0;
  45. BYTE selected_flag = NONE_SELECTED;
  46. //define null funciton about fsGUI1.c
  47. void FSGUI_JpgUpdateOSD(void)
  48. {}
  49. UINT16 CountSpecifyFile(int iDir)
  50. {}
  51. void Playing2Will(void)
  52. {}
  53. void FSGUI_UpdateInfoArea(BYTE* strInfo)
  54. {}
  55. void FSGUI_Refresh(void)
  56. {}
  57. int FSGUI_PreChangeDir(UINT16 *iDir,UINT16 iDirect)
  58. {}
  59. void FindPreSelectFileDir(UINT16 *iSelect)
  60. {}
  61. void FSGUI_Menu()
  62. {
  63.     FSGUI_OsdMenu();
  64. }
  65. int FSGUI_Select(int iSelect)
  66. {}
  67. void FSGUI_Stop()
  68. {}
  69. void FSGUI_JpgPreview()
  70. {}
  71. void FSGUI_CookFileItem(BYTE iItem)
  72. {}
  73. int  FSGUI_GetDispTrack()
  74. {}
  75. void Restore2PlayingDir(void)
  76. {}
  77. void Restore2PlayingFile(void)
  78. {}
  79. void FSGUI_Shuffle()
  80. {}
  81. UINT32  FSGUI_IsSelectable()
  82. {}
  83. void FSGUI_2Last()
  84. {}
  85. void FSGUI_FileSelect(int iSelect)
  86. {}
  87. void FSGUI_ProgSelect(UINT16 index)
  88. {
  89.     UINT16 iSel = 0;
  90.     UINT16 i = 0;
  91.     
  92.     iSel = prog[index][1] - 1; //get real file index.
  93.     if (iSel >= SUB_FOLDER_BASE)//current prog item is folder
  94.     {    
  95.         pFsJpeg->fsnav_dir_now = iSel - SUB_FOLDER_BASE;//get real dir index in iso9660_dir
  96.         CalcDirFirstPage(pFsJpeg->fsnav_dir_now);
  97.         dir_set_top = 0;
  98.         //printf("#### progselect ,pFsJpeg->fsnav_dir_now:%d,pFsJpeg->fsnav_trk_now:%d--n",pFsJpeg->fsnav_dir_now,pFsJpeg->fsnav_trk_now);
  99.         //get dir_set[] index value
  100.         for (i = 0; i < pFsJpeg->iso9660_dir_cnt; i++)
  101.         {
  102.             if(dir_set[i] == pFsJpeg->fsnav_dir_now)
  103.             {   
  104.                 dir_set_top = i;
  105.                 break;
  106.             }
  107.         }
  108.     }
  109.     else//current prog item is file
  110.     {
  111.         pFsJpeg->fsnav_dir_now = prog[index][0]; 
  112.         CalcDirFirstPage(pFsJpeg->fsnav_dir_now);
  113.         pFsJpeg->fsnav_trk_now = iSel - pFsJpeg->first_mp3_entry;
  114.     }
  115.     
  116.     //FSGUI_FileSelect();
  117.     
  118.     if(pFsJpeg->gifsFuncBtn == FS_FUNC_MP3)
  119.         pFsJpeg->gifsState = FS_STATE_MP3;
  120.         
  121.     FSGUI_ShowCurrentSelection((pFsJpeg->fsnav_trk_now + pFsJpeg->first_mp3_entry));
  122. }
  123. /*
  124.  *  Description:
  125.  *     to judge if the folder is in its end.
  126.  *
  127.  *  INPUT:
  128.  *     Direction:  
  129.  *          PAGE_UP----> judge if the current file of the folder(iDir) is  its first file
  130.  *          PAGE_DOWN ---> judge if the current file of the folder(iDir) is in its final file.  
  131.  *
  132.  *  RETURN:
  133.  *          TRUE or FALSE
  134.  */
  135. BYTE FSGUI_IsFolderEnd(UINT16 iDir, BYTE Direction)
  136. {
  137.     BYTE  EndFlag = FALSE;
  138.     
  139.     if ((Direction == PAGE_UP) 
  140.     && (pFsJpeg->fsnav_trk_now <= 0))
  141.     {
  142.         EndFlag = TRUE;
  143.     }
  144.     else if ((Direction == PAGE_DOWN) 
  145.     && (pFsJpeg->fsnav_trk_now >= (iso9660_dir[iDir].dir - 1)))
  146.         EndFlag = TRUE;
  147.         
  148.     return EndFlag;
  149. }
  150. /*
  151.  * Description:
  152.  *    Find the first file in this dir
  153.  *
  154.  * INPUT:
  155.  *    type :---> MP3
  156.  *          ---> JPEG
  157.  *
  158.  *    iDir  ---> the dir index(in iso9660_dir)
  159.  *
  160.  * RETURN:
  161.  *    If iDir has this type file, return first file index(in iso9660_file) 
  162.  *    else return -1;
  163.  */
  164. INT16  FSGUI_FindFirstFileForDir(int type, int iDir)
  165. {
  166.     INT16 first_file_index = 0;
  167.     
  168.     if ((iso9660_dir[iDir].type) & (0x01 << type))  
  169.     {
  170.         do
  171.         {
  172.             if (iso9660_file[(first_file_index + pFsJpeg->first_mp3_entry)].type == type)
  173.                 break;
  174.             else
  175.                 first_file_index ++;
  176.         }while(1); 
  177.     }
  178.     else
  179.     {
  180.         first_file_index = -1;    
  181.     } 
  182.     return first_file_index;
  183. }
  184. /*
  185.  * Description:
  186.  *    when in slide JPEG, stop slide mode return to menu.
  187.  *
  188.  */
  189. void FSGUI_Return2Menu(void)
  190. {
  191.     pFsJpeg->gbfsSlide = 0;
  192.    
  193.     pFsJpeg->gifsbPreview = 0; 
  194.     //play_state = VCD_STATE_MP3_FILELIST; 
  195.     pFsJpeg->gifsFuncBtn = FS_FUNC_MP3;
  196.     resumeMSF = 0;
  197. #ifdef SURRORT_MP3_PREPLAY
  198. FS_ClearPreplayFlag();
  199. #endif//#ifdef SURRORT_MP3_PREPLAY
  200.     if (pFsJpeg->gifsState == FS_STATE_JPEG)
  201.     {
  202.         config_memory(MEMORY_GRAPH_SMALL);
  203.      setup_tv_format(tv_format);
  204.         reset_zoom_state();  
  205.         startup_vpp();
  206.         AVD_ResetMediaStatus();
  207.         #if defined(FALSE_POWER)&&defined(STOP_LOADER)//zhuyanfeng20041008
  208. pFsJpeg->gifsbPreview = 0;
  209. ShowTitle();
  210.         #else
  211. FS_ForceReturn2Menu();
  212. #endif
  213.         //printf("#### 111111------RETURN 2 menu sys_cmd:%d--n",sys_cmd);
  214.         
  215.         
  216.         //NOTE:
  217.         //must load the code again.
  218.         //else  hang.
  219.         //zhaoyanhua note 2004-5-8 11:43
  220.         FSNav_MP3Init();
  221.        
  222.         ShowTitle();
  223.         sys_cmd = 0;//must clear 0
  224.     }
  225.     pFsJpeg->gifsState = FS_STATE_LIST;
  226.     
  227.     //show GUI menu
  228.     FSGUI_Osdinit();
  229.     FSGUI_RefreshMenu(1);
  230.     
  231. }
  232. int FSGUI_NormalPrev(void)
  233. {
  234.     int done = 0;
  235.     UINT16 dir_real_index = 0;
  236.     BYTE   need_new_dir = FALSE;
  237.     UINT16 top = dir_set_top;
  238.     int temp = 0x01 << pFsJpeg->gifsFuncBtn ;
  239.  
  240.     printf("##### FSGUI_NormalPrev ---############--n");
  241.     
  242.     if (FSGUI_IsFolderEnd(pFsJpeg->fsnav_dir_now, PAGE_UP) == TRUE)//the first file in current dir
  243.     {
  244.         need_new_dir = TRUE;
  245.     }
  246.     else //if (FSGUI_IsFolderEnd() == FALSE)//not change dir
  247.     {
  248.         
  249.         dir_real_index = dir_set[top];
  250.         printf("n-------not change dir---------n");
  251.         do
  252.         {
  253.             if (FSGUI_IsFolderEnd(pFsJpeg->fsnav_dir_now, PAGE_UP) == TRUE)//(pFsJpeg->fsnav_trk_now <= 0)
  254.             {   
  255.                 need_new_dir = TRUE;
  256.                 
  257.                 break;
  258.             } 
  259.               
  260.             pFsJpeg->fsnav_trk_now --;
  261.             
  262.             printf("file:%d------type:%d, name=%s, pFsJpeg->gifsFuncBtn:%dn",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);
  263.             if (iso9660_file[(pFsJpeg->fsnav_trk_now + pFsJpeg->first_mp3_entry)].type == (pFsJpeg->gifsFuncBtn))
  264.             {
  265.                 printf("n### file FOUND---!!!!!!!!!!!n");
  266.                 if (pFsJpeg->gifsFuncBtn == FS_FUNC_MP3)
  267.                 {//when playing MP3, must refresh GUI  
  268.                     pFsJpeg->gifsState = FS_STATE_MP3;//after fs_MP3Mainloop, pFsJpeg->gifsState changed, must reset again.  
  269.                     if (pFsJpeg->fsnav_dir_now == dir_real_index)//update GUI only when the dir in GUI is same with playing dir
  270.         {
  271.                      if ((info_mode == INFO_FULL) && (t_disp == 1))
  272.                       show_info_banner_page();
  273.             else
  274.                 FSGUI_OsdCmdUp();
  275.         }                    
  276.                     FSGUI_ShowCurrentSelection((pFsJpeg->fsnav_trk_now + pFsJpeg->first_mp3_entry));
  277.                 }
  278.                 break;
  279.             }
  280.            
  281.         }while(1);
  282.     }
  283.     
  284.     //change dir
  285.     if (need_new_dir == TRUE)
  286.     {
  287.         printf("--------change dir----------------n");
  288.         do
  289.         {
  290.             if (top <= 0)
  291.             {
  292.                 printf("############ all dir is played over --pFsJpeg->fsnav_trk_now:%d-n",pFsJpeg->fsnav_trk_now);
  293.                 //top = 0;
  294.                 //pFsJpeg->fsnav_dir_now = 0;
  295.                 pFsJpeg->gbfsSlide = 0;
  296.                 sys_cmd = 0;
  297.                 pFsJpeg->gifsState = FS_STATE_LIST;
  298.                 //fsGUI_RefreshMenu(1); 
  299.                 done = 1;
  300.                 break;
  301.             }
  302.                 
  303.             top--;
  304.             dir_real_index = dir_set[top];
  305.             
  306.             printf(" iso9660_dir[dir_real_index].type=%x, 0x01 << pFsJpeg->gifsFuncBtn :%d, pFsJpeg->gifsFuncBtn:%d, cnt :%d ,name :%sn",iso9660_dir[dir_real_index].type, temp, pFsJpeg->gifsFuncBtn, dir_real_index, iso9660_dir[dir_real_index].name);
  307.             //printf("Compare result ;%x",((iso9660_dir[dir_real_index].type)& temp));
  308.             
  309.             if (((iso9660_dir[dir_real_index].type) & (0x01 << pFsJpeg->gifsFuncBtn)))
  310.             {
  311.                 dir_set_top = top;
  312.                 pFsJpeg->fsnav_dir_now = dir_real_index;
  313.                 CalcDirFirstPage(pFsJpeg->fsnav_dir_now);
  314.                 pFsJpeg->fsnav_trk_now = FSGUI_FindFirstFileForDir(pFsJpeg->gifsFuncBtn, pFsJpeg->fsnav_dir_now);
  315.                 //pFsJpeg->fsnav_trk_now = 0;
  316.                 if (pFsJpeg->gifsFuncBtn == FS_FUNC_MP3)//when playing MP3, must refresh GUI  
  317.                 {   
  318.                     pFsJpeg->gifsState = FS_STATE_MP3; 
  319.                     FSGUI_RefreshMenu(1);
  320.                 }          
  321.                 break; 
  322.             }
  323.         }while(1);
  324.     }//if (need_new_dir == TRUE)
  325. return done;
  326. }
  327. int FSGUI_NormalNext(void)
  328. {
  329.     int done = 0;
  330.     UINT16 dir_real_index = 0;
  331.     BYTE   need_new_dir = FALSE;
  332.     UINT16 top = dir_set_top;
  333.     int temp = 0x01 << pFsJpeg->gifsFuncBtn ;
  334.  
  335.     printf("##### FSGUI_NormalNext ---############--n");
  336.     if (FSGUI_IsFolderEnd(pFsJpeg->fsnav_dir_now, PAGE_DOWN) == TRUE)//(pFsJpeg->fsnav_trk_now == pFsJpeg->last_mp3_entry)//the last file in current dir
  337.     {
  338.         need_new_dir = TRUE;
  339.     }
  340.     else //if (pFsJpeg->fsnav_trk_now < pFsJpeg->last_mp3_entry)//not change dir
  341.     {
  342.         
  343.         dir_real_index = dir_set[top];
  344.         printf("n-------not change dir---------n");
  345.         do
  346.         {
  347.             if (FSGUI_IsFolderEnd(pFsJpeg->fsnav_dir_now, PAGE_DOWN) == TRUE)//(pFsJpeg->fsnav_trk_now >= (iso9660_dir[pFsJpeg->fsnav_dir_now].dir - 1))
  348.             {   
  349.                 need_new_dir = TRUE;
  350.                 
  351.                 break;
  352.             } 
  353.               
  354.             pFsJpeg->fsnav_trk_now ++;
  355.             
  356.             printf("file:%d------type:%d, name=%s, pFsJpeg->gifsFuncBtn:%dn",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);
  357.             if (iso9660_file[(pFsJpeg->fsnav_trk_now + pFsJpeg->first_mp3_entry)].type == (pFsJpeg->gifsFuncBtn))
  358.             {
  359.                 printf("n### file FOUND---!!!!!!!!!!!n");
  360.                 if (pFsJpeg->gifsFuncBtn == FS_FUNC_MP3)
  361.                 {//when playing MP3, must refresh GUI  
  362.                     pFsJpeg->gifsState = FS_STATE_MP3;//after fs_MP3Mainloop, pFsJpeg->gifsState changed, must reset again.  
  363.                     if (pFsJpeg->fsnav_dir_now == dir_real_index)//update GUI only when the dir in GUI is same with playing dir
  364.         {
  365.                         if  ((info_mode == INFO_FULL) && (t_disp == 1))
  366.                          show_info_banner_page();
  367.                         else
  368.                             FSGUI_OsdCmdDown();
  369.                     
  370.                     }
  371.                     FSGUI_ShowCurrentSelection((pFsJpeg->fsnav_trk_now + pFsJpeg->first_mp3_entry));
  372.                 }
  373.                 break;
  374.             }
  375.            
  376.         }while(1);
  377.     }
  378.     
  379.     //change dir
  380.     if (need_new_dir == TRUE)
  381.     {
  382.         printf("--------change dir----------------n");
  383.         do
  384.         {
  385.             if (top >= (pFsJpeg->iso9660_dir_cnt-1))
  386.             {
  387.                 printf("############ all dir is played over --pFsJpeg->fsnav_trk_now:%d-n",pFsJpeg->fsnav_trk_now);
  388.                 top = 0;
  389.                 //pFsJpeg->fsnav_dir_now = 0;
  390.                 pFsJpeg->gbfsSlide = 0;
  391.                 sys_cmd = 0;
  392.                 pFsJpeg->gifsState = FS_STATE_LIST;
  393.                 //fsGUI_RefreshMenu(1); 
  394.                 done = 1;
  395.                 break;
  396.             }
  397.                 
  398.             top++;
  399.             dir_real_index = dir_set[top];
  400.             
  401.             printf(" iso9660_dir[dir_real_index].type=%x, 0x01 << pFsJpeg->gifsFuncBtn :%d, pFsJpeg->gifsFuncBtn:%d, cnt :%d ,name :%sn",iso9660_dir[dir_real_index].type, temp, pFsJpeg->gifsFuncBtn, dir_real_index, iso9660_dir[dir_real_index].name);
  402.             //printf("Compare result ;%x",((iso9660_dir[dir_real_index].type)& temp));
  403.             
  404.             if (((iso9660_dir[dir_real_index].type) & (0x01 << pFsJpeg->gifsFuncBtn)))
  405.             {
  406.                
  407.                 //printf("dir-----pFsJpeg->fsnav_trk_now=%d,loc=%xn", pFsJpeg->fsnav_trk_now,iso9660_file[pFsJpeg->fsnav_trk_now].loc);
  408.                // printf(" New dir entry iso9660_dir[dir_real_index].type=%x, cnt :%d ,name :%sn",iso9660_dir[dir_real_index].type, dir_real_index, iso9660_dir[dir_real_index].name);
  409.                 dir_set_top = top;
  410.                 pFsJpeg->fsnav_dir_now = dir_real_index;
  411.                 CalcDirFirstPage(pFsJpeg->fsnav_dir_now);
  412.                 pFsJpeg->fsnav_trk_now = FSGUI_FindFirstFileForDir(pFsJpeg->gifsFuncBtn, pFsJpeg->fsnav_dir_now);
  413.                 if (pFsJpeg->gifsFuncBtn == FS_FUNC_MP3)//when playing MP3, must refresh GUI  
  414.                 {   
  415.                     pFsJpeg->gifsState = FS_STATE_MP3; 
  416.                     FSGUI_RefreshMenu(1);
  417.                 }          
  418.                 break; 
  419.             }
  420.         }while(1);
  421.     }//if (need_new_dir == TRUE)
  422. return done;
  423. }
  424. //UINT16 CurrentFiles[800];//record the index of subdir and files of current DIR
  425. //some parameters explaination
  426. //
  427. //CurentFiles[]    ---> record all the real index of subdir and files of a parent DIR
  428. //                      NOTE: 
  429. //                      Here I treat the subdir as file. But their index is different.
  430. //                                            
  431. //                      if subdir   value = real index of subdir + SUBFOLDER_BASE
  432. //                      if file     value = real fill index in iso9660_file[]                        
  433. //
  434. //file_count_in_dir       ---->total files count of a DIR
  435. //
  436. //file_index_in_dir       ---> record the reordered index of files in CurentFiles[]
  437. //                      main for UP/DOWN/LEFT/RIGHT to get  correct file_current_in_page .
  438. //                      range: 0 ~ file_count_in_dir          
  439. // 
  440. //fsnav_dir_now    ---> real dir index value in iso9660_dir[] 
  441. //                      range: 0 ~ (ISO_DIR_MAX-1)
  442. //                    
  443. //
  444. //file_current_in_page     ---->file offset in current page.main for draw GUI.
  445. //                      range: 0 ~ (ONEPAGE -1)
  446. //
  447. //file_array_in_page[]    ----->record the indexs in current page, the value from CurentFiles[].
  448. //                      
  449. //                                           
  450. /*
  451.  *Func: fsGUI_Osd_init
  452.  *
  453.  *Description:
  454.  *  init some parametres
  455.  *
  456.  */
  457. void FSGUI_Osdinit()
  458. {
  459. osd_init_mainmenu();
  460. //osd_tog_region(0,OSD_ON);//
  461. //osd_tog_region(1,OSD_ON);//
  462. //osd_draw_rect(0, 0, (MENU_BTN_XLEN+24)*16, BUTTON_Y_DIFF*8, 0);//clear the region.
  463. }
  464. void FSGUI_OsdExitGUI()
  465. {
  466. //fsGUI_Osdinit();
  467. system_state = SYSTEM_SETTING;
  468. printf("### EXIT FSOSD GUI----n");
  469. //osd_init_mainmenu();
  470. menu_level = 0;
  471. menu_page = PLAYPAGE;
  472. HL_menu = PARENT_MENU;
  473. index_y1 = 0;
  474. osd_draw_rect(0, 0, (MENU_BTN_XLEN+24)*16, BUTTON_Y_DIFF*8, 0);//clear the region.
  475. //clear operation message
  476.     osd_draw_hline_region(0, region[1].osd_w*2-2, 0, 0, region[1].osd_h, 1);
  477. show_mainmenu();
  478. ShowPlayState(0);
  479. }
  480. /*
  481.  * Func: fsGUI_OsdMenu()
  482.  *
  483.  * Description:
  484.  *
  485.  *  Show whole FSGUI
  486.  *
  487.  */
  488. void FSGUI_OsdMenu()
  489. {
  490. FSNav_MP3Init();
  491. pFsJpeg->fsnav_dir_now =  FSGUI_GetRootDir(); 
  492. CalcDirFirstPage(pFsJpeg->fsnav_dir_now);
  493. printf("### fsGUI_osdMenu---n");
  494.     pFsJpeg->gbfsSlide = 0;
  495.     //show GUI menu
  496.     
  497.     FSGUI_RefreshMenu(0);
  498. }
  499. /*
  500.  * Description:
  501.  *    if the playing dir change, refresh GUI.
  502.  *
  503.  * INPUT:
  504.  *    mode :  0, show Dir content, HL in  the first item.
  505.  *    mode :  1, Show Dir content , HL according to the 
  506.  *                                            pFsJpeg->fsnav_trk_now  
  507.  *                                            pFsJpeg->first_mp3_entry
  508.  *
  509.  */
  510. void FSGUI_RefreshMenu(int mode)
  511. {
  512.     int i = 0;
  513.     
  514.     
  515.      if (info_mode) //feeling 2004-05-26
  516. exit_info_banner_page(0);
  517.     OSDGUI_Init();
  518.     //osd_draw_rect(0, 0, (MENU_BTN_XLEN+24)*16, BUTTON_Y_DIFF*8, 0);//clear the region.
  519.     OSDGUI_ShowDirInitPara();
  520.     FSGUI_GetOneDirContent(pFsJpeg->fsnav_dir_now);
  521.     //printf("In Refreshmenu pFsJpeg->fsnav_dir_now:%d,--n",pFsJpeg->fsnav_dir_now);
  522.     if (mode == 1)
  523.     {
  524.         //Get the value of "pFsJpeg->file_index_in_dir"
  525.         for (i = 0; i < pFsJpeg->file_count_in_dir; i++)
  526.         {
  527.             if ((pFsJpeg->fsnav_trk_now + pFsJpeg->first_mp3_entry) == CurrentFiles[i])
  528.             {
  529.                 pFsJpeg->file_index_in_dir = i;
  530.                 break;   
  531.             }
  532.         }
  533.      }
  534.     //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);
  535. OSDGUI_GetCurrentPage(PAGE_DOWN);
  536. OSDGUI_DrawOnePage();
  537.     //printf("### value : %d--n",(pFsJpeg->file_array_in_page[pFsJpeg->file_current_in_page]));
  538. FSGUI_ShowCurrentSelection((pFsJpeg->file_array_in_page[pFsJpeg->file_current_in_page]));
  539.     
  540.     FSGUI_OperationInit();
  541. }
  542. /*
  543.  * Description:
  544.  *   after or before a operation, set initial state.
  545.  *
  546.  */
  547. void FSGUI_OperationInit(void)
  548. {
  549. #ifdef SURRORT_MP3_PREPLAY
  550.     FS_ClearPreplayFlag();
  551. #endif//#ifdef SURRORT_MP3_PREPLAY
  552.     FSGUI_ShowOperationMsg();
  553.     
  554. }
  555. UINT32 FSGUI_OsdCmdSelect()
  556. {
  557. UINT32 iRes = 0;
  558. //printf("****** FSGUI SELECT******n");
  559. BYTE button_type;
  560. UINT16 file_now;//file in a page
  561.     UINT16 file_total_now;//total file in array
  562.     
  563.     button_type = OSDGUI_GetSelButtonType(pFsJpeg->file_current_in_page);
  564.     file_now = pFsJpeg->file_current_in_page;
  565.     file_total_now = pFsJpeg->file_array_in_page[file_now];
  566.       
  567. if(button_type == SUB_BUTTON)
  568.         FSGUI_ShowCurrentSelection(file_total_now);
  569.     else        
  570.         FSGUI_OsdCmdRight();
  571.         
  572.         
  573.     iRes = 0x20000 | sys_cmd;
  574.     sys_cmd = 0;
  575.     return iRes;
  576. }
  577. UINT32 FSGUI_OsdCmdPlay()
  578. {
  579. UINT32 iRes = 0;
  580. UINT16 real_file_index = 0;
  581.     UINT16 real_dir_index = 0;
  582.     UINT16 current_file_index = 0;
  583. int i = 0;
  584.     //set play state.    
  585.     play_state = VCD_STATE_MP3_FILELIST;
  586.     
  587.     current_file_index = CurrentFiles[pFsJpeg->file_index_in_dir];
  588.     
  589.     //play file and folder
  590.     if(current_file_index >= SUB_FOLDER_BASE)//if HL is folder,then get first file
  591.     {
  592.         real_dir_index = current_file_index - SUB_FOLDER_BASE;
  593.         //printf("000000iso9660_dir[%d].name:%sn",real_dir_index,iso9660_dir[real_dir_index].name);
  594.         do
  595.         {
  596.             if(iso9660_dir[real_dir_index].dir > 0)
  597.             {    
  598.                 real_file_index = pFsJpeg->Dir_entry[real_dir_index];
  599.                 break;
  600.             }
  601.             else
  602.                 real_dir_index ++;
  603.         }while(1);
  604.             
  605.         //printf("111111iso9660_dir[%d].name:%sn",real_dir_index,iso9660_dir[real_dir_index].name);
  606.     }
  607.     else//HL is file ,real file
  608.         real_file_index = current_file_index;
  609.     
  610.     pFsJpeg->gifsFuncBtn = iso9660_file[real_file_index].type;
  611.     real_dir_index = iso9660_file[real_file_index].parent_dir;
  612.     
  613.     if (real_dir_index == FSGUI_GetRootDir())//curent dir is root dir.
  614.     { //main to show selection  
  615.         FSGUI_GetOneDirContent(real_dir_index);
  616.         OSDGUI_GetCurrentPage(PAGE_DOWN);
  617.     }
  618.    
  619.     //get dir_set[] index value
  620.     for (i = 0; i < pFsJpeg->iso9660_dir_cnt; i++)
  621.     {
  622.         if(dir_set[i] == real_dir_index)
  623.         {   
  624.             dir_set_top = i;
  625.             break;
  626.         }
  627.     }
  628.     //get the current dir,trk
  629.     pFsJpeg->fsnav_dir_now = real_dir_index;
  630.     CalcDirFirstPage(pFsJpeg->fsnav_dir_now);
  631.     pFsJpeg->fsnav_trk_now = real_file_index - pFsJpeg->first_mp3_entry;
  632.     
  633.     FSGUI_ShowCurrentSelection((pFsJpeg->file_array_in_page[pFsJpeg->file_current_in_page]));
  634.     
  635.     //according to type,get some  base value
  636.     if(pFsJpeg->gifsFuncBtn == FS_FUNC_MP3)
  637.     {
  638.         pFsJpeg->gifsState = FS_STATE_MP3;
  639.         FSNav_MP3Init();
  640.     }
  641.     else  if(pFsJpeg->gifsFuncBtn == FS_FUNC_JPEG)
  642.     {
  643.         //osd_init__(); 
  644.         pFsJpeg->gifsState = FS_STATE_JPEG;
  645.         cd_subtype = CDROM_JPEG;
  646.         pFsJpeg->g_nJpegMode = JPEG_NORMAL_MODE;
  647.         //close fsGUI
  648.         osd_tog_region(0,OSD_OFF);
  649.         osd_tog_region(1,OSD_OFF);
  650.         osd_draw_rect(0, 0, (MENU_BTN_XLEN+24)*16, BUTTON_Y_DIFF*8, 0);//clear the region.
  651.         pFsJpeg->gbfsSlide = 1;
  652.     }
  653.     
  654.     
  655.     //printf("IN fsGUI osd file:%d------type:%d, name=%s,parentdir :%sn",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);
  656.     
  657.     iRes = CMD_FUNC | CMD_FUNC_PLAY;
  658.     
  659.     return iRes;
  660. }
  661. UINT32 FSGUI_OsdCmdUp()
  662. {
  663. UINT32 iRes = 0;
  664.     iRes = OSDGUI_CmdUp();
  665.     
  666.     if (iRes != 0)
  667.         FSGUI_OperationInit();
  668. return iRes;
  669. }
  670. UINT32 FSGUI_OsdCmdDown()
  671. {
  672. UINT32 iRes = 0;
  673. iRes = OSDGUI_CmdDown();
  674. if (iRes != 0)
  675.         FSGUI_OperationInit();
  676.     return iRes;
  677. }
  678. UINT32 FSGUI_OsdCmdLeft()
  679. {
  680. UINT32 iRes = 0;
  681. iRes = OSDGUI_CmdLeft();
  682. if (iRes != 0)
  683. {
  684. //set first_mp3_entry and last_mp3_entry
  685.     //to find the track postion correctly
  686. if (pFsJpeg->gifsState == FS_STATE_LIST)//preloop state.   
  687.     CalcDirFirstPage(pFsJpeg->fsnav_dir_now);
  688.     
  689.     FSGUI_OperationInit();
  690.     }
  691.     return iRes;
  692. }
  693. UINT32 FSGUI_OsdCmdRight()
  694. {
  695. UINT32 iRes = 0;
  696. //printf("---------- FSGUI RIGHT----n");
  697. iRes = OSDGUI_CmdRight();
  698. if (iRes != 0)
  699. {
  700.     //set first_mp3_entry and last_mp3_entry
  701.     //to find the track postion correctly
  702.         if (pFsJpeg->gifsState == FS_STATE_LIST)//preloop state.   
  703.             CalcDirFirstPage(pFsJpeg->fsnav_dir_now);
  704.     
  705.         FSGUI_OperationInit();
  706.     }
  707.     return iRes;
  708. }
  709. /*
  710.  * Description:
  711.  *    find root dir.
  712.  */
  713. UINT16 FSGUI_GetRootDir(void)
  714. {
  715.     int  i = 0;
  716. UINT16   root_dir = 0;
  717.     //get the root dir.
  718. for(i = 0; i < pFsJpeg->iso9660_dir_cnt; i++)
  719. {
  720. if(iso9660_dir[i].parent_dir == -1) 
  721. {
  722. root_dir  = i;
  723. //printf("### root-dir == %d",root_dir);
  724. break;
  725. }
  726. }    
  727. return root_dir;
  728. }
  729. /*
  730.  * Function Description:
  731.  *
  732.  *    refresh selection GUI(on the right ) when enter"SELECT"
  733.  *
  734.  * INPUT:
  735.  *  file_index : selected file real index.
  736.  *
  737.  *    type --->  FS_FUNC_MP3
  738.  *               FS_FUNC_JPEG
  739.  *                      Other
  740.  *
  741.  */
  742. void FSGUI_ShowCurrentSelection(UINT16 file_index)
  743. {
  744. const char * str = "";
  745. BYTE filename[50];
  746. BYTE dirname[100]; 
  747.     //UINT16 file_now;//file in a page
  748.     UINT16 file_total_now;//total file in array
  749.     UINT16 dir_total_now;//total dir in array
  750.     BYTE type = 0;
  751.     
  752.     //printf("#### Show current selection ---n");
  753.     //file_now = pFsJpeg->file_current_in_page;
  754.     //file_total_now = pFsJpeg->fsnav_trk_now + pFsJpeg->first_mp3_entry;//pFsJpeg->file_array_in_page[file_now];
  755.     file_total_now = file_index;
  756.     dir_total_now = iso9660_file[file_total_now].parent_dir;
  757. type = iso9660_file[file_total_now].type;
  758.  //Draw line
  759. osd_DrawRegionLine(FS_SUB_TXT_XSTART, FS_SUB_TXT_YSTART+26, FS_SUB_TXT_XSTART+300, FS_SUB_TXT_YSTART+26, FS_SUB_LINE_COLOR, 2,0);
  760. osd_DrawRegionLine(FS_SUB_TXT_XSTART, FS_SUB_TXT_YSTART+126, FS_SUB_TXT_XSTART+300, FS_SUB_TXT_YSTART+126, FS_SUB_LINE_COLOR, 2,0);
  761. osd_DrawRegionLine(FS_SUB_TXT_XSTART, FS_SUB_TXT_YSTART+226, FS_SUB_TXT_XSTART+300, FS_SUB_TXT_YSTART+226, FS_SUB_LINE_COLOR, 2,0);
  762. //Draw pic
  763. osd_draw_bmp(FS_SUB_TXT_XSTART ,FS_SUB_TXT_YSTART+42, song1_bmp, 0);//draw song
  764. osd_draw_bmp(FS_SUB_TXT_XSTART,FS_SUB_TXT_YSTART+142, picture1_bmp, 0);//draw picture
  765.  //Draw string
  766.  //"Current Selection"
  767.  str = _OsdMessegeFont1[osd_font_mode][STR_OS_FSGUI_SELECTION_MSG0];
  768.  osd_DrawRegionString(FS_SUB_TXT_XSTART, FS_SUB_TXT_YSTART, str, FS_SUB_TXT_FONT_COLOR, FS_SUB_TXT_BACKGROUND_COLOR,0);
  769. if (type == FS_FUNC_MP3)
  770. {
  771. //if (GetCurrentFileType() ==CDROM_MP3)
  772. //{
  773.         //show folder name
  774.         ClearString(FS_SUB_TXT_XSTART+38, FS_SUB_TXT_YSTART+50,16*16,FS_SUB_TXT_BACKGROUND_COLOR);
  775.         //strcpy(dirname,iso9660_dir[dir_total_now].name);
  776.         FSGUI_GetPathName(dirname, dir_total_now);
  777.         osd_DrawRegionString(FS_SUB_TXT_XSTART+38, FS_SUB_TXT_YSTART+50, dirname, FS_SUB_TXT_FONT_COLOR, FS_SUB_TXT_BACKGROUND_COLOR,0);
  778.         
  779. //show track name
  780.         ClearString(FS_SUB_TXT_XSTART, FS_SUB_TXT_YSTART+94,18*16,FS_SUB_TXT_BACKGROUND_COLOR);
  781. strcpy(filename,iso9660_file[file_total_now].name);
  782. osd_DrawRegionString(FS_SUB_TXT_XSTART+38, FS_SUB_TXT_YSTART+94, filename, FS_SUB_TXT_FONT_COLOR, FS_SUB_TXT_BACKGROUND_COLOR,0);
  783.         //show mp3 bmp
  784.         if (GetCurrentFileType() == CDROM_WMA)
  785.     osd_draw_bmp(FS_SUB_TXT_XSTART,FS_SUB_TXT_YSTART+85, wma_bmp, 0);//draw mp3
  786.         else 
  787.             osd_draw_bmp(FS_SUB_TXT_XSTART,FS_SUB_TXT_YSTART+85, mp3_bmp, 0);//draw mp3
  788.         if ((selected_flag & (0x01<< type)) == 0 )
  789.         selected_flag = selected_flag |(0x01 << type);
  790. //}
  791. /*if (GetCurrentFileType() ==CDROM_WMA)
  792. {
  793.                     //show folder name
  794.                         strcpy(dirname,iso9660_dir[dir_total_now].name);
  795.                         osd_DrawRegionString(FS_SUB_TXT_XSTART+38, FS_SUB_TXT_YSTART+50, dirname, FS_SUB_TXT_FONT_COLOR, FS_SUB_TXT_BACKGROUND_COLOR,0);
  796.         
  797.         //show track name
  798. strcpy(filename,iso9660_file[file_total_now].name);
  799. osd_DrawRegionString(FS_SUB_TXT_XSTART+38, FS_SUB_TXT_YSTART+90, filename, FS_SUB_TXT_FONT_COLOR, FS_SUB_TXT_BACKGROUND_COLOR,0);
  800.                         //show wma bmp
  801. osd_draw_bmp(FS_SUB_TXT_XSTART,FS_SUB_TXT_YSTART+82, wma_bmp, 0);//draw wma
  802. }*/
  803. }
  804.     else if (type== FS_FUNC_JPEG)
  805. {
  806.         //show folder name
  807.         ClearString(FS_SUB_TXT_XSTART+38, FS_SUB_TXT_YSTART+150,16*16,FS_SUB_TXT_BACKGROUND_COLOR);
  808.         //strcpy(dirname,iso9660_dir[dir_total_now].name);
  809.         FSGUI_GetPathName(dirname, dir_total_now);
  810.         osd_DrawRegionString(FS_SUB_TXT_XSTART+38, FS_SUB_TXT_YSTART+150, dirname, FS_SUB_TXT_FONT_COLOR, FS_SUB_TXT_BACKGROUND_COLOR,0);
  811.                 
  812.         //show track name
  813.         ClearString(FS_SUB_TXT_XSTART+38, FS_SUB_TXT_YSTART+194,16*16,FS_SUB_TXT_BACKGROUND_COLOR);
  814.         strcpy(filename,iso9660_file[file_total_now].name);
  815.         osd_DrawRegionString(FS_SUB_TXT_XSTART+38, FS_SUB_TXT_YSTART+194, filename, FS_SUB_TXT_FONT_COLOR, FS_SUB_TXT_BACKGROUND_COLOR,0);
  816.  
  817.     if ((selected_flag & (0x01<< type)) == 0 )
  818.     {    
  819.         selected_flag = selected_flag |(0x01 << type);
  820.         printf("##### ------selected changed --%dn",selected_flag);
  821.     }   
  822.  }
  823.  //else if( (type!= FS_FUNC_JPEG)&&(type!= FS_FUNC_MP3) )
  824.  str = _OsdMessegeFont1[osd_font_mode][STR_OS_FSGUI_NO_SEL_MSG0];
  825.     if (selected_flag == 0)
  826. {
  827.     //draw string "Not Selected" for MP3 and JPEG
  828.   osd_DrawRegionString(FS_SUB_TXT_XSTART+38, FS_SUB_TXT_YSTART+50, str, FS_SUB_TXT_FONT_COLOR, FS_SUB_TXT_BACKGROUND_COLOR,0);
  829.   osd_DrawRegionString(FS_SUB_TXT_XSTART+38, FS_SUB_TXT_YSTART+150, str, FS_SUB_TXT_FONT_COLOR, FS_SUB_TXT_BACKGROUND_COLOR,0);
  830. }
  831. else 
  832. {
  833.     if (selected_flag == (0x01 << FS_FUNC_MP3))//only MP3 selected,JPEG has no selection
  834.         osd_DrawRegionString(FS_SUB_TXT_XSTART+38, FS_SUB_TXT_YSTART+150, str, FS_SUB_TXT_FONT_COLOR, FS_SUB_TXT_BACKGROUND_COLOR,0);
  835.     else if (selected_flag == (0x01 << FS_FUNC_JPEG))
  836.         osd_DrawRegionString(FS_SUB_TXT_XSTART+38, FS_SUB_TXT_YSTART+50, str, FS_SUB_TXT_FONT_COLOR, FS_SUB_TXT_BACKGROUND_COLOR,0);
  837. }
  838. }
  839. /*  
  840.  * Funciton: FSGUI_GetOneDirContent() 
  841.  *
  842.  * Description:
  843.  *   1)save the index of subdirs and files to CurrentFiles[]
  844.  *   2)Get the total count : pFsJpeg->file_count_in_dir
  845.  */
  846. void FSGUI_GetOneDirContent(int iDir)
  847. {
  848. int i = 0,j = 0;
  849. int iStart = 0, iEnd = 0;
  850. //NOTE:
  851. //When we read a dir, must record its subdir and files.
  852. //we save them in CurrentFiles[]
  853. //find its subdir
  854. for(i = 0; i < pFsJpeg->iso9660_dir_cnt;i++)
  855. {
  856. if((iso9660_dir[i].parent_dir == iDir) 
  857. && (i != iDir))//parent dir of i can not be iDir.
  858. {
  859. // record the index of subdir and files.
  860. //in order to distinguish dir and files, 
  861. //dir index  = index+ 400
  862. //file index = index;
  863. CurrentFiles[j] = i + SUB_FOLDER_BASE;
  864. j++;
  865. }
  866. }
  867. //printf("###### iDir %d -has files---%d---n",iDir,iso9660_dir[iDir].dir);
  868. if(iso9660_dir[iDir].dir>0)
  869. {
  870. iStart = pFsJpeg->Dir_entry[iDir];
  871. iEnd = iStart + iso9660_dir[iDir].dir;
  872. //find its file.
  873. for(i = iStart; i < iEnd;i++)
  874. {
  875. //if(iso9660_file[i].parent_dir == iDir)
  876. if(iso9660_file[i].parent_dir == iDir)
  877. {
  878. CurrentFiles[j]= i;
  879. j++;
  880. }
  881. }
  882. }
  883. pFsJpeg->file_count_in_dir = j;//total file count.
  884.   //printf("#### pFsJpeg->file_count_in_dir---%d--n",pFsJpeg->file_count_in_dir);
  885. //for( i = 0; i < j; i++)
  886.      // printf("#### ---- CurrentFile[%d] :%d---n",i,CurrentFiles[i]);
  887. }
  888. /*
  889.  * Description:
  890.  *      Calculate location of the first file in Dir -> fsnav_trk_now
  891.  *                                      and first_mp3_entry, last_mp3_entry, 
  892.  *
  893.  */
  894. void CalcDirFirstPage(UINT16 iDir)
  895. {
  896.     pFsJpeg->fsnav_trk_now = 0;
  897.     pFsJpeg->first_mp3_entry = pFsJpeg->Dir_entry[iDir];
  898.         
  899.     if (iDir < (pFsJpeg->iso9660_dir_cnt - 1))
  900.         pFsJpeg->last_mp3_entry = pFsJpeg->first_mp3_entry + iso9660_dir[iDir].dir-1;
  901.     else    
  902.         pFsJpeg->last_mp3_entry = pFsJpeg->iso9660_file_cnt - 1;
  903.     
  904.     //printf("------ Excute CalcDirfirstPage : dir :%dfirst_mp3_entry:%d, last_mp3_entry:%d----n",iDir,pFsJpeg->first_mp3_entry,pFsJpeg->last_mp3_entry);
  905. }
  906. /*
  907.  * Description:
  908.  *   Get path name (start from root dir) to show curent selection
  909.  *
  910.  */
  911. void FSGUI_GetPathName(BYTE pathname[], UINT16 iDir)
  912. {
  913.     UINT16 root_dir = FSGUI_GetRootDir();
  914.     UINT16 parent_dir = 0;
  915.     UINT16 sub_dir = iDir;
  916.     UINT16 i = 0;
  917.     BYTE templen = 0, pathlen = 0;
  918.     
  919.     if (iDir == root_dir)    
  920.         psprintf(pathname, "\");//only show ''
  921.     else
  922.     {
  923.         psprintf(pathname, "%s\", iso9660_dir[sub_dir].name);
  924.         
  925.         do
  926.         {
  927.             parent_dir = OSDGUI_GetParentDir(sub_dir, DIR);
  928.             
  929.             if (parent_dir == root_dir)
  930.                 psprintf(linebuf, "\");
  931.             else
  932.                 psprintf(linebuf, "%s\", iso9660_dir[parent_dir].name);       
  933.             
  934.             templen = strlen(linebuf);
  935.             pathlen = strlen(pathname);
  936.             
  937.             for (i = 0; i < pathlen; i++)
  938.             {
  939.                 
  940.                 if ((templen + i) >= 44)//not exceed array range.
  941.                     break;
  942.                     
  943.                 linebuf[templen+i] = pathname[i];
  944.             }
  945.             //tempname[templen + pathlen] = ' ';
  946.             linebuf[templen + pathlen] = '';
  947.             
  948.             strcpy(pathname, linebuf);
  949.             sub_dir = parent_dir;
  950.             
  951.         }while(parent_dir != root_dir);
  952.         
  953.         
  954.    }
  955.     
  956. }
  957. /*
  958.  * Description:
  959.  *  Show operation msg for fsGUI
  960.  *
  961.  */
  962. void FSGUI_ShowOperationMsg(void)
  963. {
  964.     int file_index = 0;
  965.     UINT16 osd_id = 0;
  966.     
  967.     if (full_scrn)
  968.         return;
  969.     file_index = CurrentFiles[pFsJpeg->file_index_in_dir];
  970.     
  971.     if (file_index >=  SUB_FOLDER_BASE)//folder
  972.     {   
  973.         if (selected_flag == BUTTON_SELECTED)
  974.             osd_id = STR_OS_FS_FOLDER_HAS_SEL;
  975.         else
  976.             osd_id = STR_OS_FS_FOLDER_NONE_SEL;
  977.          
  978.     }   
  979.     else
  980.     {
  981.         if (selected_flag == BUTTON_SELECTED)
  982.             osd_id = STR_OS_FS_FILE_HAS_SEL;
  983.         else
  984.             osd_id = STR_OS_FS_FILE_NONE_SEL;
  985.         
  986.     }
  987.     
  988.     ShowOperationMsg( osd_id, 1);
  989. }
  990. /*
  991.  * Description:
  992.  *   Confirm cd_type again to get cd_type_loaded value.
  993.  *
  994.  * RETURN:   
  995.  *                 cd_type_loaded:
  996.  *  if only has MP3 , CDMUSIC
  997.  *     only has JPEG, CDPICTRUE
  998.  *     MP3 & JPEG,    CDPICMUS
  999.  *
  1000.  */
  1001. BYTE GetCDROMDiscType(void)
  1002. {
  1003.     BYTE DiscType = 0;
  1004.     int MP3files = pFsJpeg->count_file[FS_FUNC_MP3 - FS_FUNC_MP3];
  1005.     int JPEGfiles = pFsJpeg->count_file[FS_FUNC_JPEG - FS_FUNC_MP3];
  1006.     
  1007.     if ((MP3files != 0) && (JPEGfiles == 0))
  1008.         DiscType = CDMUSIC;
  1009.     else if ((MP3files == 0) && (JPEGfiles != 0))
  1010.         DiscType = CDPICTRUE;
  1011.     else
  1012.         DiscType = CDPICMUS;
  1013.     
  1014.     return DiscType;
  1015. }
  1016. #ifdef SURRORT_MP3_PREPLAY
  1017. /*
  1018.  * Description:
  1019.  *  Get MP3 file index which has HL in it.
  1020.  *  for MP3 preplay
  1021.  *  
  1022.  * RETURN:
  1023.  *   iRes : ---> -1     current HL is not MP3 file
  1024.  *                >= 0   file index.  current HL is MP3 file
  1025.  *
  1026.  */
  1027. INT16 FSGUI_GetHLMp3File(void)
  1028. {
  1029.     INT16 iRes = 0;
  1030.     UINT16 track_index = 0;
  1031.     
  1032.     track_index = CurrentFiles[pFsJpeg->file_index_in_dir];
  1033.     
  1034.     if(track_index < SUB_FOLDER_BASE)//HL now in file
  1035.     {
  1036.         if(iso9660_file[track_index].type == FS_FUNC_MP3)
  1037.         {    
  1038.             pFsJpeg->fsnav_trk_now = track_index - pFsJpeg->first_mp3_entry;
  1039.             iRes = track_index;   
  1040.         }
  1041.     }
  1042.     else 
  1043.         iRes = -1; //current HL is not MP3 file
  1044.     
  1045.     return iRes;
  1046. }  
  1047. #endif //SURRORT_MP3_PREPLAY
  1048. #endif//ifdef OP_UI