lv_canvas.h

Defines

LV_CANVAS_BUF_SIZE(w, h, bpp, stride)

Functions

lv_obj_t *lv_canvas_create(lv_obj_t *parent)

Create a canvas object

Parameters:

parent -- pointer to an object, it will be the parent of the new canvas

Returns:

pointer to the created canvas

void lv_canvas_set_buffer(lv_obj_t *obj, void *buf, int32_t w, int32_t h, lv_color_format_t cf)

Set a buffer for the canvas. Use lv_canvas_set_draw_buf instead if you need to set a buffer with alignment requirement.

Parameters:
  • buf -- a buffer where the content of the canvas will be. The required size is (lv_image_color_format_get_px_size(cf) * w) / 8 * h) It can be allocated with lv_malloc() or it can be statically allocated array (e.g. static lv_color_t buf[100*50]) or it can be an address in RAM or external SRAM

  • canvas -- pointer to a canvas object

  • w -- width of the canvas

  • h -- height of the canvas

  • cf -- color format. LV_COLOR_FORMAT...

void lv_canvas_set_draw_buf(lv_obj_t *obj, lv_draw_buf_t *draw_buf)

Set a draw buffer for the canvas. A draw buffer either can be allocated by lv_draw_buf_create() or defined statically by LV_DRAW_BUF_DEFINE. When buffer start address and stride has alignment requirement, it's recommended to use lv_draw_buf_create.

Parameters:
  • obj -- pointer to a canvas object

  • draw_buf -- pointer to a draw buffer

void lv_canvas_set_px(lv_obj_t *obj, int32_t x, int32_t y, lv_color_t color, lv_opa_t opa)

Set a pixel's color and opacity

Note

The following color formats are supported LV_COLOR_FORMAT_I1/2/4/8, LV_COLOR_FORMAT_A8, LV_COLOR_FORMAT_RGB565, LV_COLOR_FORMAT_RGB888, LV_COLOR_FORMAT_XRGB8888, LV_COLOR_FORMAT_ARGB8888

Parameters:
  • obj -- pointer to a canvas

  • x -- X coordinate of the pixel

  • y -- Y coordinate of the pixel

  • color -- the color

  • opa -- the opacity

void lv_canvas_set_palette(lv_obj_t *obj, uint8_t index, lv_color32_t color)

Set the palette color of a canvas for index format. Valid only for LV_COLOR_FORMAT_I1/2/4/8

Parameters:
  • obj -- pointer to canvas object

  • index -- the palette color to set:

    • for LV_COLOR_FORMAT_I1: 0..1

    • for LV_COLOR_FORMAT_I2: 0..3

    • for LV_COLOR_FORMAT_I4: 0..15

    • for LV_COLOR_FORMAT_I8: 0..255

  • color -- the color to set

lv_draw_buf_t *lv_canvas_get_draw_buf(lv_obj_t *obj)
lv_color32_t lv_canvas_get_px(lv_obj_t *obj, int32_t x, int32_t y)

Get a pixel's color and opacity

Parameters:
  • obj -- pointer to a canvas

  • x -- X coordinate of the pixel

  • y -- Y coordinate of the pixel

Returns:

ARGB8888 color of the pixel

lv_image_dsc_t *lv_canvas_get_image(lv_obj_t *canvas)

Get the image of the canvas as a pointer to an lv_image_dsc_t variable.

Parameters:

canvas -- pointer to a canvas object

Returns:

pointer to the image descriptor.

const void *lv_canvas_get_buf(lv_obj_t *canvas)

Return the pointer for the buffer. It's recommended to use this function instead of the buffer form the return value of lv_canvas_get_image() as is can be aligned

Parameters:

canvas -- pointer to a canvas object

Returns:

pointer to the buffer

void lv_canvas_copy_buf(lv_obj_t *obj, const lv_area_t *canvas_area, lv_draw_buf_t *dest_buf, const lv_area_t *dest_area)

Copy a buffer to the canvas

Parameters:
  • canvas -- pointer to a canvas object

  • canvas_area -- the area of the canvas to copy

  • dest_buf -- pointer to a buffer to store the copied data

  • dest_area -- the area of the destination buffer to copy to. If omitted NULL, copy to the whole dest_buf

void lv_canvas_fill_bg(lv_obj_t *obj, lv_color_t color, lv_opa_t opa)

Fill the canvas with color

Parameters:
  • canvas -- pointer to a canvas

  • color -- the background color

  • opa -- the desired opacity

void lv_canvas_init_layer(lv_obj_t *canvas, lv_layer_t *layer)

Initialize a layer to use LVGL's generic draw functions (lv_draw_rect/label/...) on the canvas. Needs to be usd in pair with lv_canvas_finish_layer.

Parameters:
  • canvas -- pointer to a canvas

  • layer -- pointer to a layer variable to initialize

void lv_canvas_finish_layer(lv_obj_t *canvas, lv_layer_t *layer)

Wait until all the drawings are finished on layer. Needs to be usd in pair with lv_canvas_init_layer.

Parameters:
  • canvas -- pointer to a canvas

  • layer -- pointer to a layer to finalize

static inline uint32_t lv_canvas_buf_size(int32_t w, int32_t h, uint8_t bpp, uint8_t stride)

Just a wrapper to LV_CANVAS_BUF_SIZE for bindings.

Variables

const lv_obj_class_t lv_canvas_class
struct lv_canvas_t

Public Members

lv_image_t img
lv_draw_buf_t *draw_buf
lv_draw_buf_t static_buf