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

DVD

开发平台:

C/C++

  1. #ifndef __FS_MIDI_UI__
  2. #define __FS_MIDI_UI__
  3. #include "memmap.h"
  4. #include "memmap0.h"
  5. #include "user_init.h"
  6. #include "fsmidi.h"
  7. #ifdef SUPPORT_MIDI_MENU_SEL
  8. #ifdef EXTERN_MIDIUI_HERE
  9. #define EXTERN_FSMIDI_UI
  10. #else
  11. #define EXTERN_FSMIDI_UI extern 
  12. #endif //end #ifdef EXTERN_MIDIUI_HERE
  13. #define SUPPORT_DISPQXQ_STOP
  14. #define SUPPORT_SCANMODE_SWITCH         //xlluo add 04-6-14 
  15. #ifdef SUPPORT_SCANMODE_SWITCH
  16. #define MENU_REGION_PAL_X       (20)
  17. #define MENU_REGION_PAL_Y       (36)
  18. #define LYRIC_REGION_PAL_X      (20)
  19. #define LYRIC_REGION_PAL_Y      (280)
  20. #define MENU_REGION_PAL_W       (MIDI_MENU_REGION)
  21. #define MENU_REGION_PAL_H       (MIDI_MENU_HEIGHT)
  22. #define LYRIC_REGION_PAL_W      (MIDI_LYRIC_REGION)
  23. #define LYRIC_REGION_PAL_H      (MIDI_LYRIC_HEIGHT)
  24. EXTERN_FSMIDI_UI void SwitchRegionTVformat();
  25. #endif//SUPPORT_SCANMODE_SWITCH
  26. #define SUPPORT_VFD_SONGCODE
  27. #ifdef SUPPORT_VFD_SONGCODE
  28. typedef struct _stCurPlaySong{
  29.                     BYTE bIsNeedRefresh;//1//1: need reflesh 0:no need
  30.                     BYTE songCode[6];
  31.                  }stCurPlaySong;
  32. EXTERN_FSMIDI_UI void CleanCurplaySongCode(void);
  33. EXTERN_FSMIDI_UI stCurPlaySong curPlayingSong;
  34. EXTERN_FSMIDI_UI void GetCurplaySongCode(void);   //wsf 20040603
  35. #endif
  36. // *****************************************************************
  37. // *** Define the discontiguous serial number FUNCTION for the midi songcode
  38. // *****************************************************************
  39. #define MIDI_SONGCODE_DISCON_NO
  40. // *****************************************************************
  41. // ***user for play sequence songs for none discontiguous serial number
  42. // *****************************************************************
  43. #ifdef MIDI_SONGCODE_DISCON_NO
  44. #define MIDI_SEQUENCE_SEARCHLIST
  45. UINT32 filecode2int(BYTE * );
  46. #endif
  47. #ifdef MIDI_MENU_FONT
  48. // *************************************************************
  49. // *** if dont support the Menu Font , mark the Multi Menu Code
  50. // *** if dont need the Multi Index to search the song, mark it
  51. // *************************************************************
  52. #define MIDI_MULTI_MENU
  53. #endif  //#ifdef MIDI_MENU_FONT
  54. //as parament of Menu_Draw_Attentiontip(BYTE AttentionType)
  55. enum
  56. {
  57.     MENU_TOPTIP_TYPE_SONGNAME =0,
  58.     MENU_TOPTIP_TYPE_SELECTSONG,
  59.     MENU_TOPTIP_TYPE_NOMENUINFO,
  60.     MENU_TOPTIP_TYPE_NOPREVPAGE,
  61.     MENU_TOPTIP_TYPE_NONEXTPAGE,
  62.     MENU_TOPTIP_TYPE_SELECTPLAY,
  63.     MENU_TOPTIP_TYPE_SONGLISTFULL,
  64.     MENU_TOPTIP_TYPE_DELITEM,
  65.     MENU_TOPTIP_TYPE_MOVEITEM,
  66.     MENU_TOPTIP_TYPE_DONTDEL,
  67.     MENU_TOPTIP_TYPE_PROGRAM,
  68. };
  69. // define Menu state 
  70. enum
  71. {
  72.     MENU_INIT                           = 0,
  73.     MENU_SEL,
  74.     MENU_SEL_QXQ,
  75.     MENU_SEL_PROG,
  76.     MENU_SEL_PROGLIST,
  77.     MENU_MULTI_INDEX_SEL,
  78.     MENU_MULTI_INDEX_SEL_PLAYLIST,
  79.     #ifdef SUPPORT_MIDIUI_IME
  80.     MENU_MULTI_INDEX_SEL_IME_SEARCH,
  81.     #endif
  82.     MENU_OTHER,
  83. };
  84. #ifdef SUPPORT_MIDIUI_IME
  85. enum
  86. {
  87.     IME_SEL_INIT   = 0,
  88.     IME_SEL_INPUT ,
  89.     IME_SEL_ENTER,
  90. };
  91. #endif
  92. // define the special play state
  93. enum 
  94. {
  95.     MIDI_NOMAL_PLAY = 0,
  96.     MIDI_RANDOM_PLAY = 9, //set up the value acording to the variable MainMenuTitle
  97.     MIDI_SEQUENCE_PLAY = 10, //set up the value acording to the variable MainMenuTitle
  98. };
  99. EXTERN_FSMIDI_UI BYTE MenuState;  // menu state
  100. EXTERN_FSMIDI_UI BYTE SpecialPlayState; // special play state
  101. //fsmidi UI osd Color
  102. EXTERN_FSMIDI_UI BYTE LyricFontcolor, LyricBgcolor;
  103. EXTERN_FSMIDI_UI BYTE LyricRevcolour, LyricFigureColor;//osd disp color
  104. EXTERN_FSMIDI_UI BYTE MenuFontcolor, MenuBgcolor, MenuFigureColor;
  105. #define MIDIUI_SEL_QXQ_COLOR                6
  106. #define MIDIUI_SEL_QXQNUM_COLOR             6
  107. #define MIDIUI_SEL_QXQCUE_COLOR             6
  108. #define MIDIUI_SEL_PROGRAM_COLOR            5
  109. #ifdef SANJING_MIDI_DVD  //ouyang 2004-12-8 14:44
  110. #define MIDIUI_SEL_PRGNUM_NEXTPLAY_COLOR    4//2
  111. #define MIDIUI_SEL_PRGNUM_WILLING_COLOR     12//7
  112. #define MIDIUI_SEL_PY_BOTTOMTIP_COLOR        7
  113. #define MIDIUI_SEL_PRGNUM_PERV_COLOR        2//6
  114. #else
  115. #define MIDIUI_SEL_PRGNUM_NEXTPLAY_COLOR    2
  116. #define MIDIUI_SEL_PRGNUM_WILLING_COLOR     7
  117. #define MIDIUI_SEL_PRGNUM_PERV_COLOR        6
  118. #endif
  119. #define MIDIUI_SEL_MOVE_BGCOLOR             4
  120. #define MIDIUI_SEL_MOVE_FONTCOLOR           2
  121. #define MIDIUI_SEL_BGCOLOR                  0
  122. #ifdef SANJING_MIDI_DVD  //ouyang 2004-12-8 14:44
  123. #define MIDIUI_SEL_TOPTIPCOLOUR              6// 7
  124. #define MIDIUI_SEL_PROGRAMNUM                6//7
  125. #else
  126. #define MIDIUI_SEL_TOPTIPCOLOUR                  7
  127. #define MIDIUI_SEL_PROGRAMNUM                  7
  128. #endif
  129. #define MIDIMULTIUI_SEL_PALYEDFILE          3
  130. //for menu color 
  131. #define MENU_BACKGROUND_COLOR  (13)
  132. #define MENU_LINE_COLOR             (1)
  133. #define MAX_SEL_LIST (6)
  134. #define MAX_SEARCH_PAGE (50)  //equal to the total num of SongInfo record
  135. /*#ifdef SUPPORT_MIDIUI_IME
  136. #define MENU_ITEM_NUM  (13-1)
  137. #else
  138. #define MENU_ITEM_NUM  (12)
  139. #endif
  140. */
  141. /*
  142. #ifdef SANJING_MIDI_DVD
  143. //#undef MENU_ITEM_NUM 
  144. //#ifdef SUPPORT_MIDIUI_IME
  145. #define MENU_ITEM_NUM (14)
  146. #else
  147. #define MENU_ITEM_NUM (12)
  148. #endif 
  149. //#endif
  150. */
  151. #define MIDINDEX_SONGINFO_FLAG      (0x01)
  152. #define MIDINDEX_SONGNAMEWORDSUM_FLAG     (0x02)
  153. #define MIDINDEX_SINGERNAMEWORDSUM_FLAG     (0x03)
  154. #define MIDINDEX_SONGTYPE_FLAG      (0x04)
  155. #define MIDINDEX_SINGERCODE_FLAG   (0x05)
  156. #define MIDINDEX_SINGERTYPE_FLAG   (0x06)
  157. #define MIDINDEX_LANGUAGE_FLAG      (0x07)
  158. //for disp menu
  159. //This is the header of the midi index file
  160. typedef struct
  161. {
  162.     BYTE* pSingerType;
  163.     BYTE* pLonguageType;
  164.     BYTE* pSongType;
  165.     BYTE* pSingerCode;
  166.     BYTE* pSongInfo;
  167.     BYTE* pSongWord;     //new
  168.     BYTE* pSingerWord;  //new
  169.     UINT16 SingerNum;   
  170.     UINT16 SongNum;
  171.     UINT16 SongWordNum;    //new
  172.     UINT16 SingerWordNum;    //new
  173.     UINT16 SongNameNumFlag;
  174.     UINT16 SingerNameNumFlag;
  175.     BYTE* pSingerPos;
  176.     BYTE* pSongPos;
  177.     #ifdef MIDI_SONGCODE_DISCON_NO
  178.     BYTE *pNumIndexPos ; 
  179.     #endif
  180.     BYTE* pIndexStart;                 //index start
  181. }MidiIndexTable_S;
  182. //Midi index song info record
  183. typedef struct
  184. {
  185.     BYTE recordFlag;
  186.     BYTE recordLen;
  187.     unsigned songType : 8;
  188.     unsigned languageType : 7;
  189.     unsigned bIsMP3 : 1;
  190.     unsigned songerNo : 12;
  191.     unsigned wordNum : 4;
  192.     UINT16 MidiFileSize;
  193.     UINT32 MidiMsfPos;
  194.     union
  195.     {
  196.         struct
  197.         {
  198.             UINT32 Mp3MsfPos;
  199.             UINT16 Mp3FileSize;
  200.             char Mp3SongName[58];
  201.         }Mp3Info;
  202.         char MidiSongName[64];
  203.     }SongName;
  204. }SongInfo_S;
  205. typedef struct
  206. {
  207. BYTE sign;
  208. BYTE recordlen;
  209. BYTE wordNum;//
  210. BYTE c;//
  211. UINT16 TheSongNum;
  212. char TypeName[8]; //"(x字歌曲)"(8BYTE)
  213. }WordSel_A;
  214. //singer code record
  215. typedef struct
  216. {
  217.     BYTE recordFlag;
  218.     BYTE recordLen;  
  219.     UINT16 SingerSum:12;
  220.     UINT16 wordNum:4;
  221.     BYTE singerType;
  222.     char singerName[1];
  223. }SingerCode_S;
  224. //singer type record
  225. typedef struct
  226. {
  227.     BYTE recordFlag;
  228.     BYTE recordLen;
  229.     UINT16 TypeSum;
  230.     char singerType[1];
  231. }SingerType_S;
  232. //language type record 
  233. typedef struct
  234. {
  235.     BYTE recordFlag;
  236.     BYTE recordLen;
  237.     UINT16 TypeSum;
  238.     char languageType[1];
  239. }LanguageType_S;
  240. //song type record 
  241. typedef struct
  242. {
  243.     BYTE recordFlag;
  244.     BYTE recordLen;
  245.     BYTE songTypeCode;
  246.     UINT16 TypeSum;
  247.     char songTypeName[1];
  248. }SongType_S;
  249. //The following is data struct for search 
  250. //************************************************
  251. //***The following struct must keep data structure size = 4N 
  252. //************************************************
  253. typedef struct
  254. {
  255.     BYTE *pStackBottom ;  //align at the edge of memory addr == 4n
  256.     BYTE *pStackTop ;
  257.     BYTE *pStackEnd ;
  258. }SearchStack_S;
  259. typedef struct 
  260. {
  261.     UINT16 cPageSum;  
  262.     UINT16 cPageNum;
  263.     // the current term for search list
  264.     unsigned TermSongType   : 8;
  265.     unsigned TermLanguageType : 7;
  266.     unsigned TermbIsMP3 : 1;
  267.     unsigned TermSongerNo : 12;
  268.     unsigned TermWordNum  : 4;
  269.     BYTE TermSingerType;
  270.     BYTE TermSingerWordNum;
  271.     BYTE TermValidate; // d0:TermSongType  d1:TermLanguageType d2: TermbIsMP3 d3: TermSongerNo
  272.                                     // d4: TermWordNum d5:TermSingerType d6: TermSingerWordNum
  273.     BYTE bAdvanceItem; //dummy element
  274. }SearchTerm_S;
  275. typedef struct
  276. {
  277.     UINT32 *pPageStart;    //the bottom stack of the current menu,and is the first pos of menu state ;
  278.     BYTE uMaxPage;//*pPageEnd;
  279.     BYTE uOutputQueue;
  280.     BYTE uInputQueue;
  281.     BYTE uRecordType;  //d0: SongInfo d1:songWord d2:singerWord d3:SongType d4: SingerCode d5:SingerType d6:LanguageType  d7:Menu
  282.     BYTE uMenuDegree; //when uRecordType->d5==1 : validate-->d0~d7:the degree of the current menu state
  283.     BYTE uCurPage;        //the current page 
  284.     BYTE uCurPos;          //the current pos in the current list
  285.     BYTE uCurPageItemNum;
  286.     UINT16 cPageSum;  
  287.     UINT16 cPageNum;
  288.     // the current term for search list
  289.     unsigned TermSongType   : 8;
  290.     unsigned TermLanguageType : 7;
  291.     unsigned TermbIsMP3 : 1;
  292.     unsigned TermSongerNo : 12;
  293.     unsigned TermWordNum  : 4;
  294.     BYTE TermSingerType;
  295.     BYTE TermSingerWordNum;
  296.     BYTE TermValidate; // d0:TermSongType  d1:TermLanguageType d2: TermbIsMP3 d3: TermSongerNo
  297.                                     // d4: TermWordNum d5:TermSingerType d6: TermSingerWordNum
  298.                                     
  299.     BYTE bAdvanceItem;     //see enum emMidiMULTIMenuADVItem        //xlluo 04-1-21
  300. #if 0
  301. //00: no advitems
  302. //01: the advsearch invalid
  303. //02: the score menu is showwing   // xlluo redefine for sjscore 04-10-15
  304.  #endif    
  305.     BYTE * CurPageList[MAX_SEL_LIST];   // the current list
  306.     UINT32 uPageItemCode[MAX_SEL_LIST]; //(((MAX_SEL_LIST+3)>>2)<<2)];
  307.     #ifdef SUPPORT_MIDIUI_IME
  308.     UINT8 IsEnablePYsel ;
  309.     UINT8 uImeSelState;
  310.     UINT16 c;   //dummy element
  311.     #endif
  312. }Search_S;  //when push stack , this struct copy to the top stack ;when pop ,copy to this struct 
  313. enum emMidiMULTIMenuADVItem{
  314.                                                     MULTIMIDIADVITEM_NONE =0,
  315.                                                     MULTIMIDIADVITEM_ADVSEARCH,
  316. #ifdef SUPPORT_SANJING_SCORE
  317.                                                     MULTIMIDIADVITEM_SCOREMENU,
  318. #endif                           
  319. #ifdef SUPPORT_CARDREADER_TEST
  320.                                                     MULTIMIDIADVITEM_CARDFILEMENU,
  321. #endif
  322.                                                 };
  323. EXTERN_FSMIDI_UI MidiIndexTable_S stMidiIndexTable; 
  324. EXTERN_FSMIDI_UI SongInfo_S stSongInfo;
  325. //end MULTI_SEL_STRUCT
  326. //OSD the song code in region 0
  327. //important note : don't exceed 10
  328. #if  (defined(MIDI_MENU_FONT))&(!defined(JIEKE_LINEFLAG))
  329. #define DISP_PROG_MAX (MAX_SEL_LIST) //(6)
  330. #else
  331. #define DISP_PROG_MAX (5)
  332. #endif
  333. //the max number of the ring queue ; 
  334. //important note : don't exceed 0xff ; or else moidify the element uInput and so on to UIN16
  335.  //100 ---> hold the max song code IDs == 99
  336.  #define PROG_MAX (100)   
  337. typedef struct
  338. {
  339.     UINT8 uInput; // =0;                  //queue head
  340.     UINT8 uOutput ; //=0;                //queue tail
  341.     UINT8 uNextPlay;// =0;             //the next song that paly 
  342. //    UINT8 uCurPlay;
  343.     UINT8 uCurPos; //=0;                //the location of the cursor
  344.     UINT16 uDispWindowPos;
  345.     
  346. #ifdef MIDI_SONGCODE_DISCON_NO
  347.     UINT32 buf[PROG_MAX];
  348. #else 
  349.     UINT16 buf[PROG_MAX];
  350. #endif
  351.     UINT8 uLastDispStaus;//[DISP_PROG_MAX]; uDispRecord
  352.     UINT8 uLastDispPos;
  353. }RingBuffer_S;
  354. #ifdef SUPPORT_MIDIDISK_TITLE      //xlluo 09/17 add for the start of movie
  355. EXTERN_FSMIDI_UI PLF_REC MidiTitle;      
  356. #endif
  357. #ifdef SUPPORT_MIDI_VOCAL
  358. EXTERN_FSMIDI_UI PLF_REC MidiIndex[3];//[0]:MEGIDX [1]:MEGMID [2]:MEGVOL 
  359. #else
  360. EXTERN_FSMIDI_UI PLF_REC MidiIndex[2];
  361. #endif
  362. enum{//bIsShowInvalid used
  363.           NOTSHOWINVALID =0,
  364.           SHOWINVALID,
  365.           SHOWNOTHING,
  366. };
  367. EXTERN_FSMIDI_UI BYTE bIsShowInvalid;
  368. EXTERN_FSMIDI_UI RingBuffer_S stRingBuffer;
  369. EXTERN_FSMIDI_UI UINT8 gIsMidiSelMenu;
  370. EXTERN_FSMIDI_UI UINT16 uDelayClearTips;
  371. extern UINT32 ugMidiSelNo;
  372. extern UINT8 ugMidiSelDegree;
  373. extern UINT8 bIsShowProgList;
  374. extern void MidiUI_Draw_NUM_Sel(UINT8 num);
  375. extern void MidiUI_Draw_Prog_Sel(UINT8 num);
  376. extern void MidiUI_Init(void);
  377. extern UINT8 MidiUI_Play_Cmd(UINT32 msf, UINT32 len, BYTE bIsMidiFile);
  378. extern void MidiUI_Nav_MainLoop();
  379. extern UINT32 fsMidi_UI_callback_check(UINT32 func);
  380. extern void InputQueueSongCode(UINT32 q);
  381. extern void DispLine(BYTE bMove,UINT16 uDispStartPos,BYTE bDirection);
  382. extern void MidiUI_Sel_Right(void);
  383. extern void MidiUI_Sel_Left(void);
  384. extern void Midi_FS_Init(void); //axelchen for check szMidiLable and iMidiKey 05-01-26
  385. extern void SetMp3FileMsf(void);
  386. extern void Disp_TopTip(UINT16 uTimeOut);
  387. extern void Clear_TopTip(void);
  388. #ifdef MIDI_SCORE_TEST
  389. #define MAX_SCORE_NUM 100
  390. enum{
  391.         SCORE_PF =0,//s;评分    t:蝶だ
  392.         SCORE_LTS,//s:擂台赛    t::据籓辽
  393.         SCORE_DKS,//s:对抗赛    t::癸к辽
  394. };
  395. EXTERN_FSMIDI_UI BYTE gb_showScore;        //0:not disp score ui
  396. EXTERN_FSMIDI_UI BYTE guc_scoreType;
  397. EXTERN_FSMIDI_UI UINT32 gul_curScore;
  398. EXTERN_FSMIDI_UI BYTE gcScoreRecord[10];//adv
  399. EXTERN_FSMIDI_UI BYTE gcCurRecord;
  400. EXTERN_FSMIDI_UI void DrawScoreUI(BYTE );
  401. EXTERN_FSMIDI_UI inline void getNewScore(UINT32 );
  402. EXTERN_FSMIDI_UI void setScoreStatus();
  403. EXTERN_FSMIDI_UI void drawEndEffect(BYTE );
  404. EXTERN_FSMIDI_UI void drawPfScore( );
  405. EXTERN_FSMIDI_UI void drawDksScore(BYTE);
  406. EXTERN_FSMIDI_UI void DrawLtsSpical(int );
  407. #define INSERT_SECORERECORD(x)              do {       
  408.                                                                                 if (x)  
  409.                                                                                 {   
  410.                                                                                     gcScoreRecord[gcCurRecord++] =x;    
  411.                                                                                     if (gcCurRecord>sizeof(gcScoreRecord))  
  412.                                                                                         gcCurRecord =0; 
  413.                                                                                 }   
  414.                                                                             }while(0);  
  415. #define ADVNUM_SECORERECORD(x)        do {  
  416.                                                                             int i_cntadvnum;    
  417.                                                                             int cntadvnum_deno =0;  
  418.                                                                             int cntadvnum_nume =0;  
  419.                                                                             for (i_cntadvnum =0;i_cntadvnum<sizeof(gcScoreRecord);i_cntadvnum++)    
  420.                                                                             {   
  421.                                                                                 if (gcScoreRecord[i_cntadvnum]) 
  422.                                                                                 {   
  423.                                                                                     cntadvnum_deno++;   
  424.                                                                                     cntadvnum_nume +=gcScoreRecord[i_cntadvnum];    
  425.                                                                                 }   
  426.                                                                             }   
  427.                                                                             if (cntadvnum_deno) 
  428.                                                                                  x =cntadvnum_nume/cntadvnum_deno;  
  429.                                                                             else    
  430.                                                                                  x =0;  
  431.                                                                         }while(0);  
  432. #define SETINIT_SECORERECORD(x)          do{                   
  433.                                                                             int i_setsoreinit;      
  434.                                                                             for (i_setsoreinit=0;i_setsoreinit<x;i_setsoreinit++)       
  435.                                                                             {                       
  436.                                                                                 gcScoreRecord[i_setsoreinit] =0;   
  437.                                                                             }   
  438.                                                                             gcCurRecord =0;
  439.                                                                         }while(0);
  440. #endif
  441. #endif//end #ifdef SUPPORT_MIDI_MENU_SEL
  442. #define D printf("INFO: __%d__(%s:%s)n",__LINE__,__FILE__,__FUNCTION__);
  443. #if ((defined(MIDI_SONGCODE_DISCON_NO))&(defined(HDD_MODIFY_INDEX_TEST)))
  444. #define SUPPORT_HDD_DELETEFILE
  445. #define USER_SONGCODE_LOWERLIMIT            50000
  446. #define USER_SONGCODE_UPPERLIMIT             60000  
  447. #define DISCONSTFLAG                                       0x09
  448. #define FILEMANAGEUI_PAGEMAXITEM    5
  449. enum{//MIDI_SONGCODE_DISCON_NO error list 
  450.             ERROR_ERRORFLAG_DISCON =1,
  451.             ERROR_REPEAT_CODE,
  452.             ERROR_OVERUPPER_LIMIT,
  453.             ERROR_OVERLOWER_LIMIT,
  454.         };
  455. //#define DEBUG_MIDI_SONGCODE_DISCON_NO
  456. BYTE IsfailCode(int );
  457. void SetDefaultFileInfo(int );
  458. #endif
  459. #ifdef  SUPPORT_HDD_DELETEFILE
  460. #define ADD_NEWFILE_SEQUENCE
  461. int GetNextNullCell(void);
  462. #define HDD_FILE_MANAGEERUI
  463. void DeleteUserFile(int);
  464. #ifdef  HDD_FILE_MANAGEERUI
  465. #define HDD_RECLAIM_CODECELL                        //xlluo 04-05-14
  466. int fileManageui_IrSelect(void);
  467. int fileManageui_IrReturn(void);
  468. void fileManageui_close(void);
  469. void fileManagerui_IrLeft(void);
  470. void fileManagerui_IrRight(void);
  471. void fileManageui_IrUp(void);
  472. void fileManageui_IrDown(void);
  473. void fileManageui_Init(void);
  474. void Mageui_SetNewFile(BYTE *,int);
  475. int fileManageui_GetSongCode(void);
  476. void Manageui_SetNewFile(BYTE * , int );
  477. void fileManageui_DrawProcessBar(int );
  478. #endif
  479. #endif
  480. #ifdef HDD_MODIFY_INDEX_TEST
  481. #include "HDD_info.h"
  482. #define D printf("INFO: __%d__(%s:%s)n",__LINE__,__FILE__,__FUNCTION__);
  483. #define INDEXFILEPATH ("/")
  484. #define INDEXTITLE  ("MEGIDX     ")
  485. #define INDEXFILE ("/MEGIDX")
  486. #define FONTFILE ("/FONT.FNT")
  487. enum
  488. {
  489.             INPUT_MENU_CLOSE =0,
  490.             INPUT_PART1,
  491.             INPUT_PART2,
  492.             INPUT_PART3,
  493.             INPUT_PART4,
  494.             INPUT_OK,
  495.             INPUT_CANCEL,
  496.             INPUT_COPYING,
  497.         };
  498. typedef struct _stNewFileInfo
  499. {
  500.                                             BYTE SongName[64+1];  //song name maxlen 64 char or 32 hz
  501.                                             BYTE SingerName[24+1];//init to 24 characters/12 hzs
  502.                                             BYTE SongLang[18+1];   //9 hz or 18 char
  503.                                             BYTE SongType[24+1];   //songtype name 
  504.                                             BYTE filename[8+1];       //max is 8 character auto evaluate by program
  505. #ifdef MIDI_SONGCODE_DISCON_NO
  506.         int     songcode;
  507. #endif
  508.                                         }stNewFileInfo; 
  509. EXTERN_FSMIDI_UI stNewFileInfo stFileInfo; 
  510. EXTERN_FSMIDI_UI BYTE cInputStatus;
  511. EXTERN_FSMIDI_UI BYTE cCurSelItem;
  512. EXTERN_FSMIDI_UI int nSingerwrd;
  513. EXTERN_FSMIDI_UI int nSongwrd;
  514. #ifdef MIDI_SONGCODE_DISCON_NO    //wsf  20040603
  515. #define SUPPORT_HDD_DELETEFILE
  516. #define USER_SONGCODE_LOWERLIMIT            50000
  517. #define USER_SONGCODE_UPPERLIMIT             55000  
  518. #define DISCONSTFLAG                                       0x09
  519.         
  520. enum{//MIDI_SONGCODE_DISCON_NO error list 
  521.             ERROR_ERRORFLAG_DISCON =1,
  522.             ERROR_REPEAT_CODE,
  523.             ERROR_OVERUPPER_LIMIT,
  524.             ERROR_OVERLOWER_LIMIT,
  525.         };
  526. #define DEBUG_MIDI_SONGCODE_DISCON_NO
  527. BYTE IsfailCode(int );
  528. void SetDefaultFileInfo(int );
  529. #endif
  530. extern UINT8 bMouseDown;
  531. extern void Osd_Clear_Rect(int xx, int yy, int xlen, int ylen, BYTE colour, BYTE regNum);
  532. extern void osd_midi_DrawHZ_Mem(int xStart, int yStart, UINT16 c, BYTE fontcolor, BYTE bgcolor, BYTE FigureColor, BYTE FontType, BYTE number, BYTE 
  533. FontBaseNo);
  534. extern UINT8 HDD_Mount();
  535. extern FILE_INFO *HDD_SearchFile(UINT8 * );
  536. extern void HDD_WriteSec(UINT8 * , UINT32 , int );
  537. void MidiUI_Sel_Prog(void);
  538. BYTE *get_index_pos();
  539. int SetSingerDefType(BYTE *,int *,int *);
  540. int CountCHSWords(BYTE* );
  541. int UpdataUIindex(void);
  542. BYTE *GetCurStatusStrPtr(BYTE );
  543. void ClearFineInfoMem(BYTE );
  544. int InputChar2NewFileInfo(char *,BYTE );
  545. void SeIdxTypeToFileInfo(BYTE );
  546. int GetIndexStr(BYTE *,BYTE );
  547. UINT8 HasNextItem(BYTE );
  548. void DispName(BYTE );
  549. void DispInputDlg(BYTE ,stNewFileInfo );
  550. void InitInputDlg();
  551. void ReadFontFile();
  552. void PYIME_Disp(BYTE );
  553. int DelOneChFromFileInfo(BYTE );
  554. int SaveIndexFile(int );
  555. void DeleteUserFile(int code);
  556. //for ime
  557. #endif //#ifdef HDD_MODIFY_INDEX_TEST
  558. #ifdef SUPPORT_CARDREADER_TEST
  559. extern UINT8               ReadFile(int *Res);
  560. extern int                    read_card_dir();
  561. extern int                     iMidiEnFLNum;
  562. extern PLF_REC            stMidiEncFile;
  563. typedef struct{
  564. BYTE songNum;
  565. BYTE * fileList;
  566. }fldecode;
  567. typedef struct  {
  568. UINT32  songPos;
  569. UINT32     songLen;
  570. // BYTE  songNameCnt;
  571. // BYTE  songnamelen;
  572. BYTE  songName[32];
  573. }encSongInfo;
  574. extern BYTE MidiCardIcon[];
  575. EXTERN_FSMIDI_UI fldecode        stMidiCardIndex;
  576. EXTERN_FSMIDI_UI   int MidiCard_FileRead(int flidx,BYTE * pbuf);
  577. EXTERN_FSMIDI_UI void MidiCardReadInit(void);
  578. EXTERN_FSMIDI_UI int    MidiCard_GetCardFile(void);
  579. EXTERN_FSMIDI_UI BYTE IsCardFiles(int SongNum);
  580. #endif//SUPPORT_CARDREADER_TEST
  581. //EXTERN_FSMIDI_UI int GetCurplaySongCode(void);   //wsf 20040603
  582. #endif  //#ifndef __FS_MIDI_UI__