Commit Graph

201 Commits

Author SHA1 Message Date
Bodmer
66bcbb2669 Fix #1013 2021-02-19 22:49:19 +00:00
Bodmer
a40e053662 Fix #1012 2021-02-19 22:04:24 +00:00
Bodmer
04b8ae9096
Correct missing ; 2020-12-04 20:15:45 +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
3b39bf10c3 Fix #846 2020-12-01 02:07:14 +00:00
Bodmer
d6be490735 Add ILI9255 driver 2020-11-25 23:18:54 +00:00
Bodmer
c8c6317241 Add off-screen support to readRect()
See #803
2020-10-25 15:56:13 +00:00
Bodmer
1c1ec8cfa3 #774 add GC9A01 driver
Driver added
Setup46 added
2020-10-25 12:52:37 +00:00
Bodmer
e4e17b9af1 Correct fillCircle function 2020-10-19 16:21:00 +01: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
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
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
7861a0206e Add missing // 2020-06-15 13:54:45 +01:00
Bodmer
8cb59566d4 Add multi TFT option support for issue #663
Avoid coordinate optimisation for sketch controlled multiple TFT displays. Add #define MULTI_TFT_SUPPORT
to prevent setAddr optimisation that relies on coordinate transfer minimisation.
2020-06-15 12:22:38 +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
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
fb2e669d37 1,4,8 bpp Sprites requite different default swapBytes settings 2020-05-01 22:38:14 +01:00
Bodmer
1f2d4b0a75 Issue #510 part STM32F103 workaround 2020-05-01 20:57:03 +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
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
8d163618bb Add parallel TFT readRectRGB(), fix #548 2020-02-17 21:43:13 +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
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
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
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
6459ddbeea
#503 additional update 2020-01-02 12:38:50 +00:00
Bodmer
3115285b05
Issue #505
ILI9488 not compliant to datasheet with extra clock pulse?
2020-01-02 00:50:49 +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
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
d3210a7ee6 Fix #417 and add for 135x240 display
Setup 135 is for TTGO T Display (ESP32)
Plus minor tweaks to avoid some warnings
2019-10-07 17:56:17 +01:00
Bodmer
00bf69fc48 Correct #400 and #402 + other tweaks
Corrected font 2 rendering issue #402
Corrected NULL pointer issue #400
Changed grave ` character (key for this character is left of numeral 1
key) to degree symbol in font 2
Change setup24 so DC pin is not D3
2019-07-30 15:56:55 +01:00
Bodmer
af4a96a47a Fix #402 2019-07-24 01:42:56 +01:00
Ricard Bitria Ribes
f14ee2cd9f Add new driver RM68140
-Added new RM68140 480x320 TFT. It works like ILI9481 but needed some changes to make setRotation() work properly.
-Fixed some PlatformIO warnings
2019-07-20 20:57:22 +02:00
Bodmer
da349a5fbd Minor changes 2019-06-03 23:31:04 +01:00
Bodmer
f6dad6e4ab
ESP8266 compiler compatibility update #361 2019-05-19 10:29:21 +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
46425b83bc Fix bug in UTF-8 line buffer decoder 2019-02-22 00:13:40 +00:00
Bodmer
66a21cb761 Fix ESP8266 core library issue reported in #310 2019-02-19 00:16:39 +00: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
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
6a42e4b16d
Remove debug lines to fix rendering part of #303 2019-02-10 11:06:40 +00:00
Bodmer
61dfb2b4ac Extended character set suport for Adafruit_GFX format fonts
Supports Adafruit_GFX compatible font format with characters in the range 32-255.

Note that the font rendering functions expect UTF-8 encoded characters/strings.
2019-02-08 18:25:55 +00:00
Bodmer
7479f7e680 Fix transparent Sprite rendering 2019-02-04 01:48:53 +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
e8a0024054
Fix issue #295 2019-01-25 13:03:28 +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
b5db54dc79
Fix #293 for ESP8266 core 2.4.2 and later
UTFT8 encoded Unicode values were not being drawn on screen with versions after 2.4.1 of the ESP8266 core.
2019-01-22 11:46:04 +00:00
Bodmer
4e6736e596 Add backlight support
The backlight control pin and ON state can be defined in the setup.h
file. Addresses #229, #226, #221

Comments updated and ILI9488 warning added.
2019-01-06 19:03:31 +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
71a222f704
Fix #276
Fixes warning/error that is only reported with certain compiler warning flag settings ("All" in Arduino IDE).
2018-12-26 16:46:54 +00:00
Bodmer
2a02c81c69
Fix #267 2018-12-03 21:09:54 +00:00
Bodmer
41dea61bfd Correct #263, add setup file for 160x80 TFT, add invert option
Fixed bug where wrong wodth was returned for 1bpp Sprite
Improved speed for copying a 1bpp Sprite into another 1bpp Sprite (
affects Sprite pushImage() function only)
Added option to setup for colour inversion
2018-11-30 23:27:10 +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
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
3d5ff73690 Fix issue #224 2018-10-24 10:00:33 +01:00
Bodmer
d18a5a0c8f Revert "Fix issue #225"
This reverts commit 1e1525010e.
2018-10-24 09:59:26 +01:00
Bodmer
1e1525010e Fix issue #225 2018-10-24 09:58:28 +01: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
Bodmer
1fd8d4cd6d Fix issue #216 2018-10-11 23:46:19 +01:00
Bodmer
73c1831e7b Add option for a different TFT read SPI frequency
#define SPI_READ_FREQUENCY  20000000 // Optional reduced SPI frequency
for reading TFT

Also weeded out some compiler warnings
2018-07-29 15:00:09 +01:00
Bodmer
40e2c8dc74 Update so read TFT works for ILI9488 SPI display
Small performance improvement for ILI9488
2018-07-11 20:30:39 +01:00
Bodmer
5b0d96d64d Completed support for SPI ILI9488
Setup20 added for ESP8266 and Setup21 addwd for ESP32
2018-07-07 22:41:53 +01:00
Bodmer
51ed23af0f Support ST7789 rotation offset and boards with no chip select
Other minor changes to tidy code up
Put back in ability to call init() multiple times in sketch
2018-07-06 18:48:24 +01:00
Bodmer
53119823f9 Add support for ST7789 display (240 x 240) 2018-06-01 18:26:09 +01:00
Bodmer
f2686a9024
Try alternative drawLine for HX8357D display as noted in issue #149 2018-05-29 22:06:14 +01:00
Bodmer
4a52f5e685 Add ability to set ST7735 tab color from sketch
Use line is form:
tft.init(1);
or:
tft.init(INITR_REDTAB);
// Enumerated the configurations in library are:
#define INITR_GREENTAB
0x0
#define INITR_REDTAB    0x1
#define INITR_BLACKTAB  0x2
#define
INITR_GREENTAB2 0x3 // Use if you get random pixels on two edges of
green tab display
#define INITR_GREENTAB3 0x4 // Use if you get random
pixels on edge(s) of 128x128 screen
#define INITR_GREENTAB128 0x5 // Use
if you only get part of 128x128 screen in rotation 0 & 1
#define INITB
0xB
2018-05-25 22:48:22 +01:00
Bodmer
54b3f0f63d Add drawXBitmap() function and example
Example is in Generic folder, draw the Espressif logo on the screen.
2018-04-23 17:16:18 +01:00
Bodmer
4d181d7a19 Fix bug #122 by different approach 2018-04-21 09:50:41 +01:00
Bodmer
f56184e9cd Add diagnostic sketches
Do not load button class is touch screen chip select not defined
2018-04-11 01:03:26 +01:00
Bodmer
ada678d76e Added Waveshare ePaper support
Also added ability to push 1bpp bitmaps to a Sprite to support rendering
images on an EPaper screen.

Floyd-Steinberg dithering and basic graphics example added as first
ePaper demo.
2018-04-02 02:53:42 +01:00
Bodmer
9276b0162d Add support for 1 bit per pixel in Sprite class
This is stage one of support for ePaper displays from Waveshare.
Examples for 1 bit per pixel Sprites and 2 or 3 colour ePaper displays
to follow soon.
2018-03-26 01:02:23 +01:00
Bodmer
972d852346 Correct issue #104 and update setup files
Macro name (transfer16) conflict with SPI library fixed
Smooth font option added to User Setup files
Narrow font 8 option added to User Setup files
2018-03-12 22:49:18 +00:00
Bodmer
a00011c2df Add 8 bit parallel TFT support for ESP32
Add interface driver macro
Add 8 bit parallel support
Add 8 bit parallel read support
Add ILI9481, ILI9488 and HX8357D drivers
Update version and ReadMe
Update Create_Font processing sketch
Add slightly narrower alternative font 8
2018-03-10 23:08:57 +00:00
Bodmer
8752236ac2 Add smooth (antialiased) fonts 2018-02-24 19:02:20 +00:00
Bodmer
02a902f617
Potential fix for issue #96 2018-02-24 18:35:03 +00:00
Bodmer
8df115ab4d Raise version 2018-02-22 22:33:49 +00:00
Bodmer
f3190fde71 Allow init() to be called in sketch to reset and re-initialise TFT
Solution to Issue #85
2018-01-27 19:22:42 +00:00
Bodmer
139fe8dc4c Stop y wrapping
I need this in my project but will add a switch.
2018-01-27 14:20:22 +00:00
Bodmer
1f84ab0885 Reinstate 8bit pushColors()
Permits backwards compatibility
2018-01-27 13:46:59 +00:00
Bodmer
b2e4e69f7a Fix Issue #81 2018-01-27 02:35:25 +00:00
Bodmer
6c993f8fd2 Add getCursorX() and getCursorY() functions
As requested in Issue #79

Function names are compatible with Adafruit_GFX

Also trimmed out duplicate keywords
2018-01-26 15:19:40 +00:00
Bodmer
aa2c79a25f Performance enhancements, new functions, bug fixes
1. Ability to swap bytes in pushColors() and pushImage()
2. pushImage() will handle FLASH stroed images
3. pushImage() will accept a transparent color
4. pushRect() deprecated but still works
5. setSwapBytes() to set swapping bytes in color for pushImage() and
pushColors() true or false
6. getSwapBytes() returns swap bytes parameter
7. fillCircle() and fillCircleHelper() changed to use horizontal lines
to speed up plotting in a sprite
8. fillTriangle bug fix by moving spi_begin()
9  Small performance improvement to setAddrWindow()
10. pushColor() bug fix for swapped bytes
11. pushColors() performance improvement for ESP8266 and add optional
byte swap parameter, accepts higher pixel count
12. move spi_begin() later in drawLine() incase fn returns early
13. add spi_end() in drawLine incdae return occurs early
14. Add color332() fn to convert 16 bit to 8 bit colour
15. Sprite: createSprite() checks if sprite already created and returns
pointer if it does
16. Sprite: one extra "off-screen pixel added to a sprite to point
out-of-bounds setWindow coords to
this avoids extra bounds checks in push/write color
17. Sprite: setColorDepth allows changing of depthe for existing sprtie
and returns a new pointer to the new sprite
18. Sprite: pushImage() accepts a swapped byte parameter
19. Sprite: setSwapBytes() to set swapping bytes in color for
pushImage() and pushColors() true or false
20. Sprite: getSwapBytes() returns swap bytes parameter
21. Sprite: setWindow deals with duff out of sprite coords.
22. Sprite: bug in draw char corrected which could draw too many
over-writing pixels
2018-01-08 23:19:42 +00:00