Fix mirrored touch X and align settings/mixer to 0902.
Enable TP_MIRROR_X for left/right hits, draw blue numeric mixer knobs, and restyle system settings rows with title order and chevron values. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
89e28ce693
commit
805ca0c94b
|
|
@ -2,7 +2,7 @@
|
||||||
extern const Touch_AreaTypeDef *pCurrentTouch_Area;
|
extern const Touch_AreaTypeDef *pCurrentTouch_Area;
|
||||||
static int8_t s_mixer_focus = -1;
|
static int8_t s_mixer_focus = -1;
|
||||||
|
|
||||||
/* 底栏导航触摸区:设置 / 调音台(本页) / 模式选择 */
|
/* ???????????????????? / ?????(???) / ????? */
|
||||||
const Touch_AreaTypeDef Touch_Mixer_Areas[] = {
|
const Touch_AreaTypeDef Touch_Mixer_Areas[] = {
|
||||||
{ 0, 79, 280, 319, 0, UI0902_NAV_SETTING, GUI_NAV_BAR, NULL },
|
{ 0, 79, 280, 319, 0, UI0902_NAV_SETTING, GUI_NAV_BAR, NULL },
|
||||||
{ 80, 159, 280, 319, 0, UI0902_NAV_MIXER, GUI_NAV_BAR, NULL },
|
{ 80, 159, 280, 319, 0, UI0902_NAV_MIXER, GUI_NAV_BAR, NULL },
|
||||||
|
|
@ -11,7 +11,7 @@ const Touch_AreaTypeDef Touch_Mixer_Areas[] = {
|
||||||
|
|
||||||
#define TOUCH_BTN_NUM (sizeof(Touch_Mixer_Areas)/sizeof(Touch_AreaTypeDef))
|
#define TOUCH_BTN_NUM (sizeof(Touch_Mixer_Areas)/sizeof(Touch_AreaTypeDef))
|
||||||
|
|
||||||
/* 每路推子的文字标签(外部 Flash 图片):id0 伴奏 id1 吉他 id2 MIC id3 人声效果 */
|
/* ?¡¤??????????????? Flash ??????id0 ???? id1 ???? id2 MIC id3 ????§¹?? */
|
||||||
static const uint32_t s_fader_label[4][3] = { /* addr, w, h */
|
static const uint32_t s_fader_label[4][3] = { /* addr, w, h */
|
||||||
{ UI0902_TXT_MIXER_BAND_ADDR, UI0902_TXT_MIXER_BAND_W, UI0902_TXT_MIXER_BAND_H },
|
{ UI0902_TXT_MIXER_BAND_ADDR, UI0902_TXT_MIXER_BAND_W, UI0902_TXT_MIXER_BAND_H },
|
||||||
{ UI0902_TXT_MIXER_GUITAR_ADDR, UI0902_TXT_MIXER_GUITAR_W, UI0902_TXT_MIXER_GUITAR_H },
|
{ UI0902_TXT_MIXER_GUITAR_ADDR, UI0902_TXT_MIXER_GUITAR_W, UI0902_TXT_MIXER_GUITAR_H },
|
||||||
|
|
@ -20,7 +20,7 @@ static const uint32_t s_fader_label[4][3] = { /* addr, w, h */
|
||||||
};
|
};
|
||||||
|
|
||||||
// ============================================================
|
// ============================================================
|
||||||
// 完整绘制推子(首次初始化 / 页面切换时调用)
|
// ???????????????¦Ã???? / ????§Ý???????
|
||||||
// ============================================================
|
// ============================================================
|
||||||
void DrawFader(Fader_t *f)
|
void DrawFader(Fader_t *f)
|
||||||
{
|
{
|
||||||
|
|
@ -61,25 +61,32 @@ void DrawAllFaders(void)
|
||||||
drv_nvm_save_to_flash();
|
drv_nvm_save_to_flash();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 0902????????? + ????????????????????? */
|
||||||
|
#define MIXER_KNOB_W 28
|
||||||
|
#define MIXER_KNOB_H 28
|
||||||
|
#define MIXER_KNOB_R 6
|
||||||
|
|
||||||
// ============================================================
|
// ============================================================
|
||||||
// 绘制滑块(白色旋钮图片)+ 数值 + 焦点下划线
|
// ?????????? + ??? + ?????????
|
||||||
// ============================================================
|
// ============================================================
|
||||||
static void DrawFaderSlider(Fader_t *f, uint16_t slider_y)
|
static void DrawFaderSlider(Fader_t *f, uint16_t slider_y)
|
||||||
{
|
{
|
||||||
uint16_t cx = f->x + f->w / 2;
|
uint16_t cx = f->x + f->w / 2;
|
||||||
uint16_t ly = f->y + f->h + 8;
|
uint16_t ly = f->y + f->h + 8;
|
||||||
|
uint16_t kx = (uint16_t)(cx - MIXER_KNOB_W / 2);
|
||||||
char buf[8];
|
char buf[8];
|
||||||
LCD_WR_PIC_FROM_FLASH_Trans(cx - 15, slider_y, 30, 24, UI0902_MIXER_KNOB_ADDR);
|
LCD_FillRoundRect(kx, slider_y, MIXER_KNOB_W, MIXER_KNOB_H, MIXER_KNOB_R, COLOR_PRIMARY);
|
||||||
sprintf(buf, "%d", f->val);
|
sprintf(buf, "%d", f->val);
|
||||||
LCD_ShowString_AutoAlign(cx - 15, cx + 15, slider_y + 5, (uint8_t*)buf,
|
LCD_ShowString_AutoAlign(kx, (uint16_t)(kx + MIXER_KNOB_W),
|
||||||
LCD_ALIGN_CENTER, 0x1905, WHITE, 0, 11);
|
(uint16_t)(slider_y + (MIXER_KNOB_H - 11) / 2),
|
||||||
|
(uint8_t*)buf, LCD_ALIGN_CENTER, WHITE, COLOR_PRIMARY, 0, 11);
|
||||||
LCD_FillByColor(cx - 15, ly + 17, cx + 15, ly + 19, UI0902_BG_COLOR);
|
LCD_FillByColor(cx - 15, ly + 17, cx + 15, ly + 19, UI0902_BG_COLOR);
|
||||||
if (s_mixer_focus == (int8_t)f->id)
|
if (s_mixer_focus == (int8_t)f->id)
|
||||||
LCD_FillByColor(cx - 15, ly + 17, cx + 15, ly + 19, COLOR_PRIMARY);
|
LCD_FillByColor(cx - 15, ly + 17, cx + 15, ly + 19, COLOR_PRIMARY);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ============================================================
|
// ============================================================
|
||||||
// 滑块位置变化:重绘整条轨道再画滑块(轨道为外部 Flash 图片)
|
// ????¦Ë??<3F>£??????????????????÷Ï?????? Flash ????
|
||||||
// ============================================================
|
// ============================================================
|
||||||
static void UpdateFaderSlider(Fader_t *f)
|
static void UpdateFaderSlider(Fader_t *f)
|
||||||
{
|
{
|
||||||
|
|
@ -153,11 +160,11 @@ void UpdateFaderByTouch(int idx, uint16_t y)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ============================================================
|
// ============================================================
|
||||||
// 计算滑块Y坐标(根据val值 0~10)
|
// ??????Y????????val? 0~10??
|
||||||
// ============================================================
|
// ============================================================
|
||||||
static uint16_t CalcSliderY(Fader_t *f)
|
static uint16_t CalcSliderY(Fader_t *f)
|
||||||
{
|
{
|
||||||
uint16_t slider_h = 24;
|
uint16_t slider_h = MIXER_KNOB_H;
|
||||||
uint16_t fill_h = (f->val * f->h) / 10;
|
uint16_t fill_h = (f->val * f->h) / 10;
|
||||||
if (fill_h > f->h) fill_h = f->h;
|
if (fill_h > f->h) fill_h = f->h;
|
||||||
uint16_t slider_y = f->y + f->h - fill_h - (slider_h / 2);
|
uint16_t slider_y = f->y + f->h - fill_h - (slider_h / 2);
|
||||||
|
|
@ -178,7 +185,7 @@ int CheckTouchFader(uint16_t x, uint16_t y)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ==================== 初始化 ====================
|
// ==================== ????? ====================
|
||||||
void UI_Mixer_Init(void)
|
void UI_Mixer_Init(void)
|
||||||
{
|
{
|
||||||
s_mixer_focus = -1;
|
s_mixer_focus = -1;
|
||||||
|
|
@ -191,7 +198,7 @@ void UI_Mixer_Init(void)
|
||||||
pCurrentTouch_Area = Touch_Mixer_Areas;
|
pCurrentTouch_Area = Touch_Mixer_Areas;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ==================== 触摸处理 ====================
|
// ==================== ???????? ====================
|
||||||
void UI_Mixer_Process(DisplayTaskMessage_Type msg)
|
void UI_Mixer_Process(DisplayTaskMessage_Type msg)
|
||||||
{
|
{
|
||||||
uint16_t tx,ty;
|
uint16_t tx,ty;
|
||||||
|
|
@ -202,7 +209,7 @@ void UI_Mixer_Process(DisplayTaskMessage_Type msg)
|
||||||
tx = msg.HiByte;
|
tx = msg.HiByte;
|
||||||
ty = msg.LoByte;
|
ty = msg.LoByte;
|
||||||
|
|
||||||
// 1. 先处理推子
|
// 1. ?????????
|
||||||
fader_idx = CheckTouchFader(tx, ty);
|
fader_idx = CheckTouchFader(tx, ty);
|
||||||
if (fader_idx >= 0)
|
if (fader_idx >= 0)
|
||||||
{
|
{
|
||||||
|
|
@ -210,7 +217,7 @@ void UI_Mixer_Process(DisplayTaskMessage_Type msg)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. 底栏导航
|
// 2. ????????
|
||||||
for(uint8_t i=0; i<TOUCH_BTN_NUM; i++)
|
for(uint8_t i=0; i<TOUCH_BTN_NUM; i++)
|
||||||
{
|
{
|
||||||
if( tx >= Touch_Mixer_Areas[i].x_min && tx <= Touch_Mixer_Areas[i].x_max &&
|
if( tx >= Touch_Mixer_Areas[i].x_min && tx <= Touch_Mixer_Areas[i].x_max &&
|
||||||
|
|
@ -219,7 +226,7 @@ void UI_Mixer_Process(DisplayTaskMessage_Type msg)
|
||||||
switch (Touch_Mixer_Areas[i].Value)
|
switch (Touch_Mixer_Areas[i].Value)
|
||||||
{
|
{
|
||||||
case UI0902_NAV_SETTING: MenuPage_Setting_Proc(); break;
|
case UI0902_NAV_SETTING: MenuPage_Setting_Proc(); break;
|
||||||
case UI0902_NAV_MIXER: break; /* 本页 */
|
case UI0902_NAV_MIXER: break; /* ??? */
|
||||||
case UI0902_NAV_MODE: UI_ReturnToModeSelect(); break;
|
case UI0902_NAV_MODE: UI_ReturnToModeSelect(); break;
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,30 +1,34 @@
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
|
||||||
/* ==============================
|
/* ==============================
|
||||||
* 0902 设置页:4 行列表(蓝牙设置/自动关机/恢复出厂设置/版本信息)
|
* 0902 ???????????·Ú / ???????? / ?????? / ???????
|
||||||
* 行 214x33,纵向间距 46;底栏:返回 / 调音台 / 模式选择
|
* ?? 214x40????????? 50???????????? / ????? / ?????
|
||||||
* ============================== */
|
* ============================== */
|
||||||
#define SET_ROW_X 13
|
#define SET_ROW_X 13
|
||||||
#define SET_ROW_W 214
|
#define SET_ROW_W 214
|
||||||
#define SET_ROW_H 33
|
#define SET_ROW_H 40
|
||||||
|
#define SET_ROW_Y0 42
|
||||||
|
#define SET_ROW_PITCH 50
|
||||||
|
|
||||||
extern const Touch_AreaTypeDef *pCurrentTouch_Area;
|
extern const Touch_AreaTypeDef *pCurrentTouch_Area;
|
||||||
|
|
||||||
const Touch_AreaTypeDef Touch_SystemSetting_Areas[] =
|
const Touch_AreaTypeDef Touch_SystemSetting_Areas[] =
|
||||||
{
|
{
|
||||||
// Xmin, Xmax, Ymin, Ymax, flag, Value, ID, action
|
/* ??? / ????????????????? Flag -1/+1???·Ú??? */
|
||||||
{ 13, 227, 42, 75, 1, 0, GUI_BLUETOOTH_SW, NULL },
|
{ 13, 119, SET_ROW_Y0 + SET_ROW_PITCH, SET_ROW_Y0 + SET_ROW_PITCH + SET_ROW_H - 1, -1, 0, GUI_BLUETOOTH_SW, NULL },
|
||||||
{ 13, 227, 88, 121, 1, 0, GUI_AUTOCLOSE, NULL },
|
{ 120, 227, SET_ROW_Y0 + SET_ROW_PITCH, SET_ROW_Y0 + SET_ROW_PITCH + SET_ROW_H - 1, 1, 0, GUI_BLUETOOTH_SW, NULL },
|
||||||
{ 13, 227, 134, 167, 0, 0, GUI_RESTORE, NULL },
|
{ 13, 119, SET_ROW_Y0 + SET_ROW_PITCH * 2, SET_ROW_Y0 + SET_ROW_PITCH * 2 + SET_ROW_H - 1, -1, 0, GUI_AUTOCLOSE, NULL },
|
||||||
{ 0, 79, 280, 319, 0, UI0902_NAV_SETTING, GUI_NAV_BAR, NULL }, /* 返回 */
|
{ 120, 227, SET_ROW_Y0 + SET_ROW_PITCH * 2, SET_ROW_Y0 + SET_ROW_PITCH * 2 + SET_ROW_H - 1, 1, 0, GUI_AUTOCLOSE, NULL },
|
||||||
{ 80, 159, 280, 319, 0, UI0902_NAV_MIXER, GUI_NAV_BAR, NULL },
|
{ 13, 227, SET_ROW_Y0 + SET_ROW_PITCH * 3, SET_ROW_Y0 + SET_ROW_PITCH * 3 + SET_ROW_H - 1, 0, 0, GUI_RESTORE, NULL },
|
||||||
{ 160, 239, 280, 319, 0, UI0902_NAV_MODE, GUI_NAV_BAR, NULL },
|
{ 0, 79, 280, 319, 0, UI0902_NAV_SETTING, GUI_NAV_BAR, NULL },
|
||||||
|
{ 80, 159, 280, 319, 0, UI0902_NAV_MIXER, GUI_NAV_BAR, NULL },
|
||||||
|
{ 160, 239, 280, 319, 0, UI0902_NAV_MODE, GUI_NAV_BAR, NULL },
|
||||||
};
|
};
|
||||||
|
|
||||||
#define TOUCH_AREA_SYSTEMSETTING_NUM (sizeof(Touch_SystemSetting_Areas)/sizeof(Touch_AreaTypeDef))
|
#define TOUCH_AREA_SYSTEMSETTING_NUM (sizeof(Touch_SystemSetting_Areas)/sizeof(Touch_AreaTypeDef))
|
||||||
|
|
||||||
GUI_SWITCH mGuiData_SystemSETTING[] = {
|
GUI_SWITCH mGuiData_SystemSETTING[] = {
|
||||||
{ 0, 0, 2, GUI_VERSION}, // 0
|
{ 0, 0, 2, GUI_VERSION},
|
||||||
{ 0, 0, 1, GUI_BLUETOOTH_SW},
|
{ 0, 0, 1, GUI_BLUETOOTH_SW},
|
||||||
{ 0, 1, 3, GUI_AUTOCLOSE},
|
{ 0, 1, 3, GUI_AUTOCLOSE},
|
||||||
{ 0, 0, 1, GUI_RESTORE},
|
{ 0, 0, 1, GUI_RESTORE},
|
||||||
|
|
@ -32,10 +36,12 @@ GUI_SWITCH mGuiData_SystemSETTING[] = {
|
||||||
|
|
||||||
LEBEL_UI SystemSetting[] =
|
LEBEL_UI SystemSetting[] =
|
||||||
{
|
{
|
||||||
{SET_ROW_X, SET_ROW_W, 180, SET_ROW_H, (const uint8_t*)"\xB0\xE6\xB1\xBE\xD0\xC5\xCF\xA2", LCD_ALIGN_LEFT, WHITE, BLACK, 13, LCD_ALIGN_CENTER, WHITE, BLACK, 11, GUI_VERSION},
|
/* ????·Ú */
|
||||||
{SET_ROW_X, SET_ROW_W, 42, SET_ROW_H, (const uint8_t*)"\xC0\xB6\xD1\xC0\xC9\xE8\xD6\xC3", LCD_ALIGN_LEFT, WHITE, BLACK, 13, LCD_ALIGN_CENTER, WHITE, BLACK, 11, GUI_BLUETOOTH_SW},
|
{SET_ROW_X, SET_ROW_W, SET_ROW_Y0, SET_ROW_H, (const uint8_t*)"\xB9\xCC\xBC\xFE\xB0\xE6\xB1\xBE", LCD_ALIGN_LEFT, WHITE, BLACK, 13, LCD_ALIGN_CENTER, WHITE, BLACK, 11, GUI_VERSION},
|
||||||
{SET_ROW_X, SET_ROW_W, 88, SET_ROW_H, (const uint8_t*)"\xD7\xD4\xB6\xAF\xB9\xD8\xBB\xFA", LCD_ALIGN_LEFT, WHITE, BLACK, 13, LCD_ALIGN_CENTER, WHITE, BLACK, 11, GUI_AUTOCLOSE},
|
/* ????????????????????????¨¢????¦Ì?????????????????¦Ï?????????? */
|
||||||
{SET_ROW_X, SET_ROW_W, 134, SET_ROW_H, (const uint8_t*)"\xBB\xD6\xB8\xB4\xB3\xF6\xB3\xA7\xC9\xE8\xD6\xC3", LCD_ALIGN_LEFT, WHITE, BLACK, 13, LCD_ALIGN_CENTER, WHITE, BLACK, 11, GUI_RESTORE},
|
{SET_ROW_X, SET_ROW_W, SET_ROW_Y0 + SET_ROW_PITCH, SET_ROW_H, (const uint8_t*)"\xC0\xB6\xD1\xC0\xC1\xAC\xBD\xD3", LCD_ALIGN_LEFT, WHITE, BLACK, 13, LCD_ALIGN_CENTER, WHITE, BLACK, 11, GUI_BLUETOOTH_SW},
|
||||||
|
{SET_ROW_X, SET_ROW_W, SET_ROW_Y0 + SET_ROW_PITCH*2, SET_ROW_H, (const uint8_t*)"\xD7\xD4\xB6\xAF\xB9\xD8\xBB\xFA", LCD_ALIGN_LEFT, WHITE, BLACK, 13, LCD_ALIGN_CENTER, WHITE, BLACK, 11, GUI_AUTOCLOSE},
|
||||||
|
{SET_ROW_X, SET_ROW_W, SET_ROW_Y0 + SET_ROW_PITCH*3, SET_ROW_H, (const uint8_t*)"\xBB\xD6\xB8\xB4\xB3\xF6\xB3\xA7\xC9\xE8\xD6\xC3", LCD_ALIGN_LEFT, WHITE, BLACK, 13, LCD_ALIGN_CENTER, WHITE, BLACK, 11, GUI_RESTORE},
|
||||||
};
|
};
|
||||||
|
|
||||||
void DrawSystemSetting(void)
|
void DrawSystemSetting(void)
|
||||||
|
|
@ -46,19 +52,16 @@ void DrawSystemSetting(void)
|
||||||
Draw_System_Item_List(&SystemSetting[GUI_RESTORE],&mGuiData_SystemSETTING[GUI_RESTORE]);
|
Draw_System_Item_List(&SystemSetting[GUI_RESTORE],&mGuiData_SystemSETTING[GUI_RESTORE]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ==============================
|
|
||||||
// 触摸处理
|
|
||||||
// ==============================
|
|
||||||
void Touch_SystemSettingAction(int8_t FLAG, uint8_t ID, uint8_t areaIndex, uint8_t value)
|
void Touch_SystemSettingAction(int8_t FLAG, uint8_t ID, uint8_t areaIndex, uint8_t value)
|
||||||
{
|
{
|
||||||
uint16_t last_value;
|
uint16_t last_value;
|
||||||
(void)FLAG; (void)areaIndex;
|
(void)areaIndex;
|
||||||
|
|
||||||
if (ID == GUI_NAV_BAR)
|
if (ID == GUI_NAV_BAR)
|
||||||
{
|
{
|
||||||
switch (value)
|
switch (value)
|
||||||
{
|
{
|
||||||
case UI0902_NAV_SETTING: UI_GotoCurrentModePage(); break; /* 返回当前模式页 */
|
case UI0902_NAV_SETTING: UI_GotoCurrentModePage(); break;
|
||||||
case UI0902_NAV_MIXER: MenuPage_Mixer_Proc(); break;
|
case UI0902_NAV_MIXER: MenuPage_Mixer_Proc(); break;
|
||||||
case UI0902_NAV_MODE: UI_ReturnToModeSelect(); break;
|
case UI0902_NAV_MODE: UI_ReturnToModeSelect(); break;
|
||||||
default: break;
|
default: break;
|
||||||
|
|
@ -76,7 +79,7 @@ void Touch_SystemSettingAction(int8_t FLAG, uint8_t ID, uint8_t areaIndex, uint8
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GUI_AUTOCLOSE:
|
case GUI_AUTOCLOSE:
|
||||||
GUI_Item_AjustLoopValue(&mGuiData_SystemSETTING[ID], 1);
|
GUI_Item_AjustLoopValue(&mGuiData_SystemSETTING[ID], FLAG >= 0 ? 1 : -1);
|
||||||
if (!UI_SetFocus(ID))
|
if (!UI_SetFocus(ID))
|
||||||
RefreshSystemSetting(last_value, &SystemSetting[ID], &mGuiData_SystemSETTING[ID]);
|
RefreshSystemSetting(last_value, &SystemSetting[ID], &mGuiData_SystemSETTING[ID]);
|
||||||
break;
|
break;
|
||||||
|
|
@ -94,7 +97,8 @@ void UI_Setting_Init(void)
|
||||||
{
|
{
|
||||||
UI_ClearFocus();
|
UI_ClearFocus();
|
||||||
LCD_FillByColor(0, 0, 240, 320, UI0902_BG_COLOR);
|
LCD_FillByColor(0, 0, 240, 320, UI0902_BG_COLOR);
|
||||||
LCD_ShowChinese_AutoAlign(0, 240, 8, (const uint8_t*)"\xC9\xE8\xD6\xC3", LCD_ALIGN_CENTER, WHITE, UI0902_BG_COLOR, 0, 16);
|
/* ?????? */
|
||||||
|
LCD_ShowChinese_AutoAlign(0, 240, 8, (const uint8_t*)"\xCF\xB5\xCD\xB3\xC9\xE8\xD6\xC3", LCD_ALIGN_CENTER, WHITE, UI0902_BG_COLOR, 0, 16);
|
||||||
DrawSystemSetting();
|
DrawSystemSetting();
|
||||||
Draw_Bottom_Bar(UI0902_NAV_NONE, 1);
|
Draw_Bottom_Bar(UI0902_NAV_NONE, 1);
|
||||||
pCurrentTouch_Area = Touch_SystemSetting_Areas;
|
pCurrentTouch_Area = Touch_SystemSetting_Areas;
|
||||||
|
|
|
||||||
|
|
@ -956,9 +956,10 @@ void Draw_System_Item_List(const LEBEL_UI *UI, GUI_SWITCH *Group)
|
||||||
NvmParam_Type * nvm = drv_nvm_param_ptr();
|
NvmParam_Type * nvm = drv_nvm_param_ptr();
|
||||||
char Info[40];
|
char Info[40];
|
||||||
uint16_t c_top, c_bot;
|
uint16_t c_top, c_bot;
|
||||||
uint16_t text_y = UI->y + 10;
|
uint16_t text_y = UI->y + (UI->h > 33 ? 14 : 10);
|
||||||
uint16_t val_x1 = UI->x + 120;
|
uint16_t val_x1 = UI->x + 118;
|
||||||
uint16_t val_x2 = UI->x + 190;
|
uint16_t val_x2 = UI->x + 196;
|
||||||
|
uint16_t chev_cy = UI->y + UI->h / 2;
|
||||||
|
|
||||||
if (UI_IsFocused(Group->Id))
|
if (UI_IsFocused(Group->Id))
|
||||||
{
|
{
|
||||||
|
|
@ -978,24 +979,27 @@ void Draw_System_Item_List(const LEBEL_UI *UI, GUI_SWITCH *Group)
|
||||||
switch(Group->Id)
|
switch(Group->Id)
|
||||||
{
|
{
|
||||||
case GUI_VERSION:
|
case GUI_VERSION:
|
||||||
LCD_WR_PIC_FROM_FLASH_Trans(UI->x+12, UI->y+7, 19, 18, UI0902_ICON_SYS_VERSION_ADDR);
|
LCD_WR_PIC_FROM_FLASH_Trans(UI->x+12, UI->y + (UI->h - 18) / 2, 19, 18, UI0902_ICON_SYS_VERSION_ADDR);
|
||||||
sprintf (Info, "%d.%d.%d", Version[0], Version[1],Version[2]);
|
sprintf (Info, "%d.%d.%d", Version[0], Version[1],Version[2]);
|
||||||
LCD_ShowString_AutoAlign_Gradient(val_x1, val_x2, text_y+1,(const uint8_t*)Info,LCD_ALIGN_RIGHT, GRAY,c_top, c_bot,11);
|
/* 0902:右侧凹槽版本框 */
|
||||||
|
LCD_FillRoundRect(UI->x + 148, UI->y + (UI->h - 22) / 2, 54, 22, 4, UI0902_BG_COLOR);
|
||||||
|
LCD_ShowString_AutoAlign(UI->x + 148, UI->x + 202,
|
||||||
|
UI->y + (UI->h - 11) / 2,
|
||||||
|
(const uint8_t*)Info, LCD_ALIGN_CENTER, WHITE, UI0902_BG_COLOR, 0, 11);
|
||||||
break;
|
break;
|
||||||
case GUI_BLUETOOTH_SW:
|
case GUI_BLUETOOTH_SW:
|
||||||
LCD_WR_PIC_FROM_FLASH_Trans(UI->x+7, UI->y, 34, 33, UI0902_ICON_SET_BLUETOOTH_ADDR);
|
LCD_WR_PIC_FROM_FLASH_Trans(UI->x+7, UI->y + (UI->h - 33) / 2, 34, 33, UI0902_ICON_SET_BLUETOOTH_ADDR);
|
||||||
|
LCD_DrawChevron_Left(val_x1 + 8, chev_cy, 5, 2, WHITE);
|
||||||
if(Group->Current)
|
if(Group->Current)
|
||||||
{
|
LCD_ShowChinese_AutoAlign_Gradient(val_x1 + 14, val_x2 - 14, text_y,(const uint8_t*)"\xCA\xC7",LCD_ALIGN_CENTER, WHITE,c_top, c_bot,11);
|
||||||
LCD_ShowChinese_AutoAlign_Gradient(val_x1, val_x2, text_y+1,(const uint8_t*)"\xBF\xAA",LCD_ALIGN_RIGHT, GRAY,c_top, c_bot,11);
|
else
|
||||||
}else
|
LCD_ShowChinese_AutoAlign_Gradient(val_x1 + 14, val_x2 - 14, text_y,(const uint8_t*)"\xB9\xD8",LCD_ALIGN_CENTER, WHITE,c_top, c_bot,11);
|
||||||
{
|
LCD_DrawChevron_Right(val_x2 - 8, chev_cy, 5, 2, WHITE);
|
||||||
LCD_ShowChinese_AutoAlign_Gradient(val_x1, val_x2, text_y+1,(const uint8_t*)"\xB9\xD8",LCD_ALIGN_RIGHT, GRAY,c_top, c_bot,11);
|
|
||||||
}
|
|
||||||
BSP_BlueToothPowerEnable (Group->Current);
|
BSP_BlueToothPowerEnable (Group->Current);
|
||||||
mGuiData[GUI_BL_SW].Current = Group->Current;
|
mGuiData[GUI_BL_SW].Current = Group->Current;
|
||||||
break;
|
break;
|
||||||
case GUI_AUTOCLOSE:
|
case GUI_AUTOCLOSE:
|
||||||
LCD_WR_PIC_FROM_FLASH_Trans(UI->x+7, UI->y, 33, 34, UI0902_ICON_SET_GEAR_ADDR);
|
LCD_WR_PIC_FROM_FLASH_Trans(UI->x+7, UI->y + (UI->h - 34) / 2, 33, 34, UI0902_ICON_SET_GEAR_ADDR);
|
||||||
switch(Group->Current)
|
switch(Group->Current)
|
||||||
{
|
{
|
||||||
case 0:AutoCloseTime = 5;mAutoPowerOffCount = AutoCloseTime * 60;break;
|
case 0:AutoCloseTime = 5;mAutoPowerOffCount = AutoCloseTime * 60;break;
|
||||||
|
|
@ -1003,23 +1007,24 @@ void Draw_System_Item_List(const LEBEL_UI *UI, GUI_SWITCH *Group)
|
||||||
case 2:AutoCloseTime = 30;mAutoPowerOffCount = AutoCloseTime * 60;break;
|
case 2:AutoCloseTime = 30;mAutoPowerOffCount = AutoCloseTime * 60;break;
|
||||||
case 3:AutoCloseTime = 0;AutoCloseFlag = 0;break; //never
|
case 3:AutoCloseTime = 0;AutoCloseFlag = 0;break; //never
|
||||||
}
|
}
|
||||||
|
LCD_DrawChevron_Left(val_x1 + 4, chev_cy, 5, 2, WHITE);
|
||||||
if(Group->Current != 3)
|
if(Group->Current != 3)
|
||||||
{
|
{
|
||||||
sprintf (Info, "%d",AutoCloseTime);
|
sprintf (Info, "%d",AutoCloseTime);
|
||||||
LCD_ShowString_AutoAlign_Gradient(val_x1, val_x2-28, text_y+1, (const uint8_t*)Info, LCD_ALIGN_RIGHT, GRAY, c_top, c_bot, 11);
|
LCD_ShowString_AutoAlign_Gradient(val_x1 + 12, val_x2 - 36, text_y, (const uint8_t*)Info, LCD_ALIGN_RIGHT, WHITE, c_top, c_bot, 11);
|
||||||
LCD_ShowChinese_AutoAlign_Gradient(val_x2-26, val_x2, text_y+1, (const uint8_t*)"\xB7\xD6\xD6\xD3", LCD_ALIGN_RIGHT, GRAY, c_top, c_bot, 11);
|
LCD_ShowChinese_AutoAlign_Gradient(val_x2 - 34, val_x2 - 12, text_y, (const uint8_t*)"\xB7\xD6\xD6\xD3", LCD_ALIGN_LEFT, WHITE, c_top, c_bot, 11);
|
||||||
}else
|
}else
|
||||||
{
|
{
|
||||||
LCD_ShowChinese_AutoAlign_Gradient(val_x1, val_x2, text_y+1,(uint8_t*)"\xB9\xD8",LCD_ALIGN_RIGHT, GRAY, c_top, c_bot, 11);
|
LCD_ShowChinese_AutoAlign_Gradient(val_x1 + 12, val_x2 - 12, text_y,(uint8_t*)"\xB9\xD8",LCD_ALIGN_CENTER, WHITE, c_top, c_bot, 11);
|
||||||
}
|
}
|
||||||
|
LCD_DrawChevron_Right(val_x2 - 8, chev_cy, 5, 2, WHITE);
|
||||||
nvm->param.AutoCloseTime = Group->Current;
|
nvm->param.AutoCloseTime = Group->Current;
|
||||||
drv_nvm_save_to_flash();
|
drv_nvm_save_to_flash();
|
||||||
break;
|
break;
|
||||||
case GUI_RESTORE:
|
case GUI_RESTORE:
|
||||||
LCD_WR_PIC_FROM_FLASH_Trans(UI->x+13, UI->y+6, 13, 21, UI0902_ICON_SYS_RESTORE_ADDR);
|
LCD_WR_PIC_FROM_FLASH_Trans(UI->x+13, UI->y + (UI->h - 21) / 2, 13, 21, UI0902_ICON_SYS_RESTORE_ADDR);
|
||||||
|
LCD_WR_PIC_FROM_FLASH_Trans(UI->x+197, UI->y + (UI->h - 18) / 2, 10, 18, UI0902_ICON_CHEVRON_ADDR);
|
||||||
break;
|
break;
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
/* 右侧箭头 */
|
|
||||||
LCD_WR_PIC_FROM_FLASH_Trans(UI->x+197, UI->y+8, 10, 18, UI0902_ICON_CHEVRON_ADDR);
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -109,6 +109,8 @@ const char CHS11Table[][2] = {
|
||||||
{0xB3,0xA7}, // 厂
|
{0xB3,0xA7}, // 厂
|
||||||
{0xC9,0xE8}, // 设
|
{0xC9,0xE8}, // 设
|
||||||
{0xD6,0xC3}, // 置
|
{0xD6,0xC3}, // 置
|
||||||
|
{0xC1,0xAC}, // 连
|
||||||
|
{0xCA,0xC7}, // 是
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -355,6 +357,8 @@ const char CHS13Table[][2] = {
|
||||||
{0xB6, 0xD3},// 队
|
{0xB6, 0xD3},// 队
|
||||||
{0xD1, 0xF4},// 阳
|
{0xD1, 0xF4},// 阳
|
||||||
{0xDC, 0xB0},// 馨
|
{0xDC, 0xB0},// 馨
|
||||||
|
{0xC1,0xAC}, // 连
|
||||||
|
{0xCA,0xC7}, // 是
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -935,6 +939,8 @@ const unsigned char Chinese_font_11[][22] = {
|
||||||
{0x00,0x00,0x3F,0x80,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x60,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x00},/*"厂",48*/
|
{0x00,0x00,0x3F,0x80,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x60,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x00},/*"厂",48*/
|
||||||
{0x00,0x00,0x6F,0x00,0x29,0x00,0x09,0x80,0x40,0x00,0x09,0x80,0x0D,0x00,0x36,0x00,0x6D,0x80,0x10,0x00,0x00,0x00},/*"设",49*/
|
{0x00,0x00,0x6F,0x00,0x29,0x00,0x09,0x80,0x40,0x00,0x09,0x80,0x0D,0x00,0x36,0x00,0x6D,0x80,0x10,0x00,0x00,0x00},/*"设",49*/
|
||||||
{0x00,0x00,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x0C,0x00,0x3F,0x00,0x3F,0x00,0x3F,0x00,0x3F,0x00,0x00,0x00,0x00,0x00},/*"置",50*/
|
{0x00,0x00,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x0C,0x00,0x3F,0x00,0x3F,0x00,0x3F,0x00,0x3F,0x00,0x00,0x00,0x00,0x00},/*"置",50*/
|
||||||
|
{0x00,0x00,0x44,0x00,0x2C,0x00,0x0A,0x00,0x6F,0x80,0x22,0x00,0x3F,0x80,0x62,0x00,0x72,0x00,0x00,0x00,0x00,0x00},/*"连",51*/
|
||||||
|
{0x00,0x00,0x3F,0x00,0x3F,0x00,0x21,0x00,0x3F,0x00,0x7F,0x80,0x24,0x00,0x27,0x00,0x7C,0x00,0x00,0x00,0x00,0x00},/*"是",52*/
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1126,6 +1132,8 @@ const unsigned char Chinese_font_13[][26] = {
|
||||||
{0x00,0x00,0x39,0x00,0x79,0x00,0x49,0x00,0x51,0x00,0x51,0x00,0x4B,0x80,0x4B,0x80,0x7A,0x80,0x44,0x40,0x4C,0x60,0x48,0x20,0x00,0x00},/*"队",180*/
|
{0x00,0x00,0x39,0x00,0x79,0x00,0x49,0x00,0x51,0x00,0x51,0x00,0x4B,0x80,0x4B,0x80,0x7A,0x80,0x44,0x40,0x4C,0x60,0x48,0x20,0x00,0x00},/*"队",180*/
|
||||||
{0x00,0x00,0x78,0x00,0x7F,0xE0,0x5E,0x20,0x56,0x20,0x56,0x60,0x4F,0xE0,0x4E,0x20,0x4E,0x20,0x76,0x20,0x47,0xE0,0x40,0x20,0x00,0x00},/*"阳",181*/
|
{0x00,0x00,0x78,0x00,0x7F,0xE0,0x5E,0x20,0x56,0x20,0x56,0x60,0x4F,0xE0,0x4E,0x20,0x4E,0x20,0x76,0x20,0x47,0xE0,0x40,0x20,0x00,0x00},/*"阳",181*/
|
||||||
{0x00,0x00,0x7D,0xC0,0x7F,0x60,0x3B,0xE0,0x55,0xC0,0x7F,0x60,0x5F,0x80,0x7F,0xE0,0x1D,0x80,0x7F,0xE0,0x3F,0x80,0x3F,0x80,0x00,0x00},/*"馨",182*/
|
{0x00,0x00,0x7D,0xC0,0x7F,0x60,0x3B,0xE0,0x55,0xC0,0x7F,0x60,0x5F,0x80,0x7F,0xE0,0x1D,0x80,0x7F,0xE0,0x3F,0x80,0x3F,0x80,0x00,0x00},/*"馨",182*/
|
||||||
|
{0x00,0x00,0x42,0x00,0x2F,0xE0,0x24,0x00,0x05,0x00,0x6F,0xE0,0x21,0x80,0x21,0x80,0x2F,0xE0,0x21,0x00,0x7F,0xE0,0x07,0xE0,0x00,0x00},/*"连",183*/
|
||||||
|
{0x00,0x00,0x3F,0xC0,0x20,0x40,0x3F,0xC0,0x20,0xC0,0x3F,0xC0,0x7F,0xE0,0x26,0x00,0x23,0xC0,0x32,0x00,0x7E,0x00,0x43,0xE0,0x00,0x00},/*"是",184*/
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -192,12 +192,13 @@ static uint8_t TP_AdcCoordValid(uint16_t x, uint16_t y)
|
||||||
#define CALIB_Y_MAX 3950
|
#define CALIB_Y_MAX 3950
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 竖屏线性映射(与 BOOT/量产一致):raw.x→屏幕X,raw.y→屏幕Y,不做镜像。
|
* 竖屏线性映射:raw.x→屏幕X,raw.y→屏幕Y。
|
||||||
|
* 本机 X 轴左右对调(点右触发左),开 TP_MIRROR_X。
|
||||||
* 若 TP_MIRROR_Y=1 会导致 Y 轴反转(点「专业」误中「万能」)。
|
* 若 TP_MIRROR_Y=1 会导致 Y 轴反转(点「专业」误中「万能」)。
|
||||||
* DOUT(PA15) 浮空输入;空闲 raw.y 噪声禁止走 ADC 回退。
|
* DOUT(PA15) 浮空输入;空闲 raw.y 噪声禁止走 ADC 回退。
|
||||||
*/
|
*/
|
||||||
#define TP_SWAP_XY 0
|
#define TP_SWAP_XY 0
|
||||||
#define TP_MIRROR_X 0
|
#define TP_MIRROR_X 1
|
||||||
#define TP_MIRROR_Y 0
|
#define TP_MIRROR_Y 0
|
||||||
|
|
||||||
static uint16_t TP_MapAxis(uint16_t adc, uint16_t adc_min, uint16_t adc_max, uint16_t px_max)
|
static uint16_t TP_MapAxis(uint16_t adc, uint16_t adc_min, uint16_t adc_max, uint16_t px_max)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue