XarkLabs / PDQ_GFX_Libs

Optimized fork of Adafruit's GFX library (and drivers) for Arduino (AVR).
114 stars 37 forks source link

PDQ_GFX_Libs with packed font support

Version with special "packed" font support. Also include TTF2GFX for create custom GFX fonts from TTF. Speed up improvement for GFX text drawing about 2-3 times. Allow to create custom fonts with subset of chars (not all ASCII table). Special "packing" algorithm for GFX font allow to save 20-50% of space

PDQ_GFX_Libs

An optimized fork of Adafruit's GFX library (and LCD drivers) for Arduino (AVR).

This is a replacement "re-mix" of the Adafruit GFX library and associated hardware drivers.

Currently supported are ILI9340, ILI9341, ST7735 and ST7781 LCD drivers (and compatible chipsets).

It is between 2.5x and 12x faster than the Adafruit libraries for SPI LCDs, but it aims to be completely "sketch compatible" (so you can easily speed up your sketches that are using Adafruit's library). You just need to change the name of the #include and "tft" object. A version of the Adafruit "benchmark" example is included (PDQ_graphicsbest.ino) with each driver library.

This includes the 1.8", 2.2" and 2.8" SPI TFT LCD boards or "touch shields" that are commonly available from Adafruit and many other vendors. These are commonly 128x128, 128x160 or 240x320 (but the library supports rotation).

I would also like to thank the excellent http://fastled.io/ project for creating the "FastPin.h" template header that allows for full speed GPIO while allowing the use of "friendly" Arduino pin numbering (it is included in the PDQ driver libraries).

New features in latest commit ("v1.1.5" 2016-04-09) include:

New features in latest commit ("v1.0.0" 2015-05-30) include:

Suggestions, issues, bugs and comments welcome. Via https://hackaday.io/Xark or visit #Arduino channel on Freenode.net IRC. I have also posted a write-up about the development of this library at http://hackaday.io/Xark (describes most of the optimizations done).

Issues

Currently, the library may only be used from the INO file in your project. You cannot include it in a header file and use it from other CPP files. The current workaround is to write wrapper functions or classes, declare them in a header file, and then implement them in the INO file.