Deleted Adafruit Llgo

Dependents:   GPS_OLED_HelloWorld WIZwiki-REST-io_v101 WIZwiki-REST-io_v102 WIZwiki-REST-io_v103

Fork of Adafruit_GFX by DongEun Koak

Committer:
eunkyoungkim
Date:
Mon Jul 27 01:58:00 2015 +0000
Revision:
19:beff890cf659
Parent:
14:edb3c36aa1a7
deleted Adafruit Logo

Who changed what in which revision?

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