#ifndef __UI_GLOBAL_H__ #define __UI_GLOBAL_H__ extern void (*MenuPage_Idle_Proc)(void); extern void (*MenuPage_SongMode_Proc)(void); extern void (*MenuPage_ExpertMode_Proc)(void); extern void (*MenuPage_FreeMode_Proc)(void); extern void (*MenuPage_Setting_Proc)(void); extern void (*MenuPage_SystemSetting_Proc)(void); extern void (*MenuPage_Mixer_Proc)(void); extern void (*MenuPage_Restore_Proc)(void);; // ============================================== // ���� UI ���ú��� // ============================================== extern void InitMenuUI(void); void CallUI_Idle(void); void CallUI_SongMode(void); void CallUI_ExpertMode(void); void CallUI_FreeMode(void); void CallUI_Setting(void); void CallUI_Mixer(void); void CallUI_SystemSetting(void); void CallUI_RestoreSelect(void); #define UI_STATUS_BAR_H 26 /* 0902 设计稿配色与底栏导航 */ #define UI0902_BG_COLOR 0x0042 /* #000813 页面背景 */ #define UI0902_ROW_BG 0x2147 /* #242B3A 列表行背景 */ /* 0902 / 0819:240×320 模式页网格 * 顶:状态栏下 6px 接双卡;底:拉高控件吃掉底栏上方留白,字体更饱满 */ #define UI0902_MARGIN_X 12 #define UI0902_CONTENT_W 216 #define UI0902_CARD_GAP_TOP 6 #define UI0902_CARD_Y (UI_STATUS_BAR_H + UI0902_CARD_GAP_TOP) /* 32 */ #define UI0902_CARD_H 60 #define UI0902_CARD_W 102 #define UI0902_CARD_GAP 12 #define UI0902_MODE_Y (UI0902_CARD_Y + UI0902_CARD_H + 3) /* 95 */ #define UI0902_MODE_H 64 #define UI0902_TIMBRE_Y (UI0902_MODE_Y + UI0902_MODE_H + 4) /* 163 */ #define UI0902_TIMBRE_H 52 #define UI0902_SECTION_Y (UI0902_TIMBRE_Y + UI0902_TIMBRE_H + 4) /* 219 */ #define UI0902_SECTION_H 52 #define UI0902_FONT_LABEL 11 /* 0819:移调/速度/弦音色选择/TAB 等标题 */ #define UI0902_FONT_BODY 13 /* 0819:曲目/音色正文、演奏段落 */ #define UI0902_FONT_HERO 16 /* 0819:移调/速度主数值 */ #define UI0902_FONT_SUB 11 /* KEY / BPM 副标 */ #define UI0902_FONT_NAV 9 /* 0819:底栏文案(位图内已含) */ #define UI0902_TAB_H 20 #define UI0902_TAB_W 58 #define UI0902_ROW_H 36 #define UI0902_SECTION_BTN_H 36 #define UI0902_SECTION_BTN_W 48 #define UI0902_SECTION_PITCH 54 #define UI0902_RADIUS_CARD 10 #define UI0902_RADIUS_TAB 6 #define UI0902_RADIUS_BTN 6 #define UI0902_BTN_MINUS_W 23 #define UI0902_BTN_MINUS_H 22 #define UI0902_BTN_PLUS_W 23 #define UI0902_BTN_PLUS_H 22 #define UI0902_TAB_BACK_W 30 #define UI0902_TAB_BACK_H 24 /* 0902 状态栏:左音量条 / 中蓝牙 / 右电池+百分比(对齐屏幕参考 0902-01) */ #define UI0902_VOL_X 8 #define UI0902_VOL_Y 3 #define UI0902_BT_W 11 #define UI0902_BT_H 17 #define UI0902_BT_X ((240 - UI0902_BT_W) / 2) /* 居中 */ #define UI0902_BT_Y 5 #define UI0902_BATTERY_W 29 #define UI0902_BATTERY_H 12 #define UI0902_BATTERY_Y 7 #define UI0902_BATTERY_RIGHT_MARGIN 8 #define UI0902_BATTERY_TEXT_GAP 4 #define UI0902_BATTERY_TEXT_SIZE 16 #define UI0902_NAV_UNIVERSAL 0 /* 底栏:万能模式 */ #define UI0902_NAV_NORMAL 1 /* 底栏:普通模式 */ #define UI0902_NAV_EXPERT 2 /* 底栏:专业模式 */ #define UI0902_NAV_SETTING 3 /* 底栏:设置 */ #define UI0902_NAV_NONE 0xFF /* 兼容旧名(已废弃三键:设置|调音台|模式) */ #define UI0902_NAV_MIXER UI0902_NAV_NORMAL #define UI0902_NAV_MODE UI0902_NAV_EXPERT /* 底部图标实际内容(生成脚本曾把 万能/普通/专业/设置 误命名为 Setting/Mixer/Mode) */ #define gImage_Nav_Universal_Not gImage_UI0902_TabSetting_Sel_36x28 /* 底部-10 白 */ #define gImage_Nav_Universal_Sel gImage_UI0902_TabMode_Sel_36x28 /* 底部-14 蓝 */ #define gImage_Nav_Normal_Not gImage_UI0902_TabSetting_Not_35x28 /* 底部-11 白 */ #define gImage_Nav_Normal_Sel gImage_UI0902_TabMode_Not_35x29 /* 底部-15 蓝 */ #define gImage_Nav_Expert_Not gImage_UI0902_TabMixer_Sel_35x27 /* 底部-12 白 */ #define gImage_Nav_Expert_Sel gImage_UI0902_TabBack_Sel_35x27 /* 底部-16 蓝 */ #define gImage_Nav_Setting_Not gImage_UI0902_TabMixer_Not_18x28 /* 底部-13 白 */ #define gImage_Nav_Setting_Sel gImage_UI0902_TabBack_Not_18x28 /* 底部-17 蓝 */ /* 旧几何电池(Draw_Battery_Icon)最左起点;0902 图电池用 Draw_Status_Battery_Icon */ #define UI_STATUS_BATTERY_X 150 #define UI_STATUS_BATTERY_H 11 #define UI_STATUS_BATTERY_Y ((UI_STATUS_BAR_H - UI_STATUS_BATTERY_H) / 2) #define UI_STATUS_BATTERY_RIGHT_MARGIN 8 #define UI_FOCUS_NONE 0xFF void UI_ClearFocus(void); uint8_t UI_IsFocused(uint8_t widget_id); uint8_t UI_SetFocus(uint8_t widget_id); void UI_GetFocusGrad(uint8_t widget_id, uint16_t *c_top, uint16_t *c_bot); void Draw_Status_Battery_Icon(uint8_t battery_percent); void Show_Battery_Icon(uint8_t flag); void Show_BL_Icon(uint8_t value); void Draw_Tab_Section_Menu(const LEBEL_UI *UI, TAB_SECTION_INDEX select_tab); void UI_NavBar_Action(uint8_t value); void Draw_Bottom_Bar(uint8_t sel, uint8_t first_back); void UI_GotoCurrentModePage(void); void GET_Num_Str(int16_t NUM, uint8_t ValidLen, char* Str, uint8_t hasSign); void show_Param(const LEBEL_UI *UI, GUI_SWITCH *Group); extern void Show_home_UI(void); extern void Touch_Action(int8_t FLAG, uint8_t ID, uint8_t areaIndex, uint8_t value); //extern void Refresh_Transpose(uint8_t last_data, const LEBEL_UI *UI, GUI_SWITCH *Group); extern void Refresh_Transpose(const LEBEL_UI *UI, GUI_SWITCH * Group); extern void Refresh_StringTimbre(uint8_t last_data, const LEBEL_UI *UI, GUI_SWITCH *Group); extern void label_top(void); extern void label_Tranzpose_ui(const LEBEL_UI *UI, GUI_SWITCH *Group); extern void label_Speed_ui(const LEBEL_UI *UI, GUI_SWITCH *Group); extern void label_ModeSelece_ui(const LEBEL_UI *UI, GUI_SWITCH *Group); extern void label_TimbreSelece_ui(const LEBEL_UI *UI, GUI_SWITCH *Group); extern void label_PlaySection_ui(const LEBEL_UI *UI, GUI_SWITCH *Group); extern void label_Tab_Select_ui(const LEBEL_UI *UI, GUI_SWITCH *Group); extern void Refresh_SectionSelect(uint16_t last_value, const LEBEL_UI *UI, GUI_SWITCH *Group); extern void Refresh_TabSelect_ui(const LEBEL_UI *UI, GUI_SWITCH *Group); extern void RefreshSystemSetting(uint8_t last_data,const LEBEL_UI *UI,GUI_SWITCH * Group); extern void RestoreSetting(); extern void Draw_System_Item_List(const LEBEL_UI *UI, GUI_SWITCH *Group); #endif