update asserts
This commit is contained in:
44
examples/widgets/chart/lv_example_chart_1.c
Normal file
44
examples/widgets/chart/lv_example_chart_1.c
Normal file
@@ -0,0 +1,44 @@
|
||||
#include "../../../lvgl.h"
|
||||
#if LV_USE_CHART
|
||||
|
||||
void lv_example_chart_1(void)
|
||||
{
|
||||
/*Create a chart*/
|
||||
lv_obj_t * chart;
|
||||
chart = lv_chart_create(lv_scr_act(), NULL);
|
||||
lv_obj_set_size(chart, 200, 150);
|
||||
lv_obj_align(chart, NULL, LV_ALIGN_CENTER, 0, 0);
|
||||
lv_chart_set_type(chart, LV_CHART_TYPE_LINE); /*Show lines and points too*/
|
||||
|
||||
/*Add two data series*/
|
||||
lv_chart_series_t * ser1 = lv_chart_add_series(chart, LV_COLOR_RED, LV_CHART_AXIS_PRIMARY_Y);
|
||||
lv_chart_series_t * ser2 = lv_chart_add_series(chart, LV_COLOR_GREEN, LV_CHART_AXIS_SECONDARY_Y);
|
||||
|
||||
/*Set the next points on 'ser1'*/
|
||||
lv_chart_set_next_value(chart, ser1, 10);
|
||||
lv_chart_set_next_value(chart, ser1, 10);
|
||||
lv_chart_set_next_value(chart, ser1, 10);
|
||||
lv_chart_set_next_value(chart, ser1, 10);
|
||||
lv_chart_set_next_value(chart, ser1, 10);
|
||||
lv_chart_set_next_value(chart, ser1, 10);
|
||||
lv_chart_set_next_value(chart, ser1, 10);
|
||||
lv_chart_set_next_value(chart, ser1, 30);
|
||||
lv_chart_set_next_value(chart, ser1, 70);
|
||||
lv_chart_set_next_value(chart, ser1, 90);
|
||||
|
||||
/*Directly set points on 'ser2'*/
|
||||
ser2->points[0] = 90;
|
||||
ser2->points[1] = 70;
|
||||
ser2->points[2] = 65;
|
||||
ser2->points[3] = 65;
|
||||
ser2->points[4] = 65;
|
||||
ser2->points[5] = 65;
|
||||
ser2->points[6] = 65;
|
||||
ser2->points[7] = 65;
|
||||
ser2->points[8] = 65;
|
||||
ser2->points[9] = 65;
|
||||
|
||||
lv_chart_refresh(chart); /*Required after direct set*/
|
||||
}
|
||||
|
||||
#endif
|
||||
19
examples/widgets/chart/lv_example_chart_1.py
Normal file
19
examples/widgets/chart/lv_example_chart_1.py
Normal file
@@ -0,0 +1,19 @@
|
||||
# Create a chart
|
||||
chart = lv.chart(lv.scr_act())
|
||||
chart.set_size(200, 150)
|
||||
chart.align(None, lv.ALIGN.CENTER, 0, 0)
|
||||
chart.set_type(lv.chart.TYPE.POINT | lv.chart.TYPE.LINE) # Show lines and points too
|
||||
chart.set_series_opa(lv.OPA._70) # Opacity of the data series
|
||||
chart.set_series_width(4) # Line width and point radious
|
||||
|
||||
chart.set_range(0, 100)
|
||||
|
||||
# Add two data series
|
||||
ser1 = chart.add_series(lv.color_make(0xFF,0,0))
|
||||
ser2 = chart.add_series(lv.color_make(0,0x80,0))
|
||||
|
||||
# Set points on 'dl1'
|
||||
chart.set_points(ser1, [10, 10, 10, 10, 10, 10, 10, 30, 70, 90])
|
||||
|
||||
# Set points on 'dl2'
|
||||
chart.set_points(ser2, [90, 70, 65, 65, 65, 65, 65, 65, 65, 65])
|
||||
82
examples/widgets/chart/lv_example_chart_2.c
Normal file
82
examples/widgets/chart/lv_example_chart_2.c
Normal file
@@ -0,0 +1,82 @@
|
||||
#include "../../../lvgl.h"
|
||||
#if LV_USE_CHART
|
||||
|
||||
static lv_obj_t * chart1;
|
||||
static lv_chart_series_t * ser1;
|
||||
static lv_chart_series_t * ser2;
|
||||
|
||||
static void event_cb(lv_obj_t * obj, lv_event_t e)
|
||||
{
|
||||
/*Add the faded area before the lines are drawn */
|
||||
if(e == LV_EVENT_DRAW_PART_BEGIN) {
|
||||
lv_obj_draw_hook_dsc_t * hook_dsc = lv_event_get_param();
|
||||
if(hook_dsc->part != LV_PART_ITEMS) return;
|
||||
if(!hook_dsc->p1 || !hook_dsc->p2) return;
|
||||
|
||||
/*Add a line mask that keeps the area below the line*/
|
||||
lv_draw_mask_line_param_t line_mask_param;
|
||||
lv_draw_mask_line_points_init(&line_mask_param, hook_dsc->p1->x, hook_dsc->p1->y, hook_dsc->p2->x, hook_dsc->p2->y, LV_DRAW_MASK_LINE_SIDE_BOTTOM);
|
||||
int16_t line_mask_id = lv_draw_mask_add(&line_mask_param, NULL);
|
||||
|
||||
/*Add a fade effect: transparent bottom covering top*/
|
||||
lv_coord_t h = lv_obj_get_height(obj);
|
||||
lv_draw_mask_fade_param_t fade_mask_param;
|
||||
lv_draw_mask_fade_init(&fade_mask_param, &obj->coords, LV_OPA_COVER, obj->coords.y1 + h / 8, LV_OPA_TRANSP,obj->coords.y2);
|
||||
int16_t fade_mask_id = lv_draw_mask_add(&fade_mask_param, NULL);
|
||||
|
||||
/*Draw a rectangle that will be affected by the mask*/
|
||||
lv_draw_rect_dsc_t draw_rect_dsc;
|
||||
lv_draw_rect_dsc_init(&draw_rect_dsc);
|
||||
draw_rect_dsc.bg_opa = LV_OPA_20;
|
||||
draw_rect_dsc.bg_color = hook_dsc->line_dsc->color;
|
||||
|
||||
lv_area_t a;
|
||||
a.x1 = hook_dsc->p1->x;
|
||||
a.x2 = hook_dsc->p2->x - 1;
|
||||
a.y1 = LV_MIN(hook_dsc->p1->y, hook_dsc->p2->y);
|
||||
a.y2 = obj->coords.y2;
|
||||
lv_draw_rect(&a, hook_dsc->clip_area, &draw_rect_dsc);
|
||||
|
||||
/*Remove the masks*/
|
||||
lv_draw_mask_remove_id(line_mask_id);
|
||||
lv_draw_mask_remove_id(fade_mask_id);
|
||||
}
|
||||
}
|
||||
|
||||
static void add_data(lv_timer_t * timer)
|
||||
{
|
||||
static uint32_t cnt = 0;
|
||||
lv_chart_set_next_value(chart1, ser1, lv_rand(20, 90));
|
||||
|
||||
if(cnt % 4 == 0) lv_chart_set_next_value(chart1, ser2, lv_rand(40, 60));
|
||||
|
||||
cnt++;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a faded area effect to the line chart
|
||||
*/
|
||||
void lv_example_chart_2(void)
|
||||
{
|
||||
/*Create a chart1*/
|
||||
chart1 = lv_chart_create(lv_scr_act(), NULL);
|
||||
lv_obj_set_size(chart1, 200, 150);
|
||||
lv_obj_align(chart1, NULL, LV_ALIGN_CENTER, 0, 0);
|
||||
lv_chart_set_type(chart1, LV_CHART_TYPE_LINE); /*Show lines and points too*/
|
||||
|
||||
lv_obj_add_event_cb(chart1, event_cb, NULL);
|
||||
|
||||
/*Add two data series*/
|
||||
ser1 = lv_chart_add_series(chart1, LV_COLOR_RED, LV_CHART_AXIS_PRIMARY_Y);
|
||||
ser2 = lv_chart_add_series(chart1, LV_COLOR_BLUE, LV_CHART_AXIS_SECONDARY_Y);
|
||||
|
||||
uint32_t i;
|
||||
for(i = 0; i < 10; i++) {
|
||||
lv_chart_set_next_value(chart1, ser1, lv_rand(20, 90));
|
||||
lv_chart_set_next_value(chart1, ser2, lv_rand(30, 70));
|
||||
}
|
||||
|
||||
lv_timer_create(add_data, 200, NULL);
|
||||
}
|
||||
|
||||
#endif
|
||||
75
examples/widgets/chart/lv_example_chart_3.c
Normal file
75
examples/widgets/chart/lv_example_chart_3.c
Normal file
@@ -0,0 +1,75 @@
|
||||
#include "../../../lvgl.h"
|
||||
#if LV_USE_CHART
|
||||
|
||||
static void event_cb(lv_obj_t * chart, lv_event_t e)
|
||||
{
|
||||
if(e == LV_EVENT_DRAW_PART_BEGIN) {
|
||||
lv_obj_draw_hook_dsc_t * hook_dsc = lv_event_get_param();
|
||||
if(hook_dsc->part == LV_PART_MARKER && hook_dsc->sub_part_id == LV_CHART_AXIS_X) {
|
||||
const char * month[] = {"Jan", "Febr", "March", "Apr", "May", "Jun", "July", "Aug", "Sept", "Oct", "Nov", "Dec"};
|
||||
lv_snprintf(hook_dsc->text, sizeof(hook_dsc->text), "%s", month[hook_dsc->id]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add ticks and labels to the axis and demonstrate scrolling
|
||||
*/
|
||||
void lv_example_chart_3(void)
|
||||
{
|
||||
/*Create a chart*/
|
||||
lv_obj_t * chart;
|
||||
chart = lv_chart_create(lv_scr_act(), NULL);
|
||||
lv_obj_set_size(chart, 200, 150);
|
||||
lv_obj_align(chart, NULL, LV_ALIGN_CENTER, 0, 0);
|
||||
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_point_count(chart, 12);
|
||||
lv_obj_add_event_cb(chart, event_cb, NULL);
|
||||
|
||||
/*Add ticks and label to every axis*/
|
||||
lv_chart_set_axis_tick(chart, LV_CHART_AXIS_X, 10, 5, 12, 3, true, 40);
|
||||
lv_chart_set_axis_tick(chart, LV_CHART_AXIS_PRIMARY_Y, 10, 5, 6, 2, true, 50);
|
||||
lv_chart_set_axis_tick(chart, LV_CHART_AXIS_SECONDARY_Y, 10, 5, 3, 4, true, 50);
|
||||
|
||||
/*Zoom in a little in X*/
|
||||
lv_chart_set_zoom_x(chart, 800);
|
||||
|
||||
/*Add two data series*/
|
||||
lv_chart_series_t * ser1 = lv_chart_add_series(chart, LV_COLOR_RED, LV_CHART_AXIS_PRIMARY_Y);
|
||||
lv_chart_series_t * ser2 = lv_chart_add_series(chart, LV_COLOR_GREEN, LV_CHART_AXIS_SECONDARY_Y);
|
||||
|
||||
/*Set the next points on 'ser1'*/
|
||||
lv_chart_set_next_value(chart, ser1, 31);
|
||||
lv_chart_set_next_value(chart, ser1, 66);
|
||||
lv_chart_set_next_value(chart, ser1, 10);
|
||||
lv_chart_set_next_value(chart, ser1, 89);
|
||||
lv_chart_set_next_value(chart, ser1, 63);
|
||||
lv_chart_set_next_value(chart, ser1, 56);
|
||||
lv_chart_set_next_value(chart, ser1, 32);
|
||||
lv_chart_set_next_value(chart, ser1, 35);
|
||||
lv_chart_set_next_value(chart, ser1, 57);
|
||||
lv_chart_set_next_value(chart, ser1, 85);
|
||||
lv_chart_set_next_value(chart, ser1, 22);
|
||||
lv_chart_set_next_value(chart, ser1, 58);
|
||||
|
||||
lv_coord_t * ser2_array = lv_chart_get_array(chart, ser2);
|
||||
/*Directly set points on 'ser2'*/
|
||||
ser2_array[0] = 92;
|
||||
ser2_array[1] = 71;
|
||||
ser2_array[2] = 61;
|
||||
ser2_array[3] = 15;
|
||||
ser2_array[4] = 21;
|
||||
ser2_array[5] = 35;
|
||||
ser2_array[6] = 35;
|
||||
ser2_array[7] = 58;
|
||||
ser2_array[8] = 31;
|
||||
ser2_array[9] = 53;
|
||||
ser2_array[10] = 33;
|
||||
ser2_array[11] = 73;
|
||||
|
||||
lv_chart_refresh(chart); /*Required after direct set*/
|
||||
}
|
||||
|
||||
#endif
|
||||
80
examples/widgets/chart/lv_example_chart_4.c
Normal file
80
examples/widgets/chart/lv_example_chart_4.c
Normal file
@@ -0,0 +1,80 @@
|
||||
#include "../../../lvgl.h"
|
||||
#if LV_USE_CHART
|
||||
|
||||
|
||||
static void event_cb(lv_obj_t * chart, lv_event_t e)
|
||||
{
|
||||
if(e == LV_EVENT_VALUE_CHANGED) {
|
||||
lv_obj_invalidate(chart);
|
||||
}
|
||||
if(e == LV_EVENT_REFR_EXT_DRAW_SIZE) {
|
||||
lv_coord_t * s = lv_event_get_param();
|
||||
*s = LV_MAX(*s, 20);
|
||||
}
|
||||
else if(e == LV_EVENT_DRAW_POST_END) {
|
||||
int32_t id = lv_chart_get_pressed_point(chart);
|
||||
if(id < 0) return;
|
||||
|
||||
printf("Selected point %d\n", id);
|
||||
|
||||
lv_chart_series_t * ser = lv_chart_get_series_next(chart, NULL);
|
||||
while(ser) {
|
||||
lv_point_t p;
|
||||
lv_chart_get_point_pos_by_id(chart, ser, id, &p);
|
||||
|
||||
lv_coord_t * y_array = lv_chart_get_array(chart, ser);
|
||||
lv_coord_t value = y_array[id];
|
||||
|
||||
char buf[16];
|
||||
lv_snprintf(buf, sizeof(buf), "$%d", value);
|
||||
|
||||
lv_draw_rect_dsc_t draw_rect_dsc;
|
||||
lv_draw_rect_dsc_init(&draw_rect_dsc);
|
||||
draw_rect_dsc.bg_color = LV_COLOR_BLACK;
|
||||
draw_rect_dsc.bg_opa = LV_OPA_50;
|
||||
draw_rect_dsc.radius = 3;
|
||||
draw_rect_dsc.content_text = buf;
|
||||
draw_rect_dsc.content_color = LV_COLOR_WHITE;
|
||||
|
||||
lv_area_t a;
|
||||
a.x1 = chart->coords.x1 + p.x - 20;
|
||||
a.x2 = chart->coords.x1 + p.x + 20;
|
||||
a.y1 = chart->coords.y1 + p.y - 30;
|
||||
a.y2 = chart->coords.y1 + p.y - 10;
|
||||
|
||||
const lv_area_t * clip_area = lv_event_get_param();
|
||||
lv_draw_rect(&a, clip_area, &draw_rect_dsc);
|
||||
|
||||
ser = lv_chart_get_series_next(chart, ser);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add ticks and labels to the axis and demonstrate scrolling
|
||||
*/
|
||||
void lv_example_chart_4(void)
|
||||
{
|
||||
/*Create a chart*/
|
||||
lv_obj_t * chart;
|
||||
chart = lv_chart_create(lv_scr_act(), NULL);
|
||||
lv_obj_set_size(chart, 200, 150);
|
||||
lv_obj_align(chart, NULL, LV_ALIGN_CENTER, 0, 0);
|
||||
|
||||
lv_obj_add_event_cb(chart, event_cb, NULL);
|
||||
lv_obj_refresh_ext_draw_size(chart);
|
||||
|
||||
/*Zoom in a little in X*/
|
||||
lv_chart_set_zoom_x(chart, 800);
|
||||
|
||||
/*Add two data series*/
|
||||
lv_chart_series_t * ser1 = lv_chart_add_series(chart, LV_COLOR_RED, LV_CHART_AXIS_PRIMARY_Y);
|
||||
lv_chart_series_t * ser2 = lv_chart_add_series(chart, LV_COLOR_GREEN, LV_CHART_AXIS_PRIMARY_Y);
|
||||
uint32_t i;
|
||||
for(i = 0; i < 10; i++) {
|
||||
lv_chart_set_next_value(chart, ser1, lv_rand(60,90));
|
||||
lv_chart_set_next_value(chart, ser2, lv_rand(10,40));
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user