17 GxEPD2_EPD(cs, dc, rst, busy, HIGH, 10000000, WIDTH, HEIGHT, panel, hasColor, hasPartialUpdate, hasFastPartialUpdate)
32 _writeScreenBuffer(0x24, value);
39 _writeScreenBuffer(0x24, value);
42void GxEPD2_154_D67::_writeScreenBuffer(uint8_t command, uint8_t value)
45 for (uint32_t i = 0; i < uint32_t(
WIDTH) * uint32_t(
HEIGHT) / 8; i++)
53 _writeImage(0x24, bitmap, x, y, w, h, invert, mirror_y, pgm);
58 _writeImage(0x26, bitmap, x, y, w, h, invert, mirror_y, pgm);
59 _writeImage(0x24, bitmap, x, y, w, h, invert, mirror_y, pgm);
64 _writeImage(0x24, bitmap, x, y, w, h, invert, mirror_y, pgm);
67void GxEPD2_154_D67::_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)
71 int16_t wb = (w + 7) / 8;
74 int16_t x1 = x < 0 ? 0 : x;
75 int16_t y1 = y < 0 ? 0 : y;
76 int16_t w1 = x + w < int16_t(
WIDTH) ? w : int16_t(
WIDTH) - x;
77 int16_t h1 = y + h < int16_t(
HEIGHT) ? h : int16_t(
HEIGHT) - y;
82 if ((w1 <= 0) || (h1 <= 0))
return;
84 _setPartialRamArea(x1, y1, w1, h1);
86 for (int16_t i = 0; i < h1; i++)
88 for (int16_t j = 0; j < w1 / 8; j++)
92 int16_t idx = mirror_y ? j + dx / 8 + ((h - 1 - (i + dy))) * wb : j + dx / 8 + (i + dy) * wb;
95#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
96 data = pgm_read_byte(&bitmap[idx]);
105 if (invert) data = ~data;
113 int16_t x, int16_t y, int16_t w, int16_t h,
bool invert,
bool mirror_y,
bool pgm)
115 _writeImagePart(0x24, bitmap, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
119 int16_t x, int16_t y, int16_t w, int16_t h,
bool invert,
bool mirror_y,
bool pgm)
121 _writeImagePart(0x24, bitmap, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
124void GxEPD2_154_D67::_writeImagePart(uint8_t command,
const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
125 int16_t x, int16_t y, int16_t w, int16_t h,
bool invert,
bool mirror_y,
bool pgm)
129 if ((w_bitmap < 0) || (h_bitmap < 0) || (w < 0) || (h < 0))
return;
130 if ((x_part < 0) || (x_part >= w_bitmap))
return;
131 if ((y_part < 0) || (y_part >= h_bitmap))
return;
132 int16_t wb_bitmap = (w_bitmap + 7) / 8;
133 x_part -= x_part % 8;
134 w = w_bitmap - x_part < w ? w_bitmap - x_part : w;
135 h = h_bitmap - y_part < h ? h_bitmap - y_part : h;
137 w = 8 * ((w + 7) / 8);
138 int16_t x1 = x < 0 ? 0 : x;
139 int16_t y1 = y < 0 ? 0 : y;
140 int16_t w1 = x + w < int16_t(
WIDTH) ? w : int16_t(
WIDTH) - x;
141 int16_t h1 = y + h < int16_t(
HEIGHT) ? h : int16_t(
HEIGHT) - y;
146 if ((w1 <= 0) || (h1 <= 0))
return;
148 _setPartialRamArea(x1, y1, w1, h1);
150 for (int16_t i = 0; i < h1; i++)
152 for (int16_t j = 0; j < w1 / 8; j++)
156 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;
159#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
160 data = pgm_read_byte(&bitmap[idx]);
169 if (invert) data = ~data;
176void GxEPD2_154_D67::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)
180 writeImage(black, x, y, w, h, invert, mirror_y, pgm);
185 int16_t x, int16_t y, int16_t w, int16_t h,
bool invert,
bool mirror_y,
bool pgm)
189 writeImagePart(black, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
193void GxEPD2_154_D67::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)
197 writeImage(data1, x, y, w, h, invert, mirror_y, pgm);
203 writeImage(bitmap, x, y, w, h, invert, mirror_y, pgm);
209 int16_t x, int16_t y, int16_t w, int16_t h,
bool invert,
bool mirror_y,
bool pgm)
211 writeImagePart(bitmap, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
213 writeImagePartAgain(bitmap, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
216void GxEPD2_154_D67::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)
220 drawImage(black, x, y, w, h, invert, mirror_y, pgm);
225 int16_t x, int16_t y, int16_t w, int16_t h,
bool invert,
bool mirror_y,
bool pgm)
229 drawImagePart(black, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
233void GxEPD2_154_D67::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)
237 drawImage(data1, x, y, w, h, invert, mirror_y, pgm);
256 int16_t w1 = x < 0 ? w + x : w;
257 int16_t h1 = y < 0 ? h + y : h;
258 int16_t x1 = x < 0 ? 0 : x;
259 int16_t y1 = y < 0 ? 0 : y;
260 w1 = x1 + w1 < int16_t(
WIDTH) ? w1 : int16_t(
WIDTH) - x1;
261 h1 = y1 + h1 < int16_t(
HEIGHT) ? h1 : int16_t(
HEIGHT) - y1;
262 if ((w1 <= 0) || (h1 <= 0))
return;
265 if (w1 % 8 > 0) w1 += 8 - w1 % 8;
268 _setPartialRamArea(x1, y1, w1, h1);
288void GxEPD2_154_D67::_setPartialRamArea(uint16_t x, uint16_t y, uint16_t w, uint16_t h)
307void GxEPD2_154_D67::_PowerOn()
319void GxEPD2_154_D67::_PowerOff()
332void GxEPD2_154_D67::_InitDisplay()
349void GxEPD2_154_D67::_Init_Full()
356void GxEPD2_154_D67::_Init_Part()
363void GxEPD2_154_D67::_Update_Full()
371void GxEPD2_154_D67::_Update_Part()
static const uint16_t WIDTH
static const uint16_t full_refresh_time
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 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 writeScreenBuffer(uint8_t value=0xFF)
static const uint16_t partial_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 writeScreenBufferAgain(uint8_t value=0xFF)
void clearScreen(uint8_t value=0xFF)
void writeImageForFullRefresh(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)
GxEPD2_154_D67(int16_t cs, int16_t dc, int16_t rst, int16_t busy)
void refresh(bool partial_update_mode=false)
static const uint16_t power_off_time
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)
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)
static const uint16_t HEIGHT
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)
static const uint16_t power_on_time
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)
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 _writeCommand(uint8_t c)
void _writeData(uint8_t d)
void _waitWhileBusy(const char *comment=0, uint16_t busy_time=5000)