lv_draw_sw_utils.h

Functions

void lv_draw_sw_i1_to_argb8888(const void *buf_i1, void *buf_argb8888, uint32_t width, uint32_t height, uint32_t buf_i1_stride, uint32_t buf_argb8888_stride, uint32_t index0_color, uint32_t index1_color)

Converts an I1 buffer to ARGB8888 format.

Parameters:
  • buf_i1 – pointer to buffer with I1 formatted render

  • buf_argb8888 – pointer to buffer for ARGB8888 render

  • width – width in pixels of the area. must be a multiple of 8.

  • height – height in pixels of the area

  • buf_i1_stride – stride of i1 buffer in bytes

  • buf_argb8888_stride – stride of argb8888 buffer in bytes

  • index0_color – color of the 0 bits of i1 buf

  • index1_color – color of the 1 bits of i1 buf

void lv_draw_sw_rgb565_swap(void *buf, uint32_t buf_size_px)

Swap the upper and lower byte of an RGB565 buffer. Might be required if a 8bit parallel port or an SPI port send the bytes in the wrong order. The bytes will be swapped in place.

Parameters:
  • buf – pointer to buffer

  • buf_size_px – number of pixels in the buffer

void lv_draw_sw_i1_invert(void *buf, uint32_t buf_size)

Invert a draw buffer in the I1 color format. Conventionally, a bit is set to 1 during blending if the luminance is greater than 127. Depending on the display controller used, you might want to have different behavior. The inversion will be performed in place.

Parameters:
  • buf – pointer to the buffer to be inverted

  • buf_size – size of the buffer in bytes

void lv_draw_sw_i1_convert_to_vtiled(const void *buf, uint32_t buf_size, uint32_t width, uint32_t height, void *out_buf, uint32_t out_buf_size, bool bit_order_lsb)

Convert a draw buffer in I1 color format from htiled (row-wise) to vtiled (column-wise) buffer layout. The conversion assumes that the buffer width and height is rounded to a multiple of 8.

Parameters:
  • buf – pointer to the buffer to be converted

  • buf_size – size of the buffer in bytes

  • width – width of the buffer

  • height – height of the buffer

  • out_buf – pointer to the output buffer

  • out_buf_size – size of the output buffer in bytes

  • bit_order_lsb – bit order of the resulting vtiled buffer

void lv_draw_sw_rotate(const void *src, void *dest, int32_t src_width, int32_t src_height, int32_t src_stride, int32_t dest_stride, lv_display_rotation_t rotation, lv_color_format_t color_format)

Rotate a buffer into another buffer

Parameters:
  • src – the source buffer

  • dest – the destination buffer

  • src_width – source width in pixels

  • src_height – source height in pixels

  • src_stride – source stride in bytes (number of bytes in a row)

  • dest_stride – destination stride in bytes (number of bytes in a row)

  • rotation – LV_DISPLAY_ROTATION_0/90/180/270

  • color_format – LV_COLOR_FORMAT_RGB565/RGB888/XRGB8888/ARGB8888