setRotate implementation changed

setRotate(bool) has been replaced by setRotate(int).
0, 1, 2, 3 int inputs are translated to 0, 90, 180 and 270 degrees rotation.
Documentation not updated.
This commit is contained in:
Dhruv Kumar 2023-03-22 01:38:18 +00:00
parent bd7cc1e217
commit 53ecf54c56

View file

@ -131,7 +131,7 @@ public:
void flipDMABuffer() { display->flipDMABuffer(); }
void drawDisplayTest();
void setRotate(bool rotate);
void setRotate(int rotate);
void setPhysicalPanelScanRate(PANEL_SCAN_RATE rate);
@ -155,7 +155,7 @@ private:
int16_t dmaResX; // The width of the chain in pixels (as the DMA engine sees it)
bool _rotate = false;
int _rotate = 0;
}; // end Class header
@ -172,12 +172,34 @@ inline VirtualCoords VirtualMatrixPanel::getCoords(int16_t &virt_x, int16_t &vir
return coords;
}
// Do we want to rotate?
if (_rotate)
switch (_rotate) {
case 0: //no rotation, do nothing
break;
case (1): //90 degree rotation
{
int16_t temp_x = virt_x;
virt_x = virt_y;
virt_y = virtualResY - 1 - temp_x;
break;
}
case (2): //180 rotation
{
virt_x = virtualResX - 1 - virt_x;
virt_y = virtualResY - 1 - virt_y;
break;
}
case (3): //270 rotation
{
int16_t temp_x = virt_x;
virt_x = virtualResX - 1 - virt_y;
virt_y = temp_x;
break;
}
}
int row = (virt_y / panelResY); // 0 indexed
@ -404,21 +426,10 @@ inline void VirtualMatrixPanel::fillScreen(CRGB color)
}
#endif
inline void VirtualMatrixPanel::setRotate(bool rotate)
inline void VirtualMatrixPanel::setRotate(int rotate)
{
if(rotate < 4 && rotate >= 0)
_rotate = rotate;
#ifndef NO_GFX
// We don't support rotation by degrees.
if (rotate)
{
setRotation(1);
}
else
{
setRotation(0);
}
#endif
}
inline void VirtualMatrixPanel::setPhysicalPanelScanRate(PANEL_SCAN_RATE rate)