K1Guitar/UI/UI_global.h

182 lines
8.5 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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);;
// ==============================================
// <20><><EFBFBD><EFBFBD> UI <20><><EFBFBD>ú<EFBFBD><C3BA><EFBFBD>
// ==============================================
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 / 0819240×320 模式页网格(按 0902 参考图 03/04/05 实测比例换算)
* 状态栏 26双卡 y48 h55TAB y108 h18曲目行 y130 h31音色行 y180 h30段落钮 y229 h34 */
#define UI0902_MARGIN_X 12
#define UI0902_CONTENT_W 216
#define UI0902_CARD_GAP_TOP 22
#define UI0902_CARD_Y (UI_STATUS_BAR_H + UI0902_CARD_GAP_TOP) /* 48 */
#define UI0902_CARD_H 60 /* 原55加高给 KEY/BPM 独立行,避免与主值叠在一起 */
#define UI0902_CARD_W 103
#define UI0902_CARD_GAP 10
#define UI0902_MODE_Y (UI0902_CARD_Y + UI0902_CARD_H + 5) /* 113 */
#define UI0902_MODE_H 53
#define UI0902_TIMBRE_Y (UI0902_MODE_Y + UI0902_MODE_H + 19) /* 180 */
#define UI0902_TIMBRE_H 30
#define UI0902_SECTION_Y (UI0902_TIMBRE_Y + UI0902_TIMBRE_H + 19) /* 229 */
#define UI0902_SECTION_H 34
#define UI0902_FONT_LABEL 11 /* 标注:移调/速度 Medium 11 */
#define UI0902_FONT_BODY 13 /* 曲目/音色正文、演奏段落 */
#define UI0902_FONT_HERO 13 /* 标注:主值 Medium 13 */
#define UI0902_FONT_SUB 9 /* 稿面 KEY/BPM≈7.5;点阵用 9 */
#define UI0902_FONT_NAV 9
/* ASCII 字宽(须与 Drv LCD_GetAsciiMetrics 一致) */
#define UI0902_ASCII_W(sz) \
((sz) == 8 ? 5 : \
(sz) == 9 ? 7 : \
(sz) == 11 ? 6 : \
(sz) == 12 ? 7 : \
(sz) == 13 || (sz) == 15 || (sz) == 16 ? 8 : ((sz) / 2))
/* 移调卡文字标注(稿面):字号/行高/文本框/坐标;速度卡镜像同一套 */
#define UI0902_CARD_TEXT_CX_L 64 /* 稿面 X按水平中心理解三行同 X */
#define UI0902_CARD_TEXT_CX_R (UI0902_MARGIN_X + UI0902_CARD_W + UI0902_CARD_GAP + UI0902_CARD_W / 2) /* 176 */
#define UI0902_CARD_LABEL_SIZE UI0902_FONT_LABEL /* 11 */
#define UI0902_CARD_LABEL_LH 13
#define UI0902_CARD_LABEL_W 22
#define UI0902_CARD_LABEL_H 11
#define UI0902_CARD_LABEL_Y 60
#define UI0902_CARD_VALUE_SIZE UI0902_FONT_HERO /* 13 */
#define UI0902_CARD_VALUE_LH 9
#define UI0902_CARD_VALUE_W 24 /* 3×8容纳 101 / Db */
#define UI0902_CARD_VALUE_H 13
#define UI0902_CARD_VALUE_Y 74 /* 主值顶;底约 86 */
#define UI0902_CARD_SUB_SIZE UI0902_FONT_SUB /* 9 */
#define UI0902_CARD_SUB_LH 9
#define UI0902_CARD_SUB_W 28 /* KEY/BPM3×7 + 余量 */
#define UI0902_CARD_SUB_H 9
#define UI0902_CARD_SUB_Y 97 /* 与主值底留 ≥10px避免 KEY 贴住/叠住 C */
/* 兼容旧相对偏移宏(= 绝对Y - CARD_Y */
#define UI0902_CARD_LABEL_DY (UI0902_CARD_LABEL_Y - UI0902_CARD_Y)
#define UI0902_CARD_VALUE_DY (UI0902_CARD_VALUE_Y - UI0902_CARD_Y)
#define UI0902_CARD_SUB_DY (UI0902_CARD_SUB_Y - UI0902_CARD_Y)
#define UI0902_TAB_H 18
#define UI0902_TAB_W 55
#define UI0902_TAB_GAP 6
#define UI0902_ROW_H 31
#define UI0902_SECTION_BTN_H 34
#define UI0902_SECTION_BTN_W 47
#define UI0902_SECTION_PITCH 57
#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_TRI_L_W 22 /* 0902 控件-11 左三角 */
#define UI0902_TRI_L_H 22
#define UI0902_TRI_R_W 23 /* 0902 控件-12 右三角 */
#define UI0902_TRI_R_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 12
#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