|
|
@@ -0,0 +1,125 @@
|
|
|
+#include "LGFXDisplay.h"
|
|
|
+
|
|
|
+bool LGFXDisplay::begin() {
|
|
|
+ turnOn();
|
|
|
+ display->init();
|
|
|
+ display->setRotation(1);
|
|
|
+ display->setBrightness(64);
|
|
|
+ display->setColorDepth(8);
|
|
|
+ display->setTextColor(TFT_WHITE);
|
|
|
+
|
|
|
+ buffer.setColorDepth(8);
|
|
|
+ buffer.setPsram(true);
|
|
|
+ buffer.createSprite(width(), height());
|
|
|
+
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
+void LGFXDisplay::turnOn() {
|
|
|
+// display->wakeup();
|
|
|
+ if (!_isOn) {
|
|
|
+ display->wakeup();
|
|
|
+ }
|
|
|
+ _isOn = true;
|
|
|
+}
|
|
|
+
|
|
|
+void LGFXDisplay::turnOff() {
|
|
|
+ if (_isOn) {
|
|
|
+ display->sleep();
|
|
|
+ }
|
|
|
+ _isOn = false;
|
|
|
+}
|
|
|
+
|
|
|
+void LGFXDisplay::clear() {
|
|
|
+// display->clearDisplay();
|
|
|
+ buffer.clearDisplay();
|
|
|
+}
|
|
|
+
|
|
|
+void LGFXDisplay::startFrame(Color bkg) {
|
|
|
+// display->startWrite();
|
|
|
+// display->getScanLine();
|
|
|
+ buffer.clearDisplay();
|
|
|
+ buffer.setTextColor(TFT_WHITE);
|
|
|
+}
|
|
|
+
|
|
|
+void LGFXDisplay::setTextSize(int sz) {
|
|
|
+ buffer.setTextSize(sz);
|
|
|
+}
|
|
|
+
|
|
|
+void LGFXDisplay::setColor(Color c) {
|
|
|
+ // _color = (c != 0) ? ILI9342_WHITE : ILI9342_BLACK;
|
|
|
+ switch (c) {
|
|
|
+ case DARK:
|
|
|
+ _color = TFT_BLACK;
|
|
|
+ break;
|
|
|
+ case LIGHT:
|
|
|
+ _color = TFT_WHITE;
|
|
|
+ break;
|
|
|
+ case RED:
|
|
|
+ _color = TFT_RED;
|
|
|
+ break;
|
|
|
+ case GREEN:
|
|
|
+ _color = TFT_GREEN;
|
|
|
+ break;
|
|
|
+ case BLUE:
|
|
|
+ _color = TFT_BLUE;
|
|
|
+ break;
|
|
|
+ case YELLOW:
|
|
|
+ _color = TFT_YELLOW;
|
|
|
+ break;
|
|
|
+ case ORANGE:
|
|
|
+ _color = TFT_ORANGE;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ _color = TFT_WHITE;
|
|
|
+ }
|
|
|
+ buffer.setTextColor(_color);
|
|
|
+}
|
|
|
+
|
|
|
+void LGFXDisplay::setCursor(int x, int y) {
|
|
|
+ buffer.setCursor(x, y);
|
|
|
+}
|
|
|
+
|
|
|
+void LGFXDisplay::print(const char* str) {
|
|
|
+ buffer.println(str);
|
|
|
+// Serial.println(str);
|
|
|
+}
|
|
|
+
|
|
|
+void LGFXDisplay::fillRect(int x, int y, int w, int h) {
|
|
|
+ buffer.fillRect(x, y, w, h, _color);
|
|
|
+}
|
|
|
+
|
|
|
+void LGFXDisplay::drawRect(int x, int y, int w, int h) {
|
|
|
+ buffer.drawRect(x, y, w, h, _color);
|
|
|
+}
|
|
|
+
|
|
|
+void LGFXDisplay::drawXbm(int x, int y, const uint8_t* bits, int w, int h) {
|
|
|
+ buffer.drawBitmap(x, y, bits, w, h, _color);
|
|
|
+}
|
|
|
+
|
|
|
+uint16_t LGFXDisplay::getTextWidth(const char* str) {
|
|
|
+ return buffer.textWidth(str);
|
|
|
+}
|
|
|
+
|
|
|
+void LGFXDisplay::endFrame() {
|
|
|
+ display->startWrite();
|
|
|
+ if (UI_ZOOM != 1) {
|
|
|
+ buffer.pushRotateZoom(display, display->width()/2, display->height()/2 , 0, UI_ZOOM, UI_ZOOM);
|
|
|
+ } else {
|
|
|
+ buffer.pushSprite(display, 0, 0);
|
|
|
+ }
|
|
|
+ display->endWrite();
|
|
|
+}
|
|
|
+
|
|
|
+bool LGFXDisplay::getTouch(int *x, int *y) {
|
|
|
+ lgfx::v1::touch_point_t point;
|
|
|
+ display->getTouch(&point);
|
|
|
+ if (UI_ZOOM != 1) {
|
|
|
+ *x = point.x / UI_ZOOM;
|
|
|
+ *y = point.y / UI_ZOOM;
|
|
|
+ } else {
|
|
|
+ *x = point.x;
|
|
|
+ *y = point.y;
|
|
|
+ }
|
|
|
+ return (*x >= 0) && (*y >= 0);
|
|
|
+}
|