Merge pull request #1 from eduard-sukharev/bed_level_grid_rendering
Add option for compact bed level grid view
This commit is contained in:
@@ -168,6 +168,7 @@
|
||||
#define HIGH_SPEED 1 //高速模式 1:打开高速模式 150mm/s; 0:低速模式 80mm/s
|
||||
#define HIGH_SPEED_1 1 //只开关高速的宏
|
||||
#define SHOW_GRID_VALUES 1 //1 显示自动调平网格值 0 不显示自动调平网格值
|
||||
#define COMPACT_GRID_VALUES 1 // 0 - original Creality style, 1 - compact style for tight grids
|
||||
#define K8_EXTRUDER 0 //1 是K8挤出机 0 是精灵挤出机
|
||||
#define USER_LEVEL_CHECK 1 // 调平校准使能
|
||||
#define WUHAN_CHENGE_PLATFORM 1 // 武汉改平台板 20230913_Rock
|
||||
|
||||
@@ -552,16 +552,32 @@ static void Show_JPN_pause_title(void)
|
||||
|
||||
void DWIN_Draw_Z_Offset_Float(uint8_t size, uint16_t color,uint16_t bcolor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, long value)
|
||||
{
|
||||
if (value < 0)
|
||||
{
|
||||
DWIN_Draw_FloatValue(true, true, 0, size, color, bcolor, iNum, fNum, x+2, y, -value);
|
||||
DWIN_Draw_String(false, true, font6x12, color, bcolor, x+2, y, F("-"));
|
||||
}
|
||||
else
|
||||
{
|
||||
DWIN_Draw_FloatValue(true, true, 0, size, color, bcolor, iNum, fNum, x+1, y, value);
|
||||
DWIN_Draw_String(false, true, font6x12, color, bcolor, x, y, F(""));
|
||||
}
|
||||
#if ENABLED(COMPACT_GRID_VALUES)
|
||||
char valueStr[48] = "\0";
|
||||
if (value < 0)
|
||||
{
|
||||
DWIN_Draw_String(false, true, font6x12, bcolor == Color_Bg_Black ? Color_Blue : color, bcolor, x+5, y, F("-")); // draw minus sign above
|
||||
value *= -1;
|
||||
} else {
|
||||
DWIN_Draw_String(false, true, font6x12, bcolor == Color_Bg_Black ? Color_Red : color, bcolor, x+5, y, F("+")); // draw plus sign above
|
||||
}
|
||||
if (value < 100) {
|
||||
sprintf_P(valueStr, ".%02d", static_cast<int>(value & 0xFF));
|
||||
} else {
|
||||
sprintf_P(valueStr, "%d.%d", static_cast<int>((value & 0xFF) / 100), static_cast<int>(((value & 0xFF) % 100) / 10));
|
||||
}
|
||||
DWIN_Draw_String(false, true, size, color, bcolor, x, y+8, F(valueStr));
|
||||
#else // COMPACT_GRID_VALUES
|
||||
if (value < 0)
|
||||
{
|
||||
DWIN_Draw_FloatValue(true, true, 0, size, color, bcolor, iNum, fNum, x+1, y, -value);
|
||||
DWIN_Draw_String(false, true, font6x12, color, bcolor, x, y, F("-"));
|
||||
}
|
||||
else
|
||||
{
|
||||
DWIN_Draw_FloatValue(true, true, 0, size, color, bcolor, iNum, fNum, x, y, value);
|
||||
}
|
||||
#endif // COMPACT_GRID_VALUES
|
||||
}
|
||||
#endif
|
||||
void DWIN_Draw_Signed_Float(uint8_t size, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, long value)
|
||||
@@ -2269,16 +2285,14 @@ static uint16_t Choose_BG_Color(float offset_value)
|
||||
if(checkkey!=Leveling&&checkkey!=Level_Value_Edit)return;//只有在调平界面才运行显示调平值
|
||||
|
||||
//计算矩形区域
|
||||
rec_LU_x=Rect_LU_X_POS+mesh_Count->x*X_Axis_Interval;
|
||||
// rec_LU_y=Rect_LU_Y_POS+mesh_Count->y*Y_Axis_Interval;
|
||||
rec_LU_y=Rect_LU_Y_POS-mesh_Count->y*Y_Axis_Interval;
|
||||
rec_RD_x=Rect_RD_X_POS+mesh_Count->x*X_Axis_Interval;
|
||||
// rec_RD_y=Rect_RD_Y_POS+mesh_Count->y*Y_Axis_Interval;
|
||||
rec_RD_y=Rect_RD_Y_POS-mesh_Count->y*Y_Axis_Interval;
|
||||
rec_LU_x=Rect_LU_X_POS + mesh_Count->x * X_Axis_Interval;
|
||||
rec_LU_y=Rect_LU_Y_POS - mesh_Count->y * Y_Axis_Interval;
|
||||
rec_RD_x=Rect_RD_X_POS + mesh_Count->x * X_Axis_Interval;
|
||||
rec_RD_y=Rect_RD_Y_POS - mesh_Count->y * Y_Axis_Interval;
|
||||
//补偿值的位置
|
||||
value_LU_x=rec_LU_x+1;
|
||||
// value_LU_y=rec_LU_y+4;
|
||||
value_LU_y=rec_LU_y+(rec_RD_y-rec_LU_y)/2-6;
|
||||
value_LU_x = rec_LU_x + (rec_RD_x - rec_LU_x) / 2 - CELL_TEXT_WIDTH / 2;
|
||||
value_LU_y = rec_LU_y + (rec_RD_y - rec_LU_y) / 2 - CELL_TEXT_HEIGHT / 2 + 1;
|
||||
|
||||
//填充颜色
|
||||
if(!Set_En)rec_fill_color=Choose_BG_Color(z_offset_value);//自动设置
|
||||
else if(1==Set_En)rec_fill_color=Set_BG_Color; //手动填充选中块颜色,
|
||||
@@ -5745,16 +5759,14 @@ void HMI_Levling_Change()
|
||||
{
|
||||
xy_int8_t mesh_Count=Converted_Grid_Point(select_level.now); //转换网格点
|
||||
//计算矩形区域
|
||||
rec_LU_x=Rect_LU_X_POS+mesh_Count.x*X_Axis_Interval;
|
||||
// rec_LU_y=Rect_LU_Y_POS+mesh_Count.y*Y_Axis_Interval;
|
||||
rec_LU_y=Rect_LU_Y_POS-mesh_Count.y*Y_Axis_Interval;
|
||||
rec_RD_x=Rect_RD_X_POS+mesh_Count.x*X_Axis_Interval;
|
||||
// rec_RD_y=Rect_RD_Y_POS+mesh_Count.y*Y_Axis_Interval;
|
||||
rec_RD_y=Rect_RD_Y_POS-mesh_Count.y*Y_Axis_Interval;
|
||||
rec_LU_x=Rect_LU_X_POS + mesh_Count.x * X_Axis_Interval;
|
||||
rec_LU_y=Rect_LU_Y_POS - mesh_Count.y * Y_Axis_Interval;
|
||||
rec_RD_x=Rect_RD_X_POS + mesh_Count.x * X_Axis_Interval;
|
||||
rec_RD_y=Rect_RD_Y_POS - mesh_Count.y * Y_Axis_Interval;
|
||||
//补偿值的位置
|
||||
value_LU_x=rec_LU_x+1;
|
||||
// value_LU_y=rec_LU_y+4;
|
||||
value_LU_y=rec_LU_y+(rec_RD_y-rec_LU_y)/2-6;
|
||||
value_LU_x = rec_LU_x + (rec_RD_x - rec_LU_x) / 2 - CELL_TEXT_WIDTH / 2;
|
||||
value_LU_y = rec_LU_y + (rec_RD_y - rec_LU_y) / 2 - CELL_TEXT_HEIGHT / 2 + 1;
|
||||
|
||||
if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Temp_Leveling_Value)) //点击了确认键
|
||||
{
|
||||
checkkey = Leveling;
|
||||
@@ -5813,16 +5825,14 @@ void HMI_Levling_Change()
|
||||
{
|
||||
xy_int8_t mesh_Count=Converted_Grid_Point(select_level.now); //转换网格点
|
||||
//计算矩形区域
|
||||
rec_LU_x=Rect_LU_X_POS+mesh_Count.x*X_Axis_Interval;
|
||||
// rec_LU_y=Rect_LU_Y_POS+mesh_Count.y*Y_Axis_Interval;
|
||||
rec_LU_y=Rect_LU_Y_POS-mesh_Count.y*Y_Axis_Interval;
|
||||
rec_RD_x=Rect_RD_X_POS+mesh_Count.x*X_Axis_Interval;
|
||||
// rec_RD_y=Rect_RD_Y_POS+mesh_Count.y*Y_Axis_Interval;
|
||||
rec_RD_y=Rect_RD_Y_POS-mesh_Count.y*Y_Axis_Interval;
|
||||
rec_LU_x=Rect_LU_X_POS + mesh_Count.x * X_Axis_Interval;
|
||||
rec_LU_y=Rect_LU_Y_POS - mesh_Count.y * Y_Axis_Interval;
|
||||
rec_RD_x=Rect_RD_X_POS + mesh_Count.x * X_Axis_Interval;
|
||||
rec_RD_y=Rect_RD_Y_POS - mesh_Count.y * Y_Axis_Interval;
|
||||
//补偿值的位置
|
||||
value_LU_x=rec_LU_x+1;
|
||||
// value_LU_y=rec_LU_y+4;
|
||||
value_LU_y=rec_LU_y+(rec_RD_y-rec_LU_y)/2-6;
|
||||
value_LU_x = rec_LU_x + (rec_RD_x - rec_LU_x) / 2 - CELL_TEXT_WIDTH / 2;
|
||||
value_LU_y = rec_LU_y + (rec_RD_y - rec_LU_y) / 2 - CELL_TEXT_HEIGHT / 2 + 1;
|
||||
|
||||
//临时代码 需要继续优化
|
||||
// xy_int8_t mesh_Count=Converted_Grid_Point(select_level.now); //转换网格点
|
||||
Draw_Dots_On_Screen(&mesh_Count,2,Select_Color); //设置字体背景色,不改变选中块颜色
|
||||
|
||||
@@ -601,6 +601,8 @@ extern enum DC_language current_language;
|
||||
// Color FE29
|
||||
#define Color_White 0xFFFF
|
||||
#define Color_Yellow 0xFE29
|
||||
#define Color_Blue 0x19FF
|
||||
#define Color_Red 0xF44F
|
||||
#define Color_Bg_Window 0x31E8 // Popup background color
|
||||
#define Color_Bg_Blue 0x1145 // Dark blue background color
|
||||
#define Color_Bg_Black 0x0841 // Black background color
|
||||
|
||||
@@ -4,35 +4,108 @@
|
||||
|
||||
#if ENABLED(DWIN_CREALITY_480_LCD) //
|
||||
|
||||
#elif ENABLED(DWIN_CREALITY_320_LCD)//3.2寸屏幕
|
||||
//主界面
|
||||
#define LOGO_LITTLE_X 72 //小LOGO坐标
|
||||
#elif ENABLED(DWIN_CREALITY_320_LCD) //3.2-inch screen
|
||||
//Main Interface
|
||||
//Coordinates of the small logo
|
||||
#define LOGO_LITTLE_X 72
|
||||
#define LOGO_LITTLE_Y 36
|
||||
//自动调平界面
|
||||
//编辑调平页面
|
||||
//Auto-Leveling Interface
|
||||
//Edit Leveling Page
|
||||
#define WORD_TITLE_X 29
|
||||
#define WORD_TITLE_Y 1
|
||||
#define OUTLINE_LEFT_X 12//40
|
||||
#define OUTLINE_LEFT_Y 30//72
|
||||
#define OUTLINE_RIGHT_X OUTLINE_LEFT_X+220//OUTLINE_LEFT_X+200//OUTLINE_LEFT_X+160
|
||||
#define OUTLINE_RIGHT_Y OUTLINE_LEFT_Y+220//OUTLINE_LEFT_Y+160
|
||||
#if GRID_MAX_POINTS_X <= 5
|
||||
#define OUTLINE_HORIZONTAL_MARGIN 12
|
||||
#else
|
||||
#define OUTLINE_HORIZONTAL_MARGIN 2
|
||||
#endif
|
||||
#define OUTLINE_INNER_WIDTH (DWIN_WIDTH - (OUTLINE_HORIZONTAL_MARGIN * 2))
|
||||
#define OUTLINE_INNER_HEIGHT 220
|
||||
#define OUTLINE_LEFT_X OUTLINE_HORIZONTAL_MARGIN
|
||||
#define OUTLINE_LEFT_Y 30
|
||||
#define OUTLINE_RIGHT_X (OUTLINE_HORIZONTAL_MARGIN + OUTLINE_INNER_WIDTH)
|
||||
#define OUTLINE_RIGHT_Y (OUTLINE_LEFT_Y + OUTLINE_INNER_HEIGHT)
|
||||
//button——position
|
||||
#define BUTTON_W 82
|
||||
#define BUTTON_H 32
|
||||
#define BUTTON_EDIT_X OUTLINE_LEFT_X
|
||||
#define BUTTON_EDIT_Y OUTLINE_RIGHT_Y+20//OUTLINE_RIGHT_Y+27
|
||||
#define BUTTON_EDIT_Y OUTLINE_RIGHT_Y+20
|
||||
#define BUTTON_OK_X OUTLINE_RIGHT_X-BUTTON_W
|
||||
#define BUTTON_OK_Y BUTTON_EDIT_Y//
|
||||
//数据坐标
|
||||
#define X_Axis_Interval 50//54 //x轴上间隔距离像素
|
||||
#define Y_Axis_Interval 52//35 //y轴上间隔距离像素
|
||||
#define Rect_LU_X_POS OUTLINE_LEFT_X+10//32 //第一个左上x坐标
|
||||
// #define Rect_LU_Y_POS OUTLINE_LEFT_Y+10//157-4 //第一个左上y坐标
|
||||
#define Rect_LU_Y_POS (OUTLINE_LEFT_Y+20)+3*Y_Axis_Interval//157-4 //第一个左上y坐标
|
||||
#define BUTTON_OK_Y BUTTON_EDIT_Y
|
||||
//data coordinates
|
||||
|
||||
#define Rect_RD_X_POS Rect_LU_X_POS+45//X_Axis_Interval//X_Axis_Interval//78 //第一个右下x坐标
|
||||
// #define Rect_RD_Y_POS Rect_LU_Y_POS+20//Y_Axis_Interval//Y_Axis_Interval//177-4 //第一个右下y坐标
|
||||
#define Rect_RD_Y_POS (Rect_LU_Y_POS+30)//Y_Axis_Interval//Y_Axis_Interval//177-4 //第一个右下y坐标
|
||||
#if ENABLED(SHOW_GRID_VALUES) && GRID_MAX_POINTS_X >= 7 && DISABLED(COMPACT_GRID_VALUES)
|
||||
#error "Cannot fit GRID_MAX_POINTS_X >= 7 into LCD screen. Either set GRID_MAX_POINTS_X to lower value or enable COMPACT_GRID_VALUES"
|
||||
#endif
|
||||
#if ENABLED(SHOW_GRID_VALUES) && GRID_MAX_POINTS_X > 10
|
||||
#error "Cannot fit GRID_MAX_POINTS_X > 10 into LCD screen. Either set GRID_MAX_POINTS_X to lower value or disable SHOW_GRID_VALUES"
|
||||
#endif
|
||||
#if ENABLED(SHOW_GRID_VALUES) && GRID_MAX_POINTS_Y > 10
|
||||
#error "Cannot fit GRID_MAX_POINTS_Y > 10 into LCD screen. Either set GRID_MAX_POINTS_Y to lower value or disable SHOW_GRID_VALUES"
|
||||
#endif
|
||||
|
||||
#if ENABLED(COMPACT_GRID_VALUES)
|
||||
#define CELL_TEXT_WIDTH (3 * 8 + 1) // ".00" or "1.0" gives maximum 3 chars of 8x12 font per cell
|
||||
#define CELL_TEXT_HEIGHT 22 // 12px for character height of 8x12 font + 10px for padding per cell
|
||||
#else // COMPACT_GRID_VALUES
|
||||
#define CELL_TEXT_WIDTH (5 * 8) // "-0.00" gives maximum 5 chars of 8x12 font per cell
|
||||
#define CELL_TEXT_HEIGHT 14 // 12px for character height of 8x12 font + 14px for padding per cell
|
||||
#endif // COMPACT_GRID_VALUES
|
||||
|
||||
#define _TOTAL_MIN_CELL_WIDTH (CELL_TEXT_WIDTH * GRID_MAX_POINTS_X)
|
||||
#define _TOTAL_MIN_CELL_HEIGHT (CELL_TEXT_HEIGHT * GRID_MAX_POINTS_Y)
|
||||
|
||||
#define _SPACE_TO_SPREAD_HORIZONTAL (OUTLINE_INNER_WIDTH - _TOTAL_MIN_CELL_WIDTH)
|
||||
#define _SPACE_TO_SPREAD_VERTICAL (OUTLINE_INNER_HEIGHT - _TOTAL_MIN_CELL_HEIGHT)
|
||||
|
||||
#if (_SPACE_TO_SPREAD_HORIZONTAL / (GRID_MAX_POINTS_X + GRID_MAX_POINTS_X + 1)) != 0 // allocate space evenly to celss and cell spacing and outer spacing
|
||||
#define _CELL_GROW_HORIZONTAL (_SPACE_TO_SPREAD_HORIZONTAL / (GRID_MAX_POINTS_X + GRID_MAX_POINTS_X + 1))
|
||||
#define _CELL_SPACING_HORIZONTAL (_SPACE_TO_SPREAD_HORIZONTAL / (GRID_MAX_POINTS_X + GRID_MAX_POINTS_X + 1))
|
||||
#elif (_SPACE_TO_SPREAD_HORIZONTAL / (GRID_MAX_POINTS_X + GRID_MAX_POINTS_X - 1)) != 0 // allocate space evenly to celss and cell spacing
|
||||
#define _CELL_GROW_HORIZONTAL (_SPACE_TO_SPREAD_HORIZONTAL / (GRID_MAX_POINTS_X + GRID_MAX_POINTS_X - 1))
|
||||
#define _CELL_SPACING_HORIZONTAL (_SPACE_TO_SPREAD_HORIZONTAL / (GRID_MAX_POINTS_X + GRID_MAX_POINTS_X - 1))
|
||||
#elif (_SPACE_TO_SPREAD_HORIZONTAL / GRID_MAX_POINTS_X) != 0 // allocate space evenly to cells
|
||||
#define _CELL_GROW_HORIZONTAL (_SPACE_TO_SPREAD_HORIZONTAL / GRID_MAX_POINTS_X)
|
||||
#define _CELL_SPACING_HORIZONTAL 0
|
||||
#elif (_SPACE_TO_SPREAD_HORIZONTAL / GRID_MAX_POINTS_X - 1) != 0 // allocate space evenly to cell spacing
|
||||
#define _CELL_GROW_HORIZONTAL 0
|
||||
#define _CELL_SPACING_HORIZONTAL (_SPACE_TO_SPREAD_HORIZONTAL / GRID_MAX_POINTS_X - 1)
|
||||
#else
|
||||
#define _CELL_GROW_HORIZONTAL 0
|
||||
#define _CELL_SPACING_HORIZONTAL 0
|
||||
#endif
|
||||
|
||||
#if (_SPACE_TO_SPREAD_VERTICAL / (GRID_MAX_POINTS_Y + GRID_MAX_POINTS_Y + 1)) != 0 // allocate space evenly to celss and cell spacing
|
||||
#define _CELL_GROW_VERTICAL (_SPACE_TO_SPREAD_VERTICAL / (GRID_MAX_POINTS_Y + GRID_MAX_POINTS_Y + 1))
|
||||
#define _CELL_SPACING_VERTICAL (_SPACE_TO_SPREAD_VERTICAL / (GRID_MAX_POINTS_Y + GRID_MAX_POINTS_Y + 1))
|
||||
#elif (_SPACE_TO_SPREAD_VERTICAL / (GRID_MAX_POINTS_Y + GRID_MAX_POINTS_Y - 1)) != 0 // allocate space evenly to celss and cell spacing
|
||||
#define _CELL_GROW_VERTICAL (_SPACE_TO_SPREAD_VERTICAL / (GRID_MAX_POINTS_Y + GRID_MAX_POINTS_Y - 1))
|
||||
#define _CELL_SPACING_VERTICAL (_SPACE_TO_SPREAD_VERTICAL / (GRID_MAX_POINTS_Y + GRID_MAX_POINTS_Y - 1))
|
||||
#elif (_SPACE_TO_SPREAD_VERTICAL / GRID_MAX_POINTS_Y) != 0 // allocate space evenly to cells
|
||||
#define _CELL_GROW_VERTICAL (_SPACE_TO_SPREAD_VERTICAL / GRID_MAX_POINTS_Y)
|
||||
#define _CELL_SPACING_VERTICAL 0
|
||||
#elif (_SPACE_TO_SPREAD_VERTICAL / GRID_MAX_POINTS_Y - 1) != 0 // allocate space evenly to cell spacing
|
||||
#define _CELL_GROW_VERTICAL 0
|
||||
#define _CELL_SPACING_VERTICAL (_SPACE_TO_SPREAD_VERTICAL / GRID_MAX_POINTS_Y - 1)
|
||||
#else
|
||||
#define _CELL_GROW_VERTICAL 0
|
||||
#define _CELL_SPACING_VERTICAL 0
|
||||
#endif
|
||||
|
||||
#define CELL_WIDTH (CELL_TEXT_WIDTH + _CELL_GROW_HORIZONTAL)
|
||||
#define CELL_HEIGHT (CELL_TEXT_HEIGHT + _CELL_GROW_VERTICAL)
|
||||
|
||||
#define X_Axis_Interval (CELL_WIDTH + _CELL_SPACING_HORIZONTAL)
|
||||
#define Y_Axis_Interval (CELL_HEIGHT + _CELL_SPACING_VERTICAL)
|
||||
|
||||
#define _CELLS_WITH_SPACING_WIDTH ((GRID_MAX_POINTS_X * CELL_WIDTH) + ((GRID_MAX_POINTS_X - 1) * _CELL_SPACING_HORIZONTAL))
|
||||
#define _CELLS_WITH_SPACING_HEIGHT ((GRID_MAX_POINTS_Y * CELL_HEIGHT) + ((GRID_MAX_POINTS_Y - 1) * _CELL_SPACING_VERTICAL))
|
||||
#define _OUTLINE_PADDING_HORIZONTAL ((OUTLINE_INNER_WIDTH - _CELLS_WITH_SPACING_WIDTH) / 2)
|
||||
#define _OUTLINE_PADDING_VERTICAL ((OUTLINE_INNER_HEIGHT - _CELLS_WITH_SPACING_HEIGHT) / 2)
|
||||
|
||||
#define Rect_LU_X_POS (OUTLINE_LEFT_X + _OUTLINE_PADDING_HORIZONTAL) // top-left X of the first (bottom-left) cell
|
||||
#define Rect_LU_Y_POS (OUTLINE_LEFT_Y + OUTLINE_INNER_HEIGHT - _OUTLINE_PADDING_VERTICAL - CELL_HEIGHT) // top-left Y of the first (bottom-left) cell
|
||||
#define Rect_RD_X_POS (Rect_LU_X_POS + CELL_WIDTH) // bottom-right X of the first (bottom-left) cell
|
||||
#define Rect_RD_Y_POS (Rect_LU_Y_POS + CELL_HEIGHT) // bottom-right Y of the first (bottom-left) cell
|
||||
|
||||
#define TITLE_X 29
|
||||
#define TITLE_Y 1
|
||||
|
||||
Reference in New Issue
Block a user