Lines Matching refs:path
35 #define PATH_CURRENT_PTR(PATH) ((uint8_t*)(PATH)->base.path + (PATH)->base.path_length)
91 lv_vg_lite_path_t * path = lv_malloc_zeroed(sizeof(lv_vg_lite_path_t)); in lv_vg_lite_path_create() local
92 LV_ASSERT_MALLOC(path); in lv_vg_lite_path_create()
93 path->format_len = lv_vg_lite_path_format_len(data_format); in lv_vg_lite_path_create()
95 &path->base, in lv_vg_lite_path_create()
103 return path; in lv_vg_lite_path_create()
106 void lv_vg_lite_path_destroy(lv_vg_lite_path_t * path) in lv_vg_lite_path_destroy() argument
109 LV_ASSERT_NULL(path); in lv_vg_lite_path_destroy()
110 if(path->base.path != NULL) { in lv_vg_lite_path_destroy()
111 lv_free(path->base.path); in lv_vg_lite_path_destroy()
112 path->base.path = NULL; in lv_vg_lite_path_destroy()
115 LV_VG_LITE_CHECK_ERROR(vg_lite_clear_path(&path->base)); in lv_vg_lite_path_destroy()
117 lv_free(path); in lv_vg_lite_path_destroy()
131 void lv_vg_lite_path_drop(struct _lv_draw_vg_lite_unit_t * unit, lv_vg_lite_path_t * path) in lv_vg_lite_path_drop() argument
134 LV_ASSERT_NULL(path); in lv_vg_lite_path_drop()
135 LV_ASSERT(unit->global_path == path); in lv_vg_lite_path_drop()
140 void lv_vg_lite_path_reset(lv_vg_lite_path_t * path, vg_lite_format_t data_format) in lv_vg_lite_path_reset() argument
142 LV_ASSERT_NULL(path); in lv_vg_lite_path_reset()
143 path->base.path_length = 0; in lv_vg_lite_path_reset()
144 path->base.format = data_format; in lv_vg_lite_path_reset()
145 path->base.quality = VG_LITE_HIGH; in lv_vg_lite_path_reset()
146 path->base.path_type = VG_LITE_DRAW_ZERO; in lv_vg_lite_path_reset()
147 path->format_len = lv_vg_lite_path_format_len(data_format); in lv_vg_lite_path_reset()
148 path->has_transform = false; in lv_vg_lite_path_reset()
151 vg_lite_path_t * lv_vg_lite_path_get_path(lv_vg_lite_path_t * path) in lv_vg_lite_path_get_path() argument
153 LV_ASSERT_NULL(path); in lv_vg_lite_path_get_path()
154 return &path->base; in lv_vg_lite_path_get_path()
157 void lv_vg_lite_path_set_bounding_box(lv_vg_lite_path_t * path, in lv_vg_lite_path_set_bounding_box() argument
161 LV_ASSERT_NULL(path); in lv_vg_lite_path_set_bounding_box()
162 path->base.bounding_box[0] = min_x; in lv_vg_lite_path_set_bounding_box()
163 path->base.bounding_box[1] = min_y; in lv_vg_lite_path_set_bounding_box()
164 path->base.bounding_box[2] = max_x; in lv_vg_lite_path_set_bounding_box()
165 path->base.bounding_box[3] = max_y; in lv_vg_lite_path_set_bounding_box()
168 void lv_vg_lite_path_set_bounding_box_area(lv_vg_lite_path_t * path, const lv_area_t * area) in lv_vg_lite_path_set_bounding_box_area() argument
170 LV_ASSERT_NULL(path); in lv_vg_lite_path_set_bounding_box_area()
172 lv_vg_lite_path_set_bounding_box(path, area->x1, area->y1, area->x2 + 1, area->y2 + 1); in lv_vg_lite_path_set_bounding_box_area()
175 void lv_vg_lite_path_get_bounding_box(lv_vg_lite_path_t * path, in lv_vg_lite_path_get_bounding_box() argument
179 LV_ASSERT_NULL(path); in lv_vg_lite_path_get_bounding_box()
180 if(min_x) *min_x = path->base.bounding_box[0]; in lv_vg_lite_path_get_bounding_box()
181 if(min_y) *min_y = path->base.bounding_box[1]; in lv_vg_lite_path_get_bounding_box()
182 if(max_x) *max_x = path->base.bounding_box[2]; in lv_vg_lite_path_get_bounding_box()
183 if(max_y) *max_y = path->base.bounding_box[3]; in lv_vg_lite_path_get_bounding_box()
216 bool lv_vg_lite_path_update_bounding_box(lv_vg_lite_path_t * path) in lv_vg_lite_path_update_bounding_box() argument
218 LV_ASSERT_NULL(path); in lv_vg_lite_path_update_bounding_box()
220 if(!path->format_len) { in lv_vg_lite_path_update_bounding_box()
235 lv_vg_lite_path_for_each_data(lv_vg_lite_path_get_path(path), path_bounds_iter_cb, &bounds); in lv_vg_lite_path_update_bounding_box()
238 lv_vg_lite_path_set_bounding_box(path, bounds.min_x, bounds.min_y, bounds.max_x, bounds.max_y); in lv_vg_lite_path_update_bounding_box()
245 void lv_vg_lite_path_set_transform(lv_vg_lite_path_t * path, const vg_lite_matrix_t * matrix) in lv_vg_lite_path_set_transform() argument
247 LV_ASSERT_NULL(path); in lv_vg_lite_path_set_transform()
249 path->matrix = *matrix; in lv_vg_lite_path_set_transform()
252 path->has_transform = matrix ? true : false; in lv_vg_lite_path_set_transform()
255 void lv_vg_lite_path_set_quality(lv_vg_lite_path_t * path, vg_lite_quality_t quality) in lv_vg_lite_path_set_quality() argument
257 LV_ASSERT_NULL(path); in lv_vg_lite_path_set_quality()
258 path->base.quality = quality; in lv_vg_lite_path_set_quality()
261 void lv_vg_lite_path_reserve_space(lv_vg_lite_path_t * path, size_t len) in lv_vg_lite_path_reserve_space() argument
266 while(path->base.path_length + len > path->mem_size) { in lv_vg_lite_path_reserve_space()
267 if(path->mem_size == 0) { in lv_vg_lite_path_reserve_space()
268 path->mem_size = LV_MAX(len, PATH_MEM_SIZE_MIN); in lv_vg_lite_path_reserve_space()
272 path->mem_size = path->mem_size * 3 / 2; in lv_vg_lite_path_reserve_space()
281 path->base.path = lv_realloc(path->base.path, path->mem_size); in lv_vg_lite_path_reserve_space()
282 LV_ASSERT_MALLOC(path->base.path); in lv_vg_lite_path_reserve_space()
285 static inline void lv_vg_lite_path_append_data(lv_vg_lite_path_t * path, const void * data, size_t … in lv_vg_lite_path_append_data() argument
287 LV_ASSERT_NULL(path); in lv_vg_lite_path_append_data()
289 lv_vg_lite_path_reserve_space(path, len); in lv_vg_lite_path_append_data()
290 lv_memcpy(PATH_CURRENT_PTR(path), data, len); in lv_vg_lite_path_append_data()
291 PATH_LENGTH_INC(path, len); in lv_vg_lite_path_append_data()
294 static inline void lv_vg_lite_path_append_op(lv_vg_lite_path_t * path, uint32_t op) in lv_vg_lite_path_append_op() argument
296 void * ptr = PATH_CURRENT_PTR(path); in lv_vg_lite_path_append_op()
297 switch(path->base.format) { in lv_vg_lite_path_append_op()
301 PATH_LENGTH_INC(path, sizeof(uint32_t)); in lv_vg_lite_path_append_op()
305 PATH_LENGTH_INC(path, sizeof(uint16_t)); in lv_vg_lite_path_append_op()
309 PATH_LENGTH_INC(path, sizeof(uint8_t)); in lv_vg_lite_path_append_op()
312 LV_ASSERT_FORMAT_MSG(false, "Invalid format: %d", path->base.format); in lv_vg_lite_path_append_op()
317 static inline void lv_vg_lite_path_append_point(lv_vg_lite_path_t * path, float x, float y) in lv_vg_lite_path_append_point() argument
319 if(path->has_transform) { in lv_vg_lite_path_append_point()
320 LV_VG_LITE_ASSERT_MATRIX(&path->matrix); in lv_vg_lite_path_append_point()
324 x = ori_x * path->matrix.m[0][0] + ori_y * path->matrix.m[0][1] + path->matrix.m[0][2]; in lv_vg_lite_path_append_point()
325 y = ori_x * path->matrix.m[1][0] + ori_y * path->matrix.m[1][1] + path->matrix.m[1][2]; in lv_vg_lite_path_append_point()
333 PATH_LENGTH_INC(path, sizeof(TYPE) * 2); \ in lv_vg_lite_path_append_point()
336 void * ptr = PATH_CURRENT_PTR(path); in lv_vg_lite_path_append_point()
337 switch(path->base.format) { in lv_vg_lite_path_append_point()
351 LV_ASSERT_FORMAT_MSG(false, "Invalid format: %d", path->base.format); in lv_vg_lite_path_append_point()
356 void lv_vg_lite_path_move_to(lv_vg_lite_path_t * path, in lv_vg_lite_path_move_to() argument
359 LV_ASSERT_NULL(path); in lv_vg_lite_path_move_to()
360 lv_vg_lite_path_reserve_space(path, (1 + 2) * path->format_len); in lv_vg_lite_path_move_to()
361 lv_vg_lite_path_append_op(path, VLC_OP_MOVE); in lv_vg_lite_path_move_to()
362 lv_vg_lite_path_append_point(path, x, y); in lv_vg_lite_path_move_to()
365 void lv_vg_lite_path_line_to(lv_vg_lite_path_t * path, in lv_vg_lite_path_line_to() argument
368 LV_ASSERT_NULL(path); in lv_vg_lite_path_line_to()
369 lv_vg_lite_path_reserve_space(path, (1 + 2) * path->format_len); in lv_vg_lite_path_line_to()
370 lv_vg_lite_path_append_op(path, VLC_OP_LINE); in lv_vg_lite_path_line_to()
371 lv_vg_lite_path_append_point(path, x, y); in lv_vg_lite_path_line_to()
374 void lv_vg_lite_path_quad_to(lv_vg_lite_path_t * path, in lv_vg_lite_path_quad_to() argument
378 LV_ASSERT_NULL(path); in lv_vg_lite_path_quad_to()
379 lv_vg_lite_path_reserve_space(path, (1 + 4) * path->format_len); in lv_vg_lite_path_quad_to()
380 lv_vg_lite_path_append_op(path, VLC_OP_QUAD); in lv_vg_lite_path_quad_to()
381 lv_vg_lite_path_append_point(path, cx, cy); in lv_vg_lite_path_quad_to()
382 lv_vg_lite_path_append_point(path, x, y); in lv_vg_lite_path_quad_to()
385 void lv_vg_lite_path_cubic_to(lv_vg_lite_path_t * path, in lv_vg_lite_path_cubic_to() argument
390 LV_ASSERT_NULL(path); in lv_vg_lite_path_cubic_to()
391 lv_vg_lite_path_reserve_space(path, (1 + 6) * path->format_len); in lv_vg_lite_path_cubic_to()
392 lv_vg_lite_path_append_op(path, VLC_OP_CUBIC); in lv_vg_lite_path_cubic_to()
393 lv_vg_lite_path_append_point(path, cx1, cy1); in lv_vg_lite_path_cubic_to()
394 lv_vg_lite_path_append_point(path, cx2, cy2); in lv_vg_lite_path_cubic_to()
395 lv_vg_lite_path_append_point(path, x, y); in lv_vg_lite_path_cubic_to()
398 void lv_vg_lite_path_close(lv_vg_lite_path_t * path) in lv_vg_lite_path_close() argument
400 LV_ASSERT_NULL(path); in lv_vg_lite_path_close()
401 lv_vg_lite_path_reserve_space(path, 1 * path->format_len); in lv_vg_lite_path_close()
402 lv_vg_lite_path_append_op(path, VLC_OP_CLOSE); in lv_vg_lite_path_close()
405 void lv_vg_lite_path_end(lv_vg_lite_path_t * path) in lv_vg_lite_path_end() argument
407 LV_ASSERT_NULL(path); in lv_vg_lite_path_end()
408 lv_vg_lite_path_reserve_space(path, 1 * path->format_len); in lv_vg_lite_path_end()
409 lv_vg_lite_path_append_op(path, VLC_OP_END); in lv_vg_lite_path_end()
410 path->base.add_end = 1; in lv_vg_lite_path_end()
414 lv_vg_lite_path_t * path, in lv_vg_lite_path_append_rect() argument
430 lv_vg_lite_path_move_to(path, x, y); in lv_vg_lite_path_append_rect()
431 lv_vg_lite_path_line_to(path, x + w, y); in lv_vg_lite_path_append_rect()
432 lv_vg_lite_path_line_to(path, x + w, y + h); in lv_vg_lite_path_append_rect()
433 lv_vg_lite_path_line_to(path, x, y + h); in lv_vg_lite_path_append_rect()
434 lv_vg_lite_path_close(path); in lv_vg_lite_path_append_rect()
441 lv_vg_lite_path_append_circle(path, x + half_w, y + half_h, r, r); in lv_vg_lite_path_append_rect()
451 lv_vg_lite_path_move_to(path, x + r, y); in lv_vg_lite_path_append_rect()
454 lv_vg_lite_path_line_to(path, x + w - r, y); in lv_vg_lite_path_append_rect()
457 lv_vg_lite_path_cubic_to(path, x + w - r + offset, y, x + w, y + r - offset, x + w, y + r); in lv_vg_lite_path_append_rect()
460 lv_vg_lite_path_line_to(path, x + w, y + h - r); in lv_vg_lite_path_append_rect()
463 …lv_vg_lite_path_cubic_to(path, x + w, y + h - r + offset, x + w - r + offset, y + h, x + w - r, y … in lv_vg_lite_path_append_rect()
466 lv_vg_lite_path_line_to(path, x + r, y + h); in lv_vg_lite_path_append_rect()
469 lv_vg_lite_path_cubic_to(path, x + r - offset, y + h, x, y + h - r + offset, x, y + h - r); in lv_vg_lite_path_append_rect()
472 lv_vg_lite_path_line_to(path, x, y + r); in lv_vg_lite_path_append_rect()
475 lv_vg_lite_path_cubic_to(path, x, y + r - offset, x + r - offset, y, x + r, y); in lv_vg_lite_path_append_rect()
478 lv_vg_lite_path_close(path); in lv_vg_lite_path_append_rect()
483 lv_vg_lite_path_t * path, in lv_vg_lite_path_append_circle() argument
492 lv_vg_lite_path_move_to(path, cx, cy - ry); in lv_vg_lite_path_append_circle()
493 lv_vg_lite_path_cubic_to(path, cx + rx_kappa, cy - ry, cx + rx, cy - ry_kappa, cx + rx, cy); in lv_vg_lite_path_append_circle()
494 lv_vg_lite_path_cubic_to(path, cx + rx, cy + ry_kappa, cx + rx_kappa, cy + ry, cx, cy + ry); in lv_vg_lite_path_append_circle()
495 lv_vg_lite_path_cubic_to(path, cx - rx_kappa, cy + ry, cx - rx, cy + ry_kappa, cx - rx, cy); in lv_vg_lite_path_append_circle()
496 lv_vg_lite_path_cubic_to(path, cx - rx, cy - ry_kappa, cx - rx_kappa, cy - ry, cx, cy - ry); in lv_vg_lite_path_append_circle()
497 lv_vg_lite_path_close(path); in lv_vg_lite_path_append_circle()
501 void lv_vg_lite_path_append_arc_right_angle(lv_vg_lite_path_t * path, in lv_vg_lite_path_append_arc_right_angle() argument
514 lv_vg_lite_path_cubic_to(path, in lv_vg_lite_path_append_arc_right_angle()
521 void lv_vg_lite_path_append_arc(lv_vg_lite_path_t * path, in lv_vg_lite_path_append_arc() argument
531 lv_vg_lite_path_append_circle(path, cx, cy, radius, radius); in lv_vg_lite_path_append_arc()
549 lv_vg_lite_path_move_to(path, cx, cy); in lv_vg_lite_path_append_arc()
550 lv_vg_lite_path_line_to(path, start_x + cx, start_y + cy); in lv_vg_lite_path_append_arc()
583 lv_vg_lite_path_cubic_to(path, ctrl1_x, ctrl1_y, ctrl2_x, ctrl2_y, end_x, end_y); in lv_vg_lite_path_append_arc()
588 lv_vg_lite_path_close(path); in lv_vg_lite_path_append_arc()
642 void lv_vg_lite_path_for_each_data(const vg_lite_path_t * path, lv_vg_lite_path_iter_cb_t cb, void … in lv_vg_lite_path_for_each_data() argument
644 LV_ASSERT_NULL(path); in lv_vg_lite_path_for_each_data()
647 uint8_t fmt_len = lv_vg_lite_path_format_len(path->format); in lv_vg_lite_path_for_each_data()
648 uint8_t * cur = path->path; in lv_vg_lite_path_for_each_data()
649 uint8_t * end = cur + path->path_length; in lv_vg_lite_path_for_each_data()
664 switch(path->format) { in lv_vg_lite_path_for_each_data()
678 LV_ASSERT_FORMAT_MSG(false, "Invalid format: %d", path->format); in lv_vg_lite_path_for_each_data()
695 lv_vg_lite_path_append_data(dest, src->base.path, src->base.path_length); in lv_vg_lite_path_append_path()