Lines Matching refs:draw_buf
38 static void draw_buf_get_full_area(const lv_draw_buf_t * draw_buf, lv_area_t * full_area);
119 void lv_draw_buf_invalidate_cache(const lv_draw_buf_t * draw_buf, const lv_area_t * area) in lv_draw_buf_invalidate_cache() argument
121 LV_ASSERT_NULL(draw_buf); in lv_draw_buf_invalidate_cache()
122 LV_ASSERT_NULL(draw_buf->handlers); in lv_draw_buf_invalidate_cache()
124 const lv_draw_buf_handlers_t * handlers = draw_buf->handlers; in lv_draw_buf_invalidate_cache()
133 draw_buf_get_full_area(draw_buf, &full); in lv_draw_buf_invalidate_cache()
137 handlers->invalidate_cache_cb(draw_buf, area); in lv_draw_buf_invalidate_cache()
141 void lv_draw_buf_flush_cache(const lv_draw_buf_t * draw_buf, const lv_area_t * area) in lv_draw_buf_flush_cache() argument
143 LV_ASSERT_NULL(draw_buf); in lv_draw_buf_flush_cache()
144 LV_ASSERT_NULL(draw_buf->handlers); in lv_draw_buf_flush_cache()
146 const lv_draw_buf_handlers_t * handlers = draw_buf->handlers; in lv_draw_buf_flush_cache()
155 draw_buf_get_full_area(draw_buf, &full); in lv_draw_buf_flush_cache()
159 handlers->flush_cache_cb(draw_buf, area); in lv_draw_buf_flush_cache()
163 void lv_draw_buf_clear(lv_draw_buf_t * draw_buf, const lv_area_t * a) in lv_draw_buf_clear() argument
165 LV_ASSERT_NULL(draw_buf); in lv_draw_buf_clear()
168 const lv_image_header_t * header = &draw_buf->header; in lv_draw_buf_clear()
172 uint8_t * buf = lv_draw_buf_goto_xy(draw_buf, 0, 0); in lv_draw_buf_clear()
174 lv_draw_buf_flush_cache(draw_buf, a); in lv_draw_buf_clear()
182 a_draw_buf.x2 = draw_buf->header.w - 1; in lv_draw_buf_clear()
183 a_draw_buf.y2 = draw_buf->header.h - 1; in lv_draw_buf_clear()
201 uint8_t * buf = lv_draw_buf_goto_xy(draw_buf, a_clipped.x1, a_clipped.y1); in lv_draw_buf_clear()
209 lv_draw_buf_flush_cache(draw_buf, a); in lv_draw_buf_clear()
271 lv_result_t lv_draw_buf_init(lv_draw_buf_t * draw_buf, uint32_t w, uint32_t h, lv_color_format_t cf… in lv_draw_buf_init() argument
274 LV_ASSERT_NULL(draw_buf); in lv_draw_buf_init()
275 if(draw_buf == NULL) return LV_RESULT_INVALID; in lv_draw_buf_init()
277 lv_memzero(draw_buf, sizeof(lv_draw_buf_t)); in lv_draw_buf_init()
285 lv_image_header_t * header = &draw_buf->header; in lv_draw_buf_init()
293 draw_buf->data = data; in lv_draw_buf_init()
294 draw_buf->unaligned_data = data; in lv_draw_buf_init()
295 draw_buf->handlers = &default_handlers; in lv_draw_buf_init()
296 draw_buf->data_size = data_size; in lv_draw_buf_init()
297 if(lv_draw_buf_align(data, cf) != draw_buf->unaligned_data) { in lv_draw_buf_init()
312 lv_draw_buf_t * draw_buf = lv_malloc_zeroed(sizeof(lv_draw_buf_t)); in lv_draw_buf_create_ex() local
313 LV_ASSERT_MALLOC(draw_buf); in lv_draw_buf_create_ex()
314 if(draw_buf == NULL) { in lv_draw_buf_create_ex()
327 lv_free(draw_buf); in lv_draw_buf_create_ex()
332 draw_buf->header.w = w; in lv_draw_buf_create_ex()
333 draw_buf->header.h = h; in lv_draw_buf_create_ex()
334 draw_buf->header.cf = cf; in lv_draw_buf_create_ex()
335 draw_buf->header.flags = LV_IMAGE_FLAGS_MODIFIABLE | LV_IMAGE_FLAGS_ALLOCATED; in lv_draw_buf_create_ex()
336 draw_buf->header.stride = stride; in lv_draw_buf_create_ex()
337 draw_buf->header.magic = LV_IMAGE_HEADER_MAGIC; in lv_draw_buf_create_ex()
338 draw_buf->data = lv_draw_buf_align(buf, cf); in lv_draw_buf_create_ex()
339 draw_buf->unaligned_data = buf; in lv_draw_buf_create_ex()
340 draw_buf->data_size = size; in lv_draw_buf_create_ex()
341 draw_buf->handlers = handlers; in lv_draw_buf_create_ex()
343 return draw_buf; in lv_draw_buf_create_ex()
346 lv_draw_buf_t * lv_draw_buf_dup(const lv_draw_buf_t * draw_buf) in lv_draw_buf_dup() argument
348 return lv_draw_buf_dup_ex(&default_handlers, draw_buf); in lv_draw_buf_dup()
351 …buf_t * lv_draw_buf_dup_ex(const lv_draw_buf_handlers_t * handlers, const lv_draw_buf_t * draw_buf) in lv_draw_buf_dup_ex() argument
354 const lv_image_header_t * header = &draw_buf->header; in lv_draw_buf_dup_ex()
361 new_buf->header.flags = draw_buf->header.flags; in lv_draw_buf_dup_ex()
365 uint32_t size = LV_MIN(draw_buf->data_size, new_buf->data_size); in lv_draw_buf_dup_ex()
368 lv_memcpy(new_buf->data, draw_buf->data, size); in lv_draw_buf_dup_ex()
373 lv_draw_buf_t * lv_draw_buf_reshape(lv_draw_buf_t * draw_buf, lv_color_format_t cf, uint32_t w, uin… in lv_draw_buf_reshape() argument
376 if(draw_buf == NULL) return NULL; in lv_draw_buf_reshape()
380 if(cf == LV_COLOR_FORMAT_UNKNOWN) cf = draw_buf->header.cf; in lv_draw_buf_reshape()
385 if(size > draw_buf->data_size) { in lv_draw_buf_reshape()
391 draw_buf->header.cf = cf; in lv_draw_buf_reshape()
392 draw_buf->header.w = w; in lv_draw_buf_reshape()
393 draw_buf->header.h = h; in lv_draw_buf_reshape()
394 draw_buf->header.stride = stride; in lv_draw_buf_reshape()
397 return draw_buf; in lv_draw_buf_reshape()
400 void lv_draw_buf_destroy(lv_draw_buf_t * draw_buf) in lv_draw_buf_destroy() argument
402 LV_ASSERT_NULL(draw_buf); in lv_draw_buf_destroy()
403 if(draw_buf == NULL) return; in lv_draw_buf_destroy()
406 if(draw_buf->header.flags & LV_IMAGE_FLAGS_ALLOCATED) { in lv_draw_buf_destroy()
407 LV_ASSERT_NULL(draw_buf->handlers); in lv_draw_buf_destroy()
409 const lv_draw_buf_handlers_t * handlers = draw_buf->handlers; in lv_draw_buf_destroy()
410 draw_buf_free(handlers, draw_buf->unaligned_data); in lv_draw_buf_destroy()
411 lv_free(draw_buf); in lv_draw_buf_destroy()
506 lv_result_t lv_draw_buf_premultiply(lv_draw_buf_t * draw_buf) in lv_draw_buf_premultiply() argument
508 LV_ASSERT_NULL(draw_buf); in lv_draw_buf_premultiply()
509 if(draw_buf == NULL) return LV_RESULT_INVALID; in lv_draw_buf_premultiply()
511 if(draw_buf->header.flags & LV_IMAGE_FLAGS_PREMULTIPLIED) return LV_RESULT_INVALID; in lv_draw_buf_premultiply()
512 if((draw_buf->header.flags & LV_IMAGE_FLAGS_MODIFIABLE) == 0) { in lv_draw_buf_premultiply()
513 LV_LOG_WARN("draw buf is not modifiable: 0x%04x", draw_buf->header.flags); in lv_draw_buf_premultiply()
519 lv_color_format_t cf = draw_buf->header.cf; in lv_draw_buf_premultiply()
522 lv_color32_t * palette = (lv_color32_t *)draw_buf->data; in lv_draw_buf_premultiply()
528 uint32_t h = draw_buf->header.h; in lv_draw_buf_premultiply()
529 uint32_t w = draw_buf->header.w; in lv_draw_buf_premultiply()
530 uint32_t stride = draw_buf->header.stride; in lv_draw_buf_premultiply()
531 uint8_t * line = (uint8_t *)draw_buf->data; in lv_draw_buf_premultiply()
542 uint32_t h = draw_buf->header.h; in lv_draw_buf_premultiply()
543 uint32_t w = draw_buf->header.w; in lv_draw_buf_premultiply()
544 uint32_t stride = draw_buf->header.stride; in lv_draw_buf_premultiply()
546 uint8_t * line = (uint8_t *)draw_buf->data; in lv_draw_buf_premultiply()
559 uint32_t h = draw_buf->header.h; in lv_draw_buf_premultiply()
560 uint32_t w = draw_buf->header.w; in lv_draw_buf_premultiply()
561 uint32_t stride = draw_buf->header.stride; in lv_draw_buf_premultiply()
562 uint8_t * line = (uint8_t *)draw_buf->data; in lv_draw_buf_premultiply()
580 draw_buf->header.flags |= LV_IMAGE_FLAGS_PREMULTIPLIED; in lv_draw_buf_premultiply()
586 void lv_draw_buf_set_palette(lv_draw_buf_t * draw_buf, uint8_t index, lv_color32_t color) in lv_draw_buf_set_palette() argument
588 LV_ASSERT_NULL(draw_buf); in lv_draw_buf_set_palette()
589 if(draw_buf == NULL) return; in lv_draw_buf_set_palette()
591 if(!LV_COLOR_FORMAT_IS_INDEXED(draw_buf->header.cf)) { in lv_draw_buf_set_palette()
596 lv_color32_t * palette = (lv_color32_t *)draw_buf->data; in lv_draw_buf_set_palette()
600 bool lv_draw_buf_has_flag(const lv_draw_buf_t * draw_buf, lv_image_flags_t flag) in lv_draw_buf_has_flag() argument
602 return draw_buf->header.flags & flag; in lv_draw_buf_has_flag()
605 void lv_draw_buf_set_flag(lv_draw_buf_t * draw_buf, lv_image_flags_t flag) in lv_draw_buf_set_flag() argument
607 draw_buf->header.flags |= flag; in lv_draw_buf_set_flag()
610 void lv_draw_buf_clear_flag(lv_draw_buf_t * draw_buf, lv_image_flags_t flag) in lv_draw_buf_clear_flag() argument
612 draw_buf->header.flags &= ~flag; in lv_draw_buf_clear_flag()
716 static void draw_buf_get_full_area(const lv_draw_buf_t * draw_buf, lv_area_t * full_area) in draw_buf_get_full_area() argument
718 const lv_image_header_t * header = &draw_buf->header; in draw_buf_get_full_area()