aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSol Huebner <solhuebner@users.noreply.github.com>2022-01-10 18:09:06 -0500
committerGitHub <noreply@github.com>2022-01-10 18:09:06 -0500
commite5d7940879899e1f0a334ede8f364793cabbdc25 (patch)
tree8855067691dc2b906c93b3f4ade918b021491644
parent81af2a94cadbf066b7a1fa66080f516e81e05733 (diff)
Fix boundary check of VirtualMatrixPanel getCoords
Oversight from last NO_GFX PR as width() and height() were returning already rotated values. So we need to rotate first and then check if we are still within the boundaries of the virtual panel.
-rw-r--r--ESP32-VirtualMatrixPanel-I2S-DMA.h16
1 files changed, 8 insertions, 8 deletions
diff --git a/ESP32-VirtualMatrixPanel-I2S-DMA.h b/ESP32-VirtualMatrixPanel-I2S-DMA.h
index eac50bf..5862f69 100644
--- a/ESP32-VirtualMatrixPanel-I2S-DMA.h
+++ b/ESP32-VirtualMatrixPanel-I2S-DMA.h
@@ -133,19 +133,19 @@ inline VirtualCoords VirtualMatrixPanel::getCoords(int16_t &x, int16_t &y) {
//Serial.println("Called Base.");
coords.x = coords.y = -1; // By defalt use an invalid co-ordinates that will be rejected by updateMatrixDMABuffer
- if ( x < 0 || x >= virtualResX || y < 0 || y >= virtualResY ) { // Co-ordinates go from 0 to X-1 remember! otherwise they are out of range!
- //Serial.printf("VirtualMatrixPanel::getCoords(): Invalid virtual display coordinate. x,y: %d, %d\r\n", x, y);
- return coords;
- }
-
// We want to rotate?
if (_rotate){
- uint16_t temp_x=x;
+ int16_t temp_x=x;
x=y;
y=virtualResY-1-temp_x;
- }
+ }
+
+ if ( x < 0 || x >= virtualResX || y < 0 || y >= virtualResY ) { // Co-ordinates go from 0 to X-1 remember! otherwise they are out of range!
+ //Serial.printf("VirtualMatrixPanel::getCoords(): Invalid virtual display coordinate. x,y: %d, %d\r\n", x, y);
+ return coords;
+ }
- // Stupidity check
+ // Stupidity check
if ( (vmodule_rows == 1) && (vmodule_cols == 1)) // single panel...
{
coords.x = x;