Hacked version of AdaFruit graphics library for SSD1306 usage on I2C

Dependencies:   mbed

Committer:
eggsylah
Date:
Thu Jun 15 15:01:14 2017 +0000
Revision:
0:b0151666c710
First working i2c version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
eggsylah 0:b0151666c710 1 #ifndef _ADAFRUIT_GFX_H
eggsylah 0:b0151666c710 2 #define _ADAFRUIT_GFX_H
eggsylah 0:b0151666c710 3
eggsylah 0:b0151666c710 4 #include <stdlib.h>
eggsylah 0:b0151666c710 5
eggsylah 0:b0151666c710 6 #include "gfxfont.h"
eggsylah 0:b0151666c710 7
eggsylah 0:b0151666c710 8 class Adafruit_GFX {
eggsylah 0:b0151666c710 9
eggsylah 0:b0151666c710 10 public:
eggsylah 0:b0151666c710 11
eggsylah 0:b0151666c710 12 Adafruit_GFX(int16_t w, int16_t h); // Constructor
eggsylah 0:b0151666c710 13
eggsylah 0:b0151666c710 14 // This MUST be defined by the subclass:
eggsylah 0:b0151666c710 15 virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0;
eggsylah 0:b0151666c710 16
eggsylah 0:b0151666c710 17 // These MAY be overridden by the subclass to provide device-specific
eggsylah 0:b0151666c710 18 // optimized code. Otherwise 'generic' versions are used.
eggsylah 0:b0151666c710 19 virtual void
eggsylah 0:b0151666c710 20 drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color),
eggsylah 0:b0151666c710 21 drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color),
eggsylah 0:b0151666c710 22 drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color),
eggsylah 0:b0151666c710 23 drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color),
eggsylah 0:b0151666c710 24 fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color),
eggsylah 0:b0151666c710 25 fillScreen(uint16_t color),
eggsylah 0:b0151666c710 26 invertDisplay(bool i);
eggsylah 0:b0151666c710 27
eggsylah 0:b0151666c710 28 // These exist only with Adafruit_GFX (no subclass overrides)
eggsylah 0:b0151666c710 29 void
eggsylah 0:b0151666c710 30 drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color),
eggsylah 0:b0151666c710 31 drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername,
eggsylah 0:b0151666c710 32 uint16_t color),
eggsylah 0:b0151666c710 33 fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color),
eggsylah 0:b0151666c710 34 fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername,
eggsylah 0:b0151666c710 35 int16_t delta, uint16_t color),
eggsylah 0:b0151666c710 36 drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
eggsylah 0:b0151666c710 37 int16_t x2, int16_t y2, uint16_t color),
eggsylah 0:b0151666c710 38 fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
eggsylah 0:b0151666c710 39 int16_t x2, int16_t y2, uint16_t color),
eggsylah 0:b0151666c710 40 drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h,
eggsylah 0:b0151666c710 41 int16_t radius, uint16_t color),
eggsylah 0:b0151666c710 42 fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h,
eggsylah 0:b0151666c710 43 int16_t radius, uint16_t color),
eggsylah 0:b0151666c710 44
eggsylah 0:b0151666c710 45 drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t color),
eggsylah 0:b0151666c710 46 drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t color, uint16_t bg),
eggsylah 0:b0151666c710 47
eggsylah 0:b0151666c710 48 drawXBitmap(int16_t x, int16_t y, const uint8_t *bitmap,
eggsylah 0:b0151666c710 49 int16_t w, int16_t h, uint16_t color),
eggsylah 0:b0151666c710 50 drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color,
eggsylah 0:b0151666c710 51 uint16_t bg, uint8_t size),
eggsylah 0:b0151666c710 52 setCursor(int16_t x, int16_t y),
eggsylah 0:b0151666c710 53 setTextColor(uint16_t c),
eggsylah 0:b0151666c710 54 setTextColor(uint16_t c, uint16_t bg),
eggsylah 0:b0151666c710 55 setTextSize(uint8_t s),
eggsylah 0:b0151666c710 56 setTextWrap(bool w),
eggsylah 0:b0151666c710 57 setRotation(uint8_t r),
eggsylah 0:b0151666c710 58 cp437(bool x=true),
eggsylah 0:b0151666c710 59 setFont(const GFXfont *f = NULL),
eggsylah 0:b0151666c710 60 getTextBounds(char *string, int16_t x, int16_t y,
eggsylah 0:b0151666c710 61 int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h),
eggsylah 0:b0151666c710 62 getTextBounds(const char *s, int16_t x, int16_t y,
eggsylah 0:b0151666c710 63 int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h),
eggsylah 0:b0151666c710 64 print(const char* str),
eggsylah 0:b0151666c710 65 println(const char* str);
eggsylah 0:b0151666c710 66
eggsylah 0:b0151666c710 67 virtual size_t write(uint8_t);
eggsylah 0:b0151666c710 68
eggsylah 0:b0151666c710 69 int16_t height(void) const;
eggsylah 0:b0151666c710 70 int16_t width(void) const;
eggsylah 0:b0151666c710 71
eggsylah 0:b0151666c710 72 uint8_t getRotation(void) const;
eggsylah 0:b0151666c710 73
eggsylah 0:b0151666c710 74 // get current cursor position (get rotation safe maximum values, using: width() for x, height() for y)
eggsylah 0:b0151666c710 75 int16_t getCursorX(void) const;
eggsylah 0:b0151666c710 76 int16_t getCursorY(void) const;
eggsylah 0:b0151666c710 77
eggsylah 0:b0151666c710 78 protected:
eggsylah 0:b0151666c710 79 const int16_t
eggsylah 0:b0151666c710 80 WIDTH, HEIGHT; // This is the 'raw' display w/h - never changes
eggsylah 0:b0151666c710 81 int16_t
eggsylah 0:b0151666c710 82 _width, _height, // Display w/h as modified by current rotation
eggsylah 0:b0151666c710 83 cursor_x, cursor_y;
eggsylah 0:b0151666c710 84 uint16_t
eggsylah 0:b0151666c710 85 textcolor, textbgcolor;
eggsylah 0:b0151666c710 86 uint8_t
eggsylah 0:b0151666c710 87 textsize,
eggsylah 0:b0151666c710 88 rotation;
eggsylah 0:b0151666c710 89 bool
eggsylah 0:b0151666c710 90 wrap, // If set, 'wrap' text at right edge of display
eggsylah 0:b0151666c710 91 _cp437; // If set, use correct CP437 charset (default is off)
eggsylah 0:b0151666c710 92 GFXfont
eggsylah 0:b0151666c710 93 *gfxFont;
eggsylah 0:b0151666c710 94 };
eggsylah 0:b0151666c710 95
eggsylah 0:b0151666c710 96 #endif // _ADAFRUIT_GFX_H