1 /** 2 * @file lv_draw_sw.h 3 * 4 */ 5 6 #ifndef LV_DRAW_SW_H 7 #define LV_DRAW_SW_H 8 9 #ifdef __cplusplus 10 extern "C" { 11 #endif 12 13 /********************* 14 * INCLUDES 15 *********************/ 16 #include "lv_draw_sw_blend.h" 17 #include "../lv_draw.h" 18 #include "../../misc/lv_area.h" 19 #include "../../misc/lv_color.h" 20 #include "../../hal/lv_hal_disp.h" 21 22 /********************* 23 * DEFINES 24 *********************/ 25 26 /********************** 27 * TYPEDEFS 28 **********************/ 29 30 struct _lv_disp_drv_t; 31 32 typedef struct { 33 lv_draw_ctx_t base_draw; 34 35 /** Fill an area of the destination buffer with a color*/ 36 void (*blend)(lv_draw_ctx_t * draw_ctx, const lv_draw_sw_blend_dsc_t * dsc); 37 } lv_draw_sw_ctx_t; 38 39 typedef struct { 40 lv_draw_layer_ctx_t base_draw; 41 42 uint32_t buf_size_bytes: 31; 43 uint32_t has_alpha : 1; 44 } lv_draw_sw_layer_ctx_t; 45 46 /********************** 47 * GLOBAL PROTOTYPES 48 **********************/ 49 50 void lv_draw_sw_init_ctx(struct _lv_disp_drv_t * drv, lv_draw_ctx_t * draw_ctx); 51 void lv_draw_sw_deinit_ctx(struct _lv_disp_drv_t * drv, lv_draw_ctx_t * draw_ctx); 52 53 void lv_draw_sw_wait_for_finish(lv_draw_ctx_t * draw_ctx); 54 55 void lv_draw_sw_arc(lv_draw_ctx_t * draw_ctx, const lv_draw_arc_dsc_t * dsc, const lv_point_t * center, uint16_t radius, 56 uint16_t start_angle, uint16_t end_angle); 57 58 void lv_draw_sw_rect(lv_draw_ctx_t * draw_ctx, const lv_draw_rect_dsc_t * dsc, const lv_area_t * coords); 59 60 void lv_draw_sw_bg(lv_draw_ctx_t * draw_ctx, const lv_draw_rect_dsc_t * dsc, const lv_area_t * coords); 61 void lv_draw_sw_letter(lv_draw_ctx_t * draw_ctx, const lv_draw_label_dsc_t * dsc, const lv_point_t * pos_p, 62 uint32_t letter); 63 64 void /* LV_ATTRIBUTE_FAST_MEM */ lv_draw_sw_img_decoded(struct _lv_draw_ctx_t * draw_ctx, 65 const lv_draw_img_dsc_t * draw_dsc, 66 const lv_area_t * coords, const uint8_t * src_buf, 67 lv_img_cf_t cf); 68 69 void /* LV_ATTRIBUTE_FAST_MEM */ lv_draw_sw_line(struct _lv_draw_ctx_t * draw_ctx, const lv_draw_line_dsc_t * dsc, 70 const lv_point_t * point1, const lv_point_t * point2); 71 72 void lv_draw_sw_polygon(struct _lv_draw_ctx_t * draw_ctx, const lv_draw_rect_dsc_t * draw_dsc, 73 const lv_point_t * points, uint16_t point_cnt); 74 75 void lv_draw_sw_buffer_copy(lv_draw_ctx_t * draw_ctx, 76 void * dest_buf, lv_coord_t dest_stride, const lv_area_t * dest_area, 77 void * src_buf, lv_coord_t src_stride, const lv_area_t * src_area); 78 79 void lv_draw_sw_transform(lv_draw_ctx_t * draw_ctx, const lv_area_t * dest_area, const void * src_buf, 80 lv_coord_t src_w, lv_coord_t src_h, lv_coord_t src_stride, 81 const lv_draw_img_dsc_t * draw_dsc, lv_img_cf_t cf, lv_color_t * cbuf, lv_opa_t * abuf); 82 83 struct _lv_draw_layer_ctx_t * lv_draw_sw_layer_create(struct _lv_draw_ctx_t * draw_ctx, lv_draw_layer_ctx_t * layer_ctx, 84 lv_draw_layer_flags_t flags); 85 86 void lv_draw_sw_layer_adjust(struct _lv_draw_ctx_t * draw_ctx, struct _lv_draw_layer_ctx_t * layer_ctx, 87 lv_draw_layer_flags_t flags); 88 89 void lv_draw_sw_layer_blend(struct _lv_draw_ctx_t * draw_ctx, struct _lv_draw_layer_ctx_t * layer_ctx, 90 const lv_draw_img_dsc_t * draw_dsc); 91 92 void lv_draw_sw_layer_destroy(lv_draw_ctx_t * draw_ctx, lv_draw_layer_ctx_t * layer_ctx); 93 94 /*********************** 95 * GLOBAL VARIABLES 96 ***********************/ 97 98 /********************** 99 * MACROS 100 **********************/ 101 102 #ifdef __cplusplus 103 } /*extern "C"*/ 104 #endif 105 106 #endif /*LV_DRAW_SW_H*/ 107