mirror of
https://github.com/tsl0922/EPD-nRF5.git
synced 2025-12-06 15:42:48 +08:00
get rid of global EPD var
This commit is contained in:
@@ -130,7 +130,7 @@ void GFX_firstPage(Adafruit_GFX *gfx) {
|
||||
gfx->current_page = 0;
|
||||
}
|
||||
|
||||
bool GFX_nextPage(Adafruit_GFX *gfx, buffer_callback callback) {
|
||||
bool GFX_nextPage(Adafruit_GFX *gfx, buffer_callback callback, void *user_data) {
|
||||
if (callback) {
|
||||
int16_t page_ys = gfx->current_page * gfx->page_height;
|
||||
if (gfx->px != 0 || gfx->py != 0 || gfx->pw != gfx->_width || gfx->ph != gfx->_height) {
|
||||
@@ -138,10 +138,10 @@ bool GFX_nextPage(Adafruit_GFX *gfx, buffer_callback callback) {
|
||||
uint16_t dest_ys = gfx->py + page_ys; // transposed
|
||||
uint16_t dest_ye = MIN(gfx->py + gfx->ph, gfx->py + page_ye);
|
||||
if (dest_ye > dest_ys)
|
||||
callback(gfx->buffer, gfx->color, gfx->px, dest_ys, gfx->pw, dest_ye - dest_ys);
|
||||
callback(user_data, gfx->buffer, gfx->color, gfx->px, dest_ys, gfx->pw, dest_ye - dest_ys);
|
||||
} else {
|
||||
int16_t height = MIN(gfx->page_height, gfx->HEIGHT - page_ys);
|
||||
callback(gfx->buffer, gfx->color, 0, page_ys, gfx->WIDTH, height);
|
||||
callback(user_data, gfx->buffer, gfx->color, 0, page_ys, gfx->WIDTH, height);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#define GFX_GREEN 0x07E0 // 0, 255, 0
|
||||
#define GFX_ORANGE 0xFC00 // 255, 128, 0
|
||||
|
||||
typedef void (*buffer_callback)(uint8_t *black, uint8_t *color, uint16_t x, uint16_t y, uint16_t w, uint16_t h);
|
||||
typedef void (*buffer_callback)(void *user_data, uint8_t *black, uint8_t *color, uint16_t x, uint16_t y, uint16_t w, uint16_t h);
|
||||
|
||||
typedef enum {
|
||||
GFX_ROTATE_0 = 0,
|
||||
@@ -51,7 +51,7 @@ void GFX_begin_4c(Adafruit_GFX *gfx, int16_t w, int16_t h, int16_t buffer_height
|
||||
void GFX_setRotation(Adafruit_GFX *gfx, GFX_Rotate r);
|
||||
void GFX_setWindow(Adafruit_GFX *gfx, uint16_t x, uint16_t y, uint16_t w, uint16_t h);
|
||||
void GFX_firstPage(Adafruit_GFX *gfx);
|
||||
bool GFX_nextPage(Adafruit_GFX *gfx, buffer_callback callback);
|
||||
bool GFX_nextPage(Adafruit_GFX *gfx, buffer_callback callback, void *user_data);
|
||||
void GFX_end(Adafruit_GFX *gfx);
|
||||
|
||||
// DRAW API
|
||||
|
||||
@@ -420,7 +420,7 @@ static void DrawClock(Adafruit_GFX *gfx, tm_t *tm, struct Lunar_Date *Lunar, gui
|
||||
}
|
||||
}
|
||||
|
||||
void DrawGUI(gui_data_t *data, buffer_callback draw, display_mode_t mode)
|
||||
void DrawGUI(gui_data_t *data, buffer_callback callback, void *callback_data)
|
||||
{
|
||||
if (data->week_start > 6) data->week_start = 0;
|
||||
|
||||
@@ -445,7 +445,7 @@ void DrawGUI(gui_data_t *data, buffer_callback draw, display_mode_t mode)
|
||||
|
||||
LUNAR_SolarToLunar(&Lunar, tm.tm_year + YEAR0, tm.tm_mon + 1, tm.tm_mday);
|
||||
|
||||
switch (mode) {
|
||||
switch (data->mode) {
|
||||
case MODE_CALENDAR:
|
||||
DrawCalendar(&gfx, &tm, &Lunar, data);
|
||||
break;
|
||||
@@ -455,11 +455,11 @@ void DrawGUI(gui_data_t *data, buffer_callback draw, display_mode_t mode)
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if ((mode == MODE_CALENDAR || mode == MODE_CLOCK) &&
|
||||
if ((data->mode == MODE_CALENDAR || data->mode == MODE_CLOCK) &&
|
||||
(tm.tm_year + YEAR0 == 2025 && tm.tm_mon + 1 == 1)) {
|
||||
DrawTimeSyncTip(&gfx, data);
|
||||
}
|
||||
} while(GFX_nextPage(&gfx, draw));
|
||||
} while(GFX_nextPage(&gfx, callback, callback_data));
|
||||
|
||||
GFX_end(&gfx);
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ typedef enum {
|
||||
} display_mode_t;
|
||||
|
||||
typedef struct {
|
||||
display_mode_t mode;
|
||||
uint16_t color;
|
||||
uint16_t width;
|
||||
uint16_t height;
|
||||
@@ -20,6 +21,6 @@ typedef struct {
|
||||
char ssid[20];
|
||||
} gui_data_t;
|
||||
|
||||
void DrawGUI(gui_data_t *data, buffer_callback draw, display_mode_t mode);
|
||||
void DrawGUI(gui_data_t *data, buffer_callback callback, void *callback_data);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user