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.
This commit is contained in:
parent
81af2a94ca
commit
e5d7940879
1 changed files with 8 additions and 8 deletions
|
@ -133,19 +133,19 @@ inline VirtualCoords VirtualMatrixPanel::getCoords(int16_t &x, int16_t &y) {
|
||||||
//Serial.println("Called Base.");
|
//Serial.println("Called Base.");
|
||||||
coords.x = coords.y = -1; // By defalt use an invalid co-ordinates that will be rejected by updateMatrixDMABuffer
|
coords.x = coords.y = -1; // By defalt use an invalid co-ordinates that will be rejected by updateMatrixDMABuffer
|
||||||
|
|
||||||
|
// We want to rotate?
|
||||||
|
if (_rotate){
|
||||||
|
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!
|
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);
|
//Serial.printf("VirtualMatrixPanel::getCoords(): Invalid virtual display coordinate. x,y: %d, %d\r\n", x, y);
|
||||||
return coords;
|
return coords;
|
||||||
}
|
}
|
||||||
|
|
||||||
// We want to rotate?
|
// Stupidity check
|
||||||
if (_rotate){
|
|
||||||
uint16_t temp_x=x;
|
|
||||||
x=y;
|
|
||||||
y=virtualResY-1-temp_x;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Stupidity check
|
|
||||||
if ( (vmodule_rows == 1) && (vmodule_cols == 1)) // single panel...
|
if ( (vmodule_rows == 1) && (vmodule_cols == 1)) // single panel...
|
||||||
{
|
{
|
||||||
coords.x = x;
|
coords.x = x;
|
||||||
|
|
Loading…
Reference in a new issue