diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index c54628266..e298ec8d1 100755 --- a/lib/lib_display/UDisplay/uDisplay.cpp +++ b/lib/lib_display/UDisplay/uDisplay.cpp @@ -69,6 +69,7 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) { fg_col = 1; bg_col = 0; splash_font = -1; + rotmap_xmin = -1; allcmd_mode = 0; startline = 0xA1; uint8_t section = 0; @@ -290,6 +291,12 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) { lvgl_param.fluslines = next_val(&lp1); lvgl_param.use_dma = next_val(&lp1); break; + case 'M': + rotmap_xmin = next_val(&lp1); + rotmap_xmax = next_val(&lp1); + rotmap_ymin = next_val(&lp1); + rotmap_ymax = next_val(&lp1); + break; } } } @@ -1372,9 +1379,18 @@ void uDisplay::dim(uint8_t dim) { } +// the cases are PSEUDO_OPCODES from MODULE_DESCRIPTOR +// and may be exapnded with more opcodes void uDisplay::TS_RotConvert(int16_t *x, int16_t *y) { int16_t temp; + if (rotmap_xmin >= 0) { + *y = map(*y, rotmap_ymin, rotmap_ymax, 0, gys); + *x = map(*x, rotmap_xmin, rotmap_xmax, 0, gxs); + } + *x = constrain(*x, 0, gxs); + *y = constrain(*y, 0, gys); + switch (rot_t[cur_rot]) { case 0: break; @@ -1393,6 +1409,7 @@ void uDisplay::TS_RotConvert(int16_t *x, int16_t *y) { *x = width() - temp; break; } + } uint8_t uDisplay::strlen_ln(char *str) { diff --git a/lib/lib_display/UDisplay/uDisplay.h b/lib/lib_display/UDisplay/uDisplay.h index 0d448d546..b0193f7d8 100755 --- a/lib/lib_display/UDisplay/uDisplay.h +++ b/lib/lib_display/UDisplay/uDisplay.h @@ -214,6 +214,10 @@ class uDisplay : public Renderer { uint16_t seta_xp2; uint16_t seta_yp1; uint16_t seta_yp2; + int16_t rotmap_xmin; + int16_t rotmap_xmax; + int16_t rotmap_ymin; + int16_t rotmap_ymax; void pushColorsMono(uint16_t *data, uint16_t len); #ifdef ESP32 // dma section diff --git a/tasmota/displaydesc/ILI9488_XPT2046_display.ini b/tasmota/displaydesc/ILI9488_XPT2046_display.ini new file mode 100644 index 000000000..5d7fbbd5e --- /dev/null +++ b/tasmota/displaydesc/ILI9488_XPT2046_display.ini @@ -0,0 +1,32 @@ +:H,ILI9488,480,320,16,SPI,1,*,*,*,*,*,*,*,10 +:S,2,1,1,0,40,20 +:I +E0,0F,00,03,09,08,16,0A,3F,78,4C,09,0A,08,16,1A,0F +E1,0F,00,16,19,03,0F,05,32,45,46,04,0E,0D,35,37,0F +C0,2,17,15 +C1,1,41 +C5,3,00,12,80 +36,1,48 +3A,1,66 +B0,1,80 +B1,1,A0 +B4,1,02 +B6,2,02,02 +E9,1,00 +F7,4,A9,51,2C,82 +11,80 +29,0 +:o,28 +:O,29 +:A,2A,2B,2C,16 +:R,36 +:0,28,00,00,02 +:1,48,00,00,01 +:2,E8,00,00,00 +:3,88,00,00,03 +:P,18 +:i,20,21 +:TS,16 +:B,20,0 +:M,340,3900,300,3800 +#