From 1edfe6c680b7602e12d0fa3f1d3e633c97d84d4b Mon Sep 17 00:00:00 2001 From: Bodmer Date: Wed, 20 Feb 2019 00:45:02 +0000 Subject: [PATCH] Fic #311 Pixel function used wrong width and height for bounds check. Remove String variable in smooth font code (not used) Correct ESP8266UncannyEyes example for new setAddrWindow parameters --- Extensions/Smooth_font.cpp | 6 ++---- Extensions/Smooth_font.h | 2 -- Extensions/Sprite.cpp | 7 ++++++- .../Generic/ESP8266_uncannyEyes/ESP8266_uncannyEyes.ino | 2 +- library.json | 2 +- library.properties | 2 +- 6 files changed, 11 insertions(+), 10 deletions(-) diff --git a/Extensions/Smooth_font.cpp b/Extensions/Smooth_font.cpp index 8d7628f..f63b45c 100644 --- a/Extensions/Smooth_font.cpp +++ b/Extensions/Smooth_font.cpp @@ -76,15 +76,13 @@ void TFT_eSPI::loadFont(String fontName) unloadFont(); - _gFontFilename = "/" + fontName + ".vlw"; - // Avoid a crash on the ESP32 if the file does not exist - if (SPIFFS.exists(_gFontFilename) == false) { + if (SPIFFS.exists("/" + fontName + ".vlw") == false) { Serial.println("Font file " + fontName + " not found!"); return; } - fontFile = SPIFFS.open( _gFontFilename, "r"); + fontFile = SPIFFS.open( "/" + fontName + ".vlw", "r"); if(!fontFile) return; diff --git a/Extensions/Smooth_font.h b/Extensions/Smooth_font.h index 1bc9fd2..aa51855 100644 --- a/Extensions/Smooth_font.h +++ b/Extensions/Smooth_font.h @@ -39,8 +39,6 @@ fontMetrics gFont = { 0, 0, 0, 0, 0, 0, 0 }; int8_t* gdX = NULL; //leftExtent uint32_t* gBitmap = NULL; //file pointer to greyscale bitmap - String _gFontFilename; - bool fontLoaded = false; // Flags when a anti-aliased font is loaded private: diff --git a/Extensions/Sprite.cpp b/Extensions/Sprite.cpp index 3782775..f389141 100644 --- a/Extensions/Sprite.cpp +++ b/Extensions/Sprite.cpp @@ -1059,6 +1059,8 @@ int16_t TFT_eSprite::height(void) // Does nothing for 8 and 16 bpp sprites. TODO allow rotation of these sprites void TFT_eSprite::setRotation(uint8_t rotation) { + if (_bpp != 1) return; + _rotation = rotation; if (rotation == 0 && _iwidth > _iheight) swap_coord(_iwidth, _iheight); if (rotation == 1 && _iwidth < _iheight) swap_coord(_iwidth, _iheight); @@ -1085,19 +1087,22 @@ uint8_t TFT_eSprite::getRotation(void) void TFT_eSprite::drawPixel(int32_t x, int32_t y, uint32_t color) { // Range checking - if ((x < 0) || (y < 0) ||(x >= _width) || (y >= _height) || !_created) return; + if ((x < 0) || (y < 0) || !_created) return; if (_bpp == 16) { + if ((x >= _iwidth) || (y >= _iheight)) return; color = (color >> 8) | (color << 8); _img[x+y*_iwidth] = (uint16_t) color; } else if (_bpp == 8) { + if ((x >= _iwidth) || (y >= _iheight)) return; _img8[x+y*_iwidth] = (uint8_t)((color & 0xE000)>>8 | (color & 0x0700)>>6 | (color & 0x0018)>>3); } else // 1 bpp { + if ((x >= _dwidth) || (y >= _dheight)) return; if (_rotation == 1) { uint16_t tx = x; diff --git a/examples/Generic/ESP8266_uncannyEyes/ESP8266_uncannyEyes.ino b/examples/Generic/ESP8266_uncannyEyes/ESP8266_uncannyEyes.ino index 4d5d4e7..0e3654e 100644 --- a/examples/Generic/ESP8266_uncannyEyes/ESP8266_uncannyEyes.ino +++ b/examples/Generic/ESP8266_uncannyEyes/ESP8266_uncannyEyes.ino @@ -141,7 +141,7 @@ void drawEye( // Renders one eye. Inputs must be pre-clipped & valid. // reset on each frame here in case of an SPI glitch. //eye[e].tft.setAddrWindow(319-127, 0, 319, 127); - eye[e].tft.setAddrWindow(0, 0, 128, 128); + eye[e].tft.setAddrWindow(0, 0, 127, 127); //digitalWrite(eye[e].cs, LOW); // Chip select diff --git a/library.json b/library.json index 09ec816..6381bb3 100644 --- a/library.json +++ b/library.json @@ -1,6 +1,6 @@ { "name": "TFT_eSPI", - "version": "1.4.6", + "version": "1.4.7", "keywords": "tft, ePaper, display, ESP8266, NodeMCU, ESP32, M5Stack, ILI9341, ST7735, ILI9163, S6D02A1, ILI9486, ST7789", "description": "A TFT and ePaper SPI graphics library for ESP8266 and ESP32", "repository": diff --git a/library.properties b/library.properties index 09b3308..f4e7a65 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=TFT_eSPI -version=1.4.6 +version=1.4.7 author=Bodmer maintainer=Bodmer sentence=A fast TFT graphics library for ESP8266 and ESP32 processors for the Arduino IDE