diff options
| author | Sol Huebner <solhuebner@users.noreply.github.com> | 2022-01-10 18:09:06 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-10 18:09:06 -0500 |
| commit | e5d7940879899e1f0a334ede8f364793cabbdc25 (patch) | |
| tree | 8855067691dc2b906c93b3f4ade918b021491644 | |
| parent | 81af2a94cadbf066b7a1fa66080f516e81e05733 (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.h | 16 |
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; |
