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

📄 fsmidiui.h

📁 Sunplus 8202S source code.
💻 H
📖 第 1 页 / 共 2 页
字号:
#ifndef __FS_MIDI_UI__
#define __FS_MIDI_UI__

#include "memmap.h"
#include "memmap0.h"
#include "user_init.h"
#include "fsmidi.h"

#ifdef SUPPORT_MIDI_MENU_SEL

#ifdef EXTERN_MIDIUI_HERE
#define EXTERN_FSMIDI_UI
#else
#define EXTERN_FSMIDI_UI extern 
#endif //end #ifdef EXTERN_MIDIUI_HERE
#define SUPPORT_DISPQXQ_STOP
#define SUPPORT_SCANMODE_SWITCH         //xlluo add 04-6-14 
#ifdef SUPPORT_SCANMODE_SWITCH
#define MENU_REGION_PAL_X       (20)
#define MENU_REGION_PAL_Y       (36)
#define LYRIC_REGION_PAL_X      (20)
#define LYRIC_REGION_PAL_Y      (280)
#define MENU_REGION_PAL_W       (MIDI_MENU_REGION)
#define MENU_REGION_PAL_H       (MIDI_MENU_HEIGHT)
#define LYRIC_REGION_PAL_W      (MIDI_LYRIC_REGION)
#define LYRIC_REGION_PAL_H      (MIDI_LYRIC_HEIGHT)
EXTERN_FSMIDI_UI void SwitchRegionTVformat();
#endif//SUPPORT_SCANMODE_SWITCH

#define SUPPORT_VFD_SONGCODE
#ifdef SUPPORT_VFD_SONGCODE
typedef struct _stCurPlaySong{
                    BYTE bIsNeedRefresh;//1//1: need reflesh 0:no need
                    BYTE songCode[6];
                 }stCurPlaySong;
EXTERN_FSMIDI_UI void CleanCurplaySongCode(void);
EXTERN_FSMIDI_UI stCurPlaySong curPlayingSong;
EXTERN_FSMIDI_UI void GetCurplaySongCode(void);   //wsf 20040603
#endif
// *****************************************************************
// *** Define the discontiguous serial number FUNCTION for the midi songcode
// *****************************************************************
#define MIDI_SONGCODE_DISCON_NO
// *****************************************************************
// ***user for play sequence songs for none discontiguous serial number
// *****************************************************************
#ifdef MIDI_SONGCODE_DISCON_NO
#define MIDI_SEQUENCE_SEARCHLIST
UINT32 filecode2int(BYTE * );
#endif

#ifdef MIDI_MENU_FONT
// *************************************************************
// *** if dont support the Menu Font , mark the Multi Menu Code
// *** if dont need the Multi Index to search the song, mark it
// *************************************************************
#define MIDI_MULTI_MENU
#endif  //#ifdef MIDI_MENU_FONT


//as parament of Menu_Draw_Attentiontip(BYTE AttentionType)
enum
{
    MENU_TOPTIP_TYPE_SONGNAME =0,
    MENU_TOPTIP_TYPE_SELECTSONG,
    MENU_TOPTIP_TYPE_NOMENUINFO,
    MENU_TOPTIP_TYPE_NOPREVPAGE,
    MENU_TOPTIP_TYPE_NONEXTPAGE,
    MENU_TOPTIP_TYPE_SELECTPLAY,
    MENU_TOPTIP_TYPE_SONGLISTFULL,
    MENU_TOPTIP_TYPE_DELITEM,
    MENU_TOPTIP_TYPE_MOVEITEM,
    MENU_TOPTIP_TYPE_DONTDEL,
    MENU_TOPTIP_TYPE_PROGRAM,
};


// define Menu state 
enum
{
    MENU_INIT                           = 0,
    MENU_SEL,
    MENU_SEL_QXQ,
    MENU_SEL_PROG,
    MENU_SEL_PROGLIST,
    MENU_MULTI_INDEX_SEL,
    MENU_MULTI_INDEX_SEL_PLAYLIST,
    #ifdef SUPPORT_MIDIUI_IME
    MENU_MULTI_INDEX_SEL_IME_SEARCH,
    #endif
    MENU_OTHER,
};

#ifdef SUPPORT_MIDIUI_IME
enum
{
    IME_SEL_INIT   = 0,
    IME_SEL_INPUT ,
    IME_SEL_ENTER,
};
#endif

// define the special play state
enum 
{
    MIDI_NOMAL_PLAY = 0,
    MIDI_RANDOM_PLAY = 9, //set up the value acording to the variable MainMenuTitle
    MIDI_SEQUENCE_PLAY = 10, //set up the value acording to the variable MainMenuTitle
};

EXTERN_FSMIDI_UI BYTE MenuState;  // menu state
EXTERN_FSMIDI_UI BYTE SpecialPlayState; // special play state

//fsmidi UI osd Color
EXTERN_FSMIDI_UI BYTE LyricFontcolor, LyricBgcolor;
EXTERN_FSMIDI_UI BYTE LyricRevcolour, LyricFigureColor;//osd disp color
EXTERN_FSMIDI_UI BYTE MenuFontcolor, MenuBgcolor, MenuFigureColor;

#define MIDIUI_SEL_QXQ_COLOR                6
#define MIDIUI_SEL_QXQNUM_COLOR             6
#define MIDIUI_SEL_QXQCUE_COLOR             6
#define MIDIUI_SEL_PROGRAM_COLOR            5
#ifdef SANJING_MIDI_DVD  //ouyang 2004-12-8 14:44
#define MIDIUI_SEL_PRGNUM_NEXTPLAY_COLOR    4//2
#define MIDIUI_SEL_PRGNUM_WILLING_COLOR     12//7
#define MIDIUI_SEL_PY_BOTTOMTIP_COLOR        7
#define MIDIUI_SEL_PRGNUM_PERV_COLOR        2//6
#else
#define MIDIUI_SEL_PRGNUM_NEXTPLAY_COLOR    2
#define MIDIUI_SEL_PRGNUM_WILLING_COLOR     7
#define MIDIUI_SEL_PRGNUM_PERV_COLOR        6
#endif
#define MIDIUI_SEL_MOVE_BGCOLOR             4
#define MIDIUI_SEL_MOVE_FONTCOLOR           2
#define MIDIUI_SEL_BGCOLOR                  0
#ifdef SANJING_MIDI_DVD  //ouyang 2004-12-8 14:44
#define MIDIUI_SEL_TOPTIPCOLOUR              6// 7
#define MIDIUI_SEL_PROGRAMNUM                6//7
#else
#define MIDIUI_SEL_TOPTIPCOLOUR                  7
#define MIDIUI_SEL_PROGRAMNUM                  7
#endif

#define MIDIMULTIUI_SEL_PALYEDFILE          3

//for menu color 
#define MENU_BACKGROUND_COLOR  (13)
#define MENU_LINE_COLOR             (1)


#define MAX_SEL_LIST (6)
#define MAX_SEARCH_PAGE (50)  //equal to the total num of SongInfo record

/*#ifdef SUPPORT_MIDIUI_IME
#define MENU_ITEM_NUM  (13-1)
#else
#define MENU_ITEM_NUM  (12)
#endif
*/
/*
#ifdef SANJING_MIDI_DVD
//#undef MENU_ITEM_NUM 
//#ifdef SUPPORT_MIDIUI_IME
#define MENU_ITEM_NUM (14)
#else
#define MENU_ITEM_NUM (12)
#endif 
//#endif
*/
#define MIDINDEX_SONGINFO_FLAG      (0x01)
#define MIDINDEX_SONGNAMEWORDSUM_FLAG     (0x02)
#define MIDINDEX_SINGERNAMEWORDSUM_FLAG     (0x03)
#define MIDINDEX_SONGTYPE_FLAG      (0x04)
#define MIDINDEX_SINGERCODE_FLAG   (0x05)
#define MIDINDEX_SINGERTYPE_FLAG   (0x06)
#define MIDINDEX_LANGUAGE_FLAG      (0x07)


//for disp menu

//This is the header of the midi index file
typedef struct
{
    BYTE* pSingerType;
    BYTE* pLonguageType;
    BYTE* pSongType;
    BYTE* pSingerCode;
    BYTE* pSongInfo;
    BYTE* pSongWord;     //new
    BYTE* pSingerWord;  //new
    UINT16 SingerNum;   
    UINT16 SongNum;
    UINT16 SongWordNum;    //new
    UINT16 SingerWordNum;    //new
    UINT16 SongNameNumFlag;
    UINT16 SingerNameNumFlag;

    BYTE* pSingerPos;
    BYTE* pSongPos;
    #ifdef MIDI_SONGCODE_DISCON_NO
    BYTE *pNumIndexPos ; 
    #endif
    BYTE* pIndexStart;                 //index start
}MidiIndexTable_S;


//Midi index song info record
typedef struct
{
    BYTE recordFlag;
    BYTE recordLen;
    unsigned songType : 8;
    unsigned languageType : 7;
    unsigned bIsMP3 : 1;
    unsigned songerNo : 12;
    unsigned wordNum : 4;
    UINT16 MidiFileSize;
    UINT32 MidiMsfPos;
    union
    {
        struct
        {
            UINT32 Mp3MsfPos;
            UINT16 Mp3FileSize;
            char Mp3SongName[58];
        }Mp3Info;
        char MidiSongName[64];
    }SongName;
}SongInfo_S;

typedef struct
{
	BYTE sign;
	BYTE recordlen;
	BYTE wordNum;//
	BYTE c;//
	UINT16 TheSongNum;
	char TypeName[8]; //"(x字歌曲)"(8BYTE)
}WordSel_A;

//singer code record
typedef struct
{
    BYTE recordFlag;
    BYTE recordLen;  
    UINT16 SingerSum:12;
    UINT16 wordNum:4;
    BYTE singerType;
    char singerName[1];
}SingerCode_S;

//singer type record
typedef struct
{
    BYTE recordFlag;
    BYTE recordLen;
    UINT16 TypeSum;
    char singerType[1];
}SingerType_S;

//language type record 
typedef struct
{
    BYTE recordFlag;
    BYTE recordLen;
    UINT16 TypeSum;
    char languageType[1];
}LanguageType_S;

//song type record 
typedef struct
{
    BYTE recordFlag;
    BYTE recordLen;
    BYTE songTypeCode;
    UINT16 TypeSum;
    char songTypeName[1];
}SongType_S;

//The following is data struct for search 
//************************************************
//***The following struct must keep data structure size = 4N 
//************************************************
typedef struct
{
    BYTE *pStackBottom ;  //align at the edge of memory addr == 4n
    BYTE *pStackTop ;
    BYTE *pStackEnd ;
}SearchStack_S;


typedef struct 
{
    UINT16 cPageSum;  
    UINT16 cPageNum;
    // the current term for search list
    unsigned TermSongType   : 8;
    unsigned TermLanguageType : 7;
    unsigned TermbIsMP3 : 1;
    unsigned TermSongerNo : 12;
    unsigned TermWordNum  : 4;
    BYTE TermSingerType;
    BYTE TermSingerWordNum;
    BYTE TermValidate; // d0:TermSongType  d1:TermLanguageType d2: TermbIsMP3 d3: TermSongerNo
                                    // d4: TermWordNum d5:TermSingerType d6: TermSingerWordNum
    BYTE bAdvanceItem; //dummy element
}SearchTerm_S;

typedef struct
{
    UINT32 *pPageStart;    //the bottom stack of the current menu,and is the first pos of menu state ;
    BYTE uMaxPage;//*pPageEnd;
    BYTE uOutputQueue;
    BYTE uInputQueue;
    BYTE uRecordType;  //d0: SongInfo d1:songWord d2:singerWord d3:SongType d4: SingerCode d5:SingerType d6:LanguageType  d7:Menu
    BYTE uMenuDegree; //when uRecordType->d5==1 : validate-->d0~d7:the degree of the current menu state
    BYTE uCurPage;        //the current page 
    BYTE uCurPos;          //the current pos in the current list
    BYTE uCurPageItemNum;

    UINT16 cPageSum;  
    UINT16 cPageNum;

    // the current term for search list
    unsigned TermSongType   : 8;
    unsigned TermLanguageType : 7;
    unsigned TermbIsMP3 : 1;
    unsigned TermSongerNo : 12;
    unsigned TermWordNum  : 4;
    BYTE TermSingerType;
    BYTE TermSingerWordNum;
    BYTE TermValidate; // d0:TermSongType  d1:TermLanguageType d2: TermbIsMP3 d3: TermSongerNo
                                    // d4: TermWordNum d5:TermSingerType d6: TermSingerWordNum
                                    
    BYTE bAdvanceItem;     //see enum emMidiMULTIMenuADVItem        //xlluo 04-1-21

⌨️ 快捷键说明

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