Commit fb2e669d authored by Bodmer's avatar Bodmer

1,4,8 bpp Sprites requite different default swapBytes settings

parent 1f2d4b0a
...@@ -1132,6 +1132,8 @@ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *da ...@@ -1132,6 +1132,8 @@ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *da
if (bpp8) if (bpp8)
{ {
bool swap = _swapBytes; _swapBytes = false;
uint8_t blue[] = {0, 11, 21, 31}; // blue 2 to 5 bit colour lookup table uint8_t blue[] = {0, 11, 21, 31}; // blue 2 to 5 bit colour lookup table
_lastColor = -1; // Set to illegal value _lastColor = -1; // Set to illegal value
...@@ -1166,8 +1168,9 @@ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *da ...@@ -1166,8 +1168,9 @@ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *da
data += w; data += w;
} }
_swapBytes = swap; // Restore old value
} }
else if (cmap != nullptr) else if (cmap != nullptr) // Must be 4bpp
{ {
bool swap = _swapBytes; _swapBytes = true; bool swap = _swapBytes; _swapBytes = true;
...@@ -1218,8 +1221,9 @@ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *da ...@@ -1218,8 +1221,9 @@ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *da
} }
_swapBytes = swap; // Restore old value _swapBytes = swap; // Restore old value
} }
else else // Must be 1bpp
{ {
bool swap = _swapBytes; _swapBytes = false;
while (dh--) { while (dh--) {
w = (w+7) & 0xFFF8; w = (w+7) & 0xFFF8;
...@@ -1246,6 +1250,7 @@ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *da ...@@ -1246,6 +1250,7 @@ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *da
dy++; dy++;
} }
_swapBytes = swap; // Restore old value
} }
inTransaction = false; inTransaction = false;
...@@ -1283,6 +1288,8 @@ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *da ...@@ -1283,6 +1288,8 @@ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *da
uint16_t lineBuf[dw]; uint16_t lineBuf[dw];
if (bpp8) { // 8 bits per pixel if (bpp8) { // 8 bits per pixel
bool swap = _swapBytes; _swapBytes = false;
data += dx + dy * w; data += dx + dy * w;
uint8_t blue[] = {0, 11, 21, 31}; // blue 2 to 5 bit colour lookup table uint8_t blue[] = {0, 11, 21, 31}; // blue 2 to 5 bit colour lookup table
...@@ -1337,6 +1344,7 @@ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *da ...@@ -1337,6 +1344,7 @@ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *da
y++; y++;
data += w; data += w;
} }
_swapBytes = swap; // Restore old value
} }
else if (cmap != nullptr) // 4bpp with color map else if (cmap != nullptr) // 4bpp with color map
{ {
...@@ -1430,6 +1438,7 @@ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *da ...@@ -1430,6 +1438,7 @@ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *da
_swapBytes = swap; // Restore old value _swapBytes = swap; // Restore old value
} }
else { // 1 bit per pixel else { // 1 bit per pixel
bool swap = _swapBytes; _swapBytes = false;
w = (w+7) & 0xFFF8; w = (w+7) & 0xFFF8;
while (dh--) { while (dh--) {
int32_t px = x; int32_t px = x;
...@@ -1469,6 +1478,7 @@ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *da ...@@ -1469,6 +1478,7 @@ void TFT_eSPI::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint8_t *da
y++; y++;
dy++; dy++;
} }
_swapBytes = swap; // Restore old value
} }
inTransaction = false; inTransaction = false;
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
#ifndef _TFT_eSPIH_ #ifndef _TFT_eSPIH_
#define _TFT_eSPIH_ #define _TFT_eSPIH_
#define TFT_ESPI_VERSION "2.2.2" #define TFT_ESPI_VERSION "2.2.3"
/*************************************************************************************** /***************************************************************************************
** Section 1: Load required header files ** Section 1: Load required header files
......
{ {
"name": "TFT_eSPI", "name": "TFT_eSPI",
"version": "2.2.2", "version": "2.2.3",
"keywords": "Arduino, tft, ePaper, display, STM32, ESP8266, NodeMCU, ESP32, M5Stack, ILI9341, ST7735, ILI9163, S6D02A1, ILI9486, ST7789, RM68140", "keywords": "Arduino, tft, ePaper, display, STM32, ESP8266, NodeMCU, ESP32, M5Stack, ILI9341, ST7735, ILI9163, S6D02A1, ILI9486, ST7789, RM68140",
"description": "A TFT and ePaper SPI graphics library with optimisation for ESP8266, ESP32 and STM32", "description": "A TFT and ePaper SPI graphics library with optimisation for ESP8266, ESP32 and STM32",
"repository": "repository":
......
name=TFT_eSPI name=TFT_eSPI
version=2.2.2 version=2.2.3
author=Bodmer author=Bodmer
maintainer=Bodmer maintainer=Bodmer
sentence=TFT graphics library for Arduino processors with performance optimisation for STM32, ESP8266 and ESP32 sentence=TFT graphics library for Arduino processors with performance optimisation for STM32, ESP8266 and ESP32
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment