mirror of
https://github.com/lvgl/lvgl.git
synced 2026-05-27 20:57:01 +08:00
feat(chart): add lv_chart_remove_series and lv_chart_hide_series
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
## v7.9.0
|
## v7.9.0
|
||||||
|
|
||||||
### New features
|
### New features
|
||||||
|
- feat(chart) add lv_chart_remove_series and lv_chart_hide_series
|
||||||
|
|
||||||
### Bugfixes
|
### Bugfixes
|
||||||
|
|
||||||
|
|||||||
@@ -195,6 +195,7 @@ lv_chart_series_t * lv_chart_add_series(lv_obj_t * chart, lv_color_t color)
|
|||||||
|
|
||||||
ser->start_point = 0;
|
ser->start_point = 0;
|
||||||
ser->ext_buf_assigned = false;
|
ser->ext_buf_assigned = false;
|
||||||
|
ser->hidden = 0;
|
||||||
ser->y_axis = LV_CHART_AXIS_PRIMARY_Y;
|
ser->y_axis = LV_CHART_AXIS_PRIMARY_Y;
|
||||||
|
|
||||||
uint16_t i;
|
uint16_t i;
|
||||||
@@ -207,6 +208,33 @@ lv_chart_series_t * lv_chart_add_series(lv_obj_t * chart, lv_color_t color)
|
|||||||
return ser;
|
return ser;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deallocate and remove a data series from a chart
|
||||||
|
* @param chart pointer to a chart object
|
||||||
|
* @param series pointer to a data series on 'chart'
|
||||||
|
*/
|
||||||
|
void lv_chart_remove_series(lv_obj_t * chart, lv_chart_series_t * series)
|
||||||
|
{
|
||||||
|
LV_ASSERT_OBJ(chart, LV_OBJX_NAME);
|
||||||
|
LV_ASSERT_NULL(series);
|
||||||
|
|
||||||
|
if(chart == NULL || series == NULL) return;
|
||||||
|
lv_chart_ext_t * ext = lv_obj_get_ext_attr(chart);
|
||||||
|
if(!series->ext_buf_assigned && series->points) lv_mem_free(series->points);
|
||||||
|
|
||||||
|
_lv_ll_remove(&ext->series_ll, series);
|
||||||
|
lv_mem_free(series);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a cursor with a given color
|
||||||
|
* @param chart pointer to chart object
|
||||||
|
* @param color color of the cursor
|
||||||
|
* @param dir direction of the cursor. `LV_CHART_CURSOR_RIGHT/LEFT/TOP/DOWN`. OR-ed values are possible
|
||||||
|
* @return pointer to the created cursor
|
||||||
|
*/
|
||||||
lv_chart_cursor_t * lv_chart_add_cursor(lv_obj_t * chart, lv_color_t color, lv_cursor_direction_t axes)
|
lv_chart_cursor_t * lv_chart_add_cursor(lv_obj_t * chart, lv_color_t color, lv_cursor_direction_t axes)
|
||||||
{
|
{
|
||||||
LV_ASSERT_OBJ(chart, LV_OBJX_NAME);
|
LV_ASSERT_OBJ(chart, LV_OBJX_NAME);
|
||||||
@@ -246,6 +274,22 @@ void lv_chart_clear_series(lv_obj_t * chart, lv_chart_series_t * series)
|
|||||||
series->start_point = 0;
|
series->start_point = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hide/Unhide a single series of a chart.
|
||||||
|
* @param chart pointer to a chart object.
|
||||||
|
* @param series pointer to a series object
|
||||||
|
* @param hide true: hide the series
|
||||||
|
*/
|
||||||
|
void lv_chart_hide_series(lv_obj_t * chart, lv_chart_series_t * series, bool hide)
|
||||||
|
{
|
||||||
|
LV_ASSERT_OBJ(chart, LV_OBJX_NAME);
|
||||||
|
LV_ASSERT_NULL(series);
|
||||||
|
|
||||||
|
series->hidden = hide ? 1 : 0;
|
||||||
|
lv_chart_refresh(chart);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*=====================
|
/*=====================
|
||||||
* Setter functions
|
* Setter functions
|
||||||
*====================*/
|
*====================*/
|
||||||
@@ -666,6 +710,7 @@ void lv_chart_set_cursor_point(lv_obj_t * chart, lv_chart_cursor_t * cursor, lv_
|
|||||||
lv_chart_refresh(chart);
|
lv_chart_refresh(chart);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*=====================
|
/*=====================
|
||||||
* Getter functions
|
* Getter functions
|
||||||
*====================*/
|
*====================*/
|
||||||
@@ -1135,6 +1180,7 @@ static void draw_series_line(lv_obj_t * chart, const lv_area_t * series_area, co
|
|||||||
|
|
||||||
/*Go through all data lines*/
|
/*Go through all data lines*/
|
||||||
_LV_LL_READ_BACK(ext->series_ll, ser) {
|
_LV_LL_READ_BACK(ext->series_ll, ser) {
|
||||||
|
if (ser->hidden) continue;
|
||||||
line_dsc.color = ser->color;
|
line_dsc.color = ser->color;
|
||||||
point_dsc.bg_color = ser->color;
|
point_dsc.bg_color = ser->color;
|
||||||
area_dsc.bg_color = ser->color;
|
area_dsc.bg_color = ser->color;
|
||||||
@@ -1271,6 +1317,7 @@ static void draw_series_column(lv_obj_t * chart, const lv_area_t * series_area,
|
|||||||
|
|
||||||
/*Draw the current point of all data line*/
|
/*Draw the current point of all data line*/
|
||||||
_LV_LL_READ_BACK(ext->series_ll, ser) {
|
_LV_LL_READ_BACK(ext->series_ll, ser) {
|
||||||
|
if (ser->hidden) continue;
|
||||||
lv_coord_t start_point = ext->update_mode == LV_CHART_UPDATE_MODE_SHIFT ? ser->start_point : 0;
|
lv_coord_t start_point = ext->update_mode == LV_CHART_UPDATE_MODE_SHIFT ? ser->start_point : 0;
|
||||||
|
|
||||||
col_a.x1 = x_act;
|
col_a.x1 = x_act;
|
||||||
|
|||||||
@@ -74,6 +74,7 @@ typedef struct {
|
|||||||
lv_color_t color;
|
lv_color_t color;
|
||||||
uint16_t start_point;
|
uint16_t start_point;
|
||||||
uint8_t ext_buf_assigned : 1;
|
uint8_t ext_buf_assigned : 1;
|
||||||
|
uint8_t hidden : 1;
|
||||||
lv_chart_axis_t y_axis : 1;
|
lv_chart_axis_t y_axis : 1;
|
||||||
} lv_chart_series_t;
|
} lv_chart_series_t;
|
||||||
|
|
||||||
@@ -153,6 +154,13 @@ lv_obj_t * lv_chart_create(lv_obj_t * par, const lv_obj_t * copy);
|
|||||||
*/
|
*/
|
||||||
lv_chart_series_t * lv_chart_add_series(lv_obj_t * chart, lv_color_t color);
|
lv_chart_series_t * lv_chart_add_series(lv_obj_t * chart, lv_color_t color);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deallocate and remove a data series from a chart
|
||||||
|
* @param chart pointer to a chart object
|
||||||
|
* @param series pointer to a data series on 'chart'
|
||||||
|
*/
|
||||||
|
void lv_chart_remove_series(lv_obj_t * chart, lv_chart_series_t * series);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a cursor with a given color
|
* Add a cursor with a given color
|
||||||
* @param chart pointer to chart object
|
* @param chart pointer to chart object
|
||||||
@@ -169,6 +177,15 @@ lv_chart_cursor_t * lv_chart_add_cursor(lv_obj_t * chart, lv_color_t color, lv_c
|
|||||||
*/
|
*/
|
||||||
void lv_chart_clear_series(lv_obj_t * chart, lv_chart_series_t * series);
|
void lv_chart_clear_series(lv_obj_t * chart, lv_chart_series_t * series);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hide/Unhide a single series of a chart.
|
||||||
|
* @param chart pointer to a chart object.
|
||||||
|
* @param series pointer to a series object
|
||||||
|
* @param hide true: hide the series
|
||||||
|
*/
|
||||||
|
void lv_chart_hide_series(lv_obj_t * chart, lv_chart_series_t * series, bool hide);
|
||||||
|
|
||||||
|
|
||||||
/*=====================
|
/*=====================
|
||||||
* Setter functions
|
* Setter functions
|
||||||
*====================*/
|
*====================*/
|
||||||
|
|||||||
Reference in New Issue
Block a user