MBED Import of ADAFRUIT graphics library, BSD License

Dependents:   GP9002adafruit GP9002af_gray

Notes on this library

This was imported into MBED specifically to support the GP9002 VFD, as a result it has some "hacks" to optimize it for the GP9002.

Due to the GP9002 internal organization it draws vertical lines much faster than horizontal (assuming you orient it "landscape"). This is likely to be true of other displays that have bits in a byte arranged vertically, which seems a common theme in small GLCDs. Some types may have a more CGA-like memory organization and will draw faster horizontally.

On a vertical-organised display the graphics functions are often substantially faster if X and Y are exchanged, especially with the dot-write optimization. This is because vertical lines can be written byte-at-a-time with no need for read-modify-write, and even when individual bits are written a significant number will "land" in the byte previously written. In contrast a horizontal line would require changing one bit of each byte in turn, requiring a sequence of set-address,read,write operations for each dot in turn.

I've hacked this in the library. I forget exactly how but I believe I simply exchanged X with W in the code for drawing filled shapes.

I would like to come up with a more generic way to do this, such as having internal coordinates that are not defined as X and Y, then leaving it up to the display library to "wrap" them in the way that is best for that display.

I would like to apologize for abandoning this project, but the test harness still exists and I might return to it, though I'm more interested in TFT systems like the STM discovery now.

Committer:
oliverb
Date:
Sat May 07 12:50:37 2016 +0000
Revision:
0:3bf8ef959338
Converting to Library, this is a base class that needs extending for a specific device. Note that as it stands it favors devices with vertical bit-organisation

Who changed what in which revision?

UserRevisionLine numberNew contents of line
oliverb 0:3bf8ef959338 1 # Adafruit GFX Library
oliverb 0:3bf8ef959338 2
oliverb 0:3bf8ef959338 3 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).
oliverb 0:3bf8ef959338 4
oliverb 0:3bf8ef959338 5 Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit!
oliverb 0:3bf8ef959338 6
oliverb 0:3bf8ef959338 7 Written by Limor Fried/Ladyada for Adafruit Industries.
oliverb 0:3bf8ef959338 8 BSD license, check license.txt for more information.
oliverb 0:3bf8ef959338 9 All text above must be included in any redistribution.
oliverb 0:3bf8ef959338 10
oliverb 0:3bf8ef959338 11 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.
oliverb 0:3bf8ef959338 12
oliverb 0:3bf8ef959338 13 # Useful Resources
oliverb 0:3bf8ef959338 14
oliverb 0:3bf8ef959338 15 - 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
oliverb 0:3bf8ef959338 16
oliverb 0:3bf8ef959338 17 - 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
oliverb 0:3bf8ef959338 18
oliverb 0:3bf8ef959338 19 - '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.
oliverb 0:3bf8ef959338 20
oliverb 0:3bf8ef959338 21 - 'fontconvert' folder contains a command-line tool for converting TTF fonts to Adafruit_GFX .h format.