GxEPD2_GFX.h 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // Display Library for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
  2. // Requires HW SPI and Adafruit_GFX. Caution: these e-papers require 3.3V supply AND data lines!
  3. //
  4. // based on Demo Example from Good Display: http://www.good-display.com/download_list/downloadcategoryid=34&isMode=false.html
  5. //
  6. // Author: Jean-Marc Zingg
  7. //
  8. // Version: see library.properties
  9. //
  10. // Library: https://github.com/ZinggJM/GxEPD2
  11. #ifndef _GxEPD2_GFX_H_
  12. #define _GxEPD2_GFX_H_
  13. #include <Adafruit_GFX.h>
  14. class GxEPD2_GFX : public Adafruit_GFX
  15. {
  16. public:
  17. GxEPD2_GFX(GxEPD2_EPD& _epd2, int16_t w, int16_t h) : Adafruit_GFX(w, h), epd2(_epd2) {};
  18. virtual bool mirror(bool m) = 0;
  19. virtual void init(uint32_t serial_diag_bitrate = 0) = 0; // serial_diag_bitrate = 0 : disabled
  20. virtual void fillScreen(uint16_t color) = 0; // 0x0 black, >0x0 white, to buffer
  21. virtual void display(bool partial_update_mode = false) = 0;
  22. virtual void setFullWindow() = 0;
  23. virtual void setPartialWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h) = 0;
  24. virtual void firstPage() = 0;
  25. virtual bool nextPage() = 0;
  26. virtual void drawPaged(void (*drawCallback)(const void*), const void* pv) = 0;
  27. virtual void drawInvertedBitmap(int16_t x, int16_t y, const uint8_t bitmap[], int16_t w, int16_t h, uint16_t color) = 0;
  28. // Support for Bitmaps (Sprites) to Controller Buffer and to Screen
  29. virtual void clearScreen(uint8_t value = 0xFF) = 0; // init controller memory and screen (default white)
  30. virtual void writeScreenBuffer(uint8_t value = 0xFF) = 0; // init controller memory (default white)
  31. // write to controller memory, without screen refresh; x and w should be multiple of 8
  32. virtual void writeImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false) = 0;
  33. virtual void writeImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false) = 0;
  34. // write to controller memory, with screen refresh; x and w should be multiple of 8
  35. virtual void drawImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false) = 0;
  36. virtual void drawImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false) = 0;
  37. virtual void refresh(bool partial_update_mode = false) = 0; // screen refresh from controller memory to full screen
  38. virtual void refresh(int16_t x, int16_t y, int16_t w, int16_t h) = 0; // screen refresh from controller memory, partial screen
  39. public:
  40. GxEPD2_EPD& epd2;
  41. };
  42. #endif