canvas_demo.lua 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. local canvas_demo = {}
  2. local CANVAS_WIDTH = 200
  3. local CANVAS_HEIGHT = 150
  4. function canvas_demo.demo()
  5. local rect_dsc = lvgl.draw_rect_dsc_t();
  6. lvgl.draw_rect_dsc_init(rect_dsc);
  7. rect_dsc.radius = 10;
  8. rect_dsc.bg_opa = lvgl.OPA_COVER;
  9. rect_dsc.bg_grad_dir = lvgl.GRAD_DIR_HOR;
  10. rect_dsc.bg_color = lvgl.COLOR_RED;
  11. rect_dsc.bg_grad_color = lvgl.COLOR_BLUE;
  12. rect_dsc.border_width = 2;
  13. rect_dsc.border_opa = lvgl.OPA_90;
  14. rect_dsc.border_color = lvgl.COLOR_WHITE;
  15. rect_dsc.shadow_width = 5;
  16. rect_dsc.shadow_ofs_x = 5;
  17. rect_dsc.shadow_ofs_y = 5;
  18. local label_dsc=lvgl.draw_label_dsc_t();
  19. lvgl.draw_label_dsc_init(label_dsc);
  20. label_dsc.color = lvgl.COLOR_YELLOW;
  21. -- static lvgl.color_t cbuf[lvgl.CANVAS_BUF_SIZE_TRUE_COLOR(CANVAS_WIDTH, CANVAS_HEIGHT)];
  22. local cbuf = zbuff.create({CANVAS_WIDTH,CANVAS_HEIGHT,32})
  23. local canvas = lvgl.canvas_create(lvgl.scr_act(), nil);
  24. lvgl.canvas_set_buffer(canvas, cbuf, CANVAS_WIDTH, CANVAS_HEIGHT, lvgl.IMG_CF_TRUE_COLOR);
  25. lvgl.obj_align(canvas, nil, lvgl.ALIGN_CENTER, 0, 0);
  26. lvgl.canvas_fill_bg(canvas, lvgl.COLOR_SILVER, lvgl.OPA_COVER);
  27. lvgl.canvas_draw_rect(canvas, 70, 60, 100, 70, rect_dsc);
  28. lvgl.canvas_draw_text(canvas, 40, 20, 100, label_dsc, "Some text on text canvas", lvgl.LABEL_ALIGN_LEFT);
  29. -- /* Test the rotation. It requires an other buffer where the orignal image is stored.
  30. -- * So copy the current image to buffer and rotate it to the canvas */
  31. -- static lvgl.color_t cbuf_tmp[CANVAS_WIDTH * CANVAS_HEIGHT];
  32. local cbuf_tmp = zbuff.create({CANVAS_WIDTH,CANVAS_HEIGHT,32})
  33. -- memcpy(cbuf_tmp, cbuf, sizeof(cbuf_tmp));
  34. -- lvgl.img_dsc_t img;
  35. local img = lvgl.img_dsc_t()
  36. -- img.data = (void *)cbuf_tmp;
  37. img.data = cbuf_tmp;
  38. -- img.header.cf = lvgl.IMG_CF_TRUE_COLOR;
  39. -- img.header.w = CANVAS_WIDTH;
  40. -- img.header.h = CANVAS_HEIGHT;
  41. img.header_cf = lvgl.IMG_CF_TRUE_COLOR;
  42. img.header_w = CANVAS_WIDTH;
  43. img.header_h = CANVAS_HEIGHT;
  44. -- lvgl.canvas_fill_bg(canvas, lvgl.COLOR_SILVER, lvgl.OPA_COVER);
  45. -- lvgl.canvas_transform(canvas, img, 30, lvgl.IMG_ZOOM_NONE, 0, 0, CANVAS_WIDTH / 2, CANVAS_HEIGHT / 2, true);
  46. end
  47. return canvas_demo