STM32H750XB_RT-THREAD/28-电容触摸屏—触摸画板(兼容屏幕版本)/User/touch/palette.h
2025-07-21 14:34:29 +08:00

88 lines
1.9 KiB
C

#ifndef _PALETTE_H
#define _PALETTE_H
#include "stm32h7xx.h"
#include "./lcd/bsp_lcd.h"
#define COLOR_BLOCK_WIDTH lcd_param[cur_lcd].m_palette_btn_width
#define COLOR_BLOCK_HEIGHT lcd_param[cur_lcd].m_palette_btn_height
#define BUTTON_NUM 18
#define PALETTE_START_Y 0
#define PALETTE_END_Y LCD_PIXEL_HEIGHT
#if 1 //按钮栏在左边
#define BUTTON_START_X 0
#define PALETTE_START_X COLOR_BLOCK_WIDTH*2+1
#define PALETTE_END_X LCD_PIXEL_WIDTH
#else //按钮栏在右边,(存在触摸按键时也会的bug仅用于测试触摸屏左边界)
#define BUTTON_START_X LCD_PIXEL_WIDTH-2*COLOR_BLOCK_WIDTH
#define PALETTE_START_X 0
#define PALETTE_END_X LCD_PIXEL_WIDTH-2*COLOR_BLOCK_WIDTH
#endif
typedef struct
{
uint16_t start_x; //按键的x起始坐标
uint16_t start_y; //按键的y起始坐标
uint16_t end_x; //按键的x结束坐标
uint16_t end_y; //按键的y结束坐标
uint32_t para; //颜色按钮中表示选择的颜色,笔迹形状按钮中表示选择的画刷
uint8_t touch_flag; //按键按下的标志
void (*draw_btn)(void * btn); //按键描绘函数
void (*btn_command)(void * btn); //按键功能执行函数,例如切换颜色、画刷
}Touch_Button;
/*画刷形状列表*/
typedef enum
{
LINE_SINGLE_PIXCEL = 0, //单像素线
LINE_2_PIXCEL, //2像素线
LINE_4_PIXCEL, //4像素线
LINE_6_PIXCEL, //6像素线
LINE_8_PIXCEL, //8像素线
LINE_16_PIXCEL, //16像素线
LINE_20_PIXCEL, //20像素线
LINE_WITH_CIRCLE, //珠子连线
RUBBER, //橡皮
}SHAPE;
/*画刷参数*/
typedef struct
{
uint32_t color;
SHAPE shape;
}Brush_Style;
/*brush全局变量在其它文件有使用到*/
extern Brush_Style brush;
void Palette_Init(void);
void Touch_Button_Init(void);
void Touch_Button_Down(uint16_t x,uint16_t y);
void Touch_Button_Up(uint16_t x,uint16_t y);
void Draw_Trail(int16_t pre_x,int16_t pre_y,int16_t x,int16_t y,Brush_Style* brush);
#endif //_PALETTE_H