ESPectro32 Library
Library for using ESPectro32 board
 All Classes Functions Variables Enumerations Enumerator Pages
Adafruit_GFX.h
1 #ifndef _ADAFRUIT_GFX_H
2 #define _ADAFRUIT_GFX_H
3 
4 //#if ARDUINO >= 100
5  #include "Arduino.h"
6  #include "Print.h"
7 //#else
8 // #include "WProgram.h"
9 //#endif
10 #include "gfxfont.h"
11 
12 class Adafruit_GFX : public Print {
13 
14  public:
15 
16  Adafruit_GFX(int16_t w, int16_t h); // Constructor
17  virtual ~Adafruit_GFX();
18 
19  // This MUST be defined by the subclass:
20  virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0;
21 
22  // TRANSACTION API / CORE DRAW API
23  // These MAY be overridden by the subclass to provide device-specific
24  // optimized code. Otherwise 'generic' versions are used.
25  virtual void startWrite(void);
26  virtual void writePixel(int16_t x, int16_t y, uint16_t color);
27  virtual void writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
28  virtual void writeFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color);
29  virtual void writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color);
30  virtual void writeLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color);
31  virtual void endWrite(void);
32 
33  // CONTROL API
34  // These MAY be overridden by the subclass to provide device-specific
35  // optimized code. Otherwise 'generic' versions are used.
36  virtual void setRotation(uint8_t r);
37  virtual void invertDisplay(boolean i);
38 
39  // BASIC DRAW API
40  // These MAY be overridden by the subclass to provide device-specific
41  // optimized code. Otherwise 'generic' versions are used.
42  virtual void
43  // It's good to implement those, even if using transaction API
44  drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color),
45  drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color),
46  fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color),
47  fillScreen(uint16_t color),
48  // Optional and probably not necessary to change
49  drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color),
50  drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
51 
52  // These exist only with Adafruit_GFX (no subclass overrides)
53  void
54  drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color),
55  drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername,
56  uint16_t color),
57  fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color),
58  fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername,
59  int16_t delta, uint16_t color),
60  drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
61  int16_t x2, int16_t y2, uint16_t color),
62  fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
63  int16_t x2, int16_t y2, uint16_t color),
64  drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h,
65  int16_t radius, uint16_t color),
66  fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h,
67  int16_t radius, uint16_t color),
68  drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[],
69  int16_t w, int16_t h, uint16_t color),
70  drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[],
71  int16_t w, int16_t h, uint16_t color, uint16_t bg),
72  drawBitmap(int16_t x, int16_t y, uint8_t *bitmap,
73  int16_t w, int16_t h, uint16_t color),
74  drawBitmap(int16_t x, int16_t y, uint8_t *bitmap,
75  int16_t w, int16_t h, uint16_t color, uint16_t bg),
76  drawXBitmap(int16_t x, int16_t y, const uint8_t bitmap[],
77  int16_t w, int16_t h, uint16_t color),
78  drawGrayscaleBitmap(int16_t x, int16_t y, const uint8_t bitmap[],
79  int16_t w, int16_t h),
80  drawGrayscaleBitmap(int16_t x, int16_t y, uint8_t *bitmap,
81  int16_t w, int16_t h),
82  drawGrayscaleBitmap(int16_t x, int16_t y,
83  const uint8_t bitmap[], const uint8_t mask[],
84  int16_t w, int16_t h),
85  drawGrayscaleBitmap(int16_t x, int16_t y,
86  uint8_t *bitmap, uint8_t *mask, int16_t w, int16_t h),
87  drawRGBBitmap(int16_t x, int16_t y, const uint16_t bitmap[],
88  int16_t w, int16_t h),
89  drawRGBBitmap(int16_t x, int16_t y, uint16_t *bitmap,
90  int16_t w, int16_t h),
91  drawRGBBitmap(int16_t x, int16_t y,
92  const uint16_t bitmap[], const uint8_t mask[],
93  int16_t w, int16_t h),
94  drawRGBBitmap(int16_t x, int16_t y,
95  uint16_t *bitmap, uint8_t *mask, int16_t w, int16_t h),
96  drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color,
97  uint16_t bg, uint8_t size),
98  setCursor(int16_t x, int16_t y),
99  setTextColor(uint16_t c),
100  setTextColor(uint16_t c, uint16_t bg),
101  setTextSize(uint8_t s),
102  setTextWrap(boolean w),
103  cp437(boolean x=true),
104  setFont(const GFXfont *f = NULL),
105  getTextBounds(char *string, int16_t x, int16_t y,
106  int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h),
107  getTextBounds(const __FlashStringHelper *s, int16_t x, int16_t y,
108  int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h);
109 
110 #if ARDUINO >= 100
111  virtual size_t write(uint8_t);
112 #else
113  virtual void write(uint8_t);
114 #endif
115 
116  int16_t height(void) const;
117  int16_t width(void) const;
118 
119  uint8_t getRotation(void) const;
120 
121  // get current cursor position (get rotation safe maximum values, using: width() for x, height() for y)
122  int16_t getCursorX(void) const;
123  int16_t getCursorY(void) const;
124 
125  protected:
126  void
127  charBounds(char c, int16_t *x, int16_t *y,
128  int16_t *minx, int16_t *miny, int16_t *maxx, int16_t *maxy);
129  const int16_t
130  WIDTH, HEIGHT; // This is the 'raw' display w/h - never changes
131  int16_t
132  _width, _height, // Display w/h as modified by current rotation
133  cursor_x, cursor_y;
134  uint16_t
135  textcolor, textbgcolor;
136  uint8_t
137  textsize,
138  rotation;
139  boolean
140  wrap, // If set, 'wrap' text at right edge of display
141  _cp437; // If set, use correct CP437 charset (default is off)
142  GFXfont
143  *gfxFont;
144 };
145 
147 
148  public:
149  Adafruit_GFX_Button(void);
150  // "Classic" initButton() uses center & size
151  void initButton(Adafruit_GFX *gfx, int16_t x, int16_t y,
152  uint16_t w, uint16_t h, uint16_t outline, uint16_t fill,
153  uint16_t textcolor, char *label, uint8_t textsize);
154  // New/alt initButton() uses upper-left corner & size
155  void initButtonUL(Adafruit_GFX *gfx, int16_t x1, int16_t y1,
156  uint16_t w, uint16_t h, uint16_t outline, uint16_t fill,
157  uint16_t textcolor, char *label, uint8_t textsize);
158  void drawButton(boolean inverted = false);
159  boolean contains(int16_t x, int16_t y);
160 
161  void press(boolean p);
162  boolean isPressed();
163  boolean justPressed();
164  boolean justReleased();
165 
166  private:
167  Adafruit_GFX *_gfx;
168  int16_t _x1, _y1; // Coordinates of top-left corner
169  uint16_t _w, _h;
170  uint8_t _textsize;
171  uint16_t _outlinecolor, _fillcolor, _textcolor;
172  char _label[10];
173 
174  boolean currstate, laststate;
175 };
176 
177 class GFXcanvas1 : public Adafruit_GFX {
178  public:
179  GFXcanvas1(uint16_t w, uint16_t h);
180  ~GFXcanvas1(void);
181  void drawPixel(int16_t x, int16_t y, uint16_t color),
182  fillScreen(uint16_t color);
183  uint8_t *getBuffer(void);
184  private:
185  uint8_t *buffer;
186 };
187 
188 class GFXcanvas8 : public Adafruit_GFX {
189  public:
190  GFXcanvas8(uint16_t w, uint16_t h);
191  ~GFXcanvas8(void);
192  void drawPixel(int16_t x, int16_t y, uint16_t color),
193  fillScreen(uint16_t color),
194  writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color);
195 
196  uint8_t *getBuffer(void);
197  private:
198  uint8_t *buffer;
199 };
200 
201 class GFXcanvas16 : public Adafruit_GFX {
202  public:
203  GFXcanvas16(uint16_t w, uint16_t h);
204  ~GFXcanvas16(void);
205  void drawPixel(int16_t x, int16_t y, uint16_t color),
206  fillScreen(uint16_t color);
207  uint16_t *getBuffer(void);
208  private:
209  uint16_t *buffer;
210 };
211 
212 #endif // _ADAFRUIT_GFX_H
Definition: Adafruit_GFX.h:201
Definition: Adafruit_GFX.h:188
Definition: Adafruit_GFX.h:12
Definition: Adafruit_GFX.h:177
Definition: Adafruit_GFX.h:146
Definition: gfxfont.h:17