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 Software License Agreement (BSD License)
oliverb 0:3bf8ef959338 2
oliverb 0:3bf8ef959338 3 Copyright (c) 2012 Adafruit Industries. All rights reserved.
oliverb 0:3bf8ef959338 4
oliverb 0:3bf8ef959338 5 Redistribution and use in source and binary forms, with or without
oliverb 0:3bf8ef959338 6 modification, are permitted provided that the following conditions are met:
oliverb 0:3bf8ef959338 7
oliverb 0:3bf8ef959338 8 - Redistributions of source code must retain the above copyright notice,
oliverb 0:3bf8ef959338 9 this list of conditions and the following disclaimer.
oliverb 0:3bf8ef959338 10 - Redistributions in binary form must reproduce the above copyright notice,
oliverb 0:3bf8ef959338 11 this list of conditions and the following disclaimer in the documentation
oliverb 0:3bf8ef959338 12 and/or other materials provided with the distribution.
oliverb 0:3bf8ef959338 13
oliverb 0:3bf8ef959338 14 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
oliverb 0:3bf8ef959338 15 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
oliverb 0:3bf8ef959338 16 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
oliverb 0:3bf8ef959338 17 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
oliverb 0:3bf8ef959338 18 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
oliverb 0:3bf8ef959338 19 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
oliverb 0:3bf8ef959338 20 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
oliverb 0:3bf8ef959338 21 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
oliverb 0:3bf8ef959338 22 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
oliverb 0:3bf8ef959338 23 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
oliverb 0:3bf8ef959338 24 POSSIBILITY OF SUCH DAMAGE.