Adafruit_GFX.h 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. /***********************************
  2. This is a our graphics core library, for all our displays.
  3. We'll be adapting all the
  4. existing libaries to use this core to make updating, support
  5. and upgrading easier!
  6. Adafruit invests time and resources providing this open source code,
  7. please support Adafruit and open-source hardware by purchasing
  8. products from Adafruit!
  9. Written by Limor Fried/Ladyada for Adafruit Industries.
  10. BSD license, check license.txt for more information
  11. All text above must be included in any redistribution
  12. ****************************************/
  13. #ifndef _ADAFRUIT_GFX_H
  14. #define _ADAFRUIT_GFX_H
  15. #if ARDUINO >= 100
  16. #include "Arduino.h"
  17. #include "Print.h"
  18. #else
  19. #include "WProgram.h"
  20. #endif
  21. #define swap(a, b) { int16_t t = a; a = b; b = t; }
  22. class Adafruit_GFX : public Print {
  23. public:
  24. //Adafruit_GFX();
  25. // i have no idea why we have to formally call the constructor. kinda sux
  26. void constructor(uint16_t w, uint16_t h);
  27. // this must be defined by the subclass
  28. virtual void drawPixel(uint16_t x, uint16_t y, uint16_t color);
  29. virtual void invertDisplay(boolean i);
  30. // these are 'generic' drawing functions, so we can share them!
  31. virtual void drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
  32. uint16_t color);
  33. virtual void drawFastVLine(uint16_t x, uint16_t y, uint16_t h, uint16_t color);
  34. virtual void drawFastHLine(uint16_t x, uint16_t y, uint16_t w, uint16_t color);
  35. virtual void drawRect(uint16_t x, uint16_t y, uint16_t w, uint16_t h,
  36. uint16_t color);
  37. virtual void fillRect(uint16_t x, uint16_t y, uint16_t w, uint16_t h,
  38. uint16_t color);
  39. virtual void fillScreen(uint16_t color);
  40. void drawCircle(uint16_t x0, uint16_t y0, uint16_t r,
  41. uint16_t color);
  42. void drawCircleHelper(uint16_t x0, uint16_t y0,
  43. uint16_t r, uint8_t cornername, uint16_t color);
  44. void fillCircle(uint16_t x0, uint16_t y0, uint16_t r,
  45. uint16_t color);
  46. void fillCircleHelper(uint16_t x0, uint16_t y0, uint16_t r,
  47. uint8_t cornername, uint16_t delta, uint16_t color);
  48. void drawTriangle(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1,
  49. uint16_t x2, uint16_t y2, uint16_t color);
  50. void fillTriangle(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1,
  51. uint16_t x2, uint16_t y2, uint16_t color);
  52. void drawRoundRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h,
  53. uint16_t radius, uint16_t color);
  54. void fillRoundRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h,
  55. uint16_t radius, uint16_t color);
  56. void drawBitmap(uint16_t x, uint16_t y,
  57. const uint8_t *bitmap, uint16_t w, uint16_t h,
  58. uint16_t color);
  59. void drawChar(uint16_t x, uint16_t y, char c,
  60. uint16_t color, uint16_t bg, uint8_t size);
  61. #if ARDUINO >= 100
  62. virtual size_t write(uint8_t);
  63. #else
  64. virtual void write(uint8_t);
  65. #endif
  66. void setCursor(uint16_t x, uint16_t y);
  67. void setTextColor(uint16_t c);
  68. void setTextColor(uint16_t c, uint16_t bg);
  69. void setTextSize(uint8_t s);
  70. uint16_t height(void);
  71. uint16_t width(void);
  72. void setRotation(uint8_t r);
  73. uint8_t getRotation(void);
  74. protected:
  75. uint16_t WIDTH, HEIGHT; // this is the 'raw' display w/h - never changes
  76. uint16_t _width, _height; // dependant on rotation
  77. uint16_t cursor_x, cursor_y, textcolor, textbgcolor;
  78. uint8_t textsize;
  79. uint8_t rotation;
  80. };
  81. #endif