Fix #2103 and update for latest ESP8266 board package

Fix H and V gradient use in sprite
New ESP8266 board package uses RDUINO_ARCH_ESP8266
old package defined ESP8266
This commit is contained in:
Bodmer
2022-11-03 22:24:00 +00:00
parent 67e41c75f2
commit d3a715da1e
4 changed files with 23 additions and 16 deletions

View File

@ -23,7 +23,7 @@
#else #else
#include "Processors/TFT_eSPI_ESP32.c" #include "Processors/TFT_eSPI_ESP32.c"
#endif #endif
#elif defined (ESP8266) #elif defined (ARDUINO_ARCH_ESP8266)
#include "Processors/TFT_eSPI_ESP8266.c" #include "Processors/TFT_eSPI_ESP8266.c"
#elif defined (STM32) // (_VARIANT_ARDUINO_STM32_) stm32_def.h #elif defined (STM32) // (_VARIANT_ARDUINO_STM32_) stm32_def.h
#include "Processors/TFT_eSPI_STM32.c" #include "Processors/TFT_eSPI_STM32.c"
@ -624,7 +624,7 @@ void TFT_eSPI::init(uint8_t tc)
sclkpinmask = (uint32_t) digitalPinToBitMask(TFT_SCLK); sclkpinmask = (uint32_t) digitalPinToBitMask(TFT_SCLK);
#endif #endif
#if defined (TFT_SPI_OVERLAP) && defined (ESP8266) #if defined (TFT_SPI_OVERLAP) && defined (ARDUINO_ARCH_ESP8266)
// Overlap mode SD0=MISO, SD1=MOSI, CLK=SCLK must use D3 as CS // Overlap mode SD0=MISO, SD1=MOSI, CLK=SCLK must use D3 as CS
// pins(int8_t sck, int8_t miso, int8_t mosi, int8_t ss); // pins(int8_t sck, int8_t miso, int8_t mosi, int8_t ss);
//spi.pins( 6, 7, 8, 0); //spi.pins( 6, 7, 8, 0);
@ -653,7 +653,7 @@ void TFT_eSPI::init(uint8_t tc)
// Set to output once again in case MISO is used for CS // Set to output once again in case MISO is used for CS
pinMode(TFT_CS, OUTPUT); pinMode(TFT_CS, OUTPUT);
digitalWrite(TFT_CS, HIGH); // Chip select high (inactive) digitalWrite(TFT_CS, HIGH); // Chip select high (inactive)
#elif defined (ESP8266) && !defined (TFT_PARALLEL_8_BIT) && !defined (RP2040_PIO_SPI) #elif defined (ARDUINO_ARCH_ESP8266) && !defined (TFT_PARALLEL_8_BIT) && !defined (RP2040_PIO_SPI)
spi.setHwCs(1); // Use hardware SS toggling spi.setHwCs(1); // Use hardware SS toggling
#endif #endif
@ -4112,21 +4112,19 @@ void TFT_eSPI::fillRectVGradient(int16_t x, int16_t y, int16_t w, int16_t h, uin
if ((w < 1) || (h < 1)) return; if ((w < 1) || (h < 1)) return;
begin_tft_write(); begin_nin_write();
setWindow(x, y, x + w - 1, y + h - 1);
float delta = -255.0/h; float delta = -255.0/h;
float alpha = 255.0; float alpha = 255.0;
uint32_t color = color1; uint32_t color = color1;
while (h--) { while (h--) {
pushBlock(color, w); drawFastHLine(x, y++, w, color);
alpha += delta; alpha += delta;
color = alphaBlend((uint8_t)alpha, color1, color2); color = alphaBlend((uint8_t)alpha, color1, color2);
} }
end_tft_write(); end_nin_write();
} }
@ -4152,7 +4150,7 @@ void TFT_eSPI::fillRectHGradient(int16_t x, int16_t y, int16_t w, int16_t h, uin
if ((w < 1) || (h < 1)) return; if ((w < 1) || (h < 1)) return;
begin_tft_write(); begin_nin_write();
float delta = -255.0/w; float delta = -255.0/w;
float alpha = 255.0; float alpha = 255.0;
@ -4164,7 +4162,7 @@ void TFT_eSPI::fillRectHGradient(int16_t x, int16_t y, int16_t w, int16_t h, uin
color = alphaBlend((uint8_t)alpha, color1, color2); color = alphaBlend((uint8_t)alpha, color1, color2);
} }
end_tft_write(); end_nin_write();
} }
@ -4452,7 +4450,7 @@ uint32_t TFT_eSPI::alphaBlend24(uint8_t alpha, uint32_t fgc, uint32_t bgc, uint8
** Description: draw characters piped through serial stream ** Description: draw characters piped through serial stream
***************************************************************************************/ ***************************************************************************************/
/* // Not all processors support buffered write /* // Not all processors support buffered write
#ifndef ESP8266 // Avoid ESP8266 board package bug #ifndef ARDUINO_ARCH_ESP8266 // Avoid ESP8266 board package bug
size_t TFT_eSPI::write(const uint8_t *buf, size_t len) size_t TFT_eSPI::write(const uint8_t *buf, size_t len)
{ {
inTransaction = true; inTransaction = true;

View File

@ -16,7 +16,7 @@
#ifndef _TFT_eSPIH_ #ifndef _TFT_eSPIH_
#define _TFT_eSPIH_ #define _TFT_eSPIH_
#define TFT_ESPI_VERSION "2.4.78" #define TFT_ESPI_VERSION "2.4.79"
// Bit level feature flags // Bit level feature flags
// Bit 0 set: viewport capability // Bit 0 set: viewport capability
@ -40,6 +40,14 @@
#include "TFT_config.h" #include "TFT_config.h"
#endif #endif
// New ESP8266 board package uses ARDUINO_ARCH_ESP8266
// old package defined ESP8266
#if defined (ESP8266)
#ifndef ARDUINO_ARCH_ESP8266
#define ARDUINO_ARCH_ESP8266
#endif
#endif
// The following lines allow the user setup to be included in the sketch folder, see // The following lines allow the user setup to be included in the sketch folder, see
// "Sketch_with_tft_setup" generic example. // "Sketch_with_tft_setup" generic example.
#if !defined __has_include #if !defined __has_include
@ -75,7 +83,7 @@
}) })
#elif defined(__AVR__) #elif defined(__AVR__)
#include <avr/pgmspace.h> #include <avr/pgmspace.h>
#elif defined(ESP8266) || defined(ESP32) #elif defined(ARDUINO_ARCH_ESP8266) || defined(ESP32)
#include <pgmspace.h> #include <pgmspace.h>
#else #else
#define PROGMEM #define PROGMEM
@ -88,7 +96,7 @@
#include "Processors/TFT_eSPI_ESP32_C3.h" #include "Processors/TFT_eSPI_ESP32_C3.h"
#elif defined (ESP32) #elif defined (ESP32)
#include "Processors/TFT_eSPI_ESP32.h" #include "Processors/TFT_eSPI_ESP32.h"
#elif defined (ESP8266) #elif defined (ARDUINO_ARCH_ESP8266)
#include "Processors/TFT_eSPI_ESP8266.h" #include "Processors/TFT_eSPI_ESP8266.h"
#elif defined (STM32) #elif defined (STM32)
#include "Processors/TFT_eSPI_STM32.h" #include "Processors/TFT_eSPI_STM32.h"
@ -678,6 +686,7 @@ class TFT_eSPI : public Print { friend class TFT_eSprite; // Sprite class has ac
// DMA support functions - these are currently just for SPI writes when using the ESP32 or STM32 processors // DMA support functions - these are currently just for SPI writes when using the ESP32 or STM32 processors
// DMA works also on RP2040 and PIO SPI, 8 bit parallel and 16 bit parallel
// Bear in mind DMA will only be of benefit in particular circumstances and can be tricky // Bear in mind DMA will only be of benefit in particular circumstances and can be tricky
// to manage by noobs. The functions have however been designed to be noob friendly and // to manage by noobs. The functions have however been designed to be noob friendly and
// avoid a few DMA behaviour "gotchas". // avoid a few DMA behaviour "gotchas".

View File

@ -1,6 +1,6 @@
{ {
"name": "TFT_eSPI", "name": "TFT_eSPI",
"version": "2.4.78", "version": "2.4.79",
"keywords": "Arduino, tft, display, ttgo, LilyPi, WT32-SC01, ePaper, display, Pico, RP2040 Nano Connect, RP2040, STM32, ESP8266, NodeMCU, ESP32, M5Stack, ILI9341, ST7735, ILI9163, S6D02A1, ILI9481, ILI9486, ILI9488, ST7789, ST7796, RM68140, SSD1351, SSD1963, ILI9225, HX8357D, GC9A01, R61581", "keywords": "Arduino, tft, display, ttgo, LilyPi, WT32-SC01, ePaper, display, Pico, RP2040 Nano Connect, RP2040, STM32, ESP8266, NodeMCU, ESP32, M5Stack, ILI9341, ST7735, ILI9163, S6D02A1, ILI9481, ILI9486, ILI9488, ST7789, ST7796, RM68140, SSD1351, SSD1963, ILI9225, HX8357D, GC9A01, R61581",
"description": "A TFT and ePaper (SPI or parallel interface) graphics library with optimisation for Raspberry Pi Pico, RP2040, ESP8266, ESP32 and STM32 processors", "description": "A TFT and ePaper (SPI or parallel interface) graphics library with optimisation for Raspberry Pi Pico, RP2040, ESP8266, ESP32 and STM32 processors",
"repository": "repository":

View File

@ -1,5 +1,5 @@
name=TFT_eSPI name=TFT_eSPI
version=2.4.78 version=2.4.79
author=Bodmer author=Bodmer
maintainer=Bodmer maintainer=Bodmer
sentence=TFT graphics library for Arduino processors with performance optimisation for RP2040, STM32, ESP8266 and ESP32 sentence=TFT graphics library for Arduino processors with performance optimisation for RP2040, STM32, ESP8266 and ESP32