#include "includes.h" #define UI_MODE_SCREEN_WIDTH 240 // ��Ļ��ȣ��������LCD�޸� #define UI_MODE_SCREEN_HEIGHT 250 // ��Ļ�߶ȣ��������LCD�޸� #define UI_MODE_BG_COLOR 0x1925 // ������ɫ������ԭͼ������ɫ #define UI_MODE_LINE_COLOR DARKBLUE // �ָ�����ɫ���ȱ������� #define UI_MODE_TEXT_COLOR 0xFFFF // ������ɫ����ɫ #define UI_MODE_FONT_SIZE 16 // 模式按钮字号(MiSans 16) // ============================== // ���ɵ�����ʾ���� // ============================== #define MODE_AREA_START_Y 25 // ������ʼ Y #define MODE_AREA_END_Y 250 // ������� Y #define MODE_AREA_HEIGHT (MODE_AREA_END_Y - MODE_AREA_START_Y) const Touch_AreaTypeDef Touch_SetingSelect_Areas[] = { // Xmin, Xmax, Ymin, Ymax, flag, ID, action { 5, 235, 30, 140, 0, 0, GUI_SETING_SELECT1, NULL }, // ��һ�У�����̨ { 5, 235, 140, 250, 1, 0, GUI_SETING_SELECT3, NULL }, // �ڶ��У�ϵͳ���� { 10, 50, 275, 340, 0,2, 5, NULL }, { 70, 130, 275, 340, 0,0, 5, NULL }, { 130, 170, 275, 340, 0,1, 5, NULL }, { 190, 230, 275, 340, 0,3, 5, NULL }, }; #define TOUCH_AREA_SETING_SELECT_NUM (sizeof(Touch_SetingSelect_Areas)/sizeof(Touch_AreaTypeDef)) void Touch_Seting_Select_Action(int8_t FLAG, uint8_t ID, uint8_t areaIndex,uint8_t value) { uint8_t last_value; switch(ID) { case 0: if (CurrUIProcress != UI_Mixer_Process) MenuPage_Mixer_Proc(); break; case 2: if (CurrUIProcress != UI_Setting_Process) MenuPage_Setting_Proc(); break; case 5: last_value = mGuiData[GUI_TAB_INDEX].Current; if (last_value == value) break; mGuiData[GUI_TAB_INDEX].Current = value; switch(value) { case 0: if(mGuiData[GUI_TAB_LAST_INDEX].Current == mGuiData[GUI_TAB_INDEX].Current) break; ADDRESS = 0x00000000; break; case 1: if(mGuiData[GUI_TAB_LAST_INDEX].Current == mGuiData[GUI_TAB_INDEX].Current) break; ADDRESS = 0x0000EB41; break; case 2: if(mGuiData[GUI_TAB_LAST_INDEX].Current == mGuiData[GUI_TAB_INDEX].Current) break; ADDRESS = 0x000170EF; break; default: break; } Refresh_TabSelect_ui(&UI_Label[GUI_PLAY_SECTION], &mGuiData[GUI_TAB_INDEX]); break; } } //// 1 = 2����ʾ��0 = 3����ʾ //#define USE_2_LINE_MODE 1 // //void UI_DrawSysModeSelectScreen(void) //{ // uint16_t y1, y2; // // // 1. ���� // LCD_FillByColor(0,0,240,320,BLACK); // LCD_FillRoundRect(5,5,240-5,320-5,10,UI_MODE_BG_COLOR); // // // ============================== // // �������� / ����λ�� // // ============================== // #if (USE_2_LINE_MODE == 1) // // 2�У��� 25~250 ֮����� // y1 = MODE_AREA_START_Y + (MODE_AREA_HEIGHT / 2); // LCD_DrawLine(5, y1, UI_MODE_SCREEN_WIDTH-5, y1, UI_MODE_LINE_COLOR); // #else // // 3�У����ȷ� // y1 = MODE_AREA_START_Y + (MODE_AREA_HEIGHT / 3); // y2 = MODE_AREA_START_Y + (MODE_AREA_HEIGHT * 2 / 3); // LCD_DrawLine(5, y1, UI_MODE_SCREEN_WIDTH-5, y1, UI_MODE_LINE_COLOR); // LCD_DrawLine(5, y2, UI_MODE_SCREEN_WIDTH-5, y2, UI_MODE_LINE_COLOR); // #endif // // uint16_t text_x_pos; // uint16_t text_y_pos; // // // ============================== // // ��һ�У�����̨��3�� ���У� // // ============================== // text_x_pos = (UI_MODE_SCREEN_WIDTH - 3 * UI_MODE_FONT_SIZE) / 2; // // #if (USE_2_LINE_MODE == 1) // text_y_pos = MODE_AREA_START_Y + (MODE_AREA_HEIGHT/2/2) - (UI_MODE_FONT_SIZE/2); // #else // text_y_pos = MODE_AREA_START_Y + (y1/2/2) - (UI_MODE_FONT_SIZE/2); // #endif // // LCD_ShowChineseString( // text_x_pos, text_y_pos, // (uint8_t*)"\xB5\xF7\xD2\xF4\xCC\xA8", // ����̨ // UI_MODE_TEXT_COLOR, UI_MODE_BG_COLOR, UI_MODE_FONT_SIZE, 0 // ); // // // ============================== // // �ڶ��У�ϵͳ���ã�4�� ���У� // // ============================== // text_x_pos = (UI_MODE_SCREEN_WIDTH - 4 * UI_MODE_FONT_SIZE) / 2; // // #if (USE_2_LINE_MODE == 1) // text_y_pos = MODE_AREA_START_Y + (MODE_AREA_HEIGHT/2) + (MODE_AREA_HEIGHT/2/2) - (UI_MODE_FONT_SIZE/2); // #else // text_y_pos = y1 + ((y2 - y1)/2) - (UI_MODE_FONT_SIZE/2); // #endif // // LCD_ShowChineseString( // text_x_pos, text_y_pos, // (uint8_t*)"\xCF\xB5\xCD\xB3\xC9\xE8\xD6\xC3", // ϵͳ���� // UI_MODE_TEXT_COLOR, UI_MODE_BG_COLOR, UI_MODE_FONT_SIZE, 0 // ); // // // ============================== // // �����У��������루����ʾ�� // // ============================== // #if (USE_2_LINE_MODE == 0) // text_x_pos = (UI_MODE_SCREEN_WIDTH - 4 * UI_MODE_FONT_SIZE) / 2; // text_y_pos = y2 + ((MODE_AREA_HEIGHT - y2)/2) - (UI_MODE_FONT_SIZE/2); // LCD_ShowChineseString( // text_x_pos, text_y_pos, // (uint8_t*)"\xD7\xD4\xD3\xC9\xC4\xA3\xCA\xBD", // UI_MODE_TEXT_COLOR, UI_MODE_BG_COLOR, UI_MODE_FONT_SIZE, 0 // ); // #endif //} //#define UI_MODE_SCREEN_WIDTH 240 // 屏幕宽度,根�??????????你的LCD�??????????�?????????? //#define UI_MODE_SCREEN_HEIGHT 320 // 屏幕高度,根�??????????你的LCD�??????????�?????????? //#define UI_MODE_BG_COLOR 0x1925 // 背景深色,近似原图的深蓝�?????????? //#define UI_MODE_LINE_COLOR 0x0000/*DARKBLUE*/ // 分割线�?�色,比背景稍亮 #define UI_SET_MODE_TEXT_COLOR 0xFFFF // 文字颜色,白�?????????? //#define UI_MODE_FONT_SIZE 24 // 字体大小,根�??????????你的字库�??????????�?????????? void UI_DrawSysModeSelectScreen(void) { // 1. 渐变背景(深灰→黑色�??? // LCD_FillGradient(0, 0, 240, 320, 0x5AEB, 0x0000); LCD_FillByColor(0, 0, 240, 320, BLACK); label_top(); // 2. 按钮参数:�??=220 �?????=87 圆�??=10 深灰色背�????? const uint16_t btn_w = 220; const uint16_t btn_h = 87; const uint16_t btn_r = 10; const uint16_t btn_x = (240 - btn_w) / 2; // 10 const uint16_t btn_color = COLOR_NORMAL_BG; LCD_DrawLine(0, 30, 240, 30, btn_color); LCD_FillRoundRect(btn_x, 40+20, btn_w, btn_h, btn_r, btn_color); LCD_DrawChevron_Right(200, 105, 15, 3, WHITE); uint16_t x1 = LCD_ShowChinese_AutoAlign( btn_x, btn_x + btn_w, 40 + (btn_h - 24) / 2+20, (uint8_t*)"\xB5\xF7\xD2\xF4\xCC\xA8", LCD_ALIGN_CENTER, UI_SET_MODE_TEXT_COLOR, btn_color, 0, 24 ); LCD_WR_PIC_Trans(x1-45, 40 + (btn_h - 24) / 2+10,40,40,gImage_mixer, BLACK); LCD_FillRoundRect(btn_x, 132+20, btn_w, btn_h, btn_r, btn_color); LCD_DrawChevron_Right(200, 195, 15, 3, WHITE); uint8_t x2 = LCD_ShowChinese_AutoAlign( btn_x, btn_x + btn_w, 132 + (btn_h - 24) / 2+20, (uint8_t*)"\xCF\xB5\xCD\xB3\xC9\xE8\xD6\xC3", LCD_ALIGN_CENTER, UI_SET_MODE_TEXT_COLOR, btn_color, 0, 24 ); LCD_WR_PIC_Trans(x2-45, 132 + (btn_h - 24) / 2+10,40,40,gImage_SystemSetting, BLACK); } void UI_SystemSet_Init(void) { UI_ClearFocus(); pCurrentTouch_Area = Touch_SetingSelect_Areas; UI_DrawSysModeSelectScreen(); label_Tab_Select_ui(&UI_Label[GUI_PLAY_SECTION], &mGuiData[GUI_TAB_INDEX]); } void UI_SystemSet_Process(DisplayTaskMessage_Type msg) { static uint32_t s_last_touch_ms; switch(msg.MessageType) { case MSG_ID_TOUCH: { uint32_t now = rt_tick_get() * 1000U / RT_TICK_PER_SECOND; if (now - s_last_touch_ms < 250U) { break; } s_last_touch_ms = now; for(uint8_t k=0; k= pCurrentTouch_Area[k].x_min && msg.HiByte <= pCurrentTouch_Area[k].x_max && msg.LoByte >= pCurrentTouch_Area[k].y_min && msg.LoByte <= pCurrentTouch_Area[k].y_max ) { Touch_Seting_Select_Action(pCurrentTouch_Area[k].Flag,pCurrentTouch_Area[k].ID,k,pCurrentTouch_Area[k].Value); break; } } } break; case MSG_ID_EC_VOL: // //LCD_ShowString(200, 0, Num_To_String(msg.DataU16[1],buff,3), RED, WHITE, 16, 0); // uint8_t vol = msg.DataU16[1]; //// uint8_t level; // if (vol <= 5) level = 0; // else if (vol <= 35) level = 1; // else if (vol <= 65) level = 2; // else if (vol <= 95) level = 3; // else if (vol <= 115) level = 4; // else level = 5; // Draw_Volume_Bar(5, 5, level, 1, WHITE, GRAY); // uint8_t mMasterSysExVolume[12] = { 0xF0, 0x41, 0x00, 0x42, 0x12, 0x40, 0x00, 0x04, 0x64, 0x00, 0x00,0xF7}; // memset(mMasterSysExVolume+8,msg.DataU16[1],1); // SendMidiDataToDreamDSP(mMasterSysExVolume,12); // // ResetAutoPowerCount(); break; } }