Commit Graph

203 Commits

Author SHA1 Message Date
Bodmer 58f457ba97 Raise issue 2021-05-24 12:04:03 +01:00
Bodmer 8efb988cda Over-ride SPI pin defaults for RP2040
See #1188
2021-05-16 13:11:11 +01:00
Bodmer 5a6ef1d05d Fix #1188
Support debugged for ILI9488 TFT with RP2040 processors.
Minor improvements to ESP32 code.
2021-05-15 19:45:33 +01:00
Bodmer 233b98aa05 Implement UTF8 switch #1108 2021-04-23 16:51:18 +01:00
Bodmer 715b4de525 Fix #1148 (RP2040 pgmspace.h warnings) 2021-04-21 22:48:21 +01:00
Bodmer fd99db4354 Fix #1094
Allow ESP8266 and RP2040 to use FLASH for pushImage () and 4bpp
2021-04-06 19:38:19 +01:00
Bodmer 16f144ff76 Fix missing macro 2021-04-06 15:16:05 +01:00
Bodmer fce86c0f2e Improve RPi Pico (RP2040) rendering performance 2021-04-05 16:39:33 +01:00
Bodmer f6e90349d8 Add support for Raspberry Pi Pico
Setup file "Setup60_RP2040_ILI9341.h" used for testing with ILI9341 SPI display.
2021-03-30 01:53:27 +01:00
Bodmer cd025dbc79 Fix #1046
ESP32 DMA did not work if MISO pin is not defined in setup file (affected TTGO T-Display setup 21)
2021-03-13 15:03:21 +00:00
Bodmer fef40d9c8b Raise version 2021-02-23 22:48:50 +00:00
Bodmer 0899be91df
Update TFT_eSPI.h 2021-01-22 01:42:58 +00:00
Bodmer 64239999e4 Fix #893 2020-12-31 19:44:33 +00:00
Bodmer 9fec44b6ea Implement #896 plus minor changes
When rendering a smooth font in a sprite the anti-aliasing will pick up the sprite background colour if the text background colour is not set.
2020-12-31 17:58:28 +00:00
Bodmer 8e75cfa83f Fix #893 2020-12-31 00:15:26 +00:00
Bodmer 1c4860dec3 Fix RPI display issue #892
Prevent 18 bit display serial driver being invoked for RPi display
2020-12-29 13:47:28 +00:00
Bodmer acdfeb0b36 Fix #873
Minor performance boost to ESP32 block write
2020-12-23 01:10:11 +00:00
Bodmer 1b54ce87e9 Optional ESP32 DMA engine control of TFT_CS
This change has no impact on examples
See also #850
2020-12-11 21:10:12 +00:00
Bodmer 2162936b40 Enable ESP32 DMA controlled TFT_CS
ESP32 DMA will hold TFT_CS low automatically.
STM32 will not do this and requires bracketing DMA transfers with startWrite and endWrite as in examples.
2020-12-07 17:43:40 +00:00
Bodmer ad0130309c Add pushToSprite with transparent colour
New function:
pushToSprite(TFT_eSprite *spr, int32_t x, int32_t y, uint16_t transp)
// Note: The following sprite to sprite colour depths are currently supported:
//    Source    Destination
//    16bpp  -> 16bpp
//    16bpp  ->  8bpp
//     8bpp  ->  8bpp
//     1bpp  ->  1bpp
2020-12-02 13:39:19 +00:00
Bodmer 42e6fc87ff Feature update
Add ILI9225 support
Add viewport feature to Sprites
Rationalise common TFT_eSPI and Sprite functions and variables to use inherited functions width(), height(), rotation(), write(), pivot, cursor, swapBytes.
2020-12-01 20:06:32 +00:00
Bodmer 27216f89cc Raise version 2020-12-01 13:25:08 +00:00
Bodmer d6e573c230 Fix SPI ILI9481
ILI9481 with 8 bit parallel worked OK but SPI needs an 18 bit colour interface.
2020-11-25 22:54:30 +00:00
Bodmer f96c42253c Add support for choosing colour order on ST7735
See #639
2020-11-02 17:59:04 +00:00
Bodmer c8c6317241 Add off-screen support to readRect()
See #803
2020-10-25 15:56:13 +00:00
Bodmer b1f8cae069 Finalise viewport changes 2020-10-13 13:35:03 +01:00
Bodmer 505ca81a70 Complete viewport update 2020-10-11 22:36:02 +01:00
Bodmer 13d217dc89 Add viewport feature
2 new example sketches added for viewport demonstration
2020-10-06 00:51:41 +01:00
Bodmer 22ca8193c5 Improve RLE font rendering
See #766
2020-10-02 22:00:03 +01:00
Bodmer ef93dbe687 Make ST7789 drivers consistent
Simplified driver ST7789_2_DRIVER not supports 135 x 240 display.
This will not fix #763 since user specifies alternative ST7789_DRIVER which already supports 135x240 displays.
2020-10-02 20:47:00 +01:00
Bodmer 49cef1f35d Support for SSD1963 and ST7706 SPI read
The SSD1963 support has been tested with a 480x800 pixel display from Buy Display.
Support for reading an ST7796 SPI display has been added.
pushToSprite added to keywords list.
2020-10-02 01:07:15 +01:00
Bodmer d7fdcc0991 Fix #740 and #704
#740: To avoid ambiguity the pushSprite for writing a sprite to another sprite has been renamed pushToSprite

#704: Change to 18 bit colurs for SSD1963 with SPI interface

Remove outdated TFT_SPIFFS_Jpeg example
2020-09-07 22:04:42 +01:00
Bodmer 731228d13a Fix deleteSprite
Fixes #736 and also delete color map even if the sprite has not been created.
2020-08-28 21:18:26 +01:00
Bodmer 1c66d306d5 Add SSD1963 for #704
Remove setWindow optimisation clash with TFT_eFEX
2020-08-15 00:19:03 +01:00
Bodmer a8cd5c5d91 Correct TFT_eFEX issue 24 2020-08-06 12:51:10 +01:00
Bodmer dc114db01b Srite class updates + others
Add 2 new pushSprite functions:
1. Sprite to sprite
2. windowed are of sprite to screen
Examples to follow
Bug fixes to sprite class
2020-08-05 20:06:44 +01:00
Bodmer 90cabab91a Update to aid use of ESP32 with multiple displays #687
Fix issue when using ESP32 & using multiple TFT displays & not defining TFT_CS.

Note: Future support for multiple displays in all possible hardware combinations may not be practical.
2020-07-09 14:20:34 +01:00
Bodmer a6d50ea5ef #682 Add created() function for sprites
New function added:
  bool created(void);
to check if sprite has been rotated. Example:

if ( !spr.created() ) Serial.println("Sprite has not been created");
2020-07-07 00:52:55 +01:00
Bodmer a3fea4299e
Raise version 2020-06-19 10:07:59 +01:00
Bodmer 24750c605d Add option to use STM32 SPI port 2
See new #define options in "Setup29_ILI9341_STM32.h"
2020-06-13 21:05:47 +01:00
Bodmer 284f52b009 Allow partially of screen RLE fonts 2020-06-11 22:34:22 +01:00
Bodmer fb86ae4d1b Update Read_User_Setup add #648
Read_User_Setup now includes backlight settings
2020-06-06 14:55:02 +01:00
Bodmer 21aa38b87f Update version 2020-06-05 16:43:48 +01:00
Bodmer cd10a92f11 Allow ESP32 SPI pins to be undefined
See #618
2020-05-13 18:28:44 +01:00
Bodmer 1314a34c3d Fix #625
pushRect() reinstated to pair with readRect() so swapBytes does not need to be changed from true to false before calling.
2020-05-13 16:33:12 +01:00
Bodmer 7e4566f3f2 Raise version to 2.2.6 2020-05-10 00:19:12 +01:00
Bodmer cc4f35f8c1 ESP32 DMA update
dmaBusy() checks and is no longer blocking
pushImageDMA() faster if setAddrWindow is not built into transaction list.
2020-05-08 21:25:38 +01:00
Bodmer f6748bf906 Add ESP32 SPI DMA capability
DMA test examples now work on ESP32
2020-05-05 21:21:28 +01:00
Bodmer fb2e669d37 1,4,8 bpp Sprites requite different default swapBytes settings 2020-05-01 22:38:14 +01:00
Bodmer 90af737fa1 Fix #606 inconsistency + others
TFT_eFEX also needs updating so Rotated_Sprite_3 example renders correctly.

pushImage for FLASH images updated so partly off-screen images are correctly rendered.
2020-04-26 17:05:19 +01:00
Bodmer e937a3496f Diagnostic sketch update + others
Read_User_Setup updated to be compatible with STM32 and new structure format.
Reduction in compiler warnings
Update Sprite destructor
Update version to 2.2.1
2020-04-16 14:33:42 +01:00
Bodmer 875b451590 Fix Sprite 1bpp scroll bug
Sprite scroll function fixed for 1bpp
readPixelValue() updated

Performance of circle drawing functions improved.

Version raised to 2.2.0
2020-03-30 21:51:26 +01:00
Bodmer 732bdd32eb Port A+B and BRR update
PortA and Port B direction control now works on all STM processors.
Correct BRR to BSRR to support all STM processors.
2020-03-27 21:59:18 +00:00
Bodmer 89bf0ce6c1 Fix #581 plus
Update 4 bit Sprite code
Update Animate_Dial example to use italic font with minimised character set, add original jpeg graphic.
Raise to 2.1.8
2020-03-25 14:27:38 +00:00
Bodmer 7f7cc24b00 Add new animated dial example
See Sprite "Animated_dial" example.
2020-03-20 00:30:12 +00:00
Bodmer ac8845d589 Fix #566 plus others
Fix image rendering issue.
Deprecate use of pushColors.
Improve ES8266 image rendering performance for ESP8266 and ILI9488.
Add getTextPadding().
2020-03-07 16:26:44 +00:00
Bodmer 65ccbf0139 STM32 update
Boost performance for ILI9488 display with STM32 processors.
Enable smooth fonts in setup files (smooth fonts for STM32 processors is now supported with fonts in program memory)
2020-03-02 22:25:39 +00:00
Bodmer ed160f6476 Raise version 2020-03-01 18:42:01 +00:00
Bodmer 8d163618bb Add parallel TFT readRectRGB(), fix #548 2020-02-17 21:43:13 +00:00
Bodmer da9de94fb1 Raise version 2020-02-16 17:07:55 +00:00
Bodmer 0fd8803ba2 Add smooth fonts in program memory for ESP32/8266
The 4 new smooth font  "Font_Demo_1/2/3/4_Array" examples now work on ESP32 and ESP8266.
2020-02-15 23:58:21 +00:00
Bodmer c689b4211d Add FLASH based anti-aliased fonts
Processors (such as STM32) that are not supported by a SPIFFS library can now use anti-aliased (smooth) fonts stored in FLASH (program) memory.
2020-02-14 23:54:37 +00:00
Bodmer 443be934a7 Add PSRAM switch
Typical use to disable use of PSRAM for the sprite storage:
sprite.setAttribute(PSRAM_ENABLE, false); // true to enable
Minor update for recent button class update
2020-02-06 20:34:36 +00:00
Bodmer 15c137633a Raise version add comments for button update 2020-02-06 13:38:03 +00:00
Bodmer 8146ac3015
Move include for User_Setup_Select.h (#537)
Requested change in #537
2020-02-02 17:32:46 +00:00
Bodmer c8530d7ae4 4 bpp Sprite bug fix
OR has precedence over AND so brackets needed.
Remove unused varaible.
2020-02-01 01:43:16 +00:00
Bodmer 8209c00316 Add new alphaBlend functions
Added 24 bit colour handling alphaBlend to reduce precision loss in multiple blend stages (e.g. in 2D colour gradients). Added option for alpha dither to reduce colour banding in gradients with 16 bit colours.

Get rid of compile warnings.
2020-01-30 16:01:36 +00:00
Bodmer 0e0fd75277 Raise to version 2.0.0
The library has been cleaned up as it has got a bit untidy due to the large number of small incremental changes.

4bit Sprite examples renaed to be consistent with others.

alphaBlend example moved to generic folder (alphaBlend fn was moved to TFT_eSPI class).
Added sections + explanatory comments to functions prototypes.

Temporary comments added for potential gotchas for noobs when using DMA.

spi_begin/end functions renamed to reflect functionality. Old fns  retained for backwards compatibility with user setup.h files.
2020-01-26 21:17:49 +00:00
kamorris e019b6dcf6 added color maps and examples 2020-01-24 22:07:45 -08:00
Bodmer 7f53a571f4 Add STM32 and generic processor support 2020-01-11 23:32:10 +00:00
Bodmer 1476da56ba Restructured code, added ST7796
RPi MHS-4.0 inch Display-B type display now supported.
2020-01-11 00:58:38 +00:00
Bodmer d02fe55c46
Fix #503
The s60sc Adafruit_Touch library fork for the ESP32 parallel mode uses the TFT_WR pin as an analogue input to read the screen resistance.  The TFT_eSPI library kept TFT_CS low permanently for performance reasons, but when used with the touch library a low analogue value on the TFT_WR pin will write spurious data to the display. 

This change toggle TFT_CS so it is only low during TFT parallel bus writes. The performance reduction is small.
2020-01-02 11:53:50 +00:00
Bodmer 5bb14ba2d8 Add new callback for smooth font antialiasing
Callback allows anitaliased fonts to be rendered over colour gradients
or images.
"Smooth_font_reading_TFT" example added
"Smooth_font_gradient" example added
Minor changes to avoid signed/unsigned comparison warnings.
2019-11-10 02:23:22 +00:00
Bodmer 27b6509f27 Raise version 2019-10-22 23:02:41 +01:00
Bodmer e9d405ea1f Fix image cropping bug plus minor update
Images/sprites overlapping both sides of the display were not correctly
cropped.
Option added to allow RGB<>BGR colourr swap option to be used.
ESP8266 Wemos D1 R1 pin numbering difference accomodated.
TTGO T4 setup changed to use HSPI port.
2019-10-21 22:56:35 +01:00
Bodmer 4f68cf90e8
update diagnostic version number 2019-08-08 09:56:52 +01:00
Bodmer 197c408d7d
Corrrect byte swap for 18 bit colours 2019-05-19 09:22:04 +01:00
Bodmer 9f17920115 Add ESP32 SD support for smooth font plus performance updates
Added SD card storage for smooth fonts with ESP32
ESP32 will use PSRAM (if available and enabled) to hold smooth font
metrics
Improve performance of ESP32 Sprite shared functions
Add basic ST7789 driver option
Latent bug fixes for pin mask
2019-04-15 12:23:16 +01:00
Bodmer e17ba463c9 Add UTF-8 on/off control via new setAttribute function
No change to legacy sketches meeded, UTF-8 decoding is on by default.
Add colour test example.
2019-02-17 22:35:49 +00:00
Bodmer 26d7e4038a Fix touch screen handler
The touch screen handler was broken for the ESP8266 only. The library
uses SPI write only configuration for ESP8266 so the SPI buffer can be
recycled and it was left in write only mode. The library now switches
back to read & write mode at the end of a transaction.
2019-02-14 00:32:16 +00:00
Bodmer 35a402f6a8 Raise issue in header 2019-02-10 21:38:34 +00:00
Bodmer 1e1e888fa0 Support extended font formats
Adafruit_GFX font support extended to Unidode Basic Multilingual Plane
Print stream deocdes UTF-8
Smooth font ascent and descent (affects line spacing) changed to rely on
metrics provided by Processing IDE (issue #303)
Bug fix for font rendering with no background on RLE native fonts
2019-02-10 21:36:40 +00:00
Bodmer b5a74a016a
Fix #301 2019-02-10 01:25:34 +00:00
Bodmer 091d8cd231 Fix issue #297
There is a bug in the ESP8266 Arduino core that averwrites the overlap
mode setup and hold bits for the hardware driven SPI SS line.  The
TFT_eSPI library has been patched as a work-around.

In overlap mode to maintain the required setup and hold times at 80MHz
ESP8266 CPU clock the SPI rate must be 27MHz or less. At 160MHz CPU
clock the SPI rate can be 40MHz.
2019-02-03 21:54:24 +00:00
Bodmer caef4519f3 Improve bounds checking update CS management
Add bounds checking to graphics functions
Rationalise variable types and style used to minimse type casting needs
(this change ended up being a more extensive refactoring than
anticipated - but once started...)
Add version reporting to diagnostic sketch
Boost PDQ graphicstest performance
2019-01-25 14:25:40 +00:00
Bodmer 11ef56d48c Test slower DC and CS lines for a user 2019-01-23 20:55:04 +00:00
Bodmer 054a824eb8 Add ESP32 VSPI or HSPI port option + others
If the VSPI port is in use and pins are not accessible (e.g. TTGO
T-Beam)
then add or uncomment the following line in the setup header file:
//#define USE_HSPI_PORT

Minor performance tweaks for ESP32 to minimise the occurence of the slow
transaction overhead.

setAddrWindow now takes xstart, ystart, width and height as inputs

Multi-sample raw touch x and y for noisy displays

Example update for setAddrWindow change compatibility
2019-01-22 18:41:31 +00:00
Bodmer 05359a4dff Misc updates
Speed up Sprite rotation on an ESP32
Update utf8 serial decoder to handle illegal format strings
Remove need for D0_USED_FOR_xx (issue #271)
Clean up setup files
Correct various comment typos
2019-01-06 17:45:06 +00:00
Bodmer 96228cbf44 Add Sprite rotation and examples
Sprites can be rendered rotated with defined pivot points, 3 new
examples have been added "Rotated_Sprite_1/2/3".
The FLASH bitmap example has been moved to the Generic examples folder.
Boundary checks have been added to pushImage()
A new scrolling and wrapping in a Sprite example has been added.
2019-01-06 01:14:10 +00:00
Bodmer e0aa312dfa Slow down the RPi strobes but keep fast for other displays 2018-11-28 22:23:52 +00:00
Bodmer d23f0b00c0
Correct typo causing error message 2018-11-28 01:02:15 +00:00
Bodmer 467d1dc3c5 Fix issue #260 2018-11-26 19:50:52 +00:00
Bodmer beda811a3a Add R61581 driver as detailed in #238
Not tested by Bodmer, tested by s60sc as in #238
2018-11-25 19:41:29 +00:00
Bodmer e01ea43baf Fix SPI incompatibility
I fixed the parallel and broke the SPI, now both work!
2018-11-25 03:47:54 +00:00
Bodmer 5e62875ff5 Fix issue #256
Parallel compatibility lost during recent updates.
Now working again.
2018-11-25 03:15:16 +00:00
Bodmer d13f84e4a6 Re-work the support for bi-directional SDA line
Tested on ESP32 and ST7789V display only. It may not work with other
displays!

Use:
#define TFT_SDA_READ

in setup file to use bi-directional SDA pin support.
2018-11-24 01:30:41 +00:00
Bodmer 1cf2305e4d Add capability to read TFT SDA bi-directional pin
Tested on an ESP32 with ST7789V display
SDA read is very slow on an ESP8266 (to be investigated)
Added new setup #define TFT_SDA_READ
Add new ESP32 and ESP8266 compatible in example/Generic folder to test
capture of TFT screen
2018-11-23 03:09:07 +00:00
Bodmer ac7a229301 Remove setAddressWindow change for ESP32
Corner case caused missed graphics.
2018-11-16 00:54:51 +00:00
Bodmer 7a3d6bcab9 Minor performance improvements for ESP32
Remove legacy changes for double buffered SPI
Eliminate unecessary ESP32 SPI read/modify write
Eliminate two stage control bit changes (may impact some diplays with
setup/hold  timing and show ESP32 hardware register bug?)
Add single register write for CS and DC command
Make setAddrWindow smarter (as used in previous AVR library)
Improve compatibility with GFX sketches
Re-arrange comments slightly to improve positioning
2018-11-14 01:05:16 +00:00
Bodmer 1a0b37097a Add new anti-aliased (smooth) font examples + bug fixes
Four new examples have been added to show different methods of rendering
the anta-aliased fonts.  A few minor bugs have been corrected associated
with the font rendering. drawNumber and drawFloat handle fixed width
mono fonts with no digit movement.
2018-10-21 17:53:27 +01:00