From ee91f723e7479543893456d3d211a7ad15980c0a Mon Sep 17 00:00:00 2001 From: Bodmer Date: Tue, 6 Oct 2020 20:00:59 +0100 Subject: [PATCH] Update DMA fn clipping for viewport --- Processors/TFT_eSPI_ESP32.c | 10 +++++----- Processors/TFT_eSPI_STM32.c | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Processors/TFT_eSPI_ESP32.c b/Processors/TFT_eSPI_ESP32.c index b866d28..0711351 100644 --- a/Processors/TFT_eSPI_ESP32.c +++ b/Processors/TFT_eSPI_ESP32.c @@ -575,18 +575,18 @@ void TFT_eSPI::pushPixelsDMA(uint16_t* image, uint32_t len) // This will clip and also swap bytes if setSwapBytes(true) was called by sketch void TFT_eSPI::pushImageDMA(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t* image, uint16_t* buffer) { - if ((x >= _width) || (y >= _height) || (!DMA_Enabled)) return; + if ((x >= _vpW) || (y >= _vpH) || (!DMA_Enabled)) return; int32_t dx = 0; int32_t dy = 0; int32_t dw = w; int32_t dh = h; - if (x < 0) { dw += x; dx = -x; x = 0; } - if (y < 0) { dh += y; dy = -y; y = 0; } + if (x < _vpX) { dx = _vpX - x; dw -= dx; x = _vpX; } + if (y < _vpY) { dy = _vpY - y; dh -= dy; y = _vpY; } - if ((x + dw) > _width ) dw = _width - x; - if ((y + dh) > _height) dh = _height - y; + if ((x + dw) > _vpW ) dw = _vpW - x; + if ((y + dh) > _vpH ) dh = _vpH - y; if (dw < 1 || dh < 1) return; diff --git a/Processors/TFT_eSPI_STM32.c b/Processors/TFT_eSPI_STM32.c index dc42e67..0cc1ab6 100644 --- a/Processors/TFT_eSPI_STM32.c +++ b/Processors/TFT_eSPI_STM32.c @@ -437,18 +437,18 @@ void TFT_eSPI::pushPixelsDMA(uint16_t* image, uint32_t len) // This will clip and also swap bytes if setSwapBytes(true) was called by sketch void TFT_eSPI::pushImageDMA(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t* image, uint16_t* buffer) { - if ((x >= _width) || (y >= _height)) return; + if ((x >= _vpW) || (y >= _vpH)) return; int32_t dx = 0; int32_t dy = 0; int32_t dw = w; int32_t dh = h; - if (x < 0) { dw += x; dx = -x; x = 0; } - if (y < 0) { dh += y; dy = -y; y = 0; } + if (x < _vpX) { dx = _vpX - x; dw -= dx; x = _vpX; } + if (y < _vpY) { dy = _vpY - y; dh -= dy; y = _vpY; } - if ((x + dw) > _width ) dw = _width - x; - if ((y + dh) > _height) dh = _height - y; + if ((x + dw) > _vpW ) dw = _vpW - x; + if ((y + dh) > _vpH ) dh = _vpH - y; if (dw < 1 || dh < 1) return;