91 lines
3.0 KiB
C
91 lines
3.0 KiB
C
|
#ifndef _ADAFRUIT_GFX_H
|
||
|
#define _ADAFRUIT_GFX_H
|
||
|
|
||
|
#if ARDUINO >= 100
|
||
|
#include "Arduino.h"
|
||
|
#include "Print.h"
|
||
|
#else
|
||
|
#include "WProgram.h"
|
||
|
#endif
|
||
|
|
||
|
#define swap(a, b) { int16_t t = a; a = b; b = t; }
|
||
|
|
||
|
class Adafruit_GFX : public Print {
|
||
|
|
||
|
public:
|
||
|
|
||
|
Adafruit_GFX(int16_t w, int16_t h); // Constructor
|
||
|
|
||
|
// This MUST be defined by the subclass:
|
||
|
virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0;
|
||
|
|
||
|
// These MAY be overridden by the subclass to provide device-specific
|
||
|
// optimized code. Otherwise 'generic' versions are used.
|
||
|
virtual void
|
||
|
drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color),
|
||
|
drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color),
|
||
|
drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color),
|
||
|
drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color),
|
||
|
fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color),
|
||
|
fillScreen(uint16_t color),
|
||
|
invertDisplay(boolean i);
|
||
|
|
||
|
// These exist only with Adafruit_GFX (no subclass overrides)
|
||
|
void
|
||
|
drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color),
|
||
|
drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername,
|
||
|
uint16_t color),
|
||
|
fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color),
|
||
|
fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername,
|
||
|
int16_t delta, uint16_t color),
|
||
|
drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
|
||
|
int16_t x2, int16_t y2, uint16_t color),
|
||
|
fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
|
||
|
int16_t x2, int16_t y2, uint16_t color),
|
||
|
drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h,
|
||
|
int16_t radius, uint16_t color),
|
||
|
fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h,
|
||
|
int16_t radius, uint16_t color),
|
||
|
drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap,
|
||
|
int16_t w, int16_t h, uint16_t color),
|
||
|
drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap,
|
||
|
int16_t w, int16_t h, uint16_t color, uint16_t bg),
|
||
|
drawXBitmap(int16_t x, int16_t y, const uint8_t *bitmap,
|
||
|
int16_t w, int16_t h, uint16_t color),
|
||
|
drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color,
|
||
|
uint16_t bg, uint8_t size),
|
||
|
setCursor(int16_t x, int16_t y),
|
||
|
setTextColor(uint16_t c),
|
||
|
setTextColor(uint16_t c, uint16_t bg),
|
||
|
setTextSize(uint8_t s),
|
||
|
setTextWrap(boolean w),
|
||
|
setRotation(uint8_t r);
|
||
|
|
||
|
#if ARDUINO >= 100
|
||
|
virtual size_t write(uint8_t);
|
||
|
#else
|
||
|
virtual void write(uint8_t);
|
||
|
#endif
|
||
|
|
||
|
int16_t height(void) const;
|
||
|
int16_t width(void) const;
|
||
|
|
||
|
uint8_t getRotation(void) const;
|
||
|
|
||
|
protected:
|
||
|
const int16_t
|
||
|
WIDTH, HEIGHT; // This is the 'raw' display w/h - never changes
|
||
|
int16_t
|
||
|
_width, _height, // Display w/h as modified by current rotation
|
||
|
cursor_x, cursor_y;
|
||
|
uint16_t
|
||
|
textcolor, textbgcolor;
|
||
|
uint8_t
|
||
|
textsize,
|
||
|
rotation;
|
||
|
boolean
|
||
|
wrap; // If set, 'wrap' text at right edge of display
|
||
|
};
|
||
|
|
||
|
#endif // _ADAFRUIT_GFX_H
|