Adafruit_GFX.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #ifndef _ADAFRUIT_GFX_H
  2. #define _ADAFRUIT_GFX_H
  3. #if ARDUINO >= 100
  4. #include "Arduino.h"
  5. #include "Print.h"
  6. #else
  7. #include "WProgram.h"
  8. #endif
  9. #define swap(a, b) { int16_t t = a; a = b; b = t; }
  10. class Adafruit_GFX : public Print {
  11. public:
  12. Adafruit_GFX(int16_t w, int16_t h); // Constructor
  13. // This MUST be defined by the subclass:
  14. virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0;
  15. // These MAY be overridden by the subclass to provide device-specific
  16. // optimized code. Otherwise 'generic' versions are used.
  17. virtual void
  18. drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color),
  19. drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color),
  20. drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color),
  21. drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color),
  22. fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color),
  23. fillScreen(uint16_t color),
  24. invertDisplay(boolean i);
  25. // These exist only with Adafruit_GFX (no subclass overrides)
  26. void
  27. drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color),
  28. drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername,
  29. uint16_t color),
  30. fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color),
  31. fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername,
  32. int16_t delta, uint16_t color),
  33. drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
  34. int16_t x2, int16_t y2, uint16_t color),
  35. fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
  36. int16_t x2, int16_t y2, uint16_t color),
  37. drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h,
  38. int16_t radius, uint16_t color),
  39. fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h,
  40. int16_t radius, uint16_t color),
  41. drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap,
  42. int16_t w, int16_t h, uint16_t color),
  43. drawXBitmap(int16_t x, int16_t y, const uint8_t *bitmap,
  44. int16_t w, int16_t h, uint16_t color),
  45. drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color,
  46. uint16_t bg, uint8_t size),
  47. setCursor(int16_t x, int16_t y),
  48. setTextColor(uint16_t c),
  49. setTextColor(uint16_t c, uint16_t bg),
  50. setTextSize(uint8_t s),
  51. setTextWrap(boolean w),
  52. setRotation(uint8_t r);
  53. #if ARDUINO >= 100
  54. virtual size_t write(uint8_t);
  55. #else
  56. virtual void write(uint8_t);
  57. #endif
  58. int16_t
  59. height(void),
  60. width(void);
  61. uint8_t getRotation(void);
  62. protected:
  63. const int16_t
  64. WIDTH, HEIGHT; // This is the 'raw' display w/h - never changes
  65. int16_t
  66. _width, _height, // Display w/h as modified by current rotation
  67. cursor_x, cursor_y;
  68. uint16_t
  69. textcolor, textbgcolor;
  70. uint8_t
  71. textsize,
  72. rotation;
  73. boolean
  74. wrap; // If set, 'wrap' text at right edge of display
  75. };
  76. #endif // _ADAFRUIT_GFX_H