From 5f2888d93ad50e9ebdb8c29799acdf221fd10a77 Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Mon, 13 Jan 2025 22:07:16 +0100 Subject: [PATCH] refactor(chart): add 'series' keyword in value setters/getters for consistency --- demos/ebike/lv_demo_ebike_stats.c | 12 +++---- .../lv_demo_high_res_app_ev_charging.c | 4 +-- .../lv_demo_high_res_app_smart_meter.c | 8 ++--- .../lv_demo_high_res_app_thermostat.c | 4 +-- demos/widgets/lv_demo_widgets.c | 2 +- docs/details/widgets/chart.rst | 14 ++++---- examples/anim/lv_example_anim_3.c | 6 ++-- examples/widgets/chart/lv_example_chart_1.c | 2 +- examples/widgets/chart/lv_example_chart_2.c | 4 +-- examples/widgets/chart/lv_example_chart_3.c | 2 +- examples/widgets/chart/lv_example_chart_4.c | 2 +- examples/widgets/chart/lv_example_chart_7.c | 8 ++--- examples/widgets/chart/lv_example_chart_8.c | 2 +- src/lv_api_map_v9_1.h | 6 ++++ src/others/xml/parsers/lv_xml_chart_parser.c | 2 +- src/widgets/chart/lv_chart.c | 35 +++++++++++++----- src/widgets/chart/lv_chart.h | 36 ++++++++++++++----- tests/micropy_test/micropy.py | 2 +- tests/src/test_cases/test_bindings.c | 2 +- tests/src/test_cases/widgets/test_chart.c | 2 +- xmls/lv_chart.xml | 4 +-- 21 files changed, 102 insertions(+), 57 deletions(-) diff --git a/demos/ebike/lv_demo_ebike_stats.c b/demos/ebike/lv_demo_ebike_stats.c index 2a25e37e2..849f1d112 100644 --- a/demos/ebike/lv_demo_ebike_stats.c +++ b/demos/ebike/lv_demo_ebike_stats.c @@ -435,16 +435,16 @@ static void chart_mode_observer_cb(lv_observer_t * observer, lv_subject_t * subj switch(lv_subject_get_int(&subject_mode)) { case MODE_AVG_SPEED: - lv_chart_set_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, 30); - lv_chart_set_ext_y_array(chart, ser, avg_speed_values); + lv_chart_set_axis_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, 30); + lv_chart_set_series_ext_y_array(chart, ser, avg_speed_values); break; case MODE_TOP_SPEED: - lv_chart_set_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, 50); - lv_chart_set_ext_y_array(chart, ser, top_speed_values); + lv_chart_set_axis_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, 50); + lv_chart_set_series_ext_y_array(chart, ser, top_speed_values); break; case MODE_DISTANCE: - lv_chart_set_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, 90); - lv_chart_set_ext_y_array(chart, ser, distance_values); + lv_chart_set_axis_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, 90); + lv_chart_set_series_ext_y_array(chart, ser, distance_values); break; default: break; diff --git a/demos/high_res/lv_demo_high_res_app_ev_charging.c b/demos/high_res/lv_demo_high_res_app_ev_charging.c index 70548d95e..7d8d4eb54 100644 --- a/demos/high_res/lv_demo_high_res_app_ev_charging.c +++ b/demos/high_res/lv_demo_high_res_app_ev_charging.c @@ -374,7 +374,7 @@ static void create_widget2(lv_demo_high_res_ctx_t * c, lv_obj_t * widgets) lv_obj_set_style_pad_all(chart, 0, 0); lv_obj_set_grid_cell(chart, LV_GRID_ALIGN_STRETCH, 0, 1, LV_GRID_ALIGN_START, 0, 1); lv_chart_set_type(chart, LV_CHART_TYPE_BAR); - lv_chart_set_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, 96); + lv_chart_set_axis_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, 96); lv_chart_set_div_line_count(chart, 3, 0); lv_obj_set_style_line_opa(chart, LV_OPA_40, 0); lv_obj_set_style_line_color(chart, lv_color_black(), 0); @@ -382,7 +382,7 @@ static void create_widget2(lv_demo_high_res_ctx_t * c, lv_obj_t * widgets) lv_obj_set_style_line_dash_gap(chart, 1, 0); lv_chart_series_t * ser = lv_chart_add_series(chart, lv_color_white(), LV_CHART_AXIS_PRIMARY_Y); static const int32_t chart_values[] = {45, 14, 78, 95, 45, 52, 78, 34, 63, 52, 38, 83, 63, 19, LV_CHART_POINT_NONE}; - lv_chart_set_ext_y_array(chart, ser, (int32_t *)chart_values); + lv_chart_set_series_ext_y_array(chart, ser, (int32_t *)chart_values); lv_chart_set_point_count(chart, sizeof(chart_values) / sizeof(*chart_values)); lv_chart_refresh(chart); diff --git a/demos/high_res/lv_demo_high_res_app_smart_meter.c b/demos/high_res/lv_demo_high_res_app_smart_meter.c index 1be721438..aa54d06ff 100644 --- a/demos/high_res/lv_demo_high_res_app_smart_meter.c +++ b/demos/high_res/lv_demo_high_res_app_smart_meter.c @@ -460,7 +460,7 @@ static void create_widget2(lv_demo_high_res_ctx_t * c, lv_obj_t * widgets) lv_obj_set_grid_cell(chart, LV_GRID_ALIGN_STRETCH, 0, 1, LV_GRID_ALIGN_START, 0, 1); lv_chart_set_type(chart, LV_CHART_TYPE_BAR); - lv_chart_set_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, 101); + lv_chart_set_axis_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, 101); lv_chart_set_div_line_count(chart, 3, 0); lv_obj_set_style_line_opa(chart, LV_OPA_40, 0); lv_obj_set_style_line_color(chart, lv_color_black(), 0); @@ -468,7 +468,7 @@ static void create_widget2(lv_demo_high_res_ctx_t * c, lv_obj_t * widgets) lv_obj_set_style_line_dash_gap(chart, 1, 0); lv_chart_series_t * ser = lv_chart_add_series(chart, lv_color_white(), LV_CHART_AXIS_PRIMARY_Y); static const int32_t chart_values[] = {45, 14, 45, 52, 69, 52, 63}; - lv_chart_set_ext_y_array(chart, ser, (int32_t *)chart_values); + lv_chart_set_series_ext_y_array(chart, ser, (int32_t *)chart_values); lv_chart_set_point_count(chart, sizeof(chart_values) / sizeof(*chart_values)); lv_chart_refresh(chart); @@ -565,7 +565,7 @@ static void widget3_chart_selected_day_observer_cb(lv_observer_t * observer, lv_ lv_obj_add_event_cb(chart, widget3_chart_free_anim_values, LV_EVENT_DELETE, NULL); lv_chart_series_t * ser = lv_chart_get_series_next(chart, NULL); - lv_chart_set_ext_y_array(chart, ser, anim_values->current); + lv_chart_set_series_ext_y_array(chart, ser, anim_values->current); } lv_memcpy(anim_values->start, anim_values->current, sizeof(anim_values->current)); @@ -651,7 +651,7 @@ static void create_widget3(lv_demo_high_res_ctx_t * c, lv_obj_t * widgets) lv_obj_set_style_pad_all(chart, 5, 0); lv_obj_set_grid_cell(chart, LV_GRID_ALIGN_STRETCH, 0, 1, LV_GRID_ALIGN_START, 0, 1); lv_chart_set_type(chart, LV_CHART_TYPE_BAR); - lv_chart_set_range(chart, LV_CHART_AXIS_PRIMARY_Y, -125, 125); + lv_chart_set_axis_range(chart, LV_CHART_AXIS_PRIMARY_Y, -125, 125); lv_chart_set_div_line_count(chart, 3, 0); lv_obj_set_style_line_opa(chart, LV_OPA_40, 0); lv_obj_set_style_line_color(chart, lv_color_black(), 0); diff --git a/demos/high_res/lv_demo_high_res_app_thermostat.c b/demos/high_res/lv_demo_high_res_app_thermostat.c index 6d9aa93b9..9b59778c1 100644 --- a/demos/high_res/lv_demo_high_res_app_thermostat.c +++ b/demos/high_res/lv_demo_high_res_app_thermostat.c @@ -183,7 +183,7 @@ static void create_widget1(lv_demo_high_res_ctx_t * c, lv_obj_t * widgets) lv_obj_set_style_pad_all(chart, 0, 0); lv_obj_set_grid_cell(chart, LV_GRID_ALIGN_STRETCH, 0, 1, LV_GRID_ALIGN_START, 0, 1); lv_chart_set_type(chart, LV_CHART_TYPE_BAR); - lv_chart_set_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, 109); + lv_chart_set_axis_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, 109); lv_chart_set_div_line_count(chart, 3, 0); lv_obj_set_style_line_opa(chart, LV_OPA_40, 0); lv_obj_set_style_line_color(chart, lv_color_black(), 0); @@ -191,7 +191,7 @@ static void create_widget1(lv_demo_high_res_ctx_t * c, lv_obj_t * widgets) lv_obj_set_style_line_dash_gap(chart, 1, 0); lv_chart_series_t * ser = lv_chart_add_series(chart, lv_color_white(), LV_CHART_AXIS_PRIMARY_Y); static const int32_t chart_values[] = {14, 95, 52, 34, 52, 83, 19}; - lv_chart_set_ext_y_array(chart, ser, (int32_t *)chart_values); + lv_chart_set_series_ext_y_array(chart, ser, (int32_t *)chart_values); lv_chart_set_point_count(chart, sizeof(chart_values) / sizeof(*chart_values)); lv_chart_refresh(chart); diff --git a/demos/widgets/lv_demo_widgets.c b/demos/widgets/lv_demo_widgets.c index 5062acc99..b405af795 100644 --- a/demos/widgets/lv_demo_widgets.c +++ b/demos/widgets/lv_demo_widgets.c @@ -1505,7 +1505,7 @@ static void chart_event_cb(lv_event_t * e) } char buf[8]; - lv_snprintf(buf, sizeof(buf), "%"LV_PRId32, lv_chart_get_y_array(obj, (lv_chart_series_t *)ser)[base_dsc->id2]); + lv_snprintf(buf, sizeof(buf), "%"LV_PRId32, lv_chart_get_series_y_array(obj, (lv_chart_series_t *)ser)[base_dsc->id2]); lv_point_t text_size; lv_text_get_size(&text_size, buf, font_normal, 0, 0, LV_COORD_MAX, LV_TEXT_FLAG_NONE); diff --git a/docs/details/widgets/chart.rst b/docs/details/widgets/chart.rst index 849e23348..5eaca86b1 100644 --- a/docs/details/widgets/chart.rst +++ b/docs/details/widgets/chart.rst @@ -186,7 +186,7 @@ When adding a data series to a SCATTER chart, bit-wise OR your selected Y axis If you wish to have the chart use your own Y-value array instead of the one provided, you can do so with - :cpp:expr:`lv_chart_set_ext_y_array(chart, series, value_array)`. + :cpp:expr:`lv_chart_set_series_ext_y_array(chart, series, value_array)`. You are responsible for ensuring the array you provide contains at least ``chart->point_cnt`` elements in it. @@ -204,13 +204,13 @@ allocated. for more information about these functions. A pointer to the Y-value array of a series can be obtained with -:cpp:expr:`lv_chart_get_y_array(chart, series)`. This is true whether you are using +:cpp:expr:`lv_chart_get_series_y_array(chart, series)`. This is true whether you are using the provided Y-value array or provided your own. For SCATTER-type charts, -- :cpp:expr:`lv_chart_set_ext_x_array(chart, series, value_array)` and -- :cpp:expr:`lv_chart_get_x_array(chart, series)` +- :cpp:expr:`lv_chart_set_series_ext_x_array(chart, series, value_array)` and +- :cpp:expr:`lv_chart_get_series_x_array(chart, series)` can be used as well. @@ -221,7 +221,7 @@ You have several options to set the Y-values for a data series: 1. Set the values programmatically in the array like ``ser1->points[3] = 7`` and refresh the chart with :cpp:expr:`lv_chart_refresh(chart)`. -2. Use :cpp:expr:`lv_chart_set_value_by_id(chart, series, id, value)` where ``id`` is +2. Use :cpp:expr:`lv_chart_set_series_value_by_id(chart, series, id, value)` where ``id`` is the zero-based index of the point you wish to update. 3. Use :cpp:expr:`lv_chart_set_next_value(chart, series, value)`. (See `Update modes`_ below.) @@ -232,7 +232,7 @@ that point, column, or scatter-point. For SCATTER-type charts, -- :cpp:expr:`lv_chart_set_value_by_id2(chart, series, id, x_value, y_value)` and +- :cpp:expr:`lv_chart_set_series_value_by_id2(chart, series, id, x_value, y_value)` and - :cpp:expr:`lv_chart_set_next_value2(chart, series, x_value, y_value)` can be used as well. @@ -274,7 +274,7 @@ Vertical range -------------- You can specify the minimum and maximum values in Y-direction with -:cpp:expr:`lv_chart_set_range(chart, axis, min, max)`. ``axis`` can be +:cpp:expr:`lv_chart_set_axis_range(chart, axis, min, max)`. ``axis`` can be :cpp:enumerator:`LV_CHART_AXIS_PRIMARY_Y` (left Y axis) or :cpp:enumerator:`LV_CHART_AXIS_SECONDARY_Y` (right Y axis). diff --git a/examples/anim/lv_example_anim_3.c b/examples/anim/lv_example_anim_3.c index e13ff6122..55766ed21 100644 --- a/examples/anim/lv_example_anim_3.c +++ b/examples/anim/lv_example_anim_3.c @@ -78,7 +78,7 @@ static void refer_chart_cubic_bezier(void) for(uint16_t i = 0; i <= CHART_POINTS_NUM; i ++) { uint32_t t = i * (1024 / CHART_POINTS_NUM); int32_t step = lv_bezier3(t, 0, ginfo.p1, ginfo.p2, 1024); - lv_chart_set_value_by_id2(ginfo.chart, ginfo.ser1, i, t, step); + lv_chart_set_series_value_by_id2(ginfo.chart, ginfo.ser1, i, t, step); } lv_chart_refresh(ginfo.chart); } @@ -156,8 +156,8 @@ static void page_obj_init(lv_obj_t * par) lv_obj_set_style_size(ginfo.chart, 0, 0, LV_PART_INDICATOR); lv_chart_set_type(ginfo.chart, LV_CHART_TYPE_SCATTER); ginfo.ser1 = lv_chart_add_series(ginfo.chart, lv_palette_main(LV_PALETTE_RED), LV_CHART_AXIS_PRIMARY_Y); - lv_chart_set_range(ginfo.chart, LV_CHART_AXIS_PRIMARY_Y, 0, 1024); - lv_chart_set_range(ginfo.chart, LV_CHART_AXIS_PRIMARY_X, 0, 1024); + lv_chart_set_axis_range(ginfo.chart, LV_CHART_AXIS_PRIMARY_Y, 0, 1024); + lv_chart_set_axis_range(ginfo.chart, LV_CHART_AXIS_PRIMARY_X, 0, 1024); lv_chart_set_point_count(ginfo.chart, CHART_POINTS_NUM); lv_obj_set_grid_cell(ginfo.chart, LV_GRID_ALIGN_STRETCH, 0, 3, LV_GRID_ALIGN_STRETCH, 3, 1); } diff --git a/examples/widgets/chart/lv_example_chart_1.c b/examples/widgets/chart/lv_example_chart_1.c index 145b7aea5..568eb4268 100644 --- a/examples/widgets/chart/lv_example_chart_1.c +++ b/examples/widgets/chart/lv_example_chart_1.c @@ -16,7 +16,7 @@ void lv_example_chart_1(void) /*Add two data series*/ lv_chart_series_t * ser1 = lv_chart_add_series(chart, lv_palette_main(LV_PALETTE_GREEN), LV_CHART_AXIS_PRIMARY_Y); lv_chart_series_t * ser2 = lv_chart_add_series(chart, lv_palette_main(LV_PALETTE_RED), LV_CHART_AXIS_SECONDARY_Y); - int32_t * ser2_y_points = lv_chart_get_y_array(chart, ser2); + int32_t * ser2_y_points = lv_chart_get_series_y_array(chart, ser2); uint32_t i; for(i = 0; i < 10; i++) { diff --git a/examples/widgets/chart/lv_example_chart_2.c b/examples/widgets/chart/lv_example_chart_2.c index d638f46ed..f1004775c 100644 --- a/examples/widgets/chart/lv_example_chart_2.c +++ b/examples/widgets/chart/lv_example_chart_2.c @@ -24,8 +24,8 @@ void lv_example_chart_2(void) lv_obj_set_width(chart, lv_pct(100)); lv_obj_set_flex_grow(chart, 1); lv_chart_set_type(chart, LV_CHART_TYPE_BAR); - lv_chart_set_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, 100); - lv_chart_set_range(chart, LV_CHART_AXIS_SECONDARY_Y, 0, 400); + lv_chart_set_axis_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, 100); + lv_chart_set_axis_range(chart, LV_CHART_AXIS_SECONDARY_Y, 0, 400); lv_chart_set_point_count(chart, 12); lv_obj_set_style_radius(chart, 0, 0); diff --git a/examples/widgets/chart/lv_example_chart_3.c b/examples/widgets/chart/lv_example_chart_3.c index 478bf6e1d..d7a938af0 100644 --- a/examples/widgets/chart/lv_example_chart_3.c +++ b/examples/widgets/chart/lv_example_chart_3.c @@ -24,7 +24,7 @@ static void event_cb(lv_event_t * e) lv_point_t p; lv_chart_get_point_pos_by_id(chart, ser, id, &p); - int32_t * y_array = lv_chart_get_y_array(chart, ser); + int32_t * y_array = lv_chart_get_series_y_array(chart, ser); int32_t value = y_array[id]; /*Draw a rectangle above the clicked point*/ diff --git a/examples/widgets/chart/lv_example_chart_4.c b/examples/widgets/chart/lv_example_chart_4.c index b6591b14f..fccd8f779 100644 --- a/examples/widgets/chart/lv_example_chart_4.c +++ b/examples/widgets/chart/lv_example_chart_4.c @@ -14,7 +14,7 @@ static void draw_event_cb(lv_event_t * e) lv_draw_fill_dsc_t * fill_dsc = lv_draw_task_get_fill_dsc(draw_task); if(fill_dsc) { lv_obj_t * chart = lv_event_get_target(e); - int32_t * y_array = lv_chart_get_y_array(chart, lv_chart_get_series_next(chart, NULL)); + int32_t * y_array = lv_chart_get_series_y_array(chart, lv_chart_get_series_next(chart, NULL)); int32_t v = y_array[base_dsc->id2]; uint32_t ratio = v * 255 / 100; diff --git a/examples/widgets/chart/lv_example_chart_7.c b/examples/widgets/chart/lv_example_chart_7.c index da5a3dad1..8addf226e 100644 --- a/examples/widgets/chart/lv_example_chart_7.c +++ b/examples/widgets/chart/lv_example_chart_7.c @@ -15,8 +15,8 @@ static void draw_event_cb(lv_event_t * e) rect_draw_dsc->bg_opa = (LV_OPA_COVER * base_dsc->id2) / (cnt - 1); /*Make smaller values blue, higher values red*/ - int32_t * x_array = lv_chart_get_x_array(obj, ser); - int32_t * y_array = lv_chart_get_y_array(obj, ser); + int32_t * x_array = lv_chart_get_series_x_array(obj, ser); + int32_t * y_array = lv_chart_get_series_y_array(obj, ser); /*dsc->id is the tells drawing order, but we need the ID of the point being drawn.*/ uint32_t start_point = lv_chart_get_x_start_point(obj, ser); uint32_t p_act = (start_point + base_dsc->id2) % cnt; /*Consider start point to get the index of the array*/ @@ -49,8 +49,8 @@ void lv_example_chart_7(void) lv_chart_set_type(chart, LV_CHART_TYPE_SCATTER); - lv_chart_set_range(chart, LV_CHART_AXIS_PRIMARY_X, 0, 200); - lv_chart_set_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, 1000); + lv_chart_set_axis_range(chart, LV_CHART_AXIS_PRIMARY_X, 0, 200); + lv_chart_set_axis_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, 1000); lv_chart_set_point_count(chart, 50); diff --git a/examples/widgets/chart/lv_example_chart_8.c b/examples/widgets/chart/lv_example_chart_8.c index 21da47697..42e926975 100644 --- a/examples/widgets/chart/lv_example_chart_8.c +++ b/examples/widgets/chart/lv_example_chart_8.c @@ -10,7 +10,7 @@ static void add_data(lv_timer_t * t) uint16_t p = lv_chart_get_point_count(chart); uint16_t s = lv_chart_get_x_start_point(chart, ser); - int32_t * a = lv_chart_get_y_array(chart, ser); + int32_t * a = lv_chart_get_series_y_array(chart, ser); a[(s + 1) % p] = LV_CHART_POINT_NONE; a[(s + 2) % p] = LV_CHART_POINT_NONE; diff --git a/src/lv_api_map_v9_1.h b/src/lv_api_map_v9_1.h index 6b53b172b..10c1f4a59 100644 --- a/src/lv_api_map_v9_1.h +++ b/src/lv_api_map_v9_1.h @@ -80,6 +80,12 @@ extern "C" { #define _lv_inv_area lv_inv_area #define lv_chart_set_all_value lv_chart_set_all_values #define lv_calendar_set_showed_date lv_calendar_set_month_shown +#define lv_chart_set_range lv_chart_set_axis_range +#define lv_chart_set_value_by_id lv_chart_set_series_value_by_id +#define lv_chart_get_x_array lv_chart_get_series_x_array +#define lv_chart_get_y_array lv_chart_get_series_y_array +#define lv_chart_set_ext_x_array lv_chart_set_series_ext_x_array +#define lv_chart_set_ext_y_array lv_chart_set_series_ext_y_array #if defined(LV_FS_DEFAULT_DRIVE_LETTER) #warning LV_FS_DEFAULT_DRIVE_LETTER is deprecated. Rename to LV_FS_DEFAULT_DRIVER_LETTER diff --git a/src/others/xml/parsers/lv_xml_chart_parser.c b/src/others/xml/parsers/lv_xml_chart_parser.c index 3d91659fb..3b0938d69 100644 --- a/src/others/xml/parsers/lv_xml_chart_parser.c +++ b/src/others/xml/parsers/lv_xml_chart_parser.c @@ -155,7 +155,7 @@ void lv_xml_chart_axis_apply(lv_xml_parser_state_t * state, const char ** attrs) if(lv_streq("range", name)) { int32_t min_val = lv_xml_atoi_split(&value, ' '); int32_t max_val = lv_xml_atoi_split(&value, ' '); - lv_chart_set_range(chart, axis, min_val, max_val); + lv_chart_set_axis_range(chart, axis, min_val, max_val); } } } diff --git a/src/widgets/chart/lv_chart.c b/src/widgets/chart/lv_chart.c index b68385a3a..75399c101 100644 --- a/src/widgets/chart/lv_chart.c +++ b/src/widgets/chart/lv_chart.c @@ -129,7 +129,7 @@ void lv_chart_set_point_count(lv_obj_t * obj, uint32_t cnt) lv_chart_refresh(obj); } -void lv_chart_set_range(lv_obj_t * obj, lv_chart_axis_t axis, int32_t min, int32_t max) +void lv_chart_set_axis_range(lv_obj_t * obj, lv_chart_axis_t axis, int32_t min, int32_t max) { LV_ASSERT_OBJ(obj, MY_CLASS); @@ -493,6 +493,7 @@ void lv_chart_set_all_values(lv_obj_t * obj, lv_chart_series_t * ser, int32_t va lv_chart_refresh(obj); } + void lv_chart_set_next_value(lv_obj_t * obj, lv_chart_series_t * ser, int32_t value) { LV_ASSERT_OBJ(obj, MY_CLASS); @@ -523,7 +524,25 @@ void lv_chart_set_next_value2(lv_obj_t * obj, lv_chart_series_t * ser, int32_t x invalidate_point(obj, ser->start_point); } -void lv_chart_set_value_by_id(lv_obj_t * obj, lv_chart_series_t * ser, uint32_t id, int32_t value) +void lv_chart_set_series_values(lv_obj_t * obj, lv_chart_series_t * ser, const int32_t values[], size_t values_cnt) +{ + size_t i; + for(i = 0; i < values_cnt; i++) { + lv_chart_set_next_value(obj, ser, values[i]); + } +} + +void lv_chart_set_series_values2(lv_obj_t * obj, lv_chart_series_t * ser, const int32_t x_values[], + const int32_t y_values[], size_t values_cnt) +{ + size_t i; + for(i = 0; i < values_cnt; i++) { + lv_chart_set_next_value2(obj, ser, x_values[i], y_values[i]); + } +} + + +void lv_chart_set_series_value_by_id(lv_obj_t * obj, lv_chart_series_t * ser, uint32_t id, int32_t value) { LV_ASSERT_OBJ(obj, MY_CLASS); LV_ASSERT_NULL(ser); @@ -534,8 +553,8 @@ void lv_chart_set_value_by_id(lv_obj_t * obj, lv_chart_series_t * ser, uint32_t invalidate_point(obj, id); } -void lv_chart_set_value_by_id2(lv_obj_t * obj, lv_chart_series_t * ser, uint32_t id, int32_t x_value, - int32_t y_value) +void lv_chart_set_series_value_by_id2(lv_obj_t * obj, lv_chart_series_t * ser, uint32_t id, int32_t x_value, + int32_t y_value) { LV_ASSERT_OBJ(obj, MY_CLASS); LV_ASSERT_NULL(ser); @@ -552,7 +571,7 @@ void lv_chart_set_value_by_id2(lv_obj_t * obj, lv_chart_series_t * ser, uint32_t invalidate_point(obj, id); } -void lv_chart_set_ext_y_array(lv_obj_t * obj, lv_chart_series_t * ser, int32_t array[]) +void lv_chart_set_series_ext_y_array(lv_obj_t * obj, lv_chart_series_t * ser, int32_t array[]) { LV_ASSERT_OBJ(obj, MY_CLASS); LV_ASSERT_NULL(ser); @@ -563,7 +582,7 @@ void lv_chart_set_ext_y_array(lv_obj_t * obj, lv_chart_series_t * ser, int32_t a lv_obj_invalidate(obj); } -void lv_chart_set_ext_x_array(lv_obj_t * obj, lv_chart_series_t * ser, int32_t array[]) +void lv_chart_set_series_ext_x_array(lv_obj_t * obj, lv_chart_series_t * ser, int32_t array[]) { LV_ASSERT_OBJ(obj, MY_CLASS); LV_ASSERT_NULL(ser); @@ -574,7 +593,7 @@ void lv_chart_set_ext_x_array(lv_obj_t * obj, lv_chart_series_t * ser, int32_t a lv_obj_invalidate(obj); } -int32_t * lv_chart_get_y_array(const lv_obj_t * obj, lv_chart_series_t * ser) +int32_t * lv_chart_get_series_y_array(const lv_obj_t * obj, lv_chart_series_t * ser) { LV_UNUSED(obj); LV_ASSERT_OBJ(obj, MY_CLASS); @@ -582,7 +601,7 @@ int32_t * lv_chart_get_y_array(const lv_obj_t * obj, lv_chart_series_t * ser) return ser->y_points; } -int32_t * lv_chart_get_x_array(const lv_obj_t * obj, lv_chart_series_t * ser) +int32_t * lv_chart_get_series_x_array(const lv_obj_t * obj, lv_chart_series_t * ser) { LV_UNUSED(obj); LV_ASSERT_OBJ(obj, MY_CLASS); diff --git a/src/widgets/chart/lv_chart.h b/src/widgets/chart/lv_chart.h index c07234c4d..1a154850a 100644 --- a/src/widgets/chart/lv_chart.h +++ b/src/widgets/chart/lv_chart.h @@ -92,7 +92,7 @@ void lv_chart_set_point_count(lv_obj_t * obj, uint32_t cnt); * @param min minimum value of the y axis * @param max maximum value of the y axis */ -void lv_chart_set_range(lv_obj_t * obj, lv_chart_axis_t axis, int32_t min, int32_t max); +void lv_chart_set_axis_range(lv_obj_t * obj, lv_chart_axis_t axis, int32_t min, int32_t max); /** * Set update mode of the chart object. Affects @@ -275,6 +275,26 @@ void lv_chart_set_next_value(lv_obj_t * obj, lv_chart_series_t * ser, int32_t va */ void lv_chart_set_next_value2(lv_obj_t * obj, lv_chart_series_t * ser, int32_t x_value, int32_t y_value); +/** + * Same as `lv_chart_set_next_value` but set the values from an array + * @param obj pointer to chart object + * @param ser pointer to a data series on 'chart' + * @param values the new values to set + * @param values_cnt number of items in `values` + */ +void lv_chart_set_series_values(lv_obj_t * obj, lv_chart_series_t * ser, const int32_t values[], size_t values_cnt); + +/** + * Same as `lv_chart_set_next_value2` but set the values from an array + * @param obj pointer to chart object + * @param ser pointer to a data series on 'chart' + * @param x_values the new values to set on the X axis + * @param y_values the new values to set o nthe Y axis + * @param values_cnt number of items in `x_values` and `y_values` + */ +void lv_chart_set_series_values2(lv_obj_t * obj, lv_chart_series_t * ser, const int32_t x_values[], + const int32_t y_values[], size_t values_cnt); + /** * Set an individual point's y value of a chart's series directly based on its index * @param obj pointer to a chart object @@ -282,7 +302,7 @@ void lv_chart_set_next_value2(lv_obj_t * obj, lv_chart_series_t * ser, int32_t x * @param id the index of the x point in the array * @param value value to assign to array point */ -void lv_chart_set_value_by_id(lv_obj_t * obj, lv_chart_series_t * ser, uint32_t id, int32_t value); +void lv_chart_set_series_value_by_id(lv_obj_t * obj, lv_chart_series_t * ser, uint32_t id, int32_t value); /** * Set an individual point's x and y value of a chart's series directly based on its index @@ -293,8 +313,8 @@ void lv_chart_set_value_by_id(lv_obj_t * obj, lv_chart_series_t * ser, uint32_t * @param x_value the new X value of the next data * @param y_value the new Y value of the next data */ -void lv_chart_set_value_by_id2(lv_obj_t * obj, lv_chart_series_t * ser, uint32_t id, int32_t x_value, - int32_t y_value); +void lv_chart_set_series_value_by_id2(lv_obj_t * obj, lv_chart_series_t * ser, uint32_t id, int32_t x_value, + int32_t y_value); /** * Set an external array for the y data points to use for the chart @@ -303,7 +323,7 @@ void lv_chart_set_value_by_id2(lv_obj_t * obj, lv_chart_series_t * ser, uint32_t * @param ser pointer to a data series on 'chart' * @param array external array of points for chart */ -void lv_chart_set_ext_y_array(lv_obj_t * obj, lv_chart_series_t * ser, int32_t array[]); +void lv_chart_set_series_ext_y_array(lv_obj_t * obj, lv_chart_series_t * ser, int32_t array[]); /** * Set an external array for the x data points to use for the chart @@ -312,7 +332,7 @@ void lv_chart_set_ext_y_array(lv_obj_t * obj, lv_chart_series_t * ser, int32_t a * @param ser pointer to a data series on 'chart' * @param array external array of points for chart */ -void lv_chart_set_ext_x_array(lv_obj_t * obj, lv_chart_series_t * ser, int32_t array[]); +void lv_chart_set_series_ext_x_array(lv_obj_t * obj, lv_chart_series_t * ser, int32_t array[]); /** * Get the array of y values of a series @@ -320,7 +340,7 @@ void lv_chart_set_ext_x_array(lv_obj_t * obj, lv_chart_series_t * ser, int32_t a * @param ser pointer to a data series on 'chart' * @return the array of values with 'point_count' elements */ -int32_t * lv_chart_get_y_array(const lv_obj_t * obj, lv_chart_series_t * ser); +int32_t * lv_chart_get_series_y_array(const lv_obj_t * obj, lv_chart_series_t * ser); /** * Get the array of x values of a series @@ -328,7 +348,7 @@ int32_t * lv_chart_get_y_array(const lv_obj_t * obj, lv_chart_series_t * ser); * @param ser pointer to a data series on 'chart' * @return the array of values with 'point_count' elements */ -int32_t * lv_chart_get_x_array(const lv_obj_t * obj, lv_chart_series_t * ser); +int32_t * lv_chart_get_series_x_array(const lv_obj_t * obj, lv_chart_series_t * ser); /** * Get the index of the currently pressed point. It's the same for every series. diff --git a/tests/micropy_test/micropy.py b/tests/micropy_test/micropy.py index f75420b37..7b8730715 100644 --- a/tests/micropy_test/micropy.py +++ b/tests/micropy_test/micropy.py @@ -178,7 +178,7 @@ def create_ui(): chart_y_array = [10, 25, 50, 40, 30, 35, 60, 65, 70, 75] - chart.set_ext_y_array(series, chart_y_array) + chart.set_series_ext_y_array(series, chart_y_array) # Add custom observer callback chart_type_subject.add_observer_obj( diff --git a/tests/src/test_cases/test_bindings.c b/tests/src/test_cases/test_bindings.c index 47eaa08f5..4a46fe753 100644 --- a/tests/src/test_cases/test_bindings.c +++ b/tests/src/test_cases/test_bindings.c @@ -77,7 +77,7 @@ static void create_ui(void) lv_chart_series_t * series = lv_chart_add_series(chart, c3, LV_CHART_AXIS_PRIMARY_X); static int32_t chart_y_array[10] = {10, 25, 50, 40, 30, 35, 60, 65, 70, 75}; - lv_chart_set_ext_y_array(chart, series, chart_y_array); + lv_chart_set_series_ext_y_array(chart, series, chart_y_array); /*Add custom observer callback*/ lv_subject_add_observer_obj(&chart_type_subject, chart_type_observer_cb, chart, NULL); diff --git a/tests/src/test_cases/widgets/test_chart.c b/tests/src/test_cases/widgets/test_chart.c index d965c3965..22adb5191 100644 --- a/tests/src/test_cases/widgets/test_chart.c +++ b/tests/src/test_cases/widgets/test_chart.c @@ -174,7 +174,7 @@ void test_draw_task_hooking(void) lv_chart_series_t * chart_set1 = lv_chart_add_series(chart, lv_palette_main(LV_PALETTE_YELLOW), 0); lv_chart_series_t * chart_set2 = lv_chart_add_series(chart, lv_palette_main(LV_PALETTE_GREEN), 0); lv_chart_series_t * chart_set3 = lv_chart_add_series(chart, lv_palette_main(LV_PALETTE_RED), 0); - lv_chart_set_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, 700); + lv_chart_set_axis_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, 700); int32_t points[21] = {0, 31, 59, 81, 95, 100, 95, 81, 59, 31, 0, -31, -59, -81, -95, -100, -95, -81, -59, -31, 0}; diff --git a/xmls/lv_chart.xml b/xmls/lv_chart.xml index 9b275c5e7..d307784ff 100644 --- a/xmls/lv_chart.xml +++ b/xmls/lv_chart.xml @@ -39,13 +39,13 @@ - + - +