A derived version of the BSD licensed Adafrut GFX library for the SSD1306 controller for an OLED 128x32 or 128x64 display using SPI or I2C.
Fork of Adafruit_GFX by
Diff: Adafruit_GFX.h
- Revision:
- 11:86909e6db3c8
- Parent:
- 9:ddb97c9850a2
- Child:
- 13:8f03f908f22a
--- a/Adafruit_GFX.h Sun Oct 19 20:55:27 2014 +0000 +++ b/Adafruit_GFX.h Tue Oct 21 02:04:08 2014 +0000 @@ -41,6 +41,15 @@ #define BLACK 0 #define WHITE 1 +/** + * This is a Text and Graphics element drawing class. + * These functions draw to the display buffer. + * + * Display drivers should be derived from here. + * The Display drivers push the display buffer to the + * hardware based on application control. + * + */ class Adafruit_GFX : public Stream { public: @@ -58,6 +67,7 @@ , wrap(true) {}; + /// Paint one BLACK or WHITE pixel in the display buffer // this must be defined by the subclass virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0; // this is optional @@ -70,43 +80,96 @@ #ifdef GFX_WANT_ABSTRACTS // these are 'generic' drawing functions, so we can share them! + + /** Draw a Horizontal Line + * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h + */ virtual void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + /** Draw a rectangle + * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h + */ virtual void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + /** Fill the entire display + * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h + */ virtual void fillScreen(uint16_t color); + /** Draw a circle + * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h + */ void drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color); void drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, uint16_t color); + + /** Draw and fill a circle + * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h + */ void fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color); void fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, int16_t delta, uint16_t color); + /** Draw a triangle + * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h + */ void drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color); + /** Draw and fill a triangle + * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h + */ void fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color); + + /** Draw a rounded rectangle + * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h + */ void drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color); + /** Draw and fill a rounded rectangle + * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h + */ void fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color); #endif #if defined(GFX_WANT_ABSTRACTS) || defined(GFX_SIZEABLE_TEXT) + /** Draw a line + * @note GFX_WANT_ABSTRACTS or GFX_SIZEABLE_TEXT must be defined in Adafruit_GFX_config.h + */ virtual void drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color); + /** Draw a vertical line + * @note GFX_WANT_ABSTRACTS or GFX_SIZEABLE_TEXT must be defined in Adafruit_GFX_config.h + */ virtual void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + /** Draw and fill a rectangle + * @note GFX_WANT_ABSTRACTS or GFX_SIZEABLE_TEXT must be defined in Adafruit_GFX_config.h + */ virtual void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); #endif + /// Draw a bitmap void drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t color); + /// Draw a text character at a specified pixel location void drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color, uint16_t bg, uint8_t size); + /// Draw a text character at the text cursor location size_t writeChar(uint8_t); + /// Get the width of the display in pixels int16_t width(void) { return _width; }; + /// Get the height of the display in pixels int16_t height(void) { return _height; }; + /// Set the text cursor location, based on the size of the text void setTextCursor(int16_t x, int16_t y) { cursor_x = x; cursor_y = y; }; #if defined(GFX_SIZEABLE_TEXT) + /** Set the size of the text to be drawn + * @note Make sure to enable either GFX_SIZEABLE_TEXT or GFX_WANT_ABSTRACTS + */ void setTextSize(uint8_t s) { textsize = (s > 0) ? s : 1; }; #endif + /// Set the text foreground and background colors to be the same void setTextColor(uint16_t c) { textcolor = c; textbgcolor = c; } + /// Set the text foreground and background colors independantly void setTextColor(uint16_t c, uint16_t b) { textcolor = c; textbgcolor = b; }; + /// Set text wraping mode true or false void setTextWrap(bool w) { wrap = w; }; + /// Set the display rotation, 1, 2, 3, or 4 void setRotation(uint8_t r); + /// Get the current rotation uint8_t getRotation(void) { rotation %= 4; return rotation; }; protected: