Deleted Adafruit Llgo
Dependents: GPS_OLED_HelloWorld WIZwiki-REST-io_v101 WIZwiki-REST-io_v102 WIZwiki-REST-io_v103
Fork of Adafruit_GFX by
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 #define BLACK 0 00038 #define WHITE 1 00039 00040 /** 00041 * This is a Text and Graphics element drawing class. 00042 * These functions draw to the display buffer. 00043 * 00044 * Display drivers should be derived from here. 00045 * The Display drivers push the display buffer to the 00046 * hardware based on application control. 00047 * 00048 */ 00049 class Adafruit_GFX : public Stream 00050 { 00051 public: 00052 Adafruit_GFX(int16_t w, int16_t h) 00053 : _rawWidth(w) 00054 , _rawHeight(h) 00055 , _width(w) 00056 , _height(h) 00057 , cursor_x(0) 00058 , cursor_y(0) 00059 , textcolor(WHITE) 00060 , textbgcolor(BLACK) 00061 , textsize(1) 00062 , rotation(0) 00063 , wrap(true) 00064 {}; 00065 00066 /// Paint one BLACK or WHITE pixel in the display buffer 00067 // this must be defined by the subclass 00068 virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0; 00069 // this is optional 00070 virtual void invertDisplay(bool i) {}; 00071 00072 // Stream implementation - provides printf() interface 00073 // You would otherwise be forced to use writeChar() 00074 virtual int _putc(int value) { 00075 return writeChar(value); 00076 }; 00077 virtual int _getc() { 00078 return -1; 00079 }; 00080 00081 #ifdef GFX_WANT_ABSTRACTS 00082 // these are 'generic' drawing functions, so we can share them! 00083 00084 /** Draw a Horizontal Line 00085 * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h 00086 */ 00087 virtual void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); 00088 /** Draw a rectangle 00089 * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h 00090 */ 00091 virtual void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); 00092 /** Fill the entire display 00093 * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h 00094 */ 00095 virtual void fillScreen(uint16_t color); 00096 00097 /** Draw a circle 00098 * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h 00099 */ 00100 void drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color); 00101 void drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, uint16_t color); 00102 00103 /** Draw and fill a circle 00104 * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h 00105 */ 00106 void fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color); 00107 void fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, int16_t delta, uint16_t color); 00108 00109 /** Draw a triangle 00110 * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h 00111 */ 00112 void drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color); 00113 /** Draw and fill a triangle 00114 * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h 00115 */ 00116 void fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color); 00117 00118 /** Draw a rounded rectangle 00119 * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h 00120 */ 00121 void drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color); 00122 /** Draw and fill a rounded rectangle 00123 * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h 00124 */ 00125 void fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color); 00126 /** Draw a bitmap 00127 * @note GFX_WANT_ABSTRACTS must be defined in Adafruit_GFX_config.h 00128 */ 00129 void drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t color); 00130 #endif 00131 00132 #if defined(GFX_WANT_ABSTRACTS) || defined(GFX_SIZEABLE_TEXT) 00133 /** Draw a line 00134 * @note GFX_WANT_ABSTRACTS or GFX_SIZEABLE_TEXT must be defined in Adafruit_GFX_config.h 00135 */ 00136 virtual void drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color); 00137 /** Draw a vertical line 00138 * @note GFX_WANT_ABSTRACTS or GFX_SIZEABLE_TEXT must be defined in Adafruit_GFX_config.h 00139 */ 00140 virtual void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); 00141 /** Draw and fill a rectangle 00142 * @note GFX_WANT_ABSTRACTS or GFX_SIZEABLE_TEXT must be defined in Adafruit_GFX_config.h 00143 */ 00144 virtual void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); 00145 #endif 00146 00147 /// Draw a text character at a specified pixel location 00148 void drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color, uint16_t bg, uint8_t size); 00149 /// Draw a text character at the text cursor location 00150 size_t writeChar(uint8_t); 00151 00152 /// Get the width of the display in pixels 00153 inline int16_t width(void) { 00154 return _width; 00155 }; 00156 /// Get the height of the display in pixels 00157 inline int16_t height(void) { 00158 return _height; 00159 }; 00160 00161 /// Set the text cursor location, based on the size of the text 00162 inline void setTextCursor(int16_t x, int16_t y) { 00163 cursor_x = x; 00164 cursor_y = y; 00165 }; 00166 #if defined(GFX_WANT_ABSTRACTS) || defined(GFX_SIZEABLE_TEXT) 00167 /** Set the size of the text to be drawn 00168 * @note Make sure to enable either GFX_SIZEABLE_TEXT or GFX_WANT_ABSTRACTS 00169 */ 00170 inline void setTextSize(uint8_t s) { 00171 textsize = (s > 0) ? s : 1; 00172 }; 00173 #endif 00174 /// Set the text foreground and background colors to be the same 00175 inline void setTextColor(uint16_t c) { 00176 textcolor = c; 00177 textbgcolor = c; 00178 } 00179 /// Set the text foreground and background colors independantly 00180 inline void setTextColor(uint16_t c, uint16_t b) { 00181 textcolor = c; 00182 textbgcolor = b; 00183 }; 00184 /// Set text wraping mode true or false 00185 inline void setTextWrap(bool w) { 00186 wrap = w; 00187 }; 00188 00189 /// Set the display rotation, 1, 2, 3, or 4 00190 void setRotation(uint8_t r); 00191 /// Get the current rotation 00192 inline uint8_t getRotation(void) { 00193 rotation %= 4; 00194 return rotation; 00195 }; 00196 00197 protected: 00198 int16_t _rawWidth, _rawHeight; // this is the 'raw' display w/h - never changes 00199 int16_t _width, _height; // dependent on rotation 00200 int16_t cursor_x, cursor_y; 00201 uint16_t textcolor, textbgcolor; 00202 uint8_t textsize; 00203 uint8_t rotation; 00204 bool wrap; // If set, 'wrap' text at right edge of display 00205 }; 00206 00207 #endif
Generated on Wed Jul 13 2022 02:57:57 by 1.7.2