acid-drop

- Hacking the planet from a LilyGo T-Deck using custom firmware
git clone git://git.acid.vegas/acid-drop.git
Log | Files | Refs | Archive | README | LICENSE

README.md (17897B)

      1 # Arduino_GFX
      2 
      3 Arduino_GFX is a Arduino graphics library supporting various displays with various data bus interfaces.
      4 
      5 This library start rewrite from Adafruit_GFX, LovyanGFX, TFT_eSPI, Ucglib, and more...
      6 
      7 ![GitHub release (latest by date)](https://img.shields.io/github/v/release/moononournation/Arduino_GFX)
      8 ![GitHub Release Date](https://img.shields.io/github/release-date/moononournation/Arduino_GFX)
      9 ![GitHub commits since latest release (by date)](https://img.shields.io/github/commits-since/moononournation/Arduino_GFX/latest)
     10 ![GitHub last commit](https://img.shields.io/github/last-commit/moononournation/Arduino_GFX)
     11 
     12 ![GitHub Sponsors](https://img.shields.io/github/sponsors/moononournation)
     13 ![Twitter Follow](https://img.shields.io/twitter/follow/moononournation)
     14 
     15 ## Ease of use
     16 
     17 ### Simple Declaration
     18 
     19 ```C
     20 #include <Arduino_GFX_Library.h>
     21 Arduino_DataBus *bus = new Arduino_HWSPI(16 /* DC */, 5 /* CS */);
     22 Arduino_GFX *gfx = new Arduino_ILI9341(bus, 17 /* RST */);
     23 ```
     24 
     25 ### And Simple Usage
     26 
     27 ```C
     28 gfx->begin();
     29 gfx->fillScreen(BLACK);
     30 gfx->setCursor(10, 10);
     31 gfx->setTextColor(RED);
     32 gfx->println("Hello World!");
     33 ```
     34 
     35 ## U8g2 Font Support
     36 
     37 [U8g2](https://github.com/olikraus/u8g2.git) proivided various font type and stored in compressed format. So U8g2 font gives more UI design possibilities and still can fit in the MCU limited storage space. Using U8g2 font in Arduino_GFX simply include U8g2lib.h before Arduino_GFX_Library.h:
     38 
     39 ```C
     40 #include <U8g2lib.h>
     41 #include <Arduino_GFX_Library.h>
     42 ```
     43 
     44 And then setfont file to use:
     45 
     46 ```C
     47 gfx->setCursor(10, 20);
     48 gfx->setFont(u8g2_font_maniac_tr);
     49 gfx->println("Hello World!");
     50 ```
     51 
     52 U8g2 font list can be found at: <https://github.com/olikraus/u8g2/wiki/fntlistall>
     53 
     54 ### U8g2 Unicode (UTF8) Font Support
     55 
     56 Another U8g2 font advantage is the font support Unicode glyphs. Simply enable setUTF8Print:
     57 
     58 ```C
     59 gfx->begin();
     60 gfx->fillScreen(BLACK);
     61 gfx->setUTF8Print(true);
     62 ```
     63 
     64 And then print UTF8 string as usual:
     65 
     66 ```C
     67 gfx->setCursor(0, 16);
     68 
     69 gfx->setFont(u8g2_font_unifont_tr);
     70 gfx->println("Hello World!");
     71 
     72 gfx->setFont(u8g2_font_unifont_t_polish);
     73 gfx->println("Witaj świecie!");
     74 
     75 gfx->setFont(u8g2_font_unifont_t_vietnamese1);
     76 gfx->println("Chào thế giới!");
     77 
     78 gfx->setFont(u8g2_font_unifont_t_chinese2);
     79 gfx->println("世界你好!");
     80 
     81 gfx->setFont(u8g2_font_unifont_t_japanese1);
     82 gfx->println("こんにちは世界!");
     83 
     84 gfx->setFont(u8g2_font_unifont_t_korean1);
     85 gfx->println("안녕하세요, 세계입니다!");
     86 ```
     87 
     88 U8g2 Unifont list can be found at: <https://github.com/olikraus/u8g2/wiki/fntgrpunifont>
     89 
     90 ### Extra Fonts
     91 
     92 Besides U8g2 generated font, Arduino_GFX also generated some useful font set:
     93 
     94 #### [Chill-Bitmap v2.400](https://github.com/Warren2060/Chill-Bitmap)
     95 
     96 ##### u8g2_font_chill7_h_cjk
     97 
     98 * Glyphs: 13478/13478
     99 * Size: 254,960
    100 * Generation script:
    101 
    102 ```console
    103 otf2bdf ChillBitmap7x.ttf -p 6 -o ChillBitmap7x.bdf
    104 bdfconv -v -f 1 -b 1 -m "0-4294967295" ChillBitmap7x.bdf -o u8g2_font_chill7_h_cjk.h -n u8g2_font_chill7_h_cjk
    105 ```
    106 
    107 #### [Cubic 11 v1.013](https://github.com/ACh-K/Cubic-11)
    108 
    109 ##### u8g2_font_cubic11_h_cjk
    110 
    111 * Glyphs: 10167/10167
    112 * Size: 337,650
    113 * Generation script:
    114 
    115 ```console
    116 otf2bdf Cubic_11_1.013_R.ttf -p 9 -o Cubic_11_1.013_R.bdf
    117 bdfconv -v -f 1 -b 1 -m "0-4294967295" Cubic_11_1.013_R.bdf -o u8g2_font_cubic11_h_cjk.h -n u8g2_font_cubic11_h_cjk
    118 ```
    119 
    120 #### [QuanPixel](https://diaowinner.itch.io/galmuri-extended):
    121 
    122 ##### u8g2_font_quan7_h_cjk
    123 
    124 * Glyphs: 18082/18082
    125 * Size: 335,225
    126 * Generation script:
    127 
    128 ```console
    129 ./bdfconv -v -f 1 -b 1 -m "0-4294967295" quan.bdf -o u8g2_font_quan7_h_cjk.h -n u8g2_font_quan7_h_cjk
    130 ```
    131 
    132 
    133 #### [unifont_jp-14.0.02](http://unifoundry.com/pub/unifont/unifont-14.0.02/font-builds/unifont_jp-14.0.02.bdf.gz)
    134 
    135 ##### u8g2_font_unifont_h_utf8
    136 
    137 * Glyphs: 57389/57389
    138 * Size: 2,250,360
    139 * Generation script:
    140 
    141 ```console
    142 bdfconv -v -f 1 -b 1 -m "0-1114111" unifont_jp-14.0.02.bdf -o u8g2_font_unifont_h_utf8.h -n u8g2_font_unifont_h_utf8
    143 ```
    144 
    145 ##### u8g2_font_unifont_t_chinese
    146 
    147 * Glyphs: 22145/57389
    148 * Size: 979,557
    149 * Generation script:
    150 
    151 ```console
    152 bdfconv -v -f 1 -m "32-127,11904-12351,19968-40959,63744-64255,65280-65376" unifont_jp-14.0.02.bdf -o u8g2_font_unifont_t_chinese.h -n u8g2_font_unifont_t_chinese
    153 ```
    154 
    155 ##### u8g2_font_unifont_t_chinese4
    156 
    157 * Glyphs: 7199/57389
    158 * Size: 298,564
    159 * Traditional Chinese common font list: <https://raw.githubusercontent.com/ButTaiwan/cjktables/master/taiwan/edu_standard_1.txt>
    160 * Simplified Chinese common font list: <http://zht.glyphwiki.org/font/gw1197839.source>
    161 * extra font list: 32-127,11904-12351,63744-64255,65280-65376
    162 * Generation script:
    163 
    164 ```console
    165 bdfconv -v -f 1 -M chinese4.list unifont_jp-14.0.02.bdf -o u8g2_font_unifont_t_chinese4.h -n u8g2_font_unifont_t_chinese4
    166 ```
    167 
    168 ##### u8g2_font_unifont_t_cjk
    169 
    170 * Glyphs: 41364/57389
    171 * Size: 1,704,862
    172 * Generation script:
    173 
    174 ```console
    175 bdfconv -v -f 1 -m "32-127,4352-4607,11904-12255,12288-19903,19968-40943,43360-43391,44032-55203,55216-55295,63744-64255,65072-65103,65280-65519" unifont_jp-14.0.02.bdf -o u8g2_font_unifont_t_cjk.h -n u8g2_font_unifont_t_cjk
    176 ```
    177 
    178 ## Performance
    179 
    180 This library is not putting speed at the first priority, but still paid much effort to make the display look smooth.
    181 
    182 ### Figures
    183 
    184 Below are some figures compare with other 3 Arduino common display libraries.
    185 
    186 * Arduino IDE: 1.8.15
    187 * arduino-esp32: 1.0.6
    188 * Dev Board: TTGO T8 v1.8
    189 * PSRAM: disable
    190 * Display: ILI9341
    191 * Interface: SPI
    192 * SPI Frequency: 40MHz
    193 * Test time: 2021 Jun 16
    194 
    195 | Benchmark          |  Adafruit_GFX | *Arduino_GFX* |    Lovyan_GFX |      TFT_eSPI |
    196 | ------------------ | ------------- | ------------- | ------------- | ------------- |
    197 | Screen fill        |       195,782 |     *160,094* |       154,341 |       155,938 |
    198 | Text               |        97,662 |      *18,960* |        22,473 |        21,752 |
    199 | Pixels             |     1,365,211 |     *903,549* |       867,702 |       775,781 |
    200 | Lines              |     1,062,311 |     *412,026* |       269,060 |       264,950 |
    201 | Horiz/Vert Lines   |        17,637 |      *14,197* |        13,692 |        13,833 |
    202 | Rectangles-filled  |       406,817 |     *332,696* |       320,761 |       323,908 |
    203 | Rectangles         |        11,641 |       *9,254* |         8,545 |         8,714 |
    204 | Triangles-filled   |       150,941 |     *118,010* |       105,661 |       109,675 |
    205 | Triangles          |        58,843 |      *23,570* |        15,884 |        16,277 |
    206 | Circles-filled     |        76,739 |      *52,170* |        42,787 |        45,827 |
    207 | Circles            |       118,125 |      *40,955* |        25,959 |        25,269 |
    208 | Arcs-filled        |      N/A      |      *33,381* |        21,546 |      N/A      |
    209 | Arcs               |      N/A      |      *66,054* |        47,901 |      N/A      |
    210 | Rounded rects-fill |       408,534 |     *338,136* |       318,882 |       323,189 |
    211 | Rounded rects      |        43,185 |      *21,562* |        13,089 |        15,371 |
    212 
    213 ### Why Run Fast?
    214 
    215 * No read operation. Since not all display provide read back graphic memories API, Arduino_GFX skip all read operations. It can reduce the library size footprint and sometimes reduce the operation time.
    216 * Tailor-made data bus classes. Arduino_GFX decouple data bus operation from display driver, it is more easy to write individual data bus class for each platform.
    217 
    218 ## Various data bus interfaces
    219 
    220 Arduino_GFX utilizes Arduino Built-in SPI class to support 8-bit SPI for most platforms.
    221 
    222 Most tiny displays in hobbyist electronics world support 8-bit SPI, but some require 9-bit SPI. Arduino_GFX should be the first Arduino display library that can use ESP32 SPI to support 9-bit hardware SPI. It is important to support the displays that require 9-bit SPI interface. (e.g. HX8357B, ...)
    223 
    224 Larger displays most likely do not support standalone SPI since it is not fast enough to refresh the full screen details. Most of them support 8-bit/16-bit Parallel interface.
    225 
    226 Some larger display require RGB + 3-bit SPI combo interface, This interface requies at most 3(9-bit SPI) + 4(CS, CD, WR, RD) + 24(RBG888) = 31 pins. Most dev board do not have enough GPIO to support this. Arduino_GFX is stick to RGB565 color, so RGB666 and RGB888 require some connection hack. E.g. RGB666 connect R5 and R6 together, B5 and B6 together to become RGB565. Then the least GPIO requirement can become 3(9-bit SPI) + 2(CD, WR) + 16(RBG565) = 21 pins. **Remember always pull down CS pin and always pull up RD pin.**
    227 
    228 ## Currently Supported data bus [[Wiki](https://github.com/moononournation/Arduino_GFX/wiki/Data-Bus-Class)]
    229 
    230 * 8-bit and 9-bit hardware SPI (ESP32SPI)
    231 * 8-bit hardware SPI (HWSPI, ESP8266SPI, mbedSPI, NRFXSPI, RPiPicoSPI)
    232 * 8-bit and 9-bit software SPI (SWSPI)
    233 * 8-bit parallel interface (SWPAR8, AVRPAR8, ESP32PAR8, ESP32S2PAR8, RPiPicoPAR8, RTLPAR8, STM32PAR8)
    234 * 16-bit parallel interface (ESP32LCD16, ESP32PAR16, ESP32S2PAR16, RPiPicoPAR16)
    235 * RGB565+SPI interface (ESP32RGBPanel)
    236 
    237 ## Tobe Support data bus (Sponsors can make it happen)
    238 
    239 * Arduino ATMega2560 dual 8-bit Port form 16-bit parallel interface
    240 * FastLED
    241 
    242 ## Currently Supported Dev Board
    243 
    244 * Ameba RTL8722DM Board (AMB 21)
    245 * Ameba RTL8722DM MINI Board (AMB 23)
    246 * Arduino Nano
    247 * Arduino Nano BLE 33
    248 * Arduino Pro Micro
    249 * ESP8266 Series
    250 * ESP32 Series
    251 * ESP32-C3 Series
    252 * ESP32-S2 Series
    253 * ESP32-S3 Series
    254 * Raspberry Pi Pico
    255 * Raspberry Pi Pico W
    256 * rtlduino BW16 (by Ai-Thinker)
    257 * Sony Spresense
    258 * WeAct BlackPill V2.0 (BlackPill F411CE)
    259 
    260 ## Tobe Support Dev Board (Sponsors can make it happen)
    261 
    262 * Arduino ATMega2560
    263 
    264 ## Currently Supported Dev Device [[Wiki](https://github.com/moononournation/Arduino_GFX/wiki/Dev-Device-Declaration)]
    265 
    266 * [ESP32-1732S019](https://www.aliexpress.com/item/1005005059421229.html) [[demo video](https://youtube.com/shorts/VS4Qb3g2dWk)] [[LVGL demo video](https://youtu.be/V5xib6OnWiM)]
    267 * ESP32-2432S028
    268 * ESP32-2424012 [[demo video](https://youtu.be/EXw_yEMgug8)]
    269 * ESP32-3248S035
    270 * ESP32-4827A043 [[demo video](https://youtu.be/pd1DTW9QHkg)] [[LVGL demo video](https://youtu.be/L8iYjiy-DUI)]
    271 * [ESP32-4827S043](https://www.aliexpress.com/item/1005004788147691.html) [[demo video](https://youtu.be/60rl7QoU4Sc)] [[LVGL demo video](https://youtu.be/VvpILAVyPt8)]
    272 * [ESP32-8048S070](https://www.aliexpress.com/item/1005004952726089.html) [[LVGL demo video](https://youtu.be/7BRGVsnQpgE)]
    273 * [ESP32 LCDKIT](https://docs.espressif.com/projects/espressif-esp-dev-kits/en/latest/esp32/esp32-lcdkit/user_guide.html)
    274 * [ESP32-S3-EYE](https://github.com/espressif/esp-who/blob/master/docs/en/get-started/ESP32-S3-EYE_Getting_Started_Guide.md)
    275 * [ESP32-S3-Box](https://www.espressif.com/en/news/ESP32-S3-BOX_video)
    276 * [ESP32-S3-RGB](https://github.com/W00ng/ESP32-S3-RGB-Panel) [[LVGL demo video](https://youtu.be/d11yUvjh34A)]
    277 * ESP32S3-2.1-TP
    278 * [ESPboy](https://www.espboy.com) [[demo video](https://youtu.be/Cx82XWrc8-0)]
    279 * [LILYGO T-DISPLAY](https://www.lilygo.cc/products/lilygo®-ttgo-t-display-1-14-inch-lcd-esp32-control-board)
    280 * [LILYGO T-DISPLAY-S3](https://www.lilygo.cc/products/t-display-s3) [[demo video](https://youtu.be/kpRC64QNQAo)]
    281 * [LILYGO T-RGB](https://www.lilygo.cc/products/t-rgb) [[LVGL demo video](https://youtu.be/BKEl_pWp_qQ)]
    282 * [LILYGO T-QT](https://www.lilygo.cc/products/t-qt-v1-1) [[demo video](https://youtube.com/shorts/V1MCQ1tQ8PM?feature=share)]
    283 * [LILYGO T-Watch](http://www.lilygo.cn/prod_view.aspx?TypeId=50053&Id=1123)
    284 * [LILYGO T-Watch 2021](https://www.lilygo.cc/products/t-watch-2021)
    285 * [M5Stack Core Family](https://shop.m5stack.com/collections/m5-controllers/CORE)
    286 * [Makerfabs ESP32 3.5" TFT Touch with Camera](https://www.makerfabs.com/esp32-3.5-inch-tft-touch-capacitive-with-camera.html)
    287 * [Makerfabs ESP32-S3 TFT 4.0"](https://www.makerfabs.com/esp32-s3-parallel-tft-with-touch-4-inch.html) [[demo video](https://youtu.be/Fmxd-Xu97C8)]
    288 * [Makerfabs ESP32-S3 TFT 4.3" v1.3](https://www.makerfabs.com/esp32-s3-parallel-tft-with-touch-4-3-inch.html) [[demo video](https://youtu.be/oQ57L2gTHoo)]
    289 * [Odroid Go](https://www.hardkernel.com/shop/odroid-go/)
    290 * [seeed studio Wio Terminal](https://wiki.seeedstudio.com/Wio-Terminal-Getting-Started/)
    291 * [Waveshare RP2040-LCD-1.28](https://www.waveshare.com/wiki/RP2040-LCD-1.28)
    292 * [wireless-tag WT-32-SC01](http://www.wireless-tag.com/portfolio/wt32-sc01/)
    293 * [wireless-tag ZX2D10GE10R-V4848](https://github.com/wireless-tag-com/ZX2D10GE01R-V4848)
    294 * [wireless-tag ZX3D50CE02S](https://github.com/wireless-tag-com/ZX3D50CE02S)
    295 * [wireless-tag ZX3D95CE01S-AR](https://github.com/wireless-tag-com/ZX3D95CE01S-AR-4848)
    296 
    297 ## Currently Supported Display [[Wiki](https://github.com/moononournation/Arduino_GFX/wiki/Display-Class)]
    298 
    299 * GC9A01 round display 240x240 [[demo video](https://youtu.be/kJrAFm20-zg)]
    300 * GC9106 80x160 [[demo video](https://youtu.be/RToGeeb1jxQ)]
    301 * GC9107 128x128 [[demo video](https://youtube.com/shorts/V1MCQ1tQ8PM)]
    302 * GC9503V (RGB) 480x480 [[demo video](https://youtube.com/shorts/hk7ZMBRCmjI)]
    303 * HX8347C 240x320 [[demo video](https://youtu.be/25ymuV51YQM)]
    304 * HX8347D 240x320 [[demo video](https://youtu.be/sv6LGkLRZjI)]
    305 * HX8352C 240x400 [[demo video](https://youtu.be/m2xWYbS3t7s)]
    306 * HX8357A 320x480 [[demo video](https://youtu.be/wJkLO_xCTXA)] (currently only portrait works, i.e. rotation 0 and 2)
    307 * HX8357B (9-bit SPI) 320x480 [[demo video](https://youtu.be/pB6_LOCiUqg)]
    308 * HX8369A 480x800 [[demo video](https://youtu.be/sXpU8bhtXKQ)] [[LVGL demo video](https://youtu.be/q575lTuVDcU)]
    309 * ILI6485 (RGB) 480x272 [[demo video](https://youtu.be/60rl7QoU4Sc)]
    310 * ILI9225 176x220 [[demo video](https://youtu.be/jm2UrCG27F4)]
    311 * ILI9341 240x320 [[demo video](https://youtu.be/NtlEEL7MkQY)]
    312 * ILI9341 (8-bit Parallel) 240x320 [[demo video](https://youtu.be/xuVx0dzQ7nM)]
    313 * ILI9342 320x240 [[demo video](https://youtu.be/UoPpIjVSO5Q)]
    314 * ILI9481 320x480 (18 bit color) [[demo video](https://youtu.be/YxjuuCFhlqM)]
    315 * ILI9486 320x480 (18 bit color) [[demo video](https://youtu.be/pZ6izDqmVds)]
    316 * ILI9488 320x480 (3 bit color with canvas) [[demo video](https://youtu.be/r7be0WbIBYk)]
    317 * ILI9488 320x480 (18 bit color) [[demo video](https://youtu.be/NkE-LhtLHBQ)]
    318 * ILI9806 (8-bit/16-bit Parallel) 480x854 [[demo video](https://youtu.be/mYv-wdtWr8s)] [[LVGL demo video](https://youtu.be/PqjV8lovg_c)][[2](https://youtu.be/j31KZoQUKis)]
    319 * JBT6K71 (8-bit Parallel) 240x320 [[demo video](https://youtu.be/qid3F4Gb0mM)]
    320 * NT35310 320x480 [[demo video](https://youtu.be/bvIz5CoYPNk)]
    321 * NT35510 (8-bit/16-bit Parallel) 480x800 [[demo video](https://youtu.be/C_1ASzUN3bg)]
    322 * NT39125 (8-bit/16-bit Parallel) 240x376 [[demo video](https://youtu.be/JGMrM18JAFA)]
    323 * NV3041A 480x272 [[demo video](https://youtu.be/pd1DTW9QHkg)]
    324 * OTM8009A (8-bit/16-bit Parallel) 480x800
    325 * R61529 (8-bit/16-bit Parallel) 320x480 [[demo video](https://youtu.be/s93gxjbIAT8)]
    326 * Raspberry Pi DPI Display (RPi_DPI_RGBPanel) Any Resolution [[demo video](https://youtube.com/shorts/IqQEq-VLVwI)]
    327 * SEPS525 160x128 [[demo video](https://youtu.be/tlmvFBHYv-k)]
    328 * SSD1283A 130x130 [[demo video](https://youtu.be/OrIchaRikiQ)]
    329 * SSD1331 96x64 [[demo video](https://youtu.be/v20b1A_KDcQ)]
    330 * SSD1351 128x128 [[demo video](https://youtu.be/5TIM-qMVBNQ)]
    331 * SSD1351 128x96
    332 * ST7262 800x480 [[demo video](https://youtu.be/VvpILAVyPt8)]
    333 * ST7735 128x160 (various tabs) [[demo video](https://youtu.be/eRBSSD_N9II)]
    334 * ST7735 128x128 (various tabs) [[demo video](https://youtu.be/6rueSV2Ee6c)]
    335 * ST7735 80x160 [[demo video](https://youtu.be/qESHDuYo_Mk)]
    336 * ST7701 (RGB) 480x480 [[demo video](https://youtube.com/shorts/JV8Rzxop5EQ)] [[2.1" round display demo video](https://youtube.com/shorts/WLWio1CjBoo?feature=share)] [[2.8" round display demo video](https://youtube.com/shorts/Ih_QlttWTVk?feature=share)]
    337 * ST7789 135x240 [[demo video](https://youtu.be/Zk81_T8c20E)]
    338 * ST7789 240x240 [[demo video](https://youtu.be/Z27zYg5uAsk)]
    339 * ST7789 240x240 [[demo video](https://youtu.be/9AqsXMB8Qbk)]
    340 * ST7789 round corner display 240x280 [[demo video](https://youtu.be/KzDC02wg8z0)]
    341 * ST7789 240x320 [[demo video](https://youtu.be/ZEvc1LkuVuQ)]
    342 * ST7796 320x480 [[demo video](https://youtu.be/hUL-RuG4MAQ)]
    343 
    344 ## Tobe Support Display (Sponsors can make it happen)
    345 
    346 * FastLED Martix supported by co-operate with Canvas
    347 * Mono display supported by co-operate with Canvas
    348 * Multi-color e-ink display supported by co-operate with Canvas
    349 
    350 ## Canvas (framebuffer) [[Wiki](https://github.com/moononournation/Arduino_GFX/wiki/Canvas-Class)]
    351 
    352 * Canvas (16-bit pixel)
    353 * Canvas_Indexed (half memory space)
    354 * Canvas_3bit (1/4 memory space framebuffer)
    355 * Canvas_Mono (1/16 memory space framebuffer)
    356 
    357 ## LVGL Support
    358 
    359 3 LVGL demo provide in examples folder:
    360 
    361 * LvglBenchmark [[demo video](https://youtu.be/75Qx-UEgabY)]
    362 * LvglHelloWorld
    363 * LvglWidgets
    364 
    365 ## Feature wishlist (Sponsors can make it happen)
    366 
    367 * Set text box
    368 * Canvas to FastLED
    369 * Print color Emoji Characters
    370 * Load bitmap font files from flash / SD
    371 * Fill Gradient #128
    372 
    373 ## Using source code come from
    374 
    375 * <http://elm-chan.org/fsw/tjpgd/00index.html>
    376 * <https://github.com/adafruit/Adafruit-GFX-Library.git>
    377 * <https://github.com/adafruit/Adafruit_ILI9341.git>
    378 * <https://github.com/adafruit/Adafruit-SSD1351-library.git>
    379 * <https://github.com/ananevilya/Arduino-ST7789-Library.git>
    380 * <https://github.com/BasementCat/arduino-tft-gif.git>
    381 * <https://github.com/Bodmer/TFT_eSPI.git>
    382 * <https://github.com/daumemo/IPS_LCD_R61529_FT6236_Arduino_eSPI_Test.git>
    383 * <https://github.com/espressif/arduino-esp32.git>
    384 * <https://github.com/espressif/esp-idf.git>
    385 * <https://github.com/gitcnd/LCDWIKI_SPI.git>
    386 * <https://github.com/hi631/LCD_NT35510-MRB3971.git>
    387 * <https://github.com/lcdwiki/LCDWIKI_SPI.git>
    388 * <https://github.com/Xinyuan-LilyGO/T-RGB.git>
    389 * <https://github.com/lovyan03/LovyanGFX.git>
    390 * <https://github.com/lovyan03/M5Stack_JpgLoopAnime.git>
    391 * <https://github.com/nopnop2002/esp-idf-parallel-tft.git>
    392 * <https://github.com/olikraus/u8g2.git>