Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Adafruit_GFX.h
00001 /*********************************** 00002 This is a our graphics core library, for all our displays. 00003 We'll be adapting all the 00004 existing libaries to use this core to make updating, support 00005 and upgrading easier! 00006 00007 Adafruit invests time and resources providing this open source code, 00008 please support Adafruit and open-source hardware by purchasing 00009 products from Adafruit! 00010 00011 Written by Limor Fried/Ladyada for Adafruit Industries. 00012 BSD license, check license.txt for more information 00013 All text above must be included in any redistribution 00014 ****************************************/ 00015 00016 /* 00017 * Modified by Neal Horman 7/14/2012 for use in mbed 00018 */ 00019 00020 #ifndef _ADAFRUIT_GFX_H_ 00021 #define _ADAFRUIT_GFX_H_ 00022 00023 #include "Adafruit_GFX_Config.h" 00024 00025 static inline void swap(int16_t &a, int16_t &b) 00026 { 00027 int16_t t = a; 00028 00029 a = b; 00030 b = t; 00031 } 00032 00033 #ifndef _BV 00034 #define _BV(bit) (1<<(bit)) 00035 #endif 00036 00037 /** 00038 * This is a Text and Graphics element drawing class. 00039 * These functions draw to the display buffer. 00040 * 00041 00042 */ 00043 class Adafruit_GFX : public Stream 00044 { 00045 public: 00046 Adafruit_GFX(int16_t w, int16_t h) 00047 : _rawWidth(w) 00048 , _rawHeight(h) 00049 , _width(w) 00050 , _height(h) 00051 , cursor_x(0) 00052 , cursor_y(0) 00053 , textcolor(0xFFFF) 00054 , textbgcolor(0xFFFF) 00055 , textsize(1) 00056 , rotation(0) 00057 , wrap(true) 00058 {}; 00059 00060 /// Paint one BLACK or WHITE pixel in the display buffer 00061 // this must be defined by the subclass 00062 virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0; 00063 // this is optional 00064 virtual void invertDisplay(bool i) {}; 00065 00066 // Stream implementation - provides printf() interface 00067 // You would otherwise be forced to use writeChar() 00068 virtual int _putc(int value) { return writeChar(value); }; 00069 virtual int _getc() { return -1; }; 00070 00071 #ifdef GFX_WANT_ABSTRACTS 00072 // these are 'generic' drawing functions, so we can share them! 00073 00074 /** Draw a Horizontal Line 00075 * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h 00076 */ 00077 virtual void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); 00078 /** Draw a rectangle 00079 * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h 00080 */ 00081 virtual void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); 00082 /** Fill the entire display 00083 * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h 00084 */ 00085 virtual void fillScreen(uint16_t color); 00086 00087 /** Draw a circle 00088 * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h 00089 */ 00090 void drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color); 00091 void drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, uint16_t color); 00092 00093 /** Draw and fill a circle 00094 * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h 00095 */ 00096 void fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color); 00097 void fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, int16_t delta, uint16_t color); 00098 00099 /** Draw a triangle 00100 * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h 00101 */ 00102 void drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color); 00103 /** Draw and fill a triangle 00104 * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h 00105 */ 00106 void fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color); 00107 00108 /** Draw a rounded rectangle 00109 * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h 00110 */ 00111 void drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color); 00112 /** Draw and fill a rounded rectangle 00113 * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h 00114 */ 00115 void fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color); 00116 /** Draw a bitmap 00117 * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h 00118 */ 00119 void drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t color); 00120 #endif 00121 00122 #if defined(GFX_WANT_ABSTRACTS) || defined(GFX_SIZEABLE_TEXT) 00123 /** Draw a line 00124 * @note GFX_WANT_ABSTRACTS or GFX_SIZEABLE_TEXT must be defined in Adafruit_GFX_config.h 00125 */ 00126 virtual void drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color); 00127 /** Draw a vertical line 00128 * @note GFX_WANT_ABSTRACTS or GFX_SIZEABLE_TEXT must be defined in Adafruit_GFX_config.h 00129 */ 00130 virtual void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); 00131 /** Draw and fill a rectangle 00132 * @note GFX_WANT_ABSTRACTS or GFX_SIZEABLE_TEXT must be defined in Adafruit_GFX_config.h 00133 */ 00134 virtual void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); 00135 #endif 00136 00137 /// Draw a text character at a specified pixel location 00138 void drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color, uint16_t bg, uint8_t size); 00139 /// Draw a text character at the text cursor location 00140 size_t writeChar(uint8_t); 00141 00142 /// Get the width of the display in pixels 00143 inline int16_t width(void) { return _width; }; 00144 /// Get the height of the display in pixels 00145 inline int16_t height(void) { return _height; }; 00146 00147 /// Set the text cursor location, based on the size of the text 00148 inline void setTextCursor(int16_t x, int16_t y) { cursor_x = x; cursor_y = y; }; 00149 #if defined(GFX_WANT_ABSTRACTS) || defined(GFX_SIZEABLE_TEXT) 00150 /** Set the size of the text to be drawn 00151 * @note Make sure to enable either GFX_SIZEABLE_TEXT or GFX_WANT_ABSTRACTS 00152 */ 00153 inline void setTextSize(uint8_t s) { textsize = (s > 0) ? s : 1; }; 00154 #endif 00155 /// Set the text foreground and background colors to be the same 00156 inline void setTextColor(uint16_t c) { textcolor = c; textbgcolor = c; } 00157 /// Set the text foreground and background colors independantly 00158 inline void setTextColor(uint16_t c, uint16_t b) { textcolor = c; textbgcolor = b; }; 00159 /// Set text wraping mode true or false 00160 inline void setTextWrap(bool w) { wrap = w; }; 00161 00162 /// Set the display rotation, 1, 2, 3, or 4 00163 void setRotation(uint8_t r); 00164 /// Get the current rotation 00165 inline uint8_t getRotation(void) { rotation %= 4; return rotation; }; 00166 00167 protected: 00168 int16_t _rawWidth, _rawHeight; // this is the 'raw' display w/h - never changes 00169 int16_t _width, _height; // dependent on rotation 00170 int16_t cursor_x, cursor_y; 00171 uint16_t textcolor, textbgcolor; 00172 uint8_t textsize; 00173 uint8_t rotation; 00174 bool wrap; // If set, 'wrap' text at right edge of display 00175 }; 00176 00177 #endif
Generated on Sat Jul 16 2022 04:09:36 by
1.7.2