enable running the program under i2c connection

Dependents:   unytelogo_animation

Fork of Adafruit_GFX by Neal Horman

Committer:
SamShiSS
Date:
Tue Jul 18 16:38:32 2017 +0000
Revision:
17:9324f9458d8b
Parent:
14:edb3c36aa1a7
Enable running the program under I2C connection

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nkhorman 9:ddb97c9850a2 1 /***********************************
nkhorman 9:ddb97c9850a2 2 This is a our graphics core library, for all our displays.
nkhorman 9:ddb97c9850a2 3 We'll be adapting all the
nkhorman 9:ddb97c9850a2 4 existing libaries to use this core to make updating, support
nkhorman 9:ddb97c9850a2 5 and upgrading easier!
nkhorman 9:ddb97c9850a2 6 Adafruit invests time and resources providing this open source code,
nkhorman 9:ddb97c9850a2 7 please support Adafruit and open-source hardware by purchasing
nkhorman 9:ddb97c9850a2 8 products from Adafruit!
nkhorman 9:ddb97c9850a2 9 Written by Limor Fried/Ladyada for Adafruit Industries.
nkhorman 9:ddb97c9850a2 10 BSD license, check license.txt for more information
nkhorman 9:ddb97c9850a2 11 All text above must be included in any redistribution
nkhorman 9:ddb97c9850a2 12 ****************************************/
nkhorman 9:ddb97c9850a2 13
nkhorman 9:ddb97c9850a2 14 /*
nkhorman 9:ddb97c9850a2 15 * Modified by Neal Horman 7/14/2012 for use in mbed
nkhorman 9:ddb97c9850a2 16 */
nkhorman 9:ddb97c9850a2 17
nkhorman 9:ddb97c9850a2 18 #ifndef _ADAFRUIT_GFX_H_
nkhorman 9:ddb97c9850a2 19 #define _ADAFRUIT_GFX_H_
nkhorman 9:ddb97c9850a2 20
nkhorman 13:8f03f908f22a 21 #include "Adafruit_GFX_Config.h"
nkhorman 9:ddb97c9850a2 22
nkhorman 9:ddb97c9850a2 23 static inline void swap(int16_t &a, int16_t &b)
nkhorman 9:ddb97c9850a2 24 {
nkhorman 9:ddb97c9850a2 25 int16_t t = a;
nkhorman 9:ddb97c9850a2 26
nkhorman 9:ddb97c9850a2 27 a = b;
nkhorman 9:ddb97c9850a2 28 b = t;
nkhorman 9:ddb97c9850a2 29 }
nkhorman 9:ddb97c9850a2 30
nkhorman 9:ddb97c9850a2 31 #ifndef _BV
nkhorman 9:ddb97c9850a2 32 #define _BV(bit) (1<<(bit))
nkhorman 9:ddb97c9850a2 33 #endif
nkhorman 9:ddb97c9850a2 34
nkhorman 9:ddb97c9850a2 35 #define BLACK 0
nkhorman 9:ddb97c9850a2 36 #define WHITE 1
nkhorman 9:ddb97c9850a2 37
nkhorman 11:86909e6db3c8 38 /**
nkhorman 11:86909e6db3c8 39 * This is a Text and Graphics element drawing class.
nkhorman 11:86909e6db3c8 40 * These functions draw to the display buffer.
nkhorman 11:86909e6db3c8 41 *
nkhorman 11:86909e6db3c8 42 * Display drivers should be derived from here.
nkhorman 11:86909e6db3c8 43 * The Display drivers push the display buffer to the
nkhorman 11:86909e6db3c8 44 * hardware based on application control.
nkhorman 11:86909e6db3c8 45 *
nkhorman 11:86909e6db3c8 46 */
nkhorman 9:ddb97c9850a2 47 class Adafruit_GFX : public Stream
nkhorman 9:ddb97c9850a2 48 {
nkhorman 9:ddb97c9850a2 49 public:
nkhorman 9:ddb97c9850a2 50 Adafruit_GFX(int16_t w, int16_t h)
nkhorman 9:ddb97c9850a2 51 : _rawWidth(w)
nkhorman 9:ddb97c9850a2 52 , _rawHeight(h)
nkhorman 9:ddb97c9850a2 53 , _width(w)
nkhorman 9:ddb97c9850a2 54 , _height(h)
nkhorman 9:ddb97c9850a2 55 , cursor_x(0)
nkhorman 9:ddb97c9850a2 56 , cursor_y(0)
nkhorman 9:ddb97c9850a2 57 , textcolor(WHITE)
nkhorman 9:ddb97c9850a2 58 , textbgcolor(BLACK)
nkhorman 9:ddb97c9850a2 59 , textsize(1)
nkhorman 9:ddb97c9850a2 60 , rotation(0)
nkhorman 9:ddb97c9850a2 61 , wrap(true)
nkhorman 9:ddb97c9850a2 62 {};
nkhorman 9:ddb97c9850a2 63
nkhorman 11:86909e6db3c8 64 /// Paint one BLACK or WHITE pixel in the display buffer
nkhorman 9:ddb97c9850a2 65 // this must be defined by the subclass
nkhorman 9:ddb97c9850a2 66 virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0;
nkhorman 9:ddb97c9850a2 67 // this is optional
nkhorman 9:ddb97c9850a2 68 virtual void invertDisplay(bool i) {};
nkhorman 9:ddb97c9850a2 69
nkhorman 9:ddb97c9850a2 70 // Stream implementation - provides printf() interface
nkhorman 9:ddb97c9850a2 71 // You would otherwise be forced to use writeChar()
nkhorman 9:ddb97c9850a2 72 virtual int _putc(int value) { return writeChar(value); };
nkhorman 9:ddb97c9850a2 73 virtual int _getc() { return -1; };
nkhorman 9:ddb97c9850a2 74
nkhorman 9:ddb97c9850a2 75 #ifdef GFX_WANT_ABSTRACTS
nkhorman 9:ddb97c9850a2 76 // these are 'generic' drawing functions, so we can share them!
nkhorman 11:86909e6db3c8 77
nkhorman 11:86909e6db3c8 78 /** Draw a Horizontal Line
nkhorman 11:86909e6db3c8 79 * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h
nkhorman 11:86909e6db3c8 80 */
nkhorman 9:ddb97c9850a2 81 virtual void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color);
nkhorman 11:86909e6db3c8 82 /** Draw a rectangle
nkhorman 11:86909e6db3c8 83 * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h
nkhorman 11:86909e6db3c8 84 */
nkhorman 9:ddb97c9850a2 85 virtual void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
nkhorman 11:86909e6db3c8 86 /** Fill the entire display
nkhorman 11:86909e6db3c8 87 * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h
nkhorman 11:86909e6db3c8 88 */
nkhorman 9:ddb97c9850a2 89 virtual void fillScreen(uint16_t color);
nkhorman 9:ddb97c9850a2 90
nkhorman 11:86909e6db3c8 91 /** Draw a circle
nkhorman 11:86909e6db3c8 92 * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h
nkhorman 11:86909e6db3c8 93 */
nkhorman 9:ddb97c9850a2 94 void drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color);
nkhorman 9:ddb97c9850a2 95 void drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, uint16_t color);
nkhorman 11:86909e6db3c8 96
nkhorman 11:86909e6db3c8 97 /** Draw and fill a circle
nkhorman 11:86909e6db3c8 98 * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h
nkhorman 11:86909e6db3c8 99 */
nkhorman 9:ddb97c9850a2 100 void fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color);
nkhorman 9:ddb97c9850a2 101 void fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, int16_t delta, uint16_t color);
nkhorman 9:ddb97c9850a2 102
nkhorman 11:86909e6db3c8 103 /** Draw a triangle
nkhorman 11:86909e6db3c8 104 * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h
nkhorman 11:86909e6db3c8 105 */
nkhorman 9:ddb97c9850a2 106 void drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color);
nkhorman 11:86909e6db3c8 107 /** Draw and fill a triangle
nkhorman 11:86909e6db3c8 108 * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h
nkhorman 11:86909e6db3c8 109 */
nkhorman 9:ddb97c9850a2 110 void fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color);
nkhorman 11:86909e6db3c8 111
nkhorman 11:86909e6db3c8 112 /** Draw a rounded rectangle
nkhorman 11:86909e6db3c8 113 * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h
nkhorman 11:86909e6db3c8 114 */
nkhorman 9:ddb97c9850a2 115 void drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color);
nkhorman 11:86909e6db3c8 116 /** Draw and fill a rounded rectangle
nkhorman 11:86909e6db3c8 117 * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h
nkhorman 11:86909e6db3c8 118 */
nkhorman 9:ddb97c9850a2 119 void fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color);
nkhorman 14:edb3c36aa1a7 120 /** Draw a bitmap
nkhorman 14:edb3c36aa1a7 121 * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h
nkhorman 14:edb3c36aa1a7 122 */
nkhorman 14:edb3c36aa1a7 123 void drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t color);
nkhorman 9:ddb97c9850a2 124 #endif
nkhorman 9:ddb97c9850a2 125
nkhorman 9:ddb97c9850a2 126 #if defined(GFX_WANT_ABSTRACTS) || defined(GFX_SIZEABLE_TEXT)
nkhorman 11:86909e6db3c8 127 /** Draw a line
nkhorman 11:86909e6db3c8 128 * @note GFX_WANT_ABSTRACTS or GFX_SIZEABLE_TEXT must be defined in Adafruit_GFX_config.h
nkhorman 11:86909e6db3c8 129 */
nkhorman 9:ddb97c9850a2 130 virtual void drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color);
nkhorman 11:86909e6db3c8 131 /** Draw a vertical line
nkhorman 11:86909e6db3c8 132 * @note GFX_WANT_ABSTRACTS or GFX_SIZEABLE_TEXT must be defined in Adafruit_GFX_config.h
nkhorman 11:86909e6db3c8 133 */
nkhorman 9:ddb97c9850a2 134 virtual void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color);
nkhorman 11:86909e6db3c8 135 /** Draw and fill a rectangle
nkhorman 11:86909e6db3c8 136 * @note GFX_WANT_ABSTRACTS or GFX_SIZEABLE_TEXT must be defined in Adafruit_GFX_config.h
nkhorman 11:86909e6db3c8 137 */
nkhorman 9:ddb97c9850a2 138 virtual void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
nkhorman 9:ddb97c9850a2 139 #endif
nkhorman 9:ddb97c9850a2 140
nkhorman 11:86909e6db3c8 141 /// Draw a text character at a specified pixel location
nkhorman 9:ddb97c9850a2 142 void drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color, uint16_t bg, uint8_t size);
nkhorman 11:86909e6db3c8 143 /// Draw a text character at the text cursor location
nkhorman 9:ddb97c9850a2 144 size_t writeChar(uint8_t);
nkhorman 9:ddb97c9850a2 145
nkhorman 11:86909e6db3c8 146 /// Get the width of the display in pixels
nkhorman 14:edb3c36aa1a7 147 inline int16_t width(void) { return _width; };
nkhorman 11:86909e6db3c8 148 /// Get the height of the display in pixels
nkhorman 14:edb3c36aa1a7 149 inline int16_t height(void) { return _height; };
nkhorman 9:ddb97c9850a2 150
nkhorman 11:86909e6db3c8 151 /// Set the text cursor location, based on the size of the text
nkhorman 14:edb3c36aa1a7 152 inline void setTextCursor(int16_t x, int16_t y) { cursor_x = x; cursor_y = y; };
nkhorman 14:edb3c36aa1a7 153 #if defined(GFX_WANT_ABSTRACTS) || defined(GFX_SIZEABLE_TEXT)
nkhorman 11:86909e6db3c8 154 /** Set the size of the text to be drawn
nkhorman 11:86909e6db3c8 155 * @note Make sure to enable either GFX_SIZEABLE_TEXT or GFX_WANT_ABSTRACTS
nkhorman 11:86909e6db3c8 156 */
nkhorman 14:edb3c36aa1a7 157 inline void setTextSize(uint8_t s) { textsize = (s > 0) ? s : 1; };
nkhorman 9:ddb97c9850a2 158 #endif
nkhorman 11:86909e6db3c8 159 /// Set the text foreground and background colors to be the same
nkhorman 14:edb3c36aa1a7 160 inline void setTextColor(uint16_t c) { textcolor = c; textbgcolor = c; }
nkhorman 11:86909e6db3c8 161 /// Set the text foreground and background colors independantly
nkhorman 14:edb3c36aa1a7 162 inline void setTextColor(uint16_t c, uint16_t b) { textcolor = c; textbgcolor = b; };
nkhorman 11:86909e6db3c8 163 /// Set text wraping mode true or false
nkhorman 14:edb3c36aa1a7 164 inline void setTextWrap(bool w) { wrap = w; };
nkhorman 9:ddb97c9850a2 165
nkhorman 11:86909e6db3c8 166 /// Set the display rotation, 1, 2, 3, or 4
nkhorman 9:ddb97c9850a2 167 void setRotation(uint8_t r);
nkhorman 11:86909e6db3c8 168 /// Get the current rotation
nkhorman 14:edb3c36aa1a7 169 inline uint8_t getRotation(void) { rotation %= 4; return rotation; };
nkhorman 9:ddb97c9850a2 170
nkhorman 9:ddb97c9850a2 171 protected:
nkhorman 9:ddb97c9850a2 172 int16_t _rawWidth, _rawHeight; // this is the 'raw' display w/h - never changes
nkhorman 9:ddb97c9850a2 173 int16_t _width, _height; // dependent on rotation
nkhorman 9:ddb97c9850a2 174 int16_t cursor_x, cursor_y;
nkhorman 9:ddb97c9850a2 175 uint16_t textcolor, textbgcolor;
nkhorman 9:ddb97c9850a2 176 uint8_t textsize;
nkhorman 9:ddb97c9850a2 177 uint8_t rotation;
nkhorman 9:ddb97c9850a2 178 bool wrap; // If set, 'wrap' text at right edge of display
nkhorman 9:ddb97c9850a2 179 };
nkhorman 9:ddb97c9850a2 180
SamShiSS 17:9324f9458d8b 181 #endif