Adafruit GFX graphics core Arduino library, this is the 'core' class that all our other graphics libraries derive from
Go to file
Tyeth Gundry 0e32d7dc76
Some checks failed
Arduino Library CI / build (push) Has been cancelled
Update library.properties - bump version to 1.11.10
2024-07-23 15:16:47 +01:00
.github Update CI action versions 2023-05-12 11:23:54 -04:00
examples fixed fast line drawing in GFXcanvas* classes 2020-08-18 22:25:19 -07:00
fontconvert Merge pull request #268 from BlueAndi/master 2021-09-06 21:11:17 -07:00
Fonts Fix missing imports in font files for PlatformIO (#423) 2023-06-16 10:47:34 -04:00
.gitignore doxy gitignore 2018-07-14 12:30:23 -04:00
Adafruit_GFX.cpp Fix bug w/large GFXcanvas1's (use 32-bit byte counts) 2023-01-18 14:53:07 -08:00
Adafruit_GFX.h Doxy class members moved from private to protected 2023-01-16 15:18:35 -08:00
Adafruit_GrayOLED.cpp Allow using ATtiny84 (#455) 2024-07-18 10:16:19 -04:00
Adafruit_GrayOLED.h Allow using ATtiny84 (#455) 2024-07-18 10:16:19 -04:00
Adafruit_SPITFT_Macros.h WIP do not use yet! 2019-02-26 21:35:12 -08:00
Adafruit_SPITFT.cpp Allow using ATtiny84 (#455) 2024-07-18 10:16:19 -04:00
Adafruit_SPITFT.h Allow using ATtiny84 (#455) 2024-07-18 10:16:19 -04:00
CMakeLists.txt Enable Adafruit-GFX-Library as ESP-IDF component support (#376) 2022-01-20 19:53:48 -05:00
component.mk Enable Adafruit-GFX-Library as ESP-IDF component support (#376) 2022-01-20 19:53:48 -05:00
gfxfont.h Update gfxfont.h (#286) 2020-05-13 10:42:20 -04:00
glcdfont.c Actionsci2 (#264) 2019-12-27 17:10:08 -05:00
library.properties Update library.properties - bump version to 1.11.10 2024-07-23 15:16:47 +01:00
license.txt Fixed constructor() kludge - all subclass libs updated too 2013-07-05 11:37:02 -07:00
README.md Add more roadmap notes to README 2021-09-06 23:09:53 -07:00

Adafruit GFX Library Build Status

This is the core graphics library for all our displays, providing a common set of graphics primitives (points, lines, circles, etc.). It needs to be paired with a hardware-specific library for each display device we carry (to handle the lower-level functions).

Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit!

Written by Limor Fried/Ladyada for Adafruit Industries. BSD license, check license.txt for more information. All text above must be included in any redistribution.

Recent Arduino IDE releases include the Library Manager for easy installation. Otherwise, to download, click the DOWNLOAD ZIP button, uncompress and rename the uncompressed folder Adafruit_GFX. Confirm that the Adafruit_GFX folder contains Adafruit_GFX.cpp and Adafruit_GFX.h. Place the Adafruit_GFX library folder your ArduinoSketchFolder/Libraries/ folder. You may need to create the Libraries subfolder if its your first library. Restart the IDE.

You will also need to install the latest Adafruit BusIO library. Search for "Adafruit BusIO" in the library manager, or install by hand from https://github.com/adafruit/Adafruit_BusIO

Useful Resources

  • Image2Code: This is a handy Java GUI utility to convert a BMP file into the array code necessary to display the image with the drawBitmap function. Check out the code at ehubin's GitHub repository: https://github.com/ehubin/Adafruit-GFX-Library/tree/master/Img2Code

  • drawXBitmap function: You can use the GIMP photo editor to save a .xbm file and use the array saved in the file to draw a bitmap with the drawXBitmap function. See the pull request here for more details: https://github.com/adafruit/Adafruit-GFX-Library/pull/31

  • 'Fonts' folder contains bitmap fonts for use with recent (1.1 and later) Adafruit_GFX. To use a font in your Arduino sketch, #include the corresponding .h file and pass address of GFXfont struct to setFont(). Pass NULL to revert to 'classic' fixed-space bitmap font.

  • 'fontconvert' folder contains a command-line tool for converting TTF fonts to Adafruit_GFX header format.

  • You can also use this GFX Font Customiser tool (web version here) to customize or correct the output from fontconvert, and create fonts with only a subset of characters to optimize size.


Roadmap

The PRIME DIRECTIVE is to maintain backward compatibility with existing Arduino sketches -- many are hosted elsewhere and don't track changes here, some are in print and can never be changed! This "little" library has grown organically over time and sometimes we paint ourselves into a design corner and just have to live with it or add progressively more ungainly workarounds.

We are grateful for everyone's contributions, but pull requests for the following will NOT be merged:

  • Additional or incompatible font formats (see Prime Directive above). There are already two formats and the code is quite bloaty there as it is. This also creates liabilities for tools and documentation. What's there isn't perfect but it does the job.

  • Additional or incompatible bitmap formats, for similar reasons. It's getting messy.

  • Adding background color to custom fonts to erase prior screen contents. The ONLY acceptable methods are to clear the area with a filled rect, or (to avoid flicker) draw text into a GFXcanvas1 and copy to screen with drawBitmap() w/background color. This is on purpose and by design. We've discussed this. Glyphs can overlap.

  • Scrolling, whether hardware- or software-based. Such implementations tend to rely on hardware-specific features (not universally available), read access to the screen's framebuffer (ditto) and/or the addition of virtual functions in GFX which them must be added in every subclass, of which there are many. The GFX API is largely "set" at this point and this is just a limitation we live with now.

  • Please don't reformat code for the sake of reformatting code. The resulting large "visual diff" makes it impossible to untangle actual bug fixes from merely rearranged lines. clang-format will be the final arbiter.

  • Please no more pentagram-drawing PRs. Any oddly-specific drawing functions can go in your own code and aren't helpful in a library context.

If you must have one of these features, consider creating a fork with the features required for your project...it's easy to keep synced with the upstream code.