arch(draw): add parallel rendering architecture
BREAKING CHANGE This is a huge update which introduces parallel rendering. lv_conf.h needs to be updated too.
This commit is contained in:
@@ -1,52 +1 @@
|
||||
def draw_event_cb(e):
|
||||
|
||||
dsc = lv.obj_draw_part_dsc_t.__cast__(e.get_param())
|
||||
if dsc.part == lv.PART.TICKS and dsc.id == lv.chart.AXIS.PRIMARY_X:
|
||||
month = ["Jan", "Febr", "March", "Apr", "May", "Jun", "July", "Aug", "Sept", "Oct", "Nov", "Dec"]
|
||||
# dsc.text is defined char text[16], I must therefore convert the Python string to a byte_array
|
||||
dsc.text = bytes(month[dsc.value],"ascii")
|
||||
#
|
||||
# Add ticks and labels to the axis and demonstrate scrolling
|
||||
#
|
||||
|
||||
# Create a chart
|
||||
chart = lv.chart(lv.scr_act())
|
||||
chart.set_size(200, 150)
|
||||
chart.center()
|
||||
chart.set_type(lv.chart.TYPE.BAR)
|
||||
chart.set_range(lv.chart.AXIS.PRIMARY_Y, 0, 100)
|
||||
chart.set_range(lv.chart.AXIS.SECONDARY_Y, 0, 400)
|
||||
chart.set_point_count(12)
|
||||
chart.add_event(draw_event_cb, lv.EVENT.DRAW_PART_BEGIN, None)
|
||||
|
||||
# Add ticks and label to every axis
|
||||
chart.set_axis_tick(lv.chart.AXIS.PRIMARY_X, 10, 5, 12, 3, True, 40)
|
||||
chart.set_axis_tick(lv.chart.AXIS.PRIMARY_Y, 10, 5, 6, 2, True, 50)
|
||||
chart.set_axis_tick(lv.chart.AXIS.SECONDARY_Y, 10, 5, 3, 4,True, 50)
|
||||
|
||||
# Zoom in a little in X
|
||||
chart.set_zoom_x(800)
|
||||
|
||||
# Add two data series
|
||||
ser1 = lv.chart.add_series(chart, lv.palette_lighten(lv.PALETTE.GREEN, 2), lv.chart.AXIS.PRIMARY_Y)
|
||||
ser2 = lv.chart.add_series(chart, lv.palette_darken(lv.PALETTE.GREEN, 2), lv.chart.AXIS.SECONDARY_Y)
|
||||
|
||||
# Set the next points on 'ser1'
|
||||
chart.set_next_value(ser1, 31)
|
||||
chart.set_next_value(ser1, 66)
|
||||
chart.set_next_value(ser1, 10)
|
||||
chart.set_next_value(ser1, 89)
|
||||
chart.set_next_value(ser1, 63)
|
||||
chart.set_next_value(ser1, 56)
|
||||
chart.set_next_value(ser1, 32)
|
||||
chart.set_next_value(ser1, 35)
|
||||
chart.set_next_value(ser1, 57)
|
||||
chart.set_next_value(ser1, 85)
|
||||
chart.set_next_value(ser1, 22)
|
||||
chart.set_next_value(ser1, 58)
|
||||
|
||||
# Directly set points on 'ser2'
|
||||
ser2.y_points = [92,71,61,15,21,35,35,58,31,53,33,73]
|
||||
|
||||
chart.refresh() # Required after direct set
|
||||
|
||||
pass
|
||||
Reference in New Issue
Block a user