Lines Matching +full:- +full:w
80 if(chart->type == type) return; in lv_chart_set_type()
82 if(chart->type == LV_CHART_TYPE_SCATTER) { in lv_chart_set_type()
84 _LV_LL_READ_BACK(&chart->series_ll, ser) { in lv_chart_set_type()
85 lv_mem_free(ser->x_points); in lv_chart_set_type()
86 ser->x_points = NULL; in lv_chart_set_type()
92 _LV_LL_READ_BACK(&chart->series_ll, ser) { in lv_chart_set_type()
93 ser->x_points = lv_mem_alloc(sizeof(lv_point_t) * chart->point_cnt); in lv_chart_set_type()
94 LV_ASSERT_MALLOC(ser->x_points); in lv_chart_set_type()
95 if(ser->x_points == NULL) return; in lv_chart_set_type()
99 chart->type = type; in lv_chart_set_type()
109 if(chart->point_cnt == cnt) return; in lv_chart_set_point_count()
115 _LV_LL_READ_BACK(&chart->series_ll, ser) { in lv_chart_set_point_count()
116 if(chart->type == LV_CHART_TYPE_SCATTER) { in lv_chart_set_point_count()
117 if(!ser->x_ext_buf_assigned) new_points_alloc(obj, ser, cnt, &ser->x_points); in lv_chart_set_point_count()
119 if(!ser->y_ext_buf_assigned) new_points_alloc(obj, ser, cnt, &ser->y_points); in lv_chart_set_point_count()
120 ser->start_point = 0; in lv_chart_set_point_count()
123 chart->point_cnt = cnt; in lv_chart_set_point_count()
137 chart->ymin[0] = min; in lv_chart_set_range()
138 chart->ymax[0] = max; in lv_chart_set_range()
141 chart->ymin[1] = min; in lv_chart_set_range()
142 chart->ymax[1] = max; in lv_chart_set_range()
145 chart->xmin[0] = min; in lv_chart_set_range()
146 chart->xmax[0] = max; in lv_chart_set_range()
149 chart->xmin[1] = min; in lv_chart_set_range()
150 chart->xmax[1] = max; in lv_chart_set_range()
165 if(chart->update_mode == update_mode) return; in lv_chart_set_update_mode()
167 chart->update_mode = update_mode; in lv_chart_set_update_mode()
176 if(chart->hdiv_cnt == hdiv && chart->vdiv_cnt == vdiv) return; in lv_chart_set_div_line_count()
178 chart->hdiv_cnt = hdiv; in lv_chart_set_div_line_count()
179 chart->vdiv_cnt = vdiv; in lv_chart_set_div_line_count()
189 if(chart->zoom_x == zoom_x) return; in lv_chart_set_zoom_x()
191 chart->zoom_x = zoom_x; in lv_chart_set_zoom_x()
203 if(chart->zoom_y == zoom_y) return; in lv_chart_set_zoom_y()
205 chart->zoom_y = zoom_y; in lv_chart_set_zoom_y()
217 return chart->zoom_x; in lv_chart_get_zoom_x()
225 return chart->zoom_y; in lv_chart_get_zoom_y()
234 t->major_len = major_len; in lv_chart_set_axis_tick()
235 t->minor_len = minor_len; in lv_chart_set_axis_tick()
236 t->minor_cnt = minor_cnt; in lv_chart_set_axis_tick()
237 t->major_cnt = major_cnt; in lv_chart_set_axis_tick()
238 t->label_en = label_en; in lv_chart_set_axis_tick()
239 t->draw_size = draw_size; in lv_chart_set_axis_tick()
250 return chart->type; in lv_chart_get_type()
258 return chart->point_cnt; in lv_chart_get_point_count()
266 return chart->update_mode == LV_CHART_UPDATE_MODE_SHIFT ? ser->start_point : 0; in lv_chart_get_x_start_point()
276 if(id >= chart->point_cnt) { in lv_chart_get_point_pos_by_id()
278 p_out->x = 0; in lv_chart_get_point_pos_by_id()
279 p_out->y = 0; in lv_chart_get_point_pos_by_id()
283 lv_coord_t w = ((int32_t)lv_obj_get_content_width(obj) * chart->zoom_x) >> 8; in lv_chart_get_point_pos_by_id() local
284 lv_coord_t h = ((int32_t)lv_obj_get_content_height(obj) * chart->zoom_y) >> 8; in lv_chart_get_point_pos_by_id()
286 if(chart->type == LV_CHART_TYPE_LINE) { in lv_chart_get_point_pos_by_id()
287 p_out->x = (w * id) / (chart->point_cnt - 1); in lv_chart_get_point_pos_by_id()
289 else if(chart->type == LV_CHART_TYPE_SCATTER) { in lv_chart_get_point_pos_by_id()
290 …p_out->x = lv_map(ser->x_points[id], chart->xmin[ser->x_axis_sec], chart->xmax[ser->x_axis_sec], 0… in lv_chart_get_point_pos_by_id()
292 else if(chart->type == LV_CHART_TYPE_BAR) { in lv_chart_get_point_pos_by_id()
293 uint32_t ser_cnt = _lv_ll_get_len(&chart->series_ll); in lv_chart_get_point_pos_by_id()
295 … int32_t ser_gap = ((int32_t)lv_obj_get_style_pad_column(obj, LV_PART_ITEMS) * chart->zoom_x) >> 8; in lv_chart_get_point_pos_by_id()
298 …int32_t block_gap = ((int32_t)lv_obj_get_style_pad_column(obj, LV_PART_MAIN) * chart->zoom_x) >> 8; in lv_chart_get_point_pos_by_id()
300 lv_coord_t block_w = (w - ((chart->point_cnt - 1) * block_gap)) / chart->point_cnt; in lv_chart_get_point_pos_by_id()
304 _LV_LL_READ_BACK(&chart->series_ll, ser_i) { in lv_chart_get_point_pos_by_id()
309 p_out->x = (int32_t)((int32_t)(w + block_gap) * id) / chart->point_cnt; in lv_chart_get_point_pos_by_id()
310 p_out->x += block_w * ser_idx / ser_cnt; in lv_chart_get_point_pos_by_id()
312 lv_coord_t col_w = (block_w - (ser_gap * (ser_cnt - 1))) / ser_cnt; in lv_chart_get_point_pos_by_id()
313 p_out->x += col_w / 2; in lv_chart_get_point_pos_by_id()
317 p_out->x += lv_obj_get_style_pad_left(obj, LV_PART_MAIN) + border_width; in lv_chart_get_point_pos_by_id()
318 p_out->x -= lv_obj_get_scroll_left(obj); in lv_chart_get_point_pos_by_id()
321 id = ((int32_t)start_point + id) % chart->point_cnt; in lv_chart_get_point_pos_by_id()
323 temp_y = (int32_t)((int32_t)ser->y_points[id] - chart->ymin[ser->y_axis_sec]) * h; in lv_chart_get_point_pos_by_id()
324 temp_y = temp_y / (chart->ymax[ser->y_axis_sec] - chart->ymin[ser->y_axis_sec]); in lv_chart_get_point_pos_by_id()
325 p_out->y = h - temp_y; in lv_chart_get_point_pos_by_id()
326 p_out->y += lv_obj_get_style_pad_top(obj, LV_PART_MAIN) + border_width; in lv_chart_get_point_pos_by_id()
327 p_out->y -= lv_obj_get_scroll_top(obj); in lv_chart_get_point_pos_by_id()
348 lv_chart_series_t * ser = _lv_ll_ins_head(&chart->series_ll); in lv_chart_add_series()
354 ser->color = color; in lv_chart_add_series()
355 ser->y_points = lv_mem_alloc(sizeof(lv_coord_t) * chart->point_cnt); in lv_chart_add_series()
356 LV_ASSERT_MALLOC(ser->y_points); in lv_chart_add_series()
358 if(chart->type == LV_CHART_TYPE_SCATTER) { in lv_chart_add_series()
359 ser->x_points = lv_mem_alloc(sizeof(lv_coord_t) * chart->point_cnt); in lv_chart_add_series()
360 LV_ASSERT_MALLOC(ser->x_points); in lv_chart_add_series()
362 if(ser->y_points == NULL) { in lv_chart_add_series()
363 _lv_ll_remove(&chart->series_ll, ser); in lv_chart_add_series()
368 ser->start_point = 0; in lv_chart_add_series()
369 ser->y_ext_buf_assigned = false; in lv_chart_add_series()
370 ser->hidden = 0; in lv_chart_add_series()
371 ser->x_axis_sec = axis & LV_CHART_AXIS_SECONDARY_X ? 1 : 0; in lv_chart_add_series()
372 ser->y_axis_sec = axis & LV_CHART_AXIS_SECONDARY_Y ? 1 : 0; in lv_chart_add_series()
375 lv_coord_t * p_tmp = ser->y_points; in lv_chart_add_series()
376 for(i = 0; i < chart->point_cnt; i++) { in lv_chart_add_series()
390 if(!series->y_ext_buf_assigned && series->y_points) lv_mem_free(series->y_points); in lv_chart_remove_series()
391 if(!series->x_ext_buf_assigned && series->x_points) lv_mem_free(series->x_points); in lv_chart_remove_series()
393 _lv_ll_remove(&chart->series_ll, series); in lv_chart_remove_series()
404 series->hidden = hide ? 1 : 0; in lv_chart_hide_series()
413 series->color = color; in lv_chart_set_series_color()
423 if(id >= chart->point_cnt) return; in lv_chart_set_x_start_point()
424 ser->start_point = id; in lv_chart_set_x_start_point()
432 if(ser == NULL) return _lv_ll_get_head(&chart->series_ll); in lv_chart_get_series_next()
433 else return _lv_ll_get_next(&chart->series_ll, ser); in lv_chart_get_series_next()
444 …* @param dir direction of the cursor. `LV_DIR_RIGHT/LEFT/TOP/DOWN/HOR/VER/ALL`. OR-ed values…
452 lv_chart_cursor_t * cursor = _lv_ll_ins_head(&chart->cursor_ll); in lv_chart_add_cursor()
456 cursor->pos.x = LV_CHART_POINT_NONE; in lv_chart_add_cursor()
457 cursor->pos.y = LV_CHART_POINT_NONE; in lv_chart_add_cursor()
458 cursor->point_id = LV_CHART_POINT_NONE; in lv_chart_add_cursor()
459 cursor->pos_set = 0; in lv_chart_add_cursor()
460 cursor->color = color; in lv_chart_add_cursor()
461 cursor->dir = dir; in lv_chart_add_cursor()
478 cursor->pos.x = pos->x; in lv_chart_set_cursor_pos()
479 cursor->pos.y = pos->y; in lv_chart_set_cursor_pos()
480 cursor->pos_set = 1; in lv_chart_set_cursor_pos()
496 cursor->point_id = point_id; in lv_chart_set_cursor_point()
497 cursor->pos_set = 0; in lv_chart_set_cursor_point()
499 cursor->ser = ser; in lv_chart_set_cursor_point()
514 return cursor->pos; in lv_chart_get_cursor_point()
528 for(i = 0; i < chart->point_cnt; i++) { in lv_chart_set_all_value()
529 ser->y_points[i] = value; in lv_chart_set_all_value()
531 ser->start_point = 0; in lv_chart_set_all_value()
541 ser->y_points[ser->start_point] = value; in lv_chart_set_next_value()
542 invalidate_point(obj, ser->start_point); in lv_chart_set_next_value()
543 ser->start_point = (ser->start_point + 1) % chart->point_cnt; in lv_chart_set_next_value()
544 invalidate_point(obj, ser->start_point); in lv_chart_set_next_value()
554 if(chart->type != LV_CHART_TYPE_SCATTER) { in lv_chart_set_next_value2()
559 ser->x_points[ser->start_point] = x_value; in lv_chart_set_next_value2()
560 ser->y_points[ser->start_point] = y_value; in lv_chart_set_next_value2()
561 ser->start_point = (ser->start_point + 1) % chart->point_cnt; in lv_chart_set_next_value2()
562 invalidate_point(obj, ser->start_point); in lv_chart_set_next_value2()
571 if(id >= chart->point_cnt) return; in lv_chart_set_value_by_id()
572 ser->y_points[id] = value; in lv_chart_set_value_by_id()
583 if(chart->type != LV_CHART_TYPE_SCATTER) { in lv_chart_set_value_by_id2()
588 if(id >= chart->point_cnt) return; in lv_chart_set_value_by_id2()
589 ser->x_points[id] = x_value; in lv_chart_set_value_by_id2()
590 ser->y_points[id] = y_value; in lv_chart_set_value_by_id2()
599 if(!ser->y_ext_buf_assigned && ser->y_points) lv_mem_free(ser->y_points); in lv_chart_set_ext_y_array()
600 ser->y_ext_buf_assigned = true; in lv_chart_set_ext_y_array()
601 ser->y_points = array; in lv_chart_set_ext_y_array()
610 if(!ser->x_ext_buf_assigned && ser->x_points) lv_mem_free(ser->x_points); in lv_chart_set_ext_x_array()
611 ser->x_ext_buf_assigned = true; in lv_chart_set_ext_x_array()
612 ser->x_points = array; in lv_chart_set_ext_x_array()
621 return ser->y_points; in lv_chart_get_y_array()
629 return ser->x_points; in lv_chart_get_x_array()
635 return chart->pressed_point_id; in lv_chart_get_pressed_point()
649 _lv_ll_init(&chart->series_ll, sizeof(lv_chart_series_t)); in lv_chart_constructor()
650 _lv_ll_init(&chart->cursor_ll, sizeof(lv_chart_cursor_t)); in lv_chart_constructor()
652 chart->ymin[0] = 0; in lv_chart_constructor()
653 chart->xmin[0] = 0; in lv_chart_constructor()
654 chart->ymin[1] = 0; in lv_chart_constructor()
655 chart->xmin[1] = 0; in lv_chart_constructor()
656 chart->ymax[0] = 100; in lv_chart_constructor()
657 chart->xmax[0] = 100; in lv_chart_constructor()
658 chart->ymax[1] = 100; in lv_chart_constructor()
659 chart->xmax[1] = 100; in lv_chart_constructor()
661 chart->hdiv_cnt = LV_CHART_HDIV_DEF; in lv_chart_constructor()
662 chart->vdiv_cnt = LV_CHART_VDIV_DEF; in lv_chart_constructor()
663 chart->point_cnt = LV_CHART_POINT_CNT_DEF; in lv_chart_constructor()
664 chart->pressed_point_id = LV_CHART_POINT_NONE; in lv_chart_constructor()
665 chart->type = LV_CHART_TYPE_LINE; in lv_chart_constructor()
666 chart->update_mode = LV_CHART_UPDATE_MODE_SHIFT; in lv_chart_constructor()
667 chart->zoom_x = LV_IMG_ZOOM_NONE; in lv_chart_constructor()
668 chart->zoom_y = LV_IMG_ZOOM_NONE; in lv_chart_constructor()
680 while(chart->series_ll.head) { in lv_chart_destructor()
681 ser = _lv_ll_get_head(&chart->series_ll); in lv_chart_destructor()
683 if(!ser->y_ext_buf_assigned) lv_mem_free(ser->y_points); in lv_chart_destructor()
685 _lv_ll_remove(&chart->series_ll, ser); in lv_chart_destructor()
688 _lv_ll_clear(&chart->series_ll); in lv_chart_destructor()
691 while(chart->cursor_ll.head) { in lv_chart_destructor()
692 cur = _lv_ll_get_head(&chart->cursor_ll); in lv_chart_destructor()
693 _lv_ll_remove(&chart->cursor_ll, cur); in lv_chart_destructor()
696 _lv_ll_clear(&chart->cursor_ll); in lv_chart_destructor()
720 p.x -= obj->coords.x1; in lv_chart_event()
722 if(id != (uint32_t)chart->pressed_point_id) { in lv_chart_event()
724 invalidate_point(obj, chart->pressed_point_id); in lv_chart_event()
725 chart->pressed_point_id = id; in lv_chart_event()
730 invalidate_point(obj, chart->pressed_point_id); in lv_chart_event()
731 chart->pressed_point_id = LV_CHART_POINT_NONE; in lv_chart_event()
737 …lv_event_set_ext_draw_size(e, LV_MAX4(chart->tick[0].draw_size, chart->tick[1].draw_size, chart->t… in lv_chart_event()
738 chart->tick[3].draw_size)); in lv_chart_event()
742 p->x = ((int32_t)lv_obj_get_content_width(obj) * chart->zoom_x) >> 8; in lv_chart_event()
743 p->y = ((int32_t)lv_obj_get_content_height(obj) * chart->zoom_y) >> 8; in lv_chart_event()
750 if(_lv_ll_is_empty(&chart->series_ll) == false) { in lv_chart_event()
751 if(chart->type == LV_CHART_TYPE_LINE) draw_series_line(obj, draw_ctx); in lv_chart_event()
752 else if(chart->type == LV_CHART_TYPE_BAR) draw_series_bar(obj, draw_ctx); in lv_chart_event()
753 else if(chart->type == LV_CHART_TYPE_SCATTER) draw_series_scatter(obj, draw_ctx); in lv_chart_event()
765 bool mask_ret = _lv_area_intersect(&series_clip_area, &obj->coords, draw_ctx->clip_area); in draw_div_lines()
768 const lv_area_t * clip_area_ori = draw_ctx->clip_area; in draw_div_lines()
769 draw_ctx->clip_area = &series_clip_area; in draw_div_lines()
779 lv_coord_t w = ((int32_t)lv_obj_get_content_width(obj) * chart->zoom_x) >> 8; in draw_div_lines() local
780 lv_coord_t h = ((int32_t)lv_obj_get_content_height(obj) * chart->zoom_y) >> 8; in draw_div_lines()
803 if(chart->hdiv_cnt != 0) { in draw_div_lines()
804 lv_coord_t y_ofs = obj->coords.y1 + pad_top - scroll_top; in draw_div_lines()
805 p1.x = obj->coords.x1; in draw_div_lines()
806 p2.x = obj->coords.x2; in draw_div_lines()
809 i_end = chart->hdiv_cnt; in draw_div_lines()
812 …er_side & LV_BORDER_SIDE_BOTTOM) && (lv_obj_get_style_pad_bottom(obj, LV_PART_MAIN) == 0)) i_end--; in draw_div_lines()
816 p1.y = (int32_t)((int32_t)h * i) / (chart->hdiv_cnt - 1); in draw_div_lines()
832 if(chart->vdiv_cnt != 0) { in draw_div_lines()
833 lv_coord_t x_ofs = obj->coords.x1 + pad_left - scroll_left; in draw_div_lines()
834 p1.y = obj->coords.y1; in draw_div_lines()
835 p2.y = obj->coords.y2; in draw_div_lines()
837 i_end = chart->vdiv_cnt; in draw_div_lines()
840 …rder_side & LV_BORDER_SIDE_RIGHT) && (lv_obj_get_style_pad_right(obj, LV_PART_MAIN) == 0)) i_end--; in draw_div_lines()
844 p1.x = (int32_t)((int32_t)w * i) / (chart->vdiv_cnt - 1); in draw_div_lines()
865 draw_ctx->clip_area = clip_area_ori; in draw_div_lines()
871 if(_lv_area_intersect(&clip_area, &obj->coords, draw_ctx->clip_area) == false) return; in draw_series_line()
873 const lv_area_t * clip_area_ori = draw_ctx->clip_area; in draw_series_line()
874 draw_ctx->clip_area = &clip_area; in draw_series_line()
877 if(chart->point_cnt < 2) return; in draw_series_line()
885 lv_coord_t w = ((int32_t)lv_obj_get_content_width(obj) * chart->zoom_x) >> 8; in draw_series_line() local
886 lv_coord_t h = ((int32_t)lv_obj_get_content_height(obj) * chart->zoom_y) >> 8; in draw_series_line()
887 lv_coord_t x_ofs = obj->coords.x1 + pad_left - lv_obj_get_scroll_left(obj); in draw_series_line()
888 lv_coord_t y_ofs = obj->coords.y1 + pad_top - lv_obj_get_scroll_top(obj); in draw_series_line()
892 bool mask_ret = _lv_area_intersect(&series_clip_area, &obj->coords, draw_ctx->clip_area); in draw_series_line()
911 bool crowded_mode = chart->point_cnt >= w ? true : false; in draw_series_line()
914 _LV_LL_READ_BACK(&chart->series_ll, ser) { in draw_series_line()
915 if(ser->hidden) continue; in draw_series_line()
916 line_dsc_default.color = ser->color; in draw_series_line()
917 point_dsc_default.bg_color = ser->color; in draw_series_line()
926 … int32_t y_tmp = (int32_t)((int32_t)ser->y_points[p_prev] - chart->ymin[ser->y_axis_sec]) * h; in draw_series_line()
927 y_tmp = y_tmp / (chart->ymax[ser->y_axis_sec] - chart->ymin[ser->y_axis_sec]); in draw_series_line()
928 p2.y = h - y_tmp + y_ofs; in draw_series_line()
942 for(i = 0; i < chart->point_cnt; i++) { in draw_series_line()
946 if(p1.x > clip_area_ori->x2 + point_w + 1) break; in draw_series_line()
947 p2.x = ((w * i) / (chart->point_cnt - 1)) + x_ofs; in draw_series_line()
949 p_act = (start_point + i) % chart->point_cnt; in draw_series_line()
951 y_tmp = (int32_t)((int32_t)ser->y_points[p_act] - chart->ymin[ser->y_axis_sec]) * h; in draw_series_line()
952 y_tmp = y_tmp / (chart->ymax[ser->y_axis_sec] - chart->ymin[ser->y_axis_sec]); in draw_series_line()
953 p2.y = h - y_tmp + y_ofs; in draw_series_line()
955 if(p2.x < clip_area_ori->x1 - point_w - 1) { in draw_series_line()
963 … if(ser->y_points[p_prev] != LV_CHART_POINT_NONE && ser->y_points[p_act] != LV_CHART_POINT_NONE) { in draw_series_line()
964 … /*Draw only one vertical line between the min and max y-values on the same x-value*/ in draw_series_line()
969 p2.x--; /*It's already on the next x value*/ in draw_series_line()
975 p2.x++; /*Compensate the previous x--*/ in draw_series_line()
983 point_area.x1 = p1.x - point_w; in draw_series_line()
985 point_area.y1 = p1.y - point_h; in draw_series_line()
988 part_draw_dsc.id = i - 1; in draw_series_line()
989 part_draw_dsc.p1 = ser->y_points[p_prev] != LV_CHART_POINT_NONE ? &p1 : NULL; in draw_series_line()
990 part_draw_dsc.p2 = ser->y_points[p_act] != LV_CHART_POINT_NONE ? &p2 : NULL; in draw_series_line()
992 part_draw_dsc.value = ser->y_points[p_prev]; in draw_series_line()
996 … if(ser->y_points[p_prev] != LV_CHART_POINT_NONE && ser->y_points[p_act] != LV_CHART_POINT_NONE) { in draw_series_line()
1000 if(point_w && point_h && ser->y_points[p_prev] != LV_CHART_POINT_NONE) { in draw_series_line()
1012 if(!crowded_mode && i == chart->point_cnt) { in draw_series_line()
1014 if(ser->y_points[p_act] != LV_CHART_POINT_NONE) { in draw_series_line()
1016 point_area.x1 = p2.x - point_w; in draw_series_line()
1018 point_area.y1 = p2.y - point_h; in draw_series_line()
1021 part_draw_dsc.id = i - 1; in draw_series_line()
1025 part_draw_dsc.value = ser->y_points[p_act]; in draw_series_line()
1034 draw_ctx->clip_area = clip_area_ori; in draw_series_line()
1041 if(_lv_area_intersect(&clip_area, &obj->coords, draw_ctx->clip_area) == false) return; in draw_series_scatter()
1043 const lv_area_t * clip_area_ori = draw_ctx->clip_area; in draw_series_scatter()
1044 draw_ctx->clip_area = &clip_area; in draw_series_scatter()
1054 lv_coord_t w = ((int32_t)lv_obj_get_content_width(obj) * chart->zoom_x) >> 8; in draw_series_scatter() local
1055 lv_coord_t h = ((int32_t)lv_obj_get_content_height(obj) * chart->zoom_y) >> 8; in draw_series_scatter()
1056 lv_coord_t x_ofs = obj->coords.x1 + pad_left + border_width - lv_obj_get_scroll_left(obj); in draw_series_scatter()
1057 lv_coord_t y_ofs = obj->coords.y1 + pad_top + border_width - lv_obj_get_scroll_top(obj); in draw_series_scatter()
1076 _LV_LL_READ_BACK(&chart->series_ll, ser) { in draw_series_scatter()
1077 if(ser->hidden) continue; in draw_series_scatter()
1078 line_dsc_default.color = ser->color; in draw_series_scatter()
1079 point_dsc_default.bg_color = ser->color; in draw_series_scatter()
1088 if(ser->y_points[p_act] != LV_CHART_POINT_CNT_DEF) { in draw_series_scatter()
1089 …p2.x = lv_map(ser->x_points[p_act], chart->xmin[ser->x_axis_sec], chart->xmax[ser->x_axis_sec], 0,… in draw_series_scatter()
1092 …p2.y = lv_map(ser->y_points[p_act], chart->ymin[ser->y_axis_sec], chart->ymax[ser->y_axis_sec], 0,… in draw_series_scatter()
1093 p2.y = h - p2.y; in draw_series_scatter()
1110 for(i = 0; i < chart->point_cnt; i++) { in draw_series_scatter()
1114 p_act = (start_point + i) % chart->point_cnt; in draw_series_scatter()
1115 if(ser->y_points[p_act] != LV_CHART_POINT_NONE) { in draw_series_scatter()
1116 …p2.y = lv_map(ser->y_points[p_act], chart->ymin[ser->y_axis_sec], chart->ymax[ser->y_axis_sec], 0,… in draw_series_scatter()
1117 p2.y = h - p2.y; in draw_series_scatter()
1120 …p2.x = lv_map(ser->x_points[p_act], chart->xmin[ser->x_axis_sec], chart->xmax[ser->x_axis_sec], 0,… in draw_series_scatter()
1131 point_area.x1 = p1.x - point_w; in draw_series_scatter()
1133 point_area.y1 = p1.y - point_h; in draw_series_scatter()
1136 part_draw_dsc.id = i - 1; in draw_series_scatter()
1137 part_draw_dsc.p1 = ser->y_points[p_prev] != LV_CHART_POINT_NONE ? &p1 : NULL; in draw_series_scatter()
1138 part_draw_dsc.p2 = ser->y_points[p_act] != LV_CHART_POINT_NONE ? &p2 : NULL; in draw_series_scatter()
1140 part_draw_dsc.value = ser->y_points[p_prev]; in draw_series_scatter()
1144 … if(ser->y_points[p_prev] != LV_CHART_POINT_NONE && ser->y_points[p_act] != LV_CHART_POINT_NONE) { in draw_series_scatter()
1157 if(i == chart->point_cnt) { in draw_series_scatter()
1159 if(ser->y_points[p_act] != LV_CHART_POINT_NONE) { in draw_series_scatter()
1161 point_area.x1 = p2.x - point_w; in draw_series_scatter()
1163 point_area.y1 = p2.y - point_h; in draw_series_scatter()
1166 part_draw_dsc.id = i - 1; in draw_series_scatter()
1170 part_draw_dsc.value = ser->y_points[p_act]; in draw_series_scatter()
1177 draw_ctx->clip_area = clip_area_ori; in draw_series_scatter()
1183 if(_lv_area_intersect(&clip_area, &obj->coords, draw_ctx->clip_area) == false) return; in draw_series_bar()
1185 const lv_area_t * clip_area_ori = draw_ctx->clip_area; in draw_series_bar()
1186 draw_ctx->clip_area = &clip_area; in draw_series_bar()
1194 lv_coord_t w = ((int32_t)lv_obj_get_content_width(obj) * chart->zoom_x) >> 8; in draw_series_bar() local
1195 lv_coord_t h = ((int32_t)lv_obj_get_content_height(obj) * chart->zoom_y) >> 8; in draw_series_bar()
1198 uint32_t ser_cnt = _lv_ll_get_len(&chart->series_ll); in draw_series_bar()
1200 … LV_PART_MAIN) * chart->zoom_x) >> 8; /*Gap between the column on ~adjacent X*/ in draw_series_bar()
1201 lv_coord_t block_w = (w - ((chart->point_cnt - 1) * block_gap)) / chart->point_cnt; in draw_series_bar()
1203 … LV_PART_ITEMS) * chart->zoom_x) >> 8; /*Gap between the columns on the ~same X*/ in draw_series_bar()
1204 lv_coord_t col_w = (block_w - (ser_cnt - 1) * ser_gap) / ser_cnt; in draw_series_bar()
1208 lv_coord_t x_ofs = pad_left - lv_obj_get_scroll_left(obj) + border_w; in draw_series_bar()
1209 lv_coord_t y_ofs = pad_top - lv_obj_get_scroll_top(obj) + border_w; in draw_series_bar()
1218 col_a.y2 = obj->coords.y2 + col_dsc.radius; in draw_series_bar()
1227 for(i = 0; i < chart->point_cnt; i++) { in draw_series_bar()
1228 …lv_coord_t x_act = (int32_t)((int32_t)(w - block_w) * i) / (chart->point_cnt - 1) + obj->coords.x1… in draw_series_bar()
1233 _LV_LL_READ_BACK(&chart->series_ll, ser) { in draw_series_bar()
1234 if(ser->hidden) continue; in draw_series_bar()
1239 col_a.x2 = col_a.x1 + col_w - 1; in draw_series_bar()
1245 col_dsc.bg_color = ser->color; in draw_series_bar()
1247 lv_coord_t p_act = (start_point + i) % chart->point_cnt; in draw_series_bar()
1248 … y_tmp = (int32_t)((int32_t)ser->y_points[p_act] - chart->ymin[ser->y_axis_sec]) * h; in draw_series_bar()
1249 … y_tmp = y_tmp / (chart->ymax[ser->y_axis_sec] - chart->ymin[ser->y_axis_sec]); in draw_series_bar()
1250 col_a.y1 = h - y_tmp + obj->coords.y1 + y_ofs; in draw_series_bar()
1252 if(ser->y_points[p_act] != LV_CHART_POINT_NONE) { in draw_series_bar()
1256 part_draw_dsc.value = ser->y_points[p_act]; in draw_series_bar()
1263 draw_ctx->clip_area = clip_area_ori; in draw_series_bar()
1271 if(_lv_ll_is_empty(&chart->cursor_ll)) return; in draw_cursors()
1274 if(!_lv_area_intersect(&clip_area, draw_ctx->clip_area, &obj->coords)) return; in draw_cursors()
1276 const lv_area_t * clip_area_ori = draw_ctx->clip_area; in draw_cursors()
1277 draw_ctx->clip_area = &clip_area; in draw_cursors()
1307 _LV_LL_READ_BACK(&chart->cursor_ll, cursor) { in draw_cursors()
1310 line_dsc_tmp.color = cursor->color; in draw_cursors()
1311 point_dsc_tmp.bg_color = cursor->color; in draw_cursors()
1318 if(cursor->pos_set) { in draw_cursors()
1319 cx = cursor->pos.x; in draw_cursors()
1320 cy = cursor->pos.y; in draw_cursors()
1323 if(cursor->point_id == LV_CHART_POINT_NONE) continue; in draw_cursors()
1325 lv_chart_get_point_pos_by_id(obj, cursor->ser, cursor->point_id, &p); in draw_cursors()
1330 cx += obj->coords.x1; in draw_cursors()
1331 cy += obj->coords.y1; in draw_cursors()
1336 point_area.x1 = cx - point_w; in draw_cursors()
1338 point_area.y1 = cy - point_h; in draw_cursors()
1347 if(cursor->dir & LV_DIR_HOR) { in draw_cursors()
1348 p1.x = cursor->dir & LV_DIR_LEFT ? obj->coords.x1 : cx; in draw_cursors()
1350 p2.x = cursor->dir & LV_DIR_RIGHT ? obj->coords.x2 : cx; in draw_cursors()
1363 if(cursor->dir & LV_DIR_VER) { in draw_cursors()
1365 p1.y = cursor->dir & LV_DIR_TOP ? obj->coords.y1 : cy; in draw_cursors()
1367 p2.y = cursor->dir & LV_DIR_BOTTOM ? obj->coords.y2 : cy; in draw_cursors()
1380 draw_ctx->clip_area = clip_area_ori; in draw_cursors()
1389 if(!t->label_en && !t->major_len && !t->minor_len) return; in draw_y_ticks()
1390 if(t->major_cnt <= 1) return; in draw_y_ticks()
1391 uint32_t total_tick_num = (t->major_cnt - 1) * (t->minor_cnt); in draw_y_ticks()
1403 lv_coord_t h = ((int32_t)lv_obj_get_content_height(obj) * chart->zoom_y) >> 8; in draw_y_ticks()
1404 lv_coord_t y_ofs = obj->coords.y1 + pad_top + border_width - lv_obj_get_scroll_top(obj); in draw_y_ticks()
1410 x_ofs = obj->coords.x1; in draw_y_ticks()
1414 x_ofs = obj->coords.x2; in draw_y_ticks()
1417 lv_coord_t major_len = t->major_len; in draw_y_ticks()
1418 lv_coord_t minor_len = t->minor_len; in draw_y_ticks()
1421 major_len *= -1; in draw_y_ticks()
1422 minor_len *= -1; in draw_y_ticks()
1444 p2.y = p1.y = y_ofs + (int32_t)((int32_t)(h - line_dsc.width) * i) / total_tick_num; in draw_y_ticks()
1450 if(axis == LV_CHART_AXIS_PRIMARY_Y) p1.x--; in draw_y_ticks()
1455 if(i % t->minor_cnt == 0) major = true; in draw_y_ticks()
1457 if(major) p2.x = p1.x - major_len; /*major tick*/ in draw_y_ticks()
1458 else p2.x = p1.x - minor_len; /*minor tick*/ in draw_y_ticks()
1463 …int32_t tick_value = lv_map(total_tick_num - i, 0, total_tick_num, chart->ymin[sec_axis], chart->y… in draw_y_ticks()
1467 if(major && t->label_en) { in draw_y_ticks()
1482 a.y1 = p2.y - size.y / 2; in draw_y_ticks()
1486 a.x1 = p2.x - size.x - label_gap; in draw_y_ticks()
1487 a.x2 = p2.x - label_gap; in draw_y_ticks()
1494 if(a.y2 >= obj->coords.y1 && in draw_y_ticks()
1495 a.y1 <= obj->coords.y2) { in draw_y_ticks()
1506 if(p1.y + line_dsc.width / 2 >= obj->coords.y1 && in draw_y_ticks()
1507 p2.y - line_dsc.width / 2 <= obj->coords.y2) { in draw_y_ticks()
1520 if(t->major_cnt <= 1) return; in draw_x_ticks()
1521 if(!t->label_en && !t->major_len && !t->minor_len) return; in draw_x_ticks()
1522 uint32_t total_tick_num = (t->major_cnt - 1) * (t->minor_cnt); in draw_x_ticks()
1530 lv_coord_t w = ((int32_t)lv_obj_get_content_width(obj) * chart->zoom_x) >> 8; in draw_x_ticks() local
1536 lv_coord_t x_ofs = obj->coords.x1 + pad_left - lv_obj_get_scroll_left(obj); in draw_x_ticks()
1540 label_gap = t->label_en ? lv_obj_get_style_pad_bottom(obj, LV_PART_TICKS) : 0; in draw_x_ticks()
1541 y_ofs = obj->coords.y2 + 1; in draw_x_ticks()
1544 label_gap = t->label_en ? lv_obj_get_style_pad_top(obj, LV_PART_TICKS) : 0; in draw_x_ticks()
1545 y_ofs = obj->coords.y1 - 1; in draw_x_ticks()
1549 if(y_ofs > draw_ctx->clip_area->y2) return; in draw_x_ticks()
1550 …if(y_ofs + label_gap + label_dsc.font->line_height + t->major_len < draw_ctx->clip_area->y1) retur… in draw_x_ticks()
1571 if(chart->type == LV_CHART_TYPE_BAR) { in draw_x_ticks()
1573 … LV_PART_MAIN) * chart->zoom_x) >> 8; /*Gap between the columns on ~adjacent X*/ in draw_x_ticks()
1574 lv_coord_t block_w = (w + block_gap) / (chart->point_cnt); in draw_x_ticks()
1576 x_ofs += (block_w - block_gap) / 2; in draw_x_ticks()
1577 w -= block_w - block_gap; in draw_x_ticks()
1581 …for(i = 0; i <= total_tick_num; i++) { /*one extra loop - it may not exist in the list, empty labe… in draw_x_ticks()
1583 if(i % t->minor_cnt == 0) major = true; in draw_x_ticks()
1586 p2.x = p1.x = x_ofs + (int32_t)((int32_t)(w - line_dsc.width) * i) / total_tick_num; in draw_x_ticks()
1588 if(sec_axis) p2.y = p1.y - (major ? t->major_len : t->minor_len); in draw_x_ticks()
1589 else p2.y = p1.y + (major ? t->major_len : t->minor_len); in draw_x_ticks()
1596 if(chart->type == LV_CHART_TYPE_SCATTER) { in draw_x_ticks()
1597 tick_value = lv_map(i, 0, total_tick_num, chart->xmin[sec_axis], chart->xmax[sec_axis]); in draw_x_ticks()
1600 tick_value = i / t->minor_cnt; in draw_x_ticks()
1604 if(major && t->label_en) { in draw_x_ticks()
1620 a.x1 = (p2.x - size.x / 2); in draw_x_ticks()
1623 a.y2 = p2.y - label_gap; in draw_x_ticks()
1624 a.y1 = a.y2 - size.y; in draw_x_ticks()
1631 if(a.x2 >= obj->coords.x1 && in draw_x_ticks()
1632 a.x1 <= obj->coords.x2) { in draw_x_ticks()
1643 if(p1.x + line_dsc.width / 2 >= obj->coords.x1 && in draw_x_ticks()
1644 p2.x - line_dsc.width / 2 <= obj->coords.x2) { in draw_x_ticks()
1669 lv_coord_t w = ((int32_t)lv_obj_get_content_width(obj) * chart->zoom_x) >> 8; in get_index_from_x() local
1671 x -= pad_left; in get_index_from_x()
1674 if(x > w) return chart->point_cnt - 1; in get_index_from_x()
1675 if(chart->type == LV_CHART_TYPE_LINE) return (x * (chart->point_cnt - 1) + w / 2) / w; in get_index_from_x()
1676 if(chart->type == LV_CHART_TYPE_BAR) return (x * chart->point_cnt) / w; in get_index_from_x()
1684 if(i >= chart->point_cnt) return; in invalidate_point()
1686 lv_coord_t w = ((int32_t)lv_obj_get_content_width(obj) * chart->zoom_x) >> 8; in invalidate_point() local
1690 if(chart->update_mode == LV_CHART_UPDATE_MODE_SHIFT) { in invalidate_point()
1695 if(chart->type == LV_CHART_TYPE_LINE) { in invalidate_point()
1698 lv_coord_t x_ofs = obj->coords.x1 + pleft + bwidth - scroll_left; in invalidate_point()
1703 lv_area_copy(&coords, &obj->coords); in invalidate_point()
1704 coords.y1 -= line_width + point_w; in invalidate_point()
1707 if(i < chart->point_cnt - 1) { in invalidate_point()
1708 coords.x1 = ((w * i) / (chart->point_cnt - 1)) + x_ofs - line_width - point_w; in invalidate_point()
1709 coords.x2 = ((w * (i + 1)) / (chart->point_cnt - 1)) + x_ofs + line_width + point_w; in invalidate_point()
1714 coords.x1 = ((w * (i - 1)) / (chart->point_cnt - 1)) + x_ofs - line_width - point_w; in invalidate_point()
1715 coords.x2 = ((w * i) / (chart->point_cnt - 1)) + x_ofs + line_width + point_w; in invalidate_point()
1719 else if(chart->type == LV_CHART_TYPE_BAR) { in invalidate_point()
1722 … LV_PART_MAIN) * chart->zoom_x) >> 8; /*Gap between the column on ~adjacent X*/ in invalidate_point()
1724 lv_coord_t block_w = (w + block_gap) / chart->point_cnt; in invalidate_point()
1729 x_act += obj->coords.x1 + bwidth + lv_obj_get_style_pad_left(obj, LV_PART_MAIN); in invalidate_point()
1732 col_a.x1 = x_act - scroll_left; in invalidate_point()
1734 col_a.x1 -= block_gap; in invalidate_point()
1748 uint32_t point_cnt_old = chart->point_cnt; in new_points_alloc()
1751 if(ser->start_point != 0) { in new_points_alloc()
1759 (*a)[(i + ser->start_point) % point_cnt_old]; /*Copy old contents to new array*/ in new_points_alloc()
1768 (*a)[(i + ser->start_point) % point_cnt_old]; /*Copy old contents to new array*/ in new_points_alloc()
1782 for(i = point_cnt_old - 1; i < cnt; i++) { in new_points_alloc()
1794 return &chart->tick[0]; in get_tick_gsc()
1796 return &chart->tick[1]; in get_tick_gsc()
1798 return &chart->tick[2]; in get_tick_gsc()
1800 return &chart->tick[3]; in get_tick_gsc()