From dd27c3530432ea0b09f01e604bf577f31d8ef841 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Thu, 1 Jun 2023 15:41:47 +1000 Subject: convert lvgl from submodule to a plain old directory --- lib/lvgl | 1 - lib/lvgl/examples/widgets/canvas/index.rst | 13 ++++++ .../examples/widgets/canvas/lv_example_canvas_1.c | 53 ++++++++++++++++++++++ .../examples/widgets/canvas/lv_example_canvas_1.py | 43 ++++++++++++++++++ .../examples/widgets/canvas/lv_example_canvas_2.c | 44 ++++++++++++++++++ .../examples/widgets/canvas/lv_example_canvas_2.py | 43 ++++++++++++++++++ 6 files changed, 196 insertions(+), 1 deletion(-) delete mode 160000 lib/lvgl create mode 100644 lib/lvgl/examples/widgets/canvas/index.rst create mode 100644 lib/lvgl/examples/widgets/canvas/lv_example_canvas_1.c create mode 100644 lib/lvgl/examples/widgets/canvas/lv_example_canvas_1.py create mode 100644 lib/lvgl/examples/widgets/canvas/lv_example_canvas_2.c create mode 100644 lib/lvgl/examples/widgets/canvas/lv_example_canvas_2.py (limited to 'lib/lvgl/examples/widgets/canvas') diff --git a/lib/lvgl b/lib/lvgl deleted file mode 160000 index 0732400e..00000000 --- a/lib/lvgl +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0732400e7b564dd0e7dc4a924619d8e19c5b23a0 diff --git a/lib/lvgl/examples/widgets/canvas/index.rst b/lib/lvgl/examples/widgets/canvas/index.rst new file mode 100644 index 00000000..b2cd7d4d --- /dev/null +++ b/lib/lvgl/examples/widgets/canvas/index.rst @@ -0,0 +1,13 @@ + +Drawing on the Canvas and rotate +"""""""""""""""""""""""""""""""""" + +.. lv_example:: widgets/canvas/lv_example_canvas_1 + :language: c + +Transparent Canvas with chroma keying +"""""""""""""""""""""""""""""""""""""" + +.. lv_example:: widgets/canvas/lv_example_canvas_2 + :language: c + diff --git a/lib/lvgl/examples/widgets/canvas/lv_example_canvas_1.c b/lib/lvgl/examples/widgets/canvas/lv_example_canvas_1.c new file mode 100644 index 00000000..6dd9ab0d --- /dev/null +++ b/lib/lvgl/examples/widgets/canvas/lv_example_canvas_1.c @@ -0,0 +1,53 @@ +#include "../../lv_examples.h" +#if LV_USE_CANVAS && LV_BUILD_EXAMPLES + + +#define CANVAS_WIDTH 200 +#define CANVAS_HEIGHT 150 + +void lv_example_canvas_1(void) +{ + lv_draw_rect_dsc_t rect_dsc; + lv_draw_rect_dsc_init(&rect_dsc); + rect_dsc.radius = 10; + rect_dsc.bg_opa = LV_OPA_COVER; + rect_dsc.bg_grad.dir = LV_GRAD_DIR_HOR; + rect_dsc.bg_grad.stops[0].color = lv_palette_main(LV_PALETTE_RED); + rect_dsc.bg_grad.stops[1].color = lv_palette_main(LV_PALETTE_BLUE); + rect_dsc.border_width = 2; + rect_dsc.border_opa = LV_OPA_90; + rect_dsc.border_color = lv_color_white(); + rect_dsc.shadow_width = 5; + rect_dsc.shadow_ofs_x = 5; + rect_dsc.shadow_ofs_y = 5; + + lv_draw_label_dsc_t label_dsc; + lv_draw_label_dsc_init(&label_dsc); + label_dsc.color = lv_palette_main(LV_PALETTE_ORANGE); + + static lv_color_t cbuf[LV_CANVAS_BUF_SIZE_TRUE_COLOR(CANVAS_WIDTH, CANVAS_HEIGHT)]; + + lv_obj_t * canvas = lv_canvas_create(lv_scr_act()); + lv_canvas_set_buffer(canvas, cbuf, CANVAS_WIDTH, CANVAS_HEIGHT, LV_IMG_CF_TRUE_COLOR); + lv_obj_center(canvas); + lv_canvas_fill_bg(canvas, lv_palette_lighten(LV_PALETTE_GREY, 3), LV_OPA_COVER); + + lv_canvas_draw_rect(canvas, 70, 60, 100, 70, &rect_dsc); + + lv_canvas_draw_text(canvas, 40, 20, 100, &label_dsc, "Some text on text canvas"); + + /*Test the rotation. It requires another buffer where the original image is stored. + *So copy the current image to buffer and rotate it to the canvas*/ + static lv_color_t cbuf_tmp[CANVAS_WIDTH * CANVAS_HEIGHT]; + memcpy(cbuf_tmp, cbuf, sizeof(cbuf_tmp)); + lv_img_dsc_t img; + img.data = (void *)cbuf_tmp; + img.header.cf = LV_IMG_CF_TRUE_COLOR; + img.header.w = CANVAS_WIDTH; + img.header.h = CANVAS_HEIGHT; + + lv_canvas_fill_bg(canvas, lv_palette_lighten(LV_PALETTE_GREY, 3), LV_OPA_COVER); + lv_canvas_transform(canvas, &img, 120, LV_IMG_ZOOM_NONE, 0, 0, CANVAS_WIDTH / 2, CANVAS_HEIGHT / 2, true); +} + +#endif diff --git a/lib/lvgl/examples/widgets/canvas/lv_example_canvas_1.py b/lib/lvgl/examples/widgets/canvas/lv_example_canvas_1.py new file mode 100644 index 00000000..d07cee4b --- /dev/null +++ b/lib/lvgl/examples/widgets/canvas/lv_example_canvas_1.py @@ -0,0 +1,43 @@ +_CANVAS_WIDTH = 200 +_CANVAS_HEIGHT = 150 +LV_IMG_ZOOM_NONE = 256 + +rect_dsc = lv.draw_rect_dsc_t() +rect_dsc.init() +rect_dsc.radius = 10 +rect_dsc.bg_opa = lv.OPA.COVER +rect_dsc.bg_grad.dir = lv.GRAD_DIR.HOR +rect_dsc.bg_grad.stops[0].color = lv.palette_main(lv.PALETTE.RED) +rect_dsc.bg_grad.stops[1].color = lv.palette_main(lv.PALETTE.BLUE) +rect_dsc.border_width = 2 +rect_dsc.border_opa = lv.OPA._90 +rect_dsc.border_color = lv.color_white() +rect_dsc.shadow_width = 5 +rect_dsc.shadow_ofs_x = 5 +rect_dsc.shadow_ofs_y = 5 + +label_dsc = lv.draw_label_dsc_t() +label_dsc.init() +label_dsc.color = lv.palette_main(lv.PALETTE.YELLOW) + +cbuf = bytearray(_CANVAS_WIDTH * _CANVAS_HEIGHT * 4) + +canvas = lv.canvas(lv.scr_act()) +canvas.set_buffer(cbuf, _CANVAS_WIDTH, _CANVAS_HEIGHT, lv.img.CF.TRUE_COLOR) +canvas.center() +canvas.fill_bg(lv.palette_lighten(lv.PALETTE.GREY, 3), lv.OPA.COVER) + +canvas.draw_rect(70, 60, 100, 70, rect_dsc) +canvas.draw_text(40, 20, 100, label_dsc, "Some text on text canvas") + +# Test the rotation. It requires another buffer where the original image is stored. +# So copy the current image to buffer and rotate it to the canvas + +img = lv.img_dsc_t() +img.data = cbuf[:] +img.header.cf = lv.img.CF.TRUE_COLOR +img.header.w = _CANVAS_WIDTH +img.header.h = _CANVAS_HEIGHT + +canvas.fill_bg(lv.palette_lighten(lv.PALETTE.GREY, 3), lv.OPA.COVER) +canvas.transform(img, 30, LV_IMG_ZOOM_NONE, 0, 0, _CANVAS_WIDTH // 2, _CANVAS_HEIGHT // 2, True) diff --git a/lib/lvgl/examples/widgets/canvas/lv_example_canvas_2.c b/lib/lvgl/examples/widgets/canvas/lv_example_canvas_2.c new file mode 100644 index 00000000..a857c668 --- /dev/null +++ b/lib/lvgl/examples/widgets/canvas/lv_example_canvas_2.c @@ -0,0 +1,44 @@ +#include "../../lv_examples.h" +#if LV_USE_CANVAS && LV_BUILD_EXAMPLES + +#define CANVAS_WIDTH 50 +#define CANVAS_HEIGHT 50 + +/** + * Create a transparent canvas with Chroma keying and indexed color format (palette). + */ +void lv_example_canvas_2(void) +{ + /*Create a button to better see the transparency*/ + lv_btn_create(lv_scr_act()); + + /*Create a buffer for the canvas*/ + static lv_color_t cbuf[LV_CANVAS_BUF_SIZE_INDEXED_1BIT(CANVAS_WIDTH, CANVAS_HEIGHT)]; + + /*Create a canvas and initialize its palette*/ + lv_obj_t * canvas = lv_canvas_create(lv_scr_act()); + lv_canvas_set_buffer(canvas, cbuf, CANVAS_WIDTH, CANVAS_HEIGHT, LV_IMG_CF_INDEXED_1BIT); + lv_canvas_set_palette(canvas, 0, LV_COLOR_CHROMA_KEY); + lv_canvas_set_palette(canvas, 1, lv_palette_main(LV_PALETTE_RED)); + + /*Create colors with the indices of the palette*/ + lv_color_t c0; + lv_color_t c1; + + c0.full = 0; + c1.full = 1; + + /*Red background (There is no dedicated alpha channel in indexed images so LV_OPA_COVER is ignored)*/ + lv_canvas_fill_bg(canvas, c1, LV_OPA_COVER); + + /*Create hole on the canvas*/ + uint32_t x; + uint32_t y; + for(y = 10; y < 30; y++) { + for(x = 5; x < 20; x++) { + lv_canvas_set_px_color(canvas, x, y, c0); + } + } + +} +#endif diff --git a/lib/lvgl/examples/widgets/canvas/lv_example_canvas_2.py b/lib/lvgl/examples/widgets/canvas/lv_example_canvas_2.py new file mode 100644 index 00000000..faefc875 --- /dev/null +++ b/lib/lvgl/examples/widgets/canvas/lv_example_canvas_2.py @@ -0,0 +1,43 @@ +CANVAS_WIDTH = 50 +CANVAS_HEIGHT = 50 +LV_COLOR_CHROMA_KEY = lv.color_hex(0x00ff00) + +def LV_IMG_BUF_SIZE_ALPHA_1BIT(w, h): + return int(((w / 8) + 1) * h) + +def LV_IMG_BUF_SIZE_INDEXED_1BIT(w, h): + return LV_IMG_BUF_SIZE_ALPHA_1BIT(w, h) + 4 * 2 + +def LV_CANVAS_BUF_SIZE_INDEXED_1BIT(w, h): + return LV_IMG_BUF_SIZE_INDEXED_1BIT(w, h) + +# +# Create a transparent canvas with Chroma keying and indexed color format (palette). +# + +# Create a button to better see the transparency +btn=lv.btn(lv.scr_act()) + +# Create a buffer for the canvas +cbuf= bytearray(LV_CANVAS_BUF_SIZE_INDEXED_1BIT(CANVAS_WIDTH, CANVAS_HEIGHT)) + +# Create a canvas and initialize its palette +canvas = lv.canvas(lv.scr_act()) +canvas.set_buffer(cbuf, CANVAS_WIDTH, CANVAS_HEIGHT, lv.img.CF.INDEXED_1BIT) +canvas.set_palette(0, LV_COLOR_CHROMA_KEY) +canvas.set_palette(1, lv.palette_main(lv.PALETTE.RED)) + +# Create colors with the indices of the palette +c0 = lv.color_t() +c1 = lv.color_t() + +c0.full = 0 +c1.full = 1 + +# Red background (There is no dedicated alpha channel in indexed images so LV_OPA_COVER is ignored) +canvas.fill_bg(c1, lv.OPA.COVER) + +# Create hole on the canvas +for y in range(10,30): + for x in range(5,20): + canvas.set_px(x, y, c0) -- cgit v1.2.3