17 GxEPD2_EPD(cs, dc, rst, busy, HIGH, 10000000, WIDTH, HEIGHT, panel, hasColor, hasPartialUpdate, hasFastPartialUpdate)
34 for (uint32_t i = 0; i < uint32_t(
WIDTH) * uint32_t(
HEIGHT) / 8; i++)
46 for (uint32_t i = 0; i < uint32_t(
WIDTH) * uint32_t(
HEIGHT) / 8; i++)
54 _writeImage(0x24, bitmap, x, y, w, h, invert, mirror_y, pgm);
59 _writeImage(0x26, bitmap, x, y, w, h, invert, mirror_y, pgm);
62void GxEPD2_213_B73::_writeImage(uint8_t command,
const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h,
bool invert,
bool mirror_y,
bool pgm)
66 int16_t wb = (w + 7) / 8;
69 int16_t x1 = x < 0 ? 0 : x;
70 int16_t y1 = y < 0 ? 0 : y;
71 int16_t w1 = x + w < int16_t(
WIDTH) ? w : int16_t(
WIDTH) - x;
72 int16_t h1 = y + h < int16_t(
HEIGHT) ? h : int16_t(
HEIGHT) - y;
77 if ((w1 <= 0) || (h1 <= 0))
return;
79 _setPartialRamArea(x1, y1, w1, h1);
81 for (int16_t i = 0; i < h1; i++)
83 for (int16_t j = 0; j < w1 / 8; j++)
87 int16_t idx = mirror_y ? j + dx / 8 + ((h - 1 - (i + dy))) * wb : j + dx / 8 + (i + dy) * wb;
90#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
91 data = pgm_read_byte(&bitmap[idx]);
100 if (invert) data = ~data;
108 int16_t x, int16_t y, int16_t w, int16_t h,
bool invert,
bool mirror_y,
bool pgm)
110 _writeImagePart(0x24, bitmap, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
114 int16_t x, int16_t y, int16_t w, int16_t h,
bool invert,
bool mirror_y,
bool pgm)
116 _writeImagePart(0x26, bitmap, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
119void GxEPD2_213_B73::_writeImagePart(uint8_t command,
const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
120 int16_t x, int16_t y, int16_t w, int16_t h,
bool invert,
bool mirror_y,
bool pgm)
124 if ((w_bitmap < 0) || (h_bitmap < 0) || (w < 0) || (h < 0))
return;
125 if ((x_part < 0) || (x_part >= w_bitmap))
return;
126 if ((y_part < 0) || (y_part >= h_bitmap))
return;
127 int16_t wb_bitmap = (w_bitmap + 7) / 8;
128 x_part -= x_part % 8;
129 w = w_bitmap - x_part < w ? w_bitmap - x_part : w;
130 h = h_bitmap - y_part < h ? h_bitmap - y_part : h;
132 w = 8 * ((w + 7) / 8);
133 int16_t x1 = x < 0 ? 0 : x;
134 int16_t y1 = y < 0 ? 0 : y;
135 int16_t w1 = x + w < int16_t(
WIDTH) ? w : int16_t(
WIDTH) - x;
136 int16_t h1 = y + h < int16_t(
HEIGHT) ? h : int16_t(
HEIGHT) - y;
141 if ((w1 <= 0) || (h1 <= 0))
return;
143 _setPartialRamArea(x1, y1, w1, h1);
145 for (int16_t i = 0; i < h1; i++)
147 for (int16_t j = 0; j < w1 / 8; j++)
151 int16_t idx = mirror_y ? x_part / 8 + j + dx / 8 + ((h_bitmap - 1 - (y_part + i + dy))) * wb_bitmap : x_part / 8 + j + dx / 8 + (y_part + i + dy) * wb_bitmap;
154#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
155 data = pgm_read_byte(&bitmap[idx]);
164 if (invert) data = ~data;
171void GxEPD2_213_B73::writeImage(
const uint8_t* black,
const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h,
bool invert,
bool mirror_y,
bool pgm)
175 writeImage(black, x, y, w, h, invert, mirror_y, pgm);
180 int16_t x, int16_t y, int16_t w, int16_t h,
bool invert,
bool mirror_y,
bool pgm)
184 writeImagePart(black, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
188void GxEPD2_213_B73::writeNative(
const uint8_t* data1,
const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h,
bool invert,
bool mirror_y,
bool pgm)
192 writeImage(data1, x, y, w, h, invert, mirror_y, pgm);
198 writeImage(bitmap, x, y, w, h, invert, mirror_y, pgm);
204 int16_t x, int16_t y, int16_t w, int16_t h,
bool invert,
bool mirror_y,
bool pgm)
206 writeImagePart(bitmap, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
208 writeImagePartAgain(bitmap, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
211void GxEPD2_213_B73::drawImage(
const uint8_t* black,
const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h,
bool invert,
bool mirror_y,
bool pgm)
215 drawImage(black, x, y, w, h, invert, mirror_y, pgm);
220 int16_t x, int16_t y, int16_t w, int16_t h,
bool invert,
bool mirror_y,
bool pgm)
224 drawImagePart(black, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
228void GxEPD2_213_B73::drawNative(
const uint8_t* data1,
const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h,
bool invert,
bool mirror_y,
bool pgm)
232 drawImage(data1, x, y, w, h, invert, mirror_y, pgm);
251 int16_t w1 = x < 0 ? w + x : w;
252 int16_t h1 = y < 0 ? h + y : h;
253 int16_t x1 = x < 0 ? 0 : x;
254 int16_t y1 = y < 0 ? 0 : y;
255 w1 = x1 + w1 < int16_t(
WIDTH) ? w1 : int16_t(
WIDTH) - x1;
256 h1 = y1 + h1 < int16_t(
HEIGHT) ? h1 : int16_t(
HEIGHT) - y1;
257 if ((w1 <= 0) || (h1 <= 0))
return;
260 if (w1 % 8 > 0) w1 += 8 - w1 % 8;
263 _setPartialRamArea(x1, y1, w1, h1);
283void GxEPD2_213_B73::_setPartialRamArea(uint16_t x, uint16_t y, uint16_t w, uint16_t h)
302void GxEPD2_213_B73::_PowerOn()
314void GxEPD2_213_B73::_PowerOff()
324void GxEPD2_213_B73::_InitDisplay()
352const uint8_t GxEPD2_213_B73::LUT_DATA_full[]
PROGMEM =
354 0xA0, 0x90, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
355 0x50, 0x90, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
356 0xA0, 0x90, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
357 0x50, 0x90, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
358 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
360 0x0F, 0x0F, 0x00, 0x00, 0x00,
361 0x0F, 0x0F, 0x00, 0x00, 0x03,
362 0x0F, 0x0F, 0x00, 0x00, 0x00,
363 0x00, 0x00, 0x00, 0x00, 0x00,
364 0x00, 0x00, 0x00, 0x00, 0x00,
365 0x00, 0x00, 0x00, 0x00, 0x00,
366 0x00, 0x00, 0x00, 0x00, 0x00,
367 0x00, 0x00, 0x00, 0x00, 0x00,
368 0x00, 0x00, 0x00, 0x00, 0x00,
369 0x00, 0x00, 0x00, 0x00, 0x00,
374const uint8_t GxEPD2_213_B73::LUT_DATA_part[]
PROGMEM =
376 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
377 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
378 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
379 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
380 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
382 0x0A, 0x00, 0x00, 0x00, 0x00,
383 0x00, 0x00, 0x00, 0x00, 0x00,
384 0x00, 0x00, 0x00, 0x00, 0x00,
385 0x00, 0x00, 0x00, 0x00, 0x00,
386 0x00, 0x00, 0x00, 0x00, 0x00,
387 0x00, 0x00, 0x00, 0x00, 0x00,
388 0x00, 0x00, 0x00, 0x00, 0x00,
389 0x00, 0x00, 0x00, 0x00, 0x00,
390 0x00, 0x00, 0x00, 0x00, 0x00,
391 0x00, 0x00, 0x00, 0x00, 0x00,
396void GxEPD2_213_B73::_Init_Full()
405void GxEPD2_213_B73::_Init_Part()
416void GxEPD2_213_B73::_Update_Full()
424void GxEPD2_213_B73::_Update_Part()
const uint8_t GxEPD2_213_B73::LUT_DATA_full[] PROGMEM
static const uint16_t HEIGHT
static const uint16_t full_refresh_time
void writeNative(const uint8_t *data1, const uint8_t *data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert=false, bool mirror_y=false, bool pgm=false)
void writeImagePartAgain(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap, int16_t x, int16_t y, int16_t w, int16_t h, bool invert=false, bool mirror_y=false, bool pgm=false)
void refresh(bool partial_update_mode=false)
void writeScreenBuffer(uint8_t value=0xFF)
void writeImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap, int16_t x, int16_t y, int16_t w, int16_t h, bool invert=false, bool mirror_y=false, bool pgm=false)
void clearScreen(uint8_t value=0xFF)
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)
static const uint16_t partial_refresh_time
void writeScreenBufferAgain(uint8_t value=0xFF)
static const uint16_t power_on_time
void drawImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap, int16_t x, int16_t y, int16_t w, int16_t h, bool invert=false, bool mirror_y=false, bool pgm=false)
GxEPD2_213_B73(int16_t cs, int16_t dc, int16_t rst, int16_t busy)
void drawNative(const uint8_t *data1, const uint8_t *data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert=false, bool mirror_y=false, bool pgm=false)
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)
void writeImageAgain(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)
static const uint16_t power_off_time
static const uint16_t WIDTH
void _writeCommand(uint8_t c)
void _writeData(uint8_t d)
void _waitWhileBusy(const char *comment=0, uint16_t busy_time=5000)
void _writeDataPGM(const uint8_t *data, uint16_t n, int16_t fill_with_zeroes=0)