Merge branch 'dev-6.0' into obj_drag_dir

This commit is contained in:
Themba Dube
2019-04-05 14:52:35 -04:00
5 changed files with 138 additions and 140 deletions

View File

@@ -157,16 +157,12 @@ void lv_draw_fill(const lv_area_t * cords_p, const lv_area_t * mask_p, lv_color_
/*Not opaque fill*/
else if(opa == LV_OPA_COVER) {
/*Use hw fill if present*/
if(disp->driver.mem_fill) {
lv_coord_t row;
for(row = vdb_rel_a.y1; row <= vdb_rel_a.y2; row++) {
disp->driver.mem_fill(&vdb_buf_tmp[vdb_rel_a.x1], w, color);
vdb_buf_tmp += vdb_width;
}
if(disp->driver.mem_fill_cb) {
disp->driver.mem_fill_cb(vdb->buf_act, &vdb->area, &vdb_rel_a, color);
}
/*Use hw blend if present and the area is not too small*/
else if(lv_area_get_height(&vdb_rel_a) > VFILL_HW_ACC_SIZE_LIMIT &&
disp->driver.mem_blend) {
disp->driver.mem_blend_cb) {
/*Fill a one line sized buffer with a color and blend this later*/
if(color_array_tmp[0].full != color.full || last_width != w) {
uint16_t i;
@@ -179,7 +175,7 @@ void lv_draw_fill(const lv_area_t * cords_p, const lv_area_t * mask_p, lv_color_
/*Blend the filled line to every line VDB line-by-line*/
lv_coord_t row;
for(row = vdb_rel_a.y1; row <= vdb_rel_a.y2; row++) {
disp->driver.mem_blend(&vdb_buf_tmp[vdb_rel_a.x1], color_array_tmp, w, opa);
disp->driver.mem_blend_cb(&vdb_buf_tmp[vdb_rel_a.x1], color_array_tmp, w, opa);
vdb_buf_tmp += vdb_width;
}
@@ -193,7 +189,7 @@ void lv_draw_fill(const lv_area_t * cords_p, const lv_area_t * mask_p, lv_color_
/*Fill with opacity*/
else {
/*Use hw blend if present*/
if(disp->driver.mem_blend) {
if(disp->driver.mem_blend_cb) {
if(color_array_tmp[0].full != color.full || last_width != w) {
uint16_t i;
for(i = 0; i < w; i++) {
@@ -204,7 +200,7 @@ void lv_draw_fill(const lv_area_t * cords_p, const lv_area_t * mask_p, lv_color_
}
lv_coord_t row;
for(row = vdb_rel_a.y1; row <= vdb_rel_a.y2; row++) {
disp->driver.mem_blend(&vdb_buf_tmp[vdb_rel_a.x1], color_array_tmp, w, opa);
disp->driver.mem_blend_cb(&vdb_buf_tmp[vdb_rel_a.x1], color_array_tmp, w, opa);
vdb_buf_tmp += vdb_width;
}
@@ -442,10 +438,10 @@ void lv_draw_map(const lv_area_t * cords_p, const lv_area_t * mask_p, const uint
else {
for(row = masked_a.y1; row <= masked_a.y2; row++) {
#if LV_USE_GPU
if(disp->driver.mem_blend == false) {
if(disp->driver.mem_blend_cb == false) {
sw_mem_blend(vdb_buf_tmp, (lv_color_t *)map_p, map_useful_w, opa);
} else {
disp->driver.mem_blend(vdb_buf_tmp, (lv_color_t *)map_p, map_useful_w, opa);
disp->driver.mem_blend_cb(vdb_buf_tmp, (lv_color_t *)map_p, map_useful_w, opa);
}
#else
sw_mem_blend(vdb_buf_tmp, (lv_color_t *)map_p, map_useful_w, opa);

View File

@@ -67,8 +67,8 @@ void lv_disp_drv_init(lv_disp_drv_t * driver)
#endif
#if LV_USE_GPU
driver->mem_blend = NULL;
driver->mem_fill = NULL;
driver->mem_blend_cb = NULL;
driver->mem_fill_cb = NULL;
#endif
driver->set_px_cb = NULL;

View File

@@ -90,6 +90,15 @@ typedef struct _disp_drv_t
* number of flushed pixels */
void (*monitor_cb)(struct _disp_drv_t * disp_drv, uint32_t time, uint32_t px);
#if LV_USE_GPU
/*OPTIONAL: Blend two memories using opacity (GPU only)*/
void (*mem_blend_cb)(lv_color_t * dest, const lv_color_t * src, uint32_t length, lv_opa_t opa);
/*OPTIONAL: Fill a memory with a color (GPU only)*/
void (*mem_fill_cb)(lv_color_t * dest_buf, const lv_area_t * dest_area, const lv_area_t * fill_area, lv_color_t color);
#endif
#if LV_USE_USER_DATA_SINGLE
lv_disp_drv_user_data_t user_data;
#endif
@@ -101,13 +110,6 @@ typedef struct _disp_drv_t
lv_disp_drv_user_data_t monitor_user_data;
#endif
#if LV_USE_GPU
/*OPTIONAL: Blend two memories using opacity (GPU only)*/
void (*mem_blend)(lv_color_t * dest, const lv_color_t * src, uint32_t length, lv_opa_t opa);
/*OPTIONAL: Fill a memory with a color (GPU only)*/
void (*mem_fill)(lv_color_t * dest, uint32_t length, lv_color_t color);
#endif
} lv_disp_drv_t;

View File

@@ -11,129 +11,129 @@ extern "C" {
#include "../../../lv_conf.h"
#endif
#define LV_SYMBOL_GLYPH_FIRST 0xF800
#define LV_SYMBOL_AUDIO _LV_SYMBOL_VALUE3(EF,A0,80)
#define LV_SYMBOL_VIDEO _LV_SYMBOL_VALUE3(EF,A0,81)
#define LV_SYMBOL_LIST _LV_SYMBOL_VALUE3(EF,A0,82)
#define LV_SYMBOL_OK _LV_SYMBOL_VALUE3(EF,A0,83)
#define LV_SYMBOL_CLOSE _LV_SYMBOL_VALUE3(EF,A0,84)
#define LV_SYMBOL_POWER _LV_SYMBOL_VALUE3(EF,A0,85)
#define LV_SYMBOL_SETTINGS _LV_SYMBOL_VALUE3(EF,A0,86)
#define LV_SYMBOL_TRASH _LV_SYMBOL_VALUE3(EF,A0,87)
#define LV_SYMBOL_HOME _LV_SYMBOL_VALUE3(EF,A0,88)
#define LV_SYMBOL_DOWNLOAD _LV_SYMBOL_VALUE3(EF,A0,89)
#define LV_SYMBOL_DRIVE _LV_SYMBOL_VALUE3(EF,A0,8A)
#define LV_SYMBOL_REFRESH _LV_SYMBOL_VALUE3(EF,A0,8B)
#define LV_SYMBOL_MUTE _LV_SYMBOL_VALUE3(EF,A0,8C)
#define LV_SYMBOL_VOLUME_MID _LV_SYMBOL_VALUE3(EF,A0,8D)
#define LV_SYMBOL_VOLUME_MAX _LV_SYMBOL_VALUE3(EF,A0,8E)
#define LV_SYMBOL_IMAGE _LV_SYMBOL_VALUE3(EF,A0,8F)
#define LV_SYMBOL_EDIT _LV_SYMBOL_VALUE3(EF,A0,90)
#define LV_SYMBOL_PREV _LV_SYMBOL_VALUE3(EF,A0,91)
#define LV_SYMBOL_PLAY _LV_SYMBOL_VALUE3(EF,A0,92)
#define LV_SYMBOL_PAUSE _LV_SYMBOL_VALUE3(EF,A0,93)
#define LV_SYMBOL_STOP _LV_SYMBOL_VALUE3(EF,A0,94)
#define LV_SYMBOL_NEXT _LV_SYMBOL_VALUE3(EF,A0,95)
#define LV_SYMBOL_EJECT _LV_SYMBOL_VALUE3(EF,A0,96)
#define LV_SYMBOL_LEFT _LV_SYMBOL_VALUE3(EF,A0,97)
#define LV_SYMBOL_RIGHT _LV_SYMBOL_VALUE3(EF,A0,98)
#define LV_SYMBOL_PLUS _LV_SYMBOL_VALUE3(EF,A0,99)
#define LV_SYMBOL_MINUS _LV_SYMBOL_VALUE3(EF,A0,9A)
#define LV_SYMBOL_WARNING _LV_SYMBOL_VALUE3(EF,A0,9B)
#define LV_SYMBOL_SHUFFLE _LV_SYMBOL_VALUE3(EF,A0,9C)
#define LV_SYMBOL_UP _LV_SYMBOL_VALUE3(EF,A0,9D)
#define LV_SYMBOL_DOWN _LV_SYMBOL_VALUE3(EF,A0,9E)
#define LV_SYMBOL_LOOP _LV_SYMBOL_VALUE3(EF,A0,9F)
#define LV_SYMBOL_DIRECTORY _LV_SYMBOL_VALUE3(EF,A0,A0)
#define LV_SYMBOL_UPLOAD _LV_SYMBOL_VALUE3(EF,A0,A1)
#define LV_SYMBOL_CALL _LV_SYMBOL_VALUE3(EF,A0,A2)
#define LV_SYMBOL_CUT _LV_SYMBOL_VALUE3(EF,A0,A3)
#define LV_SYMBOL_COPY _LV_SYMBOL_VALUE3(EF,A0,A4)
#define LV_SYMBOL_SAVE _LV_SYMBOL_VALUE3(EF,A0,A5)
#define LV_SYMBOL_CHARGE _LV_SYMBOL_VALUE3(EF,A0,A6)
#define LV_SYMBOL_BELL _LV_SYMBOL_VALUE3(EF,A0,A7)
#define LV_SYMBOL_KEYBOARD _LV_SYMBOL_VALUE3(EF,A0,A8)
#define LV_SYMBOL_GPS _LV_SYMBOL_VALUE3(EF,A0,A9)
#define LV_SYMBOL_FILE _LV_SYMBOL_VALUE3(EF,A0,AA)
#define LV_SYMBOL_WIFI _LV_SYMBOL_VALUE3(EF,A0,AB)
#define LV_SYMBOL_BATTERY_FULL _LV_SYMBOL_VALUE3(EF,A0,AC)
#define LV_SYMBOL_BATTERY_3 _LV_SYMBOL_VALUE3(EF,A0,AD)
#define LV_SYMBOL_BATTERY_2 _LV_SYMBOL_VALUE3(EF,A0,AE)
#define LV_SYMBOL_BATTERY_1 _LV_SYMBOL_VALUE3(EF,A0,AF)
#define LV_SYMBOL_BATTERY_EMPTY _LV_SYMBOL_VALUE3(EF,A0,B0)
#define LV_SYMBOL_BLUETOOTH _LV_SYMBOL_VALUE3(EF,A0,B1)
#define LV_SYMBOL_GLYPH_LAST 0xF831
#define LV_SYMBOL_DUMMY _LV_SYMBOL_VALUE3(EF,A3,BF) /*Invalid symbol at (U+F831). If written before a string then `lv_img` will show it as a label*/
#define _LV_SYMBOL_VALUE3(x, y, z) (0x ## z ## y ## x)
#define _LV_SYMBOL_NUMSTR(sym) LV_ ## sym ## _NUMSTR = sym
#define LV_SYMBOL_GLYPH_FIRST 0xF800
#define LV_SYMBOL_AUDIO "\xEF\xA0\x80"
#define LV_SYMBOL_VIDEO "\xEF\xA0\x81"
#define LV_SYMBOL_LIST "\xEF\xA0\x82"
#define LV_SYMBOL_OK "\xEF\xA0\x83"
#define LV_SYMBOL_CLOSE "\xEF\xA0\x84"
#define LV_SYMBOL_POWER "\xEF\xA0\x85"
#define LV_SYMBOL_SETTINGS "\xEF\xA0\x86"
#define LV_SYMBOL_TRASH "\xEF\xA0\x87"
#define LV_SYMBOL_HOME "\xEF\xA0\x88"
#define LV_SYMBOL_DOWNLOAD "\xEF\xA0\x89"
#define LV_SYMBOL_DRIVE "\xEF\xA0\x8A"
#define LV_SYMBOL_REFRESH "\xEF\xA0\x8B"
#define LV_SYMBOL_MUTE "\xEF\xA0\x8C"
#define LV_SYMBOL_VOLUME_MID "\xEF\xA0\x8D"
#define LV_SYMBOL_VOLUME_MAX "\xEF\xA0\x8E"
#define LV_SYMBOL_IMAGE "\xEF\xA0\x8F"
#define LV_SYMBOL_EDIT "\xEF\xA0\x90"
#define LV_SYMBOL_PREV "\xEF\xA0\x91"
#define LV_SYMBOL_PLAY "\xEF\xA0\x92"
#define LV_SYMBOL_PAUSE "\xEF\xA0\x93"
#define LV_SYMBOL_STOP "\xEF\xA0\x94"
#define LV_SYMBOL_NEXT "\xEF\xA0\x95"
#define LV_SYMBOL_EJECT "\xEF\xA0\x96"
#define LV_SYMBOL_LEFT "\xEF\xA0\x97"
#define LV_SYMBOL_RIGHT "\xEF\xA0\x98"
#define LV_SYMBOL_PLUS "\xEF\xA0\x99"
#define LV_SYMBOL_MINUS "\xEF\xA0\x9A"
#define LV_SYMBOL_WARNING "\xEF\xA0\x9B"
#define LV_SYMBOL_SHUFFLE "\xEF\xA0\x9C"
#define LV_SYMBOL_UP "\xEF\xA0\x9D"
#define LV_SYMBOL_DOWN "\xEF\xA0\x9E"
#define LV_SYMBOL_LOOP "\xEF\xA0\x9F"
#define LV_SYMBOL_DIRECTORY "\xEF\xA0\xA0"
#define LV_SYMBOL_UPLOAD "\xEF\xA0\xA1"
#define LV_SYMBOL_CALL "\xEF\xA0\xA2"
#define LV_SYMBOL_CUT "\xEF\xA0\xA3"
#define LV_SYMBOL_COPY "\xEF\xA0\xA4"
#define LV_SYMBOL_SAVE "\xEF\xA0\xA5"
#define LV_SYMBOL_CHARGE "\xEF\xA0\xA6"
#define LV_SYMBOL_BELL "\xEF\xA0\xA7"
#define LV_SYMBOL_KEYBOARD "\xEF\xA0\xA8"
#define LV_SYMBOL_GPS "\xEF\xA0\xA9"
#define LV_SYMBOL_FILE "\xEF\xA0\xAA"
#define LV_SYMBOL_WIFI "\xEF\xA0\xAB"
#define LV_SYMBOL_BATTERY_FULL "\xEF\xA0\xAC"
#define LV_SYMBOL_BATTERY_3 "\xEF\xA0\xAD"
#define LV_SYMBOL_BATTERY_2 "\xEF\xA0\xAE"
#define LV_SYMBOL_BATTERY_1 "\xEF\xA0\xAF"
#define LV_SYMBOL_BATTERY_EMPTY "\xEF\xA0\xB0"
#define LV_SYMBOL_BLUETOOTH "\xEF\xA0\xB1"
#define LV_SYMBOL_GLYPH_LAST 0xF831
enum
{
_LV_SYMBOL_NUMSTR(LV_SYMBOL_AUDIO),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_VIDEO),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_LIST),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_OK),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_CLOSE),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_POWER),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_SETTINGS),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_TRASH),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_HOME),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_DOWNLOAD),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_DRIVE),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_REFRESH),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_MUTE),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_VOLUME_MID),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_VOLUME_MAX),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_IMAGE),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_EDIT),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_PREV),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_PLAY),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_PAUSE),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_STOP),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_NEXT),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_EJECT),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_LEFT),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_RIGHT),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_PLUS),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_MINUS),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_WARNING),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_SHUFFLE),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_UP),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_DOWN),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_LOOP),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_DIRECTORY),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_UPLOAD),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_CALL),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_CUT),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_COPY),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_SAVE),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_CHARGE),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_BELL),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_KEYBOARD),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_GPS),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_FILE),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_WIFI),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_BATTERY_FULL),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_BATTERY_3),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_BATTERY_2),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_BATTERY_1),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_BATTERY_EMPTY),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_BLUETOOTH),
_LV_SYMBOL_NUMSTR(LV_SYMBOL_DUMMY),
/*Invalid symbol at (U+F831). If written before a string then `lv_img` will show it as a label*/
#define LV_SYMBOL_DUMMY "\xEF\xA3\xBF"
/*
* following list is generated using
* cat lv_symbol_def.h | sed -E -n 's/^#define\s+(SYMBOL_\w+).*$/ _LV_STR_\1,/p'
*/
enum {
_LV_STR_SYMBOL_AUDIO,
_LV_STR_SYMBOL_VIDEO,
_LV_STR_SYMBOL_LIST,
_LV_STR_SYMBOL_OK,
_LV_STR_SYMBOL_CLOSE,
_LV_STR_SYMBOL_POWER,
_LV_STR_SYMBOL_SETTINGS,
_LV_STR_SYMBOL_TRASH,
_LV_STR_SYMBOL_HOME,
_LV_STR_SYMBOL_DOWNLOAD,
_LV_STR_SYMBOL_DRIVE,
_LV_STR_SYMBOL_REFRESH,
_LV_STR_SYMBOL_MUTE,
_LV_STR_SYMBOL_VOLUME_MID,
_LV_STR_SYMBOL_VOLUME_MAX,
_LV_STR_SYMBOL_IMAGE,
_LV_STR_SYMBOL_EDIT,
_LV_STR_SYMBOL_PREV,
_LV_STR_SYMBOL_PLAY,
_LV_STR_SYMBOL_PAUSE,
_LV_STR_SYMBOL_STOP,
_LV_STR_SYMBOL_NEXT,
_LV_STR_SYMBOL_EJECT,
_LV_STR_SYMBOL_LEFT,
_LV_STR_SYMBOL_RIGHT,
_LV_STR_SYMBOL_PLUS,
_LV_STR_SYMBOL_MINUS,
_LV_STR_SYMBOL_WARNING,
_LV_STR_SYMBOL_SHUFFLE,
_LV_STR_SYMBOL_UP,
_LV_STR_SYMBOL_DOWN,
_LV_STR_SYMBOL_LOOP,
_LV_STR_SYMBOL_DIRECTORY,
_LV_STR_SYMBOL_UPLOAD,
_LV_STR_SYMBOL_CALL,
_LV_STR_SYMBOL_CUT,
_LV_STR_SYMBOL_COPY,
_LV_STR_SYMBOL_SAVE,
_LV_STR_SYMBOL_CHARGE,
_LV_STR_SYMBOL_BELL,
_LV_STR_SYMBOL_KEYBOARD,
_LV_STR_SYMBOL_GPS,
_LV_STR_SYMBOL_FILE,
_LV_STR_SYMBOL_WIFI,
_LV_STR_SYMBOL_BATTERY_FULL,
_LV_STR_SYMBOL_BATTERY_3,
_LV_STR_SYMBOL_BATTERY_2,
_LV_STR_SYMBOL_BATTERY_1,
_LV_STR_SYMBOL_BATTERY_EMPTY,
_LV_STR_SYMBOL_BLUETOOTH,
_LV_STR_SYMBOL_DUMMY,
};
#undef _LV_SYMBOL_VALUE3
#define _LV_SYMBOL_STR_(x) #x
#define _LV_SYMBOL_STR(x) _LV_SYMBOL_STR_(x)
#define _LV_SYMBOL_CHAR(c) \x ## c
#define _LV_SYMBOL_VALUE1(x) _LV_SYMBOL_STR(_LV_SYMBOL_CHAR(x))
#define _LV_SYMBOL_VALUE3(x, y, z) _LV_SYMBOL_STR(_LV_SYMBOL_CHAR(x)_LV_SYMBOL_CHAR(y)_LV_SYMBOL_CHAR(z))
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /*LV_LV_SYMBOL_DEF_H*/
#endif /*LV_SYMBOL_DEF_H*/

View File

@@ -706,7 +706,7 @@ static void draw_day_names(lv_obj_t * calendar, const lv_area_t * mask)
uint32_t i;
for(i = 0; i < 7; i++) {
label_area.x1 = calendar->coords.x1 + (w * i) / 7 + l_pad;
label_area.x2 = label_area.x1 + box_w;
label_area.x2 = label_area.x1 + box_w - 1;
lv_draw_label(&label_area, mask, ext->style_day_names, opa_scale, get_day_name(calendar, i),
LV_TXT_FLAG_CENTER, NULL, -1, -1);
}
@@ -805,7 +805,7 @@ static void draw_days(lv_obj_t * calendar, const lv_area_t * mask)
label_area.x1 = calendar->coords.x1 + (w * day) / 7 + style_bg->body.padding.left +
style_bg->body.padding.right;
label_area.x2 = label_area.x1 + box_w;
label_area.x2 = label_area.x1 + box_w - 1;
/*Draw the "today box"*/
if(draw_state == DAY_DRAW_ACT_MONTH && month_of_today_shown &&