|
@@ -0,0 +1,321 @@
|
|
|
+
|
|
|
+struct twali_screen {
|
|
|
+ int x;
|
|
|
+ int y;
|
|
|
+ int w;
|
|
|
+ int h;
|
|
|
+ TFT_eSPI * tft;
|
|
|
+};
|
|
|
+
|
|
|
+void twali_screen_clip(struct twali_screen * s, int32_t * x, int32_t * y) {
|
|
|
+ int cx = *x + s->x;
|
|
|
+ int cy = *y + s->y;
|
|
|
+ if cx > (
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+void twali_screen_draw_pixel(struct twali_screen * s, int32_t x, int32_t y, uint32_t color) {
|
|
|
+ s->tft->drawPixel(x, y, color);
|
|
|
+}
|
|
|
+
|
|
|
+void twali_screen_draw_char(struct twali_screen * s, int32_t x, int32_t y, uint16_t c, uint32_t color, uint32_t bg, uint8_t size) {
|
|
|
+ s->tft->drawChar(x, y, c, color, bg, size);
|
|
|
+}
|
|
|
+
|
|
|
+void twali_screen_draw_line(struct twali_screen * s, int32_t x, int32_t y, int32_t w, int32_t h, uint32_t color) {
|
|
|
+ s->tft->drawLine(x, y, x+w, y+h, c, color, bg, size);
|
|
|
+}
|
|
|
+
|
|
|
+ drawChar(int32_t x, int32_t y, uint16_t c, uint32_t color, uint32_t bg, uint8_t size),
|
|
|
+ drawLine(int32_t xs, int32_t ys, int32_t xe, int32_t ye, uint32_t color),
|
|
|
+ drawFastVLine(int32_t x, int32_t y, int32_t h, uint32_t color),
|
|
|
+ drawFastHLine(int32_t x, int32_t y, int32_t w, uint32_t color),
|
|
|
+ fillRect(int32_t x, int32_t y, int32_t w, int32_t h, uint32_t color);
|
|
|
+
|
|
|
+ virtual int16_t drawChar(uint16_t uniCode, int32_t x, int32_t y, uint8_t font),
|
|
|
+ drawChar(uint16_t uniCode, int32_t x, int32_t y),
|
|
|
+ height(void),
|
|
|
+ width(void);
|
|
|
+
|
|
|
+ void setRotation(uint8_t r);
|
|
|
+ uint8_t getRotation(void);
|
|
|
+
|
|
|
+ void invertDisplay(bool i);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ void setAddrWindow(int32_t xs, int32_t ys, int32_t w, int32_t h),
|
|
|
+ setWindow(int32_t xs, int32_t ys, int32_t xe, int32_t ye);
|
|
|
+
|
|
|
+
|
|
|
+ void pushColor(uint16_t color),
|
|
|
+ pushColor(uint16_t color, uint32_t len),
|
|
|
+ pushColors(uint16_t *data, uint32_t len, bool swap = true),
|
|
|
+ pushColors(uint8_t *data, uint32_t len);
|
|
|
+
|
|
|
+
|
|
|
+ void pushBlock(uint16_t color, uint32_t len);
|
|
|
+
|
|
|
+
|
|
|
+ void pushPixels(const void *data_in, uint32_t len);
|
|
|
+
|
|
|
+
|
|
|
+ uint16_t readPixel(int32_t x, int32_t y);
|
|
|
+
|
|
|
+
|
|
|
+#ifdef TFT_SDA_READ
|
|
|
+#if defined (TFT_eSPI_ENABLE_8_BIT_READ)
|
|
|
+ uint8_t tft_Read_8(void);
|
|
|
+#endif
|
|
|
+ void begin_SDA_Read(void);
|
|
|
+ void end_SDA_Read(void);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+ void fillScreen(uint32_t color),
|
|
|
+ drawRect(int32_t x, int32_t y, int32_t w, int32_t h, uint32_t color),
|
|
|
+ drawRoundRect(int32_t x, int32_t y, int32_t w, int32_t h, int32_t radius, uint32_t color),
|
|
|
+ fillRoundRect(int32_t x, int32_t y, int32_t w, int32_t h, int32_t radius, uint32_t color);
|
|
|
+
|
|
|
+
|
|
|
+ void drawCircle(int32_t x, int32_t y, int32_t r, uint32_t color),
|
|
|
+ drawCircleHelper(int32_t x, int32_t y, int32_t r, uint8_t cornername, uint32_t color),
|
|
|
+ fillCircle(int32_t x, int32_t y, int32_t r, uint32_t color),
|
|
|
+ fillCircleHelper(int32_t x, int32_t y, int32_t r, uint8_t cornername, int32_t delta, uint32_t color),
|
|
|
+
|
|
|
+ drawEllipse(int16_t x, int16_t y, int32_t rx, int32_t ry, uint16_t color),
|
|
|
+ fillEllipse(int16_t x, int16_t y, int32_t rx, int32_t ry, uint16_t color),
|
|
|
+
|
|
|
+
|
|
|
+ drawTriangle(int32_t x1, int32_t y1, int32_t x2, int32_t y2, int32_t x3, int32_t y3, uint32_t color),
|
|
|
+ fillTriangle(int32_t x1, int32_t y1, int32_t x2, int32_t y2, int32_t x3, int32_t y3, uint32_t color);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ void setSwapBytes(bool swap);
|
|
|
+ bool getSwapBytes(void);
|
|
|
+
|
|
|
+
|
|
|
+ void drawBitmap( int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t fgcolor),
|
|
|
+ drawBitmap( int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t fgcolor, uint16_t bgcolor),
|
|
|
+ drawXBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t fgcolor),
|
|
|
+ drawXBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t fgcolor, uint16_t bgcolor),
|
|
|
+ setBitmapColor(uint16_t fgcolor, uint16_t bgcolor);
|
|
|
+
|
|
|
+
|
|
|
+ void setPivot(int16_t x, int16_t y);
|
|
|
+ int16_t getPivotX(void),
|
|
|
+ getPivotY(void);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ void readRect(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *data);
|
|
|
+
|
|
|
+ void pushRect(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *data);
|
|
|
+
|
|
|
+
|
|
|
+ void pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *data);
|
|
|
+ void pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *data, uint16_t transparent);
|
|
|
+
|
|
|
+
|
|
|
+ void pushImage(int32_t x, int32_t y, int32_t w, int32_t h, const uint16_t *data, uint16_t transparent);
|
|
|
+ void pushImage(int32_t x, int32_t y, int32_t w, int32_t h, const uint16_t *data);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ void pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *data, bool bpp8 = true, uint16_t *cmap = nullptr);
|
|
|
+ void pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *data, uint8_t transparent, bool bpp8 = true, uint16_t *cmap = nullptr);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ void readRectRGB(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *data);
|
|
|
+
|
|
|
+
|
|
|
+ int16_t drawNumber(long intNumber, int32_t x, int32_t y, uint8_t font),
|
|
|
+ drawNumber(long intNumber, int32_t x, int32_t y),
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ drawFloat(float floatNumber, uint8_t decimal, int32_t x, int32_t y, uint8_t font),
|
|
|
+ drawFloat(float floatNumber, uint8_t decimal, int32_t x, int32_t y),
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ drawString(const char *string, int32_t x, int32_t y, uint8_t font),
|
|
|
+ drawString(const char *string, int32_t x, int32_t y),
|
|
|
+ drawString(const String &string, int32_t x, int32_t y, uint8_t font),
|
|
|
+ drawString(const String &string, int32_t x, int32_t y),
|
|
|
+
|
|
|
+ drawCentreString(const char *string, int32_t x, int32_t y, uint8_t font),
|
|
|
+ drawRightString(const char *string, int32_t x, int32_t y, uint8_t font),
|
|
|
+ drawCentreString(const String &string, int32_t x, int32_t y, uint8_t font),
|
|
|
+ drawRightString(const String &string, int32_t x, int32_t y, uint8_t font);
|
|
|
+
|
|
|
+
|
|
|
+ void setCursor(int16_t x, int16_t y),
|
|
|
+ setCursor(int16_t x, int16_t y, uint8_t font);
|
|
|
+
|
|
|
+ int16_t getCursorX(void),
|
|
|
+ getCursorY(void);
|
|
|
+
|
|
|
+ void setTextColor(uint16_t color),
|
|
|
+ setTextColor(uint16_t fgcolor, uint16_t bgcolor),
|
|
|
+ setTextSize(uint8_t size);
|
|
|
+
|
|
|
+ void setTextWrap(bool wrapX, bool wrapY = false);
|
|
|
+
|
|
|
+ void setTextDatum(uint8_t datum);
|
|
|
+ uint8_t getTextDatum(void);
|
|
|
+
|
|
|
+ void setTextPadding(uint16_t x_width);
|
|
|
+ uint16_t getTextPadding(void);
|
|
|
+
|
|
|
+#ifdef LOAD_GFXFF
|
|
|
+ void setFreeFont(const GFXfont *f = NULL),
|
|
|
+ setTextFont(uint8_t font);
|
|
|
+#else
|
|
|
+ void setFreeFont(uint8_t font),
|
|
|
+ setTextFont(uint8_t font);
|
|
|
+#endif
|
|
|
+
|
|
|
+ int16_t textWidth(const char *string, uint8_t font),
|
|
|
+ textWidth(const char *string),
|
|
|
+ textWidth(const String &string, uint8_t font),
|
|
|
+ textWidth(const String &string),
|
|
|
+ fontHeight(int16_t font),
|
|
|
+ fontHeight(void);
|
|
|
+
|
|
|
+
|
|
|
+ uint16_t decodeUTF8(uint8_t *buf, uint16_t *index, uint16_t remaining),
|
|
|
+ decodeUTF8(uint8_t c);
|
|
|
+
|
|
|
+
|
|
|
+ size_t write(uint8_t);
|
|
|
+
|
|
|
+
|
|
|
+ void setCallback(getColorCallback getCol);
|
|
|
+
|
|
|
+ uint16_t fontsLoaded(void);
|
|
|
+
|
|
|
+
|
|
|
+ void spiwrite(uint8_t);
|
|
|
+
|
|
|
+ void writecommand(uint8_t c),
|
|
|
+ writedata(uint8_t d);
|
|
|
+
|
|
|
+ void commandList(const uint8_t *addr);
|
|
|
+
|
|
|
+ uint8_t readcommand8( uint8_t cmd_function, uint8_t index = 0);
|
|
|
+ uint16_t readcommand16(uint8_t cmd_function, uint8_t index = 0);
|
|
|
+ uint32_t readcommand32(uint8_t cmd_function, uint8_t index = 0);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ uint16_t color565(uint8_t red, uint8_t green, uint8_t blue);
|
|
|
+
|
|
|
+
|
|
|
+ uint16_t color8to16(uint8_t color332);
|
|
|
+
|
|
|
+ uint8_t color16to8(uint16_t color565);
|
|
|
+
|
|
|
+
|
|
|
+ uint32_t color16to24(uint16_t color565);
|
|
|
+ uint32_t color24to16(uint32_t color888);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ uint16_t alphaBlend(uint8_t alpha, uint16_t fgc, uint16_t bgc);
|
|
|
+
|
|
|
+ uint16_t alphaBlend(uint8_t alpha, uint16_t fgc, uint16_t bgc, uint8_t dither);
|
|
|
+
|
|
|
+ uint32_t alphaBlend24(uint8_t alpha, uint32_t fgc, uint32_t bgc, uint8_t dither = 0);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ bool initDMA(void);
|
|
|
+ void deInitDMA(void);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ void pushImageDMA(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *data, uint16_t *buffer = nullptr);
|
|
|
+
|
|
|
+
|
|
|
+ void pushPixelsDMA(uint16_t *image, uint32_t len);
|
|
|
+
|
|
|
+
|
|
|
+ bool dmaBusy(void);
|
|
|
+ void dmaWait(void);
|
|
|
+
|
|
|
+ bool DMA_Enabled = false;
|
|
|
+ uint8_t spiBusyCheck = 0;
|
|
|
+
|
|
|
+
|
|
|
+ void startWrite(void);
|
|
|
+ void writeColor(uint16_t color, uint32_t len);
|
|
|
+ void endWrite(void);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#define CP437_SWITCH 1
|
|
|
+#define UTF8_SWITCH 2
|
|
|
+#define PSRAM_ENABLE 3
|
|
|
+ void setAttribute(uint8_t id = 0, uint8_t a = 0);
|
|
|
+ uint8_t getAttribute(uint8_t id = 0);
|
|
|
+
|
|
|
+
|
|
|
+ void getSetup(setup_t &tft_settings);
|
|
|
+
|
|
|
+
|
|
|
+ static SPIClass &getSPIinstance(void);
|
|
|
+
|
|
|
+ int32_t cursor_x, cursor_y, padX;
|
|
|
+ uint32_t textcolor, textbgcolor;
|
|
|
+
|
|
|
+ uint32_t bitmap_fg, bitmap_bg;
|
|
|
+
|
|
|
+ uint8_t textfont,
|
|
|
+ textsize,
|
|
|
+ textdatum,
|
|
|
+ rotation;
|
|
|
+
|
|
|
+ int16_t _xpivot;
|
|
|
+ int16_t _ypivot;
|
|
|
+
|
|
|
+ uint8_t decoderState = 0;
|
|
|
+ uint16_t decoderBuffer;
|