diff options
| author | Dhruv Kumar <dhruv.kumar.s17@gmail.com> | 2023-03-22 01:38:18 +0000 |
|---|---|---|
| committer | Dhruv Kumar <dhruv.kumar.s17@gmail.com> | 2023-03-22 01:38:18 +0000 |
| commit | 53ecf54c56babf9d557ff76e0eef254755199060 (patch) | |
| tree | 6a5bba83eaf35f5f1810c7616fe3e7047ef3638c /src | |
| parent | bd7cc1e217482e329ffa17b0676218d4c00aabf9 (diff) | |
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.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ESP32-VirtualMatrixPanel-I2S-DMA.h | 45 |
1 files changed, 28 insertions, 17 deletions
diff --git a/src/ESP32-VirtualMatrixPanel-I2S-DMA.h b/src/ESP32-VirtualMatrixPanel-I2S-DMA.h index 0520c70..411e7e9 100644 --- a/src/ESP32-VirtualMatrixPanel-I2S-DMA.h +++ b/src/ESP32-VirtualMatrixPanel-I2S-DMA.h @@ -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) |
