mirror of
https://github.com/lvgl/lvgl.git
synced 2026-05-18 00:25:17 +08:00
@@ -1,41 +0,0 @@
|
||||
def anim_x_cb(label, v):
|
||||
label.set_x(v)
|
||||
|
||||
def sw_event_cb(e,label):
|
||||
sw = e.get_target_obj()
|
||||
|
||||
if sw.has_state(lv.STATE.CHECKED):
|
||||
a = lv.anim_t()
|
||||
a.init()
|
||||
a.set_var(label)
|
||||
a.set_values(label.get_x(), 100)
|
||||
a.set_time(500)
|
||||
a.set_path_cb(lv.anim_t.path_overshoot)
|
||||
a.set_custom_exec_cb(lambda a,val: anim_x_cb(label,val))
|
||||
lv.anim_t.start(a)
|
||||
else:
|
||||
a = lv.anim_t()
|
||||
a.init()
|
||||
a.set_var(label)
|
||||
a.set_values(label.get_x(), -label.get_width())
|
||||
a.set_time(500)
|
||||
a.set_path_cb(lv.anim_t.path_ease_in)
|
||||
a.set_custom_exec_cb(lambda a,val: anim_x_cb(label,val))
|
||||
lv.anim_t.start(a)
|
||||
|
||||
#
|
||||
# Start animation on an event
|
||||
#
|
||||
|
||||
label = lv.label(lv.screen_active())
|
||||
label.set_text("Hello animations!")
|
||||
label.set_pos(100, 10)
|
||||
|
||||
|
||||
sw = lv.switch(lv.screen_active())
|
||||
sw.center()
|
||||
sw.add_state(lv.STATE.CHECKED)
|
||||
sw.add_event_cb(lambda e: sw_event_cb(e,label), lv.EVENT.VALUE_CHANGED, None)
|
||||
|
||||
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
def anim_x_cb(obj, v):
|
||||
obj.set_x(v)
|
||||
|
||||
def anim_size_cb(obj, v):
|
||||
obj.set_size(v, v)
|
||||
|
||||
|
||||
#
|
||||
# Create a playback animation
|
||||
#
|
||||
obj = lv.obj(lv.screen_active())
|
||||
obj.set_style_bg_color(lv.palette_main(lv.PALETTE.RED), 0)
|
||||
obj.set_style_radius(lv.RADIUS_CIRCLE, 0)
|
||||
|
||||
obj.align(lv.ALIGN.LEFT_MID, 10, 0)
|
||||
|
||||
a1 = lv.anim_t()
|
||||
a1.init()
|
||||
a1.set_var(obj)
|
||||
a1.set_values(10, 50)
|
||||
a1.set_time(1000)
|
||||
a1.set_playback_delay(100)
|
||||
a1.set_playback_duration(300)
|
||||
a1.set_repeat_delay(500)
|
||||
a1.set_repeat_count(lv.ANIM_REPEAT_INFINITE)
|
||||
a1.set_path_cb(lv.anim_t.path_ease_in_out)
|
||||
a1.set_custom_exec_cb(lambda a1,val: anim_size_cb(obj,val))
|
||||
lv.anim_t.start(a1)
|
||||
|
||||
a2 = lv.anim_t()
|
||||
a2.init()
|
||||
a2.set_var(obj)
|
||||
a2.set_values(10, 240)
|
||||
a2.set_time(1000)
|
||||
a2.set_playback_delay(100)
|
||||
a2.set_playback_duration(300)
|
||||
a2.set_repeat_delay(500)
|
||||
a2.set_repeat_count(lv.ANIM_REPEAT_INFINITE)
|
||||
a2.set_path_cb(lv.anim_t.path_ease_in_out)
|
||||
a2.set_custom_exec_cb(lambda a1,val: anim_x_cb(obj,val))
|
||||
lv.anim_t.start(a2)
|
||||
@@ -1,123 +0,0 @@
|
||||
from micropython import const
|
||||
|
||||
# the example show the use of cubic-bezier3 in animation.
|
||||
# the control point P1,P2 of cubic-bezier3 can be adjusted by slider.
|
||||
# and the chart shows the cubic-bezier3 in real time. you can click
|
||||
# run button see animation in current point of cubic-bezier3.
|
||||
#
|
||||
|
||||
CHART_POINTS_NUM = const(256)
|
||||
|
||||
class LvExampleAnim_3():
|
||||
#
|
||||
# create an animation
|
||||
#
|
||||
def __init__(self):
|
||||
# Create a container with grid
|
||||
col_dsc = [lv.grid_fr(1), 200, lv.grid_fr(1), lv.GRID_TEMPLATE_LAST]
|
||||
row_dsc = [30, 10, 10, lv.grid_fr(1),lv.GRID_TEMPLATE_LAST]
|
||||
|
||||
self.p1 = 0
|
||||
self.p2 = 0
|
||||
self.cont = lv.obj(lv.screen_active())
|
||||
self.cont.set_style_pad_all(2, lv.PART.MAIN)
|
||||
self.cont.set_style_pad_column(10, lv.PART.MAIN)
|
||||
self.cont.set_style_pad_row(10, lv.PART.MAIN)
|
||||
self.cont.set_grid_dsc_array(col_dsc, row_dsc)
|
||||
self.cont.set_size(320, 240)
|
||||
self.cont.center()
|
||||
self.page_obj_init(self.cont)
|
||||
|
||||
self.a = lv.anim_t()
|
||||
self.a.init()
|
||||
self.a.set_var(self.anim_obj)
|
||||
end = self.cont.get_style_width(lv.PART.MAIN) - self.anim_obj.get_style_width(lv.PART.MAIN) - 10
|
||||
self.a.set_values(5, end)
|
||||
self.a.set_time(2000)
|
||||
self.a.set_custom_exec_cb(lambda a,val: self.anim_x_cb(self.anim_obj,val))
|
||||
self.a.set_path_cb(self.anim_path_bezier3_cb)
|
||||
self.refer_chart_cubic_bezier()
|
||||
|
||||
def page_obj_init(self,par):
|
||||
self.anim_obj = lv.obj(par)
|
||||
self.anim_obj.set_size(30, 30)
|
||||
self.anim_obj.set_align(lv.ALIGN.TOP_LEFT)
|
||||
self.anim_obj.remove_flag(lv.obj.FLAG.SCROLLABLE)
|
||||
self.anim_obj.set_style_bg_color(lv.palette_main(lv.PALETTE.RED), lv.PART.MAIN)
|
||||
self.anim_obj.set_grid_cell(lv.GRID_ALIGN.START, 0, 1,lv.GRID_ALIGN.START, 0, 1)
|
||||
|
||||
self.p1_label = lv.label(par)
|
||||
self.p2_label = lv.label(par)
|
||||
self.p1_label.set_text("p1:0")
|
||||
self.p2_label.set_text("p2:0")
|
||||
self.p1_label.set_grid_cell(lv.GRID_ALIGN.START, 0, 1,lv.GRID_ALIGN.START, 1, 1)
|
||||
self.p2_label.set_grid_cell(lv.GRID_ALIGN.START, 0, 1,lv.GRID_ALIGN.START, 2, 1)
|
||||
|
||||
self.p1_slider = lv.slider(par)
|
||||
self.p2_slider = lv.slider(par)
|
||||
self.p1_slider.set_range(0, 1024)
|
||||
self.p2_slider.set_range(0, 1024)
|
||||
self.p1_slider.set_style_pad_all(2, lv.PART.KNOB)
|
||||
self.p2_slider.set_style_pad_all(2, lv.PART.KNOB)
|
||||
self.p1_slider.add_event_cb(self.slider_event_cb, lv.EVENT.VALUE_CHANGED, None)
|
||||
self.p2_slider.add_event_cb(self.slider_event_cb, lv.EVENT.VALUE_CHANGED, None)
|
||||
self.p1_slider.set_grid_cell(lv.GRID_ALIGN.STRETCH, 1, 1,lv.GRID_ALIGN.START, 1, 1)
|
||||
self.p2_slider.set_grid_cell(lv.GRID_ALIGN.STRETCH, 1, 1,lv.GRID_ALIGN.START, 2, 1)
|
||||
|
||||
self.run_button = lv.button(par)
|
||||
self.run_button.add_event_cb(self.run_button_event_handler, lv.EVENT.CLICKED, None)
|
||||
button_label = lv.label(self.run_button)
|
||||
button_label.set_text(lv.SYMBOL.PLAY)
|
||||
button_label.center()
|
||||
self.run_button.set_grid_cell(lv.GRID_ALIGN.STRETCH, 2, 1,lv.GRID_ALIGN.STRETCH, 1, 2)
|
||||
|
||||
self.chart = lv.chart(par)
|
||||
self.chart.set_style_pad_all(0, lv.PART.MAIN)
|
||||
self.chart.set_style_size(0, 0, lv.PART.INDICATOR)
|
||||
self.chart.set_type(lv.chart.TYPE.SCATTER)
|
||||
self.ser1 = self.chart.add_series(lv.palette_main(lv.PALETTE.RED), lv.chart.AXIS.PRIMARY_Y)
|
||||
self.chart.set_range(lv.chart.AXIS.PRIMARY_Y, 0, 1024)
|
||||
self.chart.set_range(lv.chart.AXIS.PRIMARY_X, 0, 1024)
|
||||
self.chart.set_point_count(CHART_POINTS_NUM)
|
||||
self.chart.set_grid_cell(lv.GRID_ALIGN.STRETCH, 0, 3,lv.GRID_ALIGN.STRETCH, 3, 1)
|
||||
|
||||
def refer_chart_cubic_bezier(self):
|
||||
for i in range(CHART_POINTS_NUM+1):
|
||||
t = i * (1024 // CHART_POINTS_NUM)
|
||||
step = lv.bezier3(t, 0, self.p1, self.p2, 1024)
|
||||
self.chart.set_value_by_id2(self.ser1, i, t, step)
|
||||
self.chart.refresh()
|
||||
|
||||
def slider_event_cb(self,e):
|
||||
slider = e.get_target_obj()
|
||||
|
||||
if slider == self.p1_slider:
|
||||
label = self.p1_label
|
||||
self.p1 = slider.get_value()
|
||||
label.set_text("p1: {:d}".format(self.p1))
|
||||
else:
|
||||
label = self.p2_label
|
||||
self.p2 = slider.get_value()
|
||||
label.set_text("p1: {:d}".format(self.p2))
|
||||
|
||||
self.refer_chart_cubic_bezier()
|
||||
|
||||
|
||||
def run_button_event_handler(self,e):
|
||||
|
||||
code = e.get_code()
|
||||
if code == lv.EVENT.CLICKED:
|
||||
lv.anim_t.start(self.a)
|
||||
|
||||
def anim_x_cb(self, var, v):
|
||||
var.set_style_translate_x(v, lv.PART.MAIN)
|
||||
|
||||
def anim_path_bezier3_cb(self,a):
|
||||
t = lv.map(a.act_time, 0, a.duration, 0, 1024)
|
||||
step = lv.bezier3(t, 0, self.p1, self.p2, 1024)
|
||||
new_value = step * (a.end_value - a.start_value)
|
||||
new_value = new_value >> 10
|
||||
new_value += a.start_value
|
||||
return new_value
|
||||
|
||||
lv_example_anim_3 = LvExampleAnim_3()
|
||||
@@ -1,137 +0,0 @@
|
||||
class LV_ExampleAnimTimeline_1(object):
|
||||
|
||||
def __init__(self):
|
||||
self.obj_width = 120
|
||||
self.obj_height = 150
|
||||
#
|
||||
# Create an animation timeline
|
||||
#
|
||||
|
||||
self.par = lv.screen_active()
|
||||
self.par.set_flex_flow(lv.FLEX_FLOW.ROW)
|
||||
self.par.set_flex_align(lv.FLEX_ALIGN.SPACE_AROUND, lv.FLEX_ALIGN.CENTER, lv.FLEX_ALIGN.CENTER)
|
||||
|
||||
self.button_run = lv.button(self.par)
|
||||
self.button_run.add_event_cb(self.button_run_event_handler, lv.EVENT.VALUE_CHANGED, None)
|
||||
self.button_run.add_flag(lv.obj.FLAG.IGNORE_LAYOUT)
|
||||
self.button_run.add_flag(lv.obj.FLAG.CHECKABLE)
|
||||
self.button_run.align(lv.ALIGN.TOP_MID, -50, 20)
|
||||
|
||||
self.label_run = lv.label(self.button_run)
|
||||
self.label_run.set_text("Run")
|
||||
self.label_run.center()
|
||||
|
||||
self.button_del = lv.button(self.par)
|
||||
self.button_del.add_event_cb(self.button_delete_event_handler, lv.EVENT.CLICKED, None)
|
||||
self.button_del.add_flag(lv.obj.FLAG.IGNORE_LAYOUT)
|
||||
self.button_del.align(lv.ALIGN.TOP_MID, 50, 20)
|
||||
|
||||
self.label_del = lv.label(self.button_del)
|
||||
self.label_del.set_text("Stop")
|
||||
self.label_del.center()
|
||||
|
||||
self.slider = lv.slider(self.par)
|
||||
self.slider.add_event_cb(self.slider_prg_event_handler, lv.EVENT.VALUE_CHANGED, None)
|
||||
self.slider.add_flag(lv.obj.FLAG.IGNORE_LAYOUT)
|
||||
self.slider.align(lv.ALIGN.BOTTOM_RIGHT, -20, -20)
|
||||
self.slider.set_range(0, 65535)
|
||||
|
||||
self.obj1 = lv.obj(self.par)
|
||||
self.obj1.set_size(self.obj_width, self.obj_height)
|
||||
|
||||
self.obj2 = lv.obj(self.par)
|
||||
self.obj2.set_size(self.obj_width, self.obj_height)
|
||||
|
||||
self.obj3 = lv.obj(self.par)
|
||||
self.obj3.set_size(self.obj_width, self.obj_height)
|
||||
|
||||
self.anim_timeline = None
|
||||
|
||||
def set_width(self,obj, v):
|
||||
obj.set_width(v)
|
||||
|
||||
def set_height(self,obj, v):
|
||||
obj.set_height(v)
|
||||
|
||||
def anim_timeline_create(self):
|
||||
# obj1
|
||||
self.a1 = lv.anim_t()
|
||||
self.a1.init()
|
||||
self.a1.set_values(0, self.obj_width)
|
||||
self.a1.set_custom_exec_cb(lambda a,v: self.set_width(self.obj1,v))
|
||||
self.a1.set_path_cb(lv.anim_t.path_overshoot)
|
||||
self.a1.set_time(300)
|
||||
|
||||
self.a2 = lv.anim_t()
|
||||
self.a2.init()
|
||||
self.a2.set_values(0, self.obj_height)
|
||||
self.a2.set_custom_exec_cb(lambda a,v: self.set_height(self.obj1,v))
|
||||
self.a2.set_path_cb(lv.anim_t.path_ease_out)
|
||||
self.a2.set_time(300)
|
||||
|
||||
# obj2
|
||||
self.a3=lv.anim_t()
|
||||
self.a3.init()
|
||||
self.a3.set_values(0, self.obj_width)
|
||||
self.a3.set_custom_exec_cb(lambda a,v: self.set_width(self.obj2,v))
|
||||
self.a3.set_path_cb(lv.anim_t.path_overshoot)
|
||||
self.a3.set_time(300)
|
||||
|
||||
self.a4 = lv.anim_t()
|
||||
self.a4.init()
|
||||
self.a4.set_values(0, self.obj_height)
|
||||
self.a4.set_custom_exec_cb(lambda a,v: self.set_height(self.obj2,v))
|
||||
self.a4.set_path_cb(lv.anim_t.path_ease_out)
|
||||
self.a4.set_time(300)
|
||||
|
||||
# obj3
|
||||
self.a5 = lv.anim_t()
|
||||
self.a5.init()
|
||||
self.a5.set_values(0, self.obj_width)
|
||||
self.a5.set_custom_exec_cb(lambda a,v: self.set_width(self.obj3,v))
|
||||
self.a5.set_path_cb(lv.anim_t.path_overshoot)
|
||||
self.a5.set_time(300)
|
||||
|
||||
self.a6 = lv.anim_t()
|
||||
self.a6.init()
|
||||
self.a6.set_values(0, self.obj_height)
|
||||
self.a6.set_custom_exec_cb(lambda a,v: self.set_height(self.obj3,v))
|
||||
self.a6.set_path_cb(lv.anim_t.path_ease_out)
|
||||
self.a6.set_time(300)
|
||||
|
||||
# Create anim timeline
|
||||
print("Create new anim_timeline")
|
||||
self.anim_timeline = lv.anim_timeline_create()
|
||||
self.anim_timeline.add(0, self.a1)
|
||||
self.anim_timeline.add(0, self.a2)
|
||||
self.anim_timeline.add(200, self.a3)
|
||||
self.anim_timeline.add(200, self.a4)
|
||||
self.anim_timeline.add(400, self.a5)
|
||||
self.anim_timeline.add(400, self.a6)
|
||||
|
||||
def slider_prg_event_handler(self,e):
|
||||
slider = e.get_target_obj()
|
||||
|
||||
if not self.anim_timeline:
|
||||
self.anim_timeline_create()
|
||||
|
||||
progress = slider.get_value()
|
||||
self.anim_timeline.set_progress(progress)
|
||||
|
||||
|
||||
def button_run_event_handler(self,e):
|
||||
button = e.get_target_obj()
|
||||
if not self.anim_timeline:
|
||||
self.anim_timeline_create()
|
||||
|
||||
reverse = button.has_state(lv.STATE.CHECKED)
|
||||
self.anim_timeline.set_reverse(reverse)
|
||||
self.anim_timeline.start()
|
||||
|
||||
def button_delete_event_handler(self,e):
|
||||
if self.anim_timeline:
|
||||
self.anim_timeline.delete()
|
||||
self.anim_timeline = None
|
||||
|
||||
|
||||
lv_example_anim_timeline_1 = LV_ExampleAnimTimeline_1()
|
||||
@@ -1,25 +0,0 @@
|
||||
class Event_1():
|
||||
def __init__(self):
|
||||
self.cnt = 1
|
||||
#
|
||||
# Add click event to a button
|
||||
#
|
||||
|
||||
button = lv.button(lv.screen_active())
|
||||
button.set_size(100, 50)
|
||||
button.center()
|
||||
button.add_event_cb(self.event_cb, lv.EVENT.CLICKED, None)
|
||||
|
||||
label = lv.label(button)
|
||||
label.set_text("Click me!")
|
||||
label.center()
|
||||
|
||||
def event_cb(self,e):
|
||||
print("Clicked")
|
||||
|
||||
button = e.get_target_obj()
|
||||
label = button.get_child(0)
|
||||
label.set_text(str(self.cnt))
|
||||
self.cnt += 1
|
||||
|
||||
evt1 = Event_1()
|
||||
@@ -1,22 +0,0 @@
|
||||
def event_cb(e,label):
|
||||
code = e.get_code()
|
||||
if code == lv.EVENT.PRESSED:
|
||||
label.set_text("The last button event:\nLV_EVENT_PRESSED")
|
||||
elif code == lv.EVENT.CLICKED:
|
||||
label.set_text("The last button event:\nLV_EVENT_CLICKED")
|
||||
elif code == lv.EVENT.LONG_PRESSED:
|
||||
label.set_text("The last button event:\nLV_EVENT_LONG_PRESSED")
|
||||
elif code == lv.EVENT.LONG_PRESSED_REPEAT:
|
||||
label.set_text("The last button event:\nLV_EVENT_LONG_PRESSED_REPEAT")
|
||||
button = lv.button(lv.screen_active())
|
||||
button.set_size(100, 50)
|
||||
button.center()
|
||||
|
||||
button_label = lv.label(button)
|
||||
button_label.set_text("Click me!")
|
||||
button_label.center()
|
||||
|
||||
info_label = lv.label(lv.screen_active())
|
||||
info_label.set_text("The last button event:\nNone")
|
||||
|
||||
button.add_event_cb(lambda e: event_cb(e,info_label), lv.EVENT.ALL, None)
|
||||
@@ -1,34 +0,0 @@
|
||||
def event_cb(e):
|
||||
|
||||
# The original target of the event. Can be the buttons or the container
|
||||
target = e.get_target_obj()
|
||||
|
||||
# The current target is always the container as the event is added to it
|
||||
cont = e.get_current_target_obj()
|
||||
|
||||
# If container was clicked do nothing
|
||||
if target == cont:
|
||||
return
|
||||
|
||||
# Make the clicked buttons red
|
||||
target.set_style_bg_color(lv.palette_main(lv.PALETTE.RED), 0)
|
||||
|
||||
#
|
||||
# Demonstrate event bubbling
|
||||
#
|
||||
|
||||
cont = lv.obj(lv.screen_active())
|
||||
cont.set_size(290, 200)
|
||||
cont.center()
|
||||
cont.set_flex_flow(lv.FLEX_FLOW.ROW_WRAP)
|
||||
|
||||
for i in range(30):
|
||||
button = lv.button(cont)
|
||||
button.set_size(70, 50)
|
||||
button.add_flag(lv.obj.FLAG.EVENT_BUBBLE)
|
||||
|
||||
label = lv.label(button)
|
||||
label.set_text("{:d}".format(i))
|
||||
label.center()
|
||||
|
||||
cont.add_event_cb(event_cb, lv.EVENT.CLICKED, None)
|
||||
@@ -1,53 +0,0 @@
|
||||
class LV_Example_Event_4:
|
||||
|
||||
def __init__(self):
|
||||
#
|
||||
# Demonstrate the usage of draw event
|
||||
#
|
||||
self.size = 0
|
||||
self.size_dec = False
|
||||
self.cont = lv.obj(lv.screen_active())
|
||||
self.cont.set_size(200, 200)
|
||||
self.cont.center()
|
||||
self.cont.add_event_cb(self.event_cb, lv.EVENT.DRAW_TASK_ADDED, None)
|
||||
self.cont.add_flag(lv.obj.FLAG.SEND_DRAW_TASK_EVENTS)
|
||||
lv.timer_create(self.timer_cb, 30, None)
|
||||
|
||||
def timer_cb(self,timer) :
|
||||
self.cont.invalidate()
|
||||
if self.size_dec :
|
||||
self.size -= 1
|
||||
else :
|
||||
self.size += 1
|
||||
|
||||
if self.size == 50 :
|
||||
self.size_dec = True
|
||||
elif self.size == 0:
|
||||
self.size_dec = False
|
||||
|
||||
def event_cb(self,e) :
|
||||
obj = e.get_target_obj()
|
||||
dsc = e.get_draw_task()
|
||||
base_dsc = lv.draw_dsc_base_t.__cast__(dsc.draw_dsc)
|
||||
if base_dsc.part == lv.PART.MAIN:
|
||||
a = lv.area_t()
|
||||
a.x1 = 0
|
||||
a.y1 = 0
|
||||
a.x2 = self.size
|
||||
a.y2 = self.size
|
||||
coords = lv.area_t()
|
||||
obj.get_coords(coords)
|
||||
coords.align(a, lv.ALIGN.CENTER, 0, 0)
|
||||
|
||||
draw_dsc = lv.draw_rect_dsc_t()
|
||||
draw_dsc.init()
|
||||
draw_dsc.bg_color = lv.color_hex(0xffaaaa)
|
||||
draw_dsc.radius = lv.RADIUS_CIRCLE
|
||||
draw_dsc.border_color = lv.color_hex(0xff5555)
|
||||
draw_dsc.border_width = 2
|
||||
draw_dsc.outline_color = lv.color_hex(0xff0000)
|
||||
draw_dsc.outline_pad = 3
|
||||
draw_dsc.outline_width = 2
|
||||
lv.draw_rect(base_dsc.layer, draw_dsc, a)
|
||||
|
||||
lv_example_event_4 = LV_Example_Event_4()
|
||||
@@ -1,9 +0,0 @@
|
||||
# Change the active screen's background color
|
||||
scr = lv.screen_active()
|
||||
scr.set_style_bg_color(lv.color_hex(0x003a57), lv.PART.MAIN)
|
||||
|
||||
# Create a white label, set its text and align it to the center
|
||||
label = lv.label(lv.screen_active())
|
||||
label.set_text("Hello world")
|
||||
label.set_style_text_color(lv.color_hex(0xffffff), lv.PART.MAIN)
|
||||
label.align(lv.ALIGN.CENTER, 0, 0)
|
||||
@@ -1,29 +0,0 @@
|
||||
class CounterBtn():
|
||||
def __init__(self):
|
||||
self.cnt = 0
|
||||
#
|
||||
# Create a button with a label and react on click event.
|
||||
#
|
||||
|
||||
button = lv.button(lv.screen_active()) # Add a button the current screen
|
||||
button.set_pos(10, 10) # Set its position
|
||||
button.set_size(120, 50) # Set its size
|
||||
button.align(lv.ALIGN.CENTER,0,0)
|
||||
button.add_event_cb(self.button_event_cb, lv.EVENT.ALL, None) # Assign a callback to the button
|
||||
label = lv.label(button) # Add a label to the button
|
||||
label.set_text("Button") # Set the labels text
|
||||
label.center()
|
||||
|
||||
def button_event_cb(self,e):
|
||||
code = e.get_code()
|
||||
button = e.get_target_obj()
|
||||
if code == lv.EVENT.CLICKED:
|
||||
self.cnt += 1
|
||||
|
||||
# Get the first child of the button which is the label and change its text
|
||||
label = button.get_child(0)
|
||||
label.set_text("Button: " + str(self.cnt))
|
||||
|
||||
|
||||
counterBtn = CounterBtn()
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
#
|
||||
# Create styles from scratch for buttons.
|
||||
#
|
||||
style_button = lv.style_t()
|
||||
style_button_red = lv.style_t()
|
||||
style_button_pressed = lv.style_t()
|
||||
|
||||
# Create a simple button style
|
||||
style_button.init()
|
||||
style_button.set_radius(10)
|
||||
style_button.set_bg_opa(lv.OPA.COVER)
|
||||
style_button.set_bg_color(lv.palette_lighten(lv.PALETTE.GREY, 3))
|
||||
style_button.set_bg_grad_color(lv.palette_main(lv.PALETTE.GREY))
|
||||
style_button.set_bg_grad_dir(lv.GRAD_DIR.VER)
|
||||
|
||||
# Add a border
|
||||
style_button.set_border_color(lv.color_white())
|
||||
style_button.set_border_opa(lv.OPA._70)
|
||||
style_button.set_border_width(2)
|
||||
|
||||
# Set the text style
|
||||
style_button.set_text_color(lv.color_white())
|
||||
|
||||
# Create a red style. Change only some colors.
|
||||
style_button_red.init()
|
||||
style_button_red.set_bg_color(lv.palette_main(lv.PALETTE.RED))
|
||||
style_button_red.set_bg_grad_color(lv.palette_lighten(lv.PALETTE.RED, 2))
|
||||
|
||||
# Create a style for the pressed state.
|
||||
style_button_pressed.init()
|
||||
style_button_pressed.set_bg_color(lv.palette_main(lv.PALETTE.BLUE))
|
||||
style_button_pressed.set_bg_grad_color(lv.palette_darken(lv.PALETTE.RED, 3))
|
||||
|
||||
# Create a button and use the new styles
|
||||
button = lv.button(lv.screen_active()) # Add a button the current screen
|
||||
# Remove the styles coming from the theme
|
||||
# Note that size and position are also stored as style properties
|
||||
# so lv_obj_remove_style_all will remove the set size and position too
|
||||
button.remove_style_all() # Remove the styles coming from the theme
|
||||
button.set_pos(10, 10) # Set its position
|
||||
button.set_size(120, 50) # Set its size
|
||||
button.add_style(style_button, 0)
|
||||
button.add_style(style_button_pressed, lv.STATE.PRESSED)
|
||||
|
||||
label = lv.label(button) # Add a label to the button
|
||||
label.set_text("Button") # Set the labels text
|
||||
label.center()
|
||||
|
||||
# Create a slider in the center of the display
|
||||
slider = lv.slider(lv.screen_active())
|
||||
slider.set_width(200) # Set the width
|
||||
slider.center() # Align to the center of the parent (screen)
|
||||
|
||||
# Create another button and use the red style too
|
||||
button2 = lv.button(lv.screen_active())
|
||||
button2.remove_style_all() # Remove the styles coming from the theme
|
||||
button2.set_pos(10, 80) # Set its position
|
||||
button2.set_size(120, 50) # Set its size
|
||||
button2.add_style(style_button, 0)
|
||||
button2.add_style(style_button_red, 0)
|
||||
button2.add_style(style_button_pressed, lv.STATE.PRESSED)
|
||||
button2.set_style_radius(lv.RADIUS_CIRCLE, 0) # Add a local style
|
||||
|
||||
label = lv.label(button2) # Add a label to the button
|
||||
label.set_text("Button 2") # Set the labels text
|
||||
label.center()
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
def slider_event_cb(e):
|
||||
slider = e.get_target_obj()
|
||||
|
||||
# Refresh the text
|
||||
label.set_text(str(slider.get_value()))
|
||||
|
||||
#
|
||||
# Create a slider and write its value on a label.
|
||||
#
|
||||
|
||||
# Create a slider in the center of the display
|
||||
slider = lv.slider(lv.screen_active())
|
||||
slider.set_width(200) # Set the width
|
||||
slider.center() # Align to the center of the parent (screen)
|
||||
slider.add_event_cb(slider_event_cb, lv.EVENT.VALUE_CHANGED, None) # Assign an event function
|
||||
|
||||
# Create a label above the slider
|
||||
label = lv.label(lv.screen_active())
|
||||
label.set_text("0")
|
||||
label.align_to(slider, lv.ALIGN.OUT_TOP_MID, 0, -15) # Align below the slider
|
||||
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
#
|
||||
# A simple row and a column layout with flexbox
|
||||
#
|
||||
|
||||
# Create a container with ROW flex direction
|
||||
cont_row = lv.obj(lv.screen_active())
|
||||
cont_row.set_size(300, 75)
|
||||
cont_row.align(lv.ALIGN.TOP_MID, 0, 5)
|
||||
cont_row.set_flex_flow(lv.FLEX_FLOW.ROW)
|
||||
|
||||
# Create a container with COLUMN flex direction
|
||||
cont_col = lv.obj(lv.screen_active())
|
||||
cont_col.set_size(200, 150)
|
||||
cont_col.align_to(cont_row, lv.ALIGN.OUT_BOTTOM_MID, 0, 5)
|
||||
cont_col.set_flex_flow(lv.FLEX_FLOW.COLUMN)
|
||||
|
||||
for i in range(10):
|
||||
# Add items to the row
|
||||
obj = lv.button(cont_row)
|
||||
obj.set_size(100, lv.pct(100))
|
||||
|
||||
label = lv.label(obj)
|
||||
label.set_text("Item: {:d}".format(i))
|
||||
label.center()
|
||||
|
||||
# Add items to the column
|
||||
obj = lv.button(cont_col)
|
||||
obj.set_size(lv.pct(100), lv.SIZE_CONTENT)
|
||||
|
||||
label = lv.label(obj)
|
||||
label.set_text("Item: {:d}".format(i))
|
||||
label.center()
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
#
|
||||
# Arrange items in rows with wrap and place the items to get even space around them.
|
||||
#
|
||||
style = lv.style_t()
|
||||
style.init()
|
||||
style.set_flex_flow(lv.FLEX_FLOW.ROW_WRAP)
|
||||
style.set_flex_main_place(lv.FLEX_ALIGN.SPACE_EVENLY)
|
||||
style.set_layout(lv.LAYOUT.FLEX)
|
||||
|
||||
cont = lv.obj(lv.screen_active())
|
||||
cont.set_size(300, 220)
|
||||
cont.center()
|
||||
cont.add_style(style, 0)
|
||||
|
||||
for i in range(8):
|
||||
obj = lv.obj(cont)
|
||||
obj.set_size(70, lv.SIZE_CONTENT)
|
||||
|
||||
label = lv.label(obj)
|
||||
label.set_text("{:d}".format(i))
|
||||
label.center()
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
#
|
||||
# Demonstrate flex grow.
|
||||
#
|
||||
|
||||
cont = lv.obj(lv.screen_active())
|
||||
cont.set_size(300, 220)
|
||||
cont.center()
|
||||
cont.set_flex_flow(lv.FLEX_FLOW.ROW)
|
||||
|
||||
obj = lv.obj(cont)
|
||||
obj.set_size(40, 40) # Fix size
|
||||
|
||||
obj = lv.obj(cont)
|
||||
obj.set_height(40)
|
||||
obj.set_flex_grow(1) # 1 portion from the free space
|
||||
|
||||
obj = lv.obj(cont)
|
||||
obj.set_height(40)
|
||||
obj.set_flex_grow(2) # 2 portion from the free space
|
||||
|
||||
obj = lv.obj(cont)
|
||||
obj.set_size(40, 40) # Fix size. It is flushed to the right by the "grow" items
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
#
|
||||
# Reverse the order of flex items
|
||||
#
|
||||
cont = lv.obj(lv.screen_active())
|
||||
cont.set_size(300, 220)
|
||||
cont.center()
|
||||
cont.set_flex_flow(lv.FLEX_FLOW.COLUMN_REVERSE)
|
||||
|
||||
for i in range(6):
|
||||
obj = lv.obj(cont)
|
||||
obj.set_size(100, 50)
|
||||
|
||||
label = lv.label(obj)
|
||||
label.set_text("Item: " + str(i))
|
||||
label.center()
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
def row_gap_anim(obj, v):
|
||||
obj.set_style_pad_row(v, 0)
|
||||
|
||||
|
||||
def column_gap_anim(obj, v):
|
||||
obj.set_style_pad_column(v, 0)
|
||||
|
||||
#
|
||||
# Demonstrate the effect of column and row gap style properties
|
||||
#
|
||||
|
||||
cont = lv.obj(lv.screen_active())
|
||||
cont.set_size(300, 220)
|
||||
cont.center()
|
||||
cont.set_flex_flow(lv.FLEX_FLOW.ROW_WRAP)
|
||||
|
||||
for i in range(9):
|
||||
obj = lv.obj(cont)
|
||||
obj.set_size(70, lv.SIZE_CONTENT)
|
||||
|
||||
label = lv.label(obj)
|
||||
label.set_text(str(i))
|
||||
label.center()
|
||||
|
||||
a_row = lv.anim_t()
|
||||
a_row.init()
|
||||
a_row.set_var(cont)
|
||||
a_row.set_values(0, 10)
|
||||
a_row.set_repeat_count(lv.ANIM_REPEAT_INFINITE)
|
||||
|
||||
a_row.set_time(500)
|
||||
a_row.set_playback_duration(500)
|
||||
a_row.set_custom_exec_cb(lambda a,val: row_gap_anim(cont,val))
|
||||
lv.anim_t.start(a_row)
|
||||
|
||||
a_col = lv.anim_t()
|
||||
a_col.init()
|
||||
a_col.set_var(cont)
|
||||
a_col.set_values(0, 10)
|
||||
a_col.set_repeat_count(lv.ANIM_REPEAT_INFINITE)
|
||||
|
||||
a_col.set_time(3000)
|
||||
a_col.set_playback_duration(3000)
|
||||
a_col.set_custom_exec_cb(lambda a,val: column_gap_anim(cont,val))
|
||||
|
||||
lv.anim_t.start(a_col)
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
#
|
||||
# RTL base direction changes order of the items.
|
||||
# Also demonstrate how horizontal scrolling works with RTL.
|
||||
#
|
||||
|
||||
cont = lv.obj(lv.screen_active())
|
||||
cont.set_style_base_dir(lv.BASE_DIR.RTL,0)
|
||||
cont.set_size(300, 220)
|
||||
cont.center()
|
||||
cont.set_flex_flow(lv.FLEX_FLOW.ROW_WRAP)
|
||||
|
||||
for i in range(20):
|
||||
obj = lv.obj(cont)
|
||||
obj.set_size(70, lv.SIZE_CONTENT)
|
||||
|
||||
label = lv.label(obj)
|
||||
label.set_text(str(i))
|
||||
label.center()
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
#
|
||||
# A simple grid
|
||||
#
|
||||
|
||||
col_dsc = [70, 70, 70, lv.GRID_TEMPLATE_LAST]
|
||||
row_dsc = [50, 50, 50, lv.GRID_TEMPLATE_LAST]
|
||||
|
||||
# Create a container with grid
|
||||
cont = lv.obj(lv.screen_active())
|
||||
cont.set_style_grid_column_dsc_array(col_dsc, 0)
|
||||
cont.set_style_grid_row_dsc_array(row_dsc, 0)
|
||||
cont.set_size(300, 220)
|
||||
cont.center()
|
||||
cont.set_layout(lv.LAYOUT.GRID)
|
||||
|
||||
for i in range(9):
|
||||
col = i % 3
|
||||
row = i // 3
|
||||
|
||||
obj = lv.button(cont)
|
||||
# Stretch the cell horizontally and vertically too
|
||||
# Set span to 1 to make the cell 1 column/row sized
|
||||
obj.set_grid_cell(lv.GRID_ALIGN.STRETCH, col, 1,
|
||||
lv.GRID_ALIGN.STRETCH, row, 1)
|
||||
|
||||
label = lv.label(obj)
|
||||
label.set_text("c" +str(col) + "r" +str(row))
|
||||
label.center()
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
#
|
||||
# Demonstrate cell placement and span
|
||||
#
|
||||
|
||||
col_dsc = [70, 70, 70, lv.GRID_TEMPLATE_LAST]
|
||||
row_dsc = [50, 50, 50, lv.GRID_TEMPLATE_LAST]
|
||||
|
||||
# Create a container with grid
|
||||
cont = lv.obj(lv.screen_active())
|
||||
cont.set_grid_dsc_array(col_dsc, row_dsc)
|
||||
cont.set_size(300, 220)
|
||||
cont.center()
|
||||
|
||||
# Cell to 0;0 and align to the start (left/top) horizontally and vertically too
|
||||
obj = lv.obj(cont)
|
||||
obj.set_size(lv.SIZE_CONTENT, lv.SIZE_CONTENT)
|
||||
obj.set_grid_cell(lv.GRID_ALIGN.START, 0, 1,
|
||||
lv.GRID_ALIGN.START, 0, 1)
|
||||
label = lv.label(obj)
|
||||
label.set_text("c0, r0")
|
||||
|
||||
# Cell to 1;0 and align to the start (left) horizontally and center vertically too
|
||||
obj = lv.obj(cont)
|
||||
obj.set_size(lv.SIZE_CONTENT, lv.SIZE_CONTENT)
|
||||
obj.set_grid_cell(lv.GRID_ALIGN.START, 1, 1,
|
||||
lv.GRID_ALIGN.CENTER, 0, 1)
|
||||
label = lv.label(obj)
|
||||
label.set_text("c1, r0")
|
||||
|
||||
# Cell to 2;0 and align to the start (left) horizontally and end (bottom) vertically too
|
||||
obj = lv.obj(cont)
|
||||
obj.set_size(lv.SIZE_CONTENT, lv.SIZE_CONTENT)
|
||||
obj.set_grid_cell(lv.GRID_ALIGN.START, 2, 1,
|
||||
lv.GRID_ALIGN.END, 0, 1)
|
||||
label = lv.label(obj)
|
||||
label.set_text("c2, r0")
|
||||
|
||||
# Cell to 1;1 but 2 column wide (span = 2).Set width and height to stretched.
|
||||
obj = lv.obj(cont)
|
||||
obj.set_size(lv.SIZE_CONTENT, lv.SIZE_CONTENT)
|
||||
obj.set_grid_cell(lv.GRID_ALIGN.STRETCH, 1, 2,
|
||||
lv.GRID_ALIGN.STRETCH, 1, 1)
|
||||
label = lv.label(obj)
|
||||
label.set_text("c1-2, r1")
|
||||
|
||||
# Cell to 0;1 but 2 rows tall (span = 2).Set width and height to stretched.
|
||||
obj = lv.obj(cont)
|
||||
obj.set_size(lv.SIZE_CONTENT, lv.SIZE_CONTENT)
|
||||
obj.set_grid_cell(lv.GRID_ALIGN.STRETCH, 0, 1,
|
||||
lv.GRID_ALIGN.STRETCH, 1, 2)
|
||||
label = lv.label(obj)
|
||||
label.set_text("c0\nr1-2")
|
||||
@@ -1,36 +0,0 @@
|
||||
#
|
||||
# Demonstrate grid's "free unit"
|
||||
#
|
||||
|
||||
# Column 1: fix width 60 px
|
||||
# Column 2: 1 unit from the remaining free space
|
||||
# Column 3: 2 unit from the remaining free space
|
||||
|
||||
col_dsc = [60, lv.grid_fr(1), lv.grid_fr(2), lv.GRID_TEMPLATE_LAST]
|
||||
|
||||
# Row 1: fix width 60 px
|
||||
# Row 2: 1 unit from the remaining free space
|
||||
# Row 3: fix width 60 px
|
||||
|
||||
row_dsc = [40, lv.grid_fr(1), 40, lv.GRID_TEMPLATE_LAST]
|
||||
|
||||
# Create a container with grid
|
||||
cont = lv.obj(lv.screen_active())
|
||||
cont.set_size(300, 220)
|
||||
cont.center()
|
||||
cont.set_grid_dsc_array(col_dsc, row_dsc)
|
||||
|
||||
for i in range(9):
|
||||
col = i % 3
|
||||
row = i // 3
|
||||
|
||||
obj = lv.obj(cont)
|
||||
# Stretch the cell horizontally and vertically too
|
||||
# Set span to 1 to make the cell 1 column/row sized
|
||||
obj.set_grid_cell(lv.GRID_ALIGN.STRETCH, col, 1,
|
||||
lv.GRID_ALIGN.STRETCH, row, 1)
|
||||
|
||||
label = lv.label(obj)
|
||||
label.set_text("%d,%d"%(col, row))
|
||||
label.center()
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
#
|
||||
# Demonstrate track placement
|
||||
#
|
||||
|
||||
col_dsc = [60, 60, 60, lv.GRID_TEMPLATE_LAST]
|
||||
row_dsc = [40, 40, 40, lv.GRID_TEMPLATE_LAST]
|
||||
|
||||
|
||||
# Add space between the columns and move the rows to the bottom (end)
|
||||
|
||||
# Create a container with grid
|
||||
cont = lv.obj(lv.screen_active())
|
||||
cont.set_grid_align(lv.GRID_ALIGN.SPACE_BETWEEN, lv.GRID_ALIGN.END)
|
||||
cont.set_grid_dsc_array(col_dsc, row_dsc)
|
||||
cont.set_size(300, 220)
|
||||
cont.center()
|
||||
|
||||
|
||||
for i in range(9):
|
||||
col = i % 3
|
||||
row = i // 3
|
||||
|
||||
obj = lv.obj(cont)
|
||||
# Stretch the cell horizontally and vertically too
|
||||
# Set span to 1 to make the cell 1 column/row sized
|
||||
obj.set_grid_cell(lv.GRID_ALIGN.STRETCH, col, 1,
|
||||
lv.GRID_ALIGN.STRETCH, row, 1)
|
||||
|
||||
label = lv.label(obj)
|
||||
label.set_text("{:d}{:d}".format(col, row))
|
||||
label.center()
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
def row_gap_anim(obj, v):
|
||||
obj.set_style_pad_row(v, 0)
|
||||
|
||||
def column_gap_anim(obj, v):
|
||||
obj.set_style_pad_column(v, 0)
|
||||
|
||||
#
|
||||
# Demonstrate column and row gap
|
||||
#
|
||||
|
||||
# 60x60 cells
|
||||
col_dsc = [60, 60, 60, lv.GRID_TEMPLATE_LAST]
|
||||
row_dsc = [40, 40, 40, lv.GRID_TEMPLATE_LAST]
|
||||
|
||||
# Create a container with grid
|
||||
cont = lv.obj(lv.screen_active())
|
||||
cont.set_size(300, 220)
|
||||
cont.center()
|
||||
cont.set_grid_dsc_array(col_dsc, row_dsc)
|
||||
|
||||
for i in range(9):
|
||||
col = i % 3
|
||||
row = i // 3
|
||||
|
||||
obj = lv.obj(cont)
|
||||
obj.set_grid_cell(lv.GRID_ALIGN.STRETCH, col, 1,
|
||||
lv.GRID_ALIGN.STRETCH, row, 1)
|
||||
label = lv.label(obj)
|
||||
label.set_text("{:d},{:d}".format(col, row))
|
||||
label.center()
|
||||
|
||||
a_row = lv.anim_t()
|
||||
a_row.init()
|
||||
a_row.set_var(cont)
|
||||
a_row.set_values(0, 10)
|
||||
a_row.set_repeat_count(lv.ANIM_REPEAT_INFINITE)
|
||||
a_row.set_time(500)
|
||||
a_row.set_playback_duration(500)
|
||||
a_row. set_custom_exec_cb(lambda a,val: row_gap_anim(cont,val))
|
||||
lv.anim_t.start(a_row)
|
||||
|
||||
a_col = lv.anim_t()
|
||||
a_col.init()
|
||||
a_col.set_var(cont)
|
||||
a_col.set_values(0, 10)
|
||||
a_col.set_repeat_count(lv.ANIM_REPEAT_INFINITE)
|
||||
a_col.set_time(500)
|
||||
a_col.set_playback_duration(500)
|
||||
a_col. set_custom_exec_cb(lambda a,val: column_gap_anim(cont,val))
|
||||
lv.anim_t.start(a_col)
|
||||
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
#
|
||||
# Demonstrate RTL direction on grid
|
||||
#
|
||||
col_dsc = [60, 60, 60, lv.GRID_TEMPLATE_LAST]
|
||||
row_dsc = [40, 40, 40, lv.GRID_TEMPLATE_LAST]
|
||||
|
||||
# Create a container with grid
|
||||
cont = lv.obj(lv.screen_active())
|
||||
cont.set_size(300, 220)
|
||||
cont.center()
|
||||
cont.set_style_base_dir(lv.BASE_DIR.RTL,0)
|
||||
cont.set_grid_dsc_array(col_dsc, row_dsc)
|
||||
|
||||
for i in range(9):
|
||||
col = i % 3
|
||||
row = i // 3
|
||||
|
||||
obj = lv.obj(cont)
|
||||
# Stretch the cell horizontally and vertically too
|
||||
# Set span to 1 to make the cell 1 column/row sized
|
||||
obj.set_grid_cell(lv.GRID_ALIGN.STRETCH, col, 1,
|
||||
lv.GRID_ALIGN.STRETCH, row, 1)
|
||||
|
||||
label = lv.label(obj)
|
||||
label.set_text("{:d},{:d}".format(col, row))
|
||||
label.center()
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
#!/opt/bin/lv_micropython -i
|
||||
import lvgl as lv
|
||||
import display_driver
|
||||
|
||||
bg_color = lv.palette_lighten(lv.PALETTE.LIGHT_BLUE, 5)
|
||||
fg_color = lv.palette_darken(lv.PALETTE.BLUE, 4)
|
||||
|
||||
barcode = lv.barcode(lv.screen_active())
|
||||
barcode.set_height(50)
|
||||
barcode.center()
|
||||
|
||||
# Set color
|
||||
barcode.set_dark_color(fg_color)
|
||||
barcode.set_light_color(bg_color)
|
||||
|
||||
# Add a border with bg_color
|
||||
barcode.set_style_border_color(bg_color, 0)
|
||||
barcode.set_style_border_width(5, 0)
|
||||
|
||||
# Set data
|
||||
barcode.update("https://lvgl.io")
|
||||
@@ -1 +0,0 @@
|
||||
pass
|
||||
@@ -1,21 +0,0 @@
|
||||
#!/opt/bin/lv_micropython-ffmpeg -i
|
||||
import sys
|
||||
import lvgl as lv
|
||||
import display_driver
|
||||
|
||||
try:
|
||||
#
|
||||
# Open an image from a file
|
||||
#
|
||||
image = lv.image(lv.screen_active())
|
||||
image.set_src("ffmpeg.png")
|
||||
image.center()
|
||||
except Exception as e:
|
||||
print(e)
|
||||
# TODO
|
||||
# fallback for online examples
|
||||
|
||||
label = lv.label(lv.screen_active())
|
||||
label.set_text("FFmpeg is not installed")
|
||||
label.center()
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
#!/opt/bin/lv_micropython-ffmpeg -i
|
||||
import sys
|
||||
import lvgl as lv
|
||||
import display_driver
|
||||
|
||||
#
|
||||
# Open a video from a file
|
||||
#
|
||||
|
||||
# birds.mp4 is downloaded from http://www.videezy.com (Free Stock Footage by Videezy!)
|
||||
# https://www.videezy.com/abstract/44864-silhouettes-of-birds-over-the-sunset
|
||||
player = lv.ffmpeg_player(lv.screen_active())
|
||||
player.player_set_src("birds.mp4")
|
||||
player.player_set_auto_restart(True)
|
||||
player.player_set_cmd(lv.ffmpeg_player.PLAYER_CMD.START)
|
||||
# player.player_set_cmd(0)
|
||||
player.center()
|
||||
@@ -1,18 +0,0 @@
|
||||
#!/opt/bin/lv_micropython -i
|
||||
import lvgl as lv
|
||||
import display_driver
|
||||
import fs_driver
|
||||
|
||||
font = lv.freetype_font_create("./Lato-Regular.ttf", 24, lv.FREETYPE_FONT_STYLE.NORMAL)
|
||||
|
||||
# Create style with the new font
|
||||
style = lv.style_t()
|
||||
style.init()
|
||||
style.set_text_font(font)
|
||||
style.set_text_align(lv.TEXT_ALIGN.CENTER)
|
||||
|
||||
# Create a label with the new style
|
||||
label = lv.label(lv.screen_active())
|
||||
label.add_style(style, 0)
|
||||
label.set_text("Hello world\nI'm a font created with FreeType")
|
||||
label.center()
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,27 +0,0 @@
|
||||
#!/opt/bin/lv_micropython -i
|
||||
import lvgl as lv
|
||||
import display_driver
|
||||
import fs_driver
|
||||
from img_bulb_gif import img_bulb_gif_map
|
||||
|
||||
fs_drv = lv.fs_drv_t()
|
||||
fs_driver.fs_register(fs_drv, 'S')
|
||||
#
|
||||
# Open a GIF image from a file and a variable
|
||||
#
|
||||
image_bulb_gif = lv.image_dsc_t(
|
||||
{
|
||||
"header": {"w": 0, "h": 0, "cf": lv.COLOR_FORMAT.RAW},
|
||||
"data_size": 0,
|
||||
"data": img_bulb_gif_map,
|
||||
}
|
||||
)
|
||||
image1 = lv.gif(lv.screen_active())
|
||||
image1.set_src(image_bulb_gif)
|
||||
image1.align(lv.ALIGN.RIGHT_MID, -150, 0)
|
||||
|
||||
image2 = lv.gif(lv.screen_active())
|
||||
# The File system is attached to letter 'S'
|
||||
|
||||
image2.set_src("S:bulb.gif")
|
||||
image2.align(lv.ALIGN.RIGHT_MID, -250, 0)
|
||||
@@ -1,13 +0,0 @@
|
||||
#!/opt/bin/lv_micropython -i
|
||||
import lvgl as lv
|
||||
import display_driver
|
||||
import fs_driver
|
||||
|
||||
fs_drv = lv.fs_drv_t()
|
||||
fs_driver.fs_register(fs_drv, 'S')
|
||||
|
||||
wp = lv.image(lv.screen_active())
|
||||
# The File system is attached to letter 'S'
|
||||
|
||||
wp.set_src("S:flower.jpg")
|
||||
wp.center()
|
||||
@@ -1,11 +0,0 @@
|
||||
#!/opt/bin/lv_micropython -i
|
||||
import lvgl as lv
|
||||
import display_driver
|
||||
import fs_driver
|
||||
|
||||
fs_drv = lv.fs_drv_t()
|
||||
fs_driver.fs_register(fs_drv, 'S')
|
||||
|
||||
image = lv.image(lv.screen_active())
|
||||
image.set_src("S:png_demo.png")
|
||||
image.center()
|
||||
@@ -1,336 +0,0 @@
|
||||
|
||||
img_wink_png_map = bytes([
|
||||
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
|
||||
0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x32, 0x08, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x3f, 0x88,
|
||||
0xb1, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, 0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0,
|
||||
0xbd, 0xa7, 0x93, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00,
|
||||
0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, 0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45,
|
||||
0x07, 0xe5, 0x05, 0x07, 0x0c, 0x1b, 0x26, 0xad, 0x4b, 0x20, 0x5b, 0x00, 0x00, 0x00, 0x1d, 0x69,
|
||||
0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43,
|
||||
0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50,
|
||||
0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x13, 0x8a, 0x49, 0x44, 0x41, 0x54, 0x68, 0xde, 0xad, 0x9a,
|
||||
0x69, 0x94, 0x5d, 0xd5, 0x75, 0xe7, 0x7f, 0xe7, 0xdc, 0x7b, 0xdf, 0x7d, 0x43, 0xd5, 0xab, 0xe9,
|
||||
0x55, 0x49, 0x05, 0xaa, 0xd2, 0x80, 0x10, 0x12, 0x48, 0xa8, 0x24, 0x04, 0x66, 0x72, 0x6c, 0xec,
|
||||
0xd8, 0xd0, 0x6e, 0x27, 0xc4, 0x6d, 0x4c, 0x08, 0x21, 0xdd, 0xed, 0x24, 0xbd, 0x1c, 0x67, 0x39,
|
||||
0xcb, 0x6d, 0x33, 0xc7, 0x6e, 0x9b, 0xc6, 0x18, 0x64, 0x90, 0x43, 0xda, 0xb1, 0x1d, 0x7f, 0x31,
|
||||
0x89, 0x93, 0xb8, 0x33, 0x38, 0x84, 0x15, 0x63, 0xe3, 0x38, 0x84, 0x80, 0x99, 0x67, 0x24, 0x10,
|
||||
0x83, 0x06, 0x84, 0x84, 0x54, 0x52, 0x95, 0x6a, 0x7e, 0xf5, 0xa6, 0x3b, 0x9c, 0xb3, 0xfb, 0xc3,
|
||||
0xbd, 0x6f, 0x28, 0xa1, 0xac, 0x0e, 0x8e, 0x6b, 0xad, 0xb3, 0x6e, 0xd5, 0x7b, 0xa7, 0xce, 0xd9,
|
||||
0xff, 0xb3, 0xa7, 0xff, 0xde, 0xf7, 0x28, 0x7e, 0x8e, 0x9f, 0x97, 0x6f, 0x18, 0xe2, 0xec, 0x3b,
|
||||
0x8f, 0x03, 0xf0, 0xe0, 0xd5, 0x5b, 0x19, 0x1e, 0xdd, 0xa7, 0x4b, 0xab, 0x95, 0x5a, 0x98, 0xee,
|
||||
0xe9, 0x6d, 0xcc, 0x95, 0xcf, 0xcb, 0xf5, 0xc8, 0xe6, 0x6c, 0x97, 0x3e, 0x5d, 0x3b, 0x76, 0xd0,
|
||||
0x51, 0xaa, 0x28, 0x56, 0x10, 0xc3, 0xa2, 0x89, 0xd5, 0x74, 0x58, 0xe3, 0x50, 0xa3, 0xa6, 0x5e,
|
||||
0x15, 0xed, 0xbf, 0x30, 0x30, 0x5c, 0x38, 0x52, 0x9f, 0x1a, 0x8f, 0xe7, 0xaa, 0x3d, 0xb2, 0xed,
|
||||
0xee, 0xe3, 0xd2, 0x5e, 0x7f, 0x19, 0x67, 0xdf, 0x39, 0xf9, 0xae, 0x64, 0x52, 0xef, 0x66, 0xf2,
|
||||
0x4b, 0xd7, 0x0d, 0xb3, 0x65, 0xc7, 0x31, 0x00, 0x7e, 0x70, 0xee, 0x6a, 0xb5, 0xed, 0x13, 0xc7,
|
||||
0xfd, 0x58, 0x7a, 0x46, 0x95, 0xa9, 0x7c, 0xa2, 0xab, 0xa4, 0xaf, 0xcc, 0xe4, 0xe3, 0xb3, 0xf3,
|
||||
0xbd, 0x1a, 0x37, 0x23, 0x80, 0x80, 0xa8, 0xe4, 0x69, 0x01, 0x63, 0x51, 0x06, 0xc4, 0x28, 0x6c,
|
||||
0x03, 0x1a, 0x65, 0xa1, 0x51, 0xd3, 0xc7, 0xeb, 0x55, 0x1e, 0x08, 0x43, 0xef, 0xaf, 0x5d, 0x47,
|
||||
0xbf, 0x30, 0xb7, 0xa0, 0xcb, 0x5b, 0xef, 0x9e, 0x8a, 0x9a, 0xfb, 0xed, 0xba, 0x6e, 0x19, 0x9b,
|
||||
0x77, 0x4c, 0xfe, 0xe2, 0x80, 0xec, 0xff, 0xf6, 0xc7, 0x88, 0x8f, 0xfd, 0x88, 0xf5, 0x5f, 0x49,
|
||||
0xf6, 0x78, 0xe3, 0xcb, 0x5d, 0x5d, 0x5e, 0x2e, 0x7b, 0x6e, 0xb6, 0x18, 0x7f, 0x26, 0xdf, 0x6b,
|
||||
0xff, 0x4b, 0xd7, 0xa0, 0x42, 0x39, 0x2e, 0x38, 0x59, 0x20, 0x83, 0x68, 0x0f, 0x94, 0x87, 0xd2,
|
||||
0x39, 0x40, 0x83, 0x44, 0x88, 0xa9, 0x83, 0x09, 0xc0, 0x84, 0xa8, 0x30, 0x40, 0x05, 0x01, 0x84,
|
||||
0x06, 0x22, 0x45, 0xa3, 0x6c, 0xa9, 0x2e, 0xea, 0xb7, 0xea, 0x81, 0xf7, 0x4d, 0x1b, 0xdb, 0xfb,
|
||||
0x0e, 0x8e, 0x17, 0x0f, 0x5f, 0xf2, 0xdd, 0x23, 0x31, 0xc0, 0xab, 0x5f, 0x7b, 0x2f, 0x67, 0xdd,
|
||||
0xf8, 0xd8, 0x7f, 0x1c, 0xc8, 0xae, 0x1b, 0x47, 0xd8, 0xfc, 0xb5, 0xc3, 0x00, 0xfc, 0xf4, 0xd2,
|
||||
0x62, 0x66, 0xed, 0x07, 0x33, 0x9b, 0xb3, 0xdd, 0xe6, 0xf3, 0xdd, 0x83, 0x72, 0x55, 0xae, 0x17,
|
||||
0x54, 0xa6, 0x1b, 0x71, 0xfb, 0x20, 0xbb, 0x12, 0xd5, 0xb3, 0x09, 0x95, 0x3f, 0x1d, 0x72, 0x23,
|
||||
0xe0, 0xf5, 0x82, 0xd2, 0xed, 0x85, 0x24, 0x86, 0x60, 0x06, 0xea, 0x87, 0x91, 0xea, 0x5e, 0x98,
|
||||
0x7f, 0x05, 0x16, 0x0f, 0x41, 0x75, 0x0e, 0x55, 0xab, 0xa0, 0x02, 0x4b, 0x54, 0x83, 0xc5, 0xb2,
|
||||
0x3a, 0xdc, 0x08, 0xdd, 0xdb, 0xe6, 0xe6, 0xd5, 0x8f, 0x37, 0x7d, 0x7d, 0x61, 0x1c, 0xe0, 0xa5,
|
||||
0xeb, 0x57, 0xb0, 0xe5, 0xae, 0x23, 0x3f, 0x3f, 0x90, 0x5d, 0xd7, 0x95, 0xd8, 0xbc, 0x63, 0x3a,
|
||||
0xb5, 0xdb, 0x81, 0xc1, 0xbe, 0x11, 0xf9, 0xaf, 0x85, 0x12, 0x37, 0x15, 0x06, 0x28, 0x39, 0xd9,
|
||||
0x02, 0xf8, 0xa3, 0xd0, 0x77, 0x1e, 0xaa, 0xff, 0x62, 0xc8, 0xad, 0x04, 0x31, 0xe9, 0xb0, 0x24,
|
||||
0xf6, 0x74, 0x92, 0xed, 0x54, 0x3a, 0x50, 0x50, 0x3f, 0x02, 0x33, 0xcf, 0x20, 0x53, 0xcf, 0xc3,
|
||||
0xec, 0x01, 0x58, 0x9c, 0x46, 0x87, 0x50, 0xaf, 0xc2, 0x62, 0xc5, 0xf9, 0x49, 0xad, 0xae, 0xef,
|
||||
0x58, 0x73, 0x6b, 0xf9, 0x31, 0x80, 0x9d, 0x37, 0x0c, 0x33, 0x76, 0xe7, 0xb1, 0x77, 0x0f, 0x64,
|
||||
0xd7, 0xf5, 0x7d, 0x6c, 0xbe, 0x6b, 0x0e, 0x80, 0x3d, 0xb7, 0x0e, 0x9c, 0xd5, 0x73, 0x8a, 0xfa,
|
||||
0x52, 0xf7, 0x32, 0x75, 0xa5, 0xdf, 0x25, 0x90, 0x1d, 0x81, 0xbe, 0x8b, 0x50, 0x43, 0x97, 0x42,
|
||||
0x66, 0x28, 0x39, 0x6d, 0x31, 0x27, 0x59, 0x45, 0xda, 0xcf, 0x14, 0xa0, 0x12, 0x83, 0x60, 0xdb,
|
||||
0xf3, 0xb5, 0x87, 0x8a, 0xab, 0xc8, 0xec, 0x0b, 0xc8, 0xb1, 0xa7, 0x60, 0xe2, 0x15, 0x54, 0xb5,
|
||||
0x82, 0xc4, 0x9a, 0x85, 0x05, 0xa6, 0x2a, 0x55, 0xe7, 0xe6, 0xaf, 0xfd, 0xf0, 0xb2, 0xef, 0x7d,
|
||||
0xfb, 0xc5, 0x1f, 0xc4, 0x3b, 0x3f, 0xd7, 0xcb, 0xd8, 0xdd, 0xf3, 0xff, 0x7e, 0x20, 0x2f, 0xdf,
|
||||
0x50, 0xe2, 0xec, 0x3b, 0x13, 0x4d, 0xec, 0xbb, 0xbd, 0xff, 0xe2, 0xbe, 0x11, 0xe7, 0xae, 0xc2,
|
||||
0xa0, 0x3e, 0xdf, 0xcb, 0x6b, 0xe8, 0xda, 0x8c, 0x5a, 0x76, 0x39, 0x14, 0xcf, 0x4e, 0x65, 0x3c,
|
||||
0x19, 0x00, 0x8b, 0x12, 0x69, 0x09, 0xac, 0xc4, 0x22, 0x62, 0x81, 0xb6, 0xb6, 0x94, 0x98, 0x44,
|
||||
0x6b, 0x62, 0x12, 0xa0, 0xda, 0x43, 0xa2, 0x05, 0x98, 0x7c, 0x16, 0x79, 0xfb, 0x31, 0x98, 0x3c,
|
||||
0x80, 0xb2, 0x0e, 0xd5, 0x2a, 0x71, 0xb9, 0xa2, 0xbf, 0xf2, 0xe1, 0xff, 0x75, 0xda, 0x57, 0x5f,
|
||||
0x63, 0x97, 0xd9, 0x79, 0xfd, 0x72, 0xc6, 0xee, 0x9a, 0xf8, 0xff, 0x03, 0xd9, 0x79, 0xdd, 0x10,
|
||||
0x63, 0x3b, 0x92, 0xd0, 0xba, 0xff, 0x8e, 0xfe, 0x4b, 0xfa, 0x56, 0x39, 0xdf, 0x28, 0x94, 0xdc,
|
||||
0x8d, 0xae, 0xef, 0x42, 0xdf, 0xc5, 0xa8, 0xe1, 0x2b, 0xc0, 0x1f, 0x6e, 0x0b, 0xd0, 0x71, 0xfa,
|
||||
0x0a, 0x0b, 0xa9, 0xd0, 0x4b, 0x4e, 0x5e, 0x92, 0xcf, 0x15, 0x6d, 0xe1, 0x45, 0x2c, 0x8a, 0x14,
|
||||
0x60, 0x13, 0x14, 0x02, 0xca, 0x81, 0x85, 0x03, 0x70, 0xe8, 0x11, 0xe4, 0xd0, 0x73, 0x28, 0xeb,
|
||||
0xd0, 0x68, 0x88, 0x99, 0x9d, 0x77, 0x76, 0x8c, 0x7c, 0xa9, 0x72, 0x13, 0xc0, 0xce, 0x9b, 0x4f,
|
||||
0x63, 0xec, 0x8e, 0x37, 0xff, 0x6d, 0x20, 0xaf, 0x7c, 0x69, 0x3d, 0x9b, 0x6e, 0x7d, 0x23, 0xd1,
|
||||
0xc4, 0xf6, 0xd2, 0x7b, 0xfa, 0x47, 0xf5, 0x9f, 0x77, 0x2d, 0xf3, 0xd6, 0x3b, 0x9e, 0x03, 0xfd,
|
||||
0xef, 0x47, 0x9d, 0x72, 0x25, 0x78, 0xfd, 0x20, 0x31, 0xda, 0x71, 0x00, 0x41, 0x4c, 0x94, 0x0a,
|
||||
0xd3, 0x71, 0xe2, 0x1d, 0xc2, 0xa9, 0xa6, 0xbf, 0x88, 0x41, 0x3a, 0xb5, 0xd0, 0xfa, 0xbc, 0x03,
|
||||
0x88, 0x4d, 0xd7, 0x50, 0x1a, 0x82, 0x39, 0xe4, 0xd0, 0xa3, 0xb0, 0xff, 0x31, 0xb0, 0x2e, 0x41,
|
||||
0x40, 0x70, 0x7c, 0x46, 0x6f, 0x5f, 0xfd, 0xbf, 0x2b, 0xb7, 0xc8, 0x93, 0xb0, 0xff, 0xe0, 0xe7,
|
||||
0x38, 0xfd, 0xea, 0xbb, 0x4f, 0x0e, 0x44, 0x9e, 0x06, 0x75, 0x3e, 0xec, 0xbf, 0x63, 0x68, 0x4d,
|
||||
0xf7, 0x72, 0xfe, 0xae, 0x6f, 0xa5, 0x7f, 0x8e, 0x76, 0x25, 0xf1, 0x87, 0x53, 0xaf, 0x49, 0x40,
|
||||
0xd8, 0x08, 0x9d, 0xcd, 0x30, 0x77, 0xe8, 0x6d, 0x4c, 0x14, 0xd2, 0x37, 0x3c, 0x88, 0x52, 0xd2,
|
||||
0x21, 0x98, 0x39, 0x41, 0xf8, 0x26, 0xc0, 0x7f, 0x43, 0x78, 0x39, 0x11, 0x4c, 0xf2, 0x14, 0x80,
|
||||
0xb8, 0x06, 0x6f, 0xfd, 0x0c, 0xde, 0x7c, 0x0a, 0xf0, 0x68, 0x04, 0xcc, 0x1e, 0x3e, 0xea, 0x5d,
|
||||
0xbf, 0x61, 0xfb, 0xc2, 0x3d, 0x6f, 0x5c, 0xeb, 0xa9, 0xf5, 0x5f, 0x8f, 0x5a, 0x26, 0xd1, 0x8a,
|
||||
0x8f, 0xbb, 0x6f, 0x2e, 0xa1, 0xce, 0x87, 0xdd, 0x37, 0xf6, 0xf4, 0xe6, 0x7a, 0xf8, 0x4a, 0xdf,
|
||||
0x68, 0x36, 0x01, 0xd1, 0x75, 0x26, 0x6a, 0xf9, 0xc7, 0x50, 0x6e, 0x2f, 0xd8, 0x06, 0xda, 0x85,
|
||||
0xf1, 0x5d, 0x3b, 0xf9, 0xfe, 0x1f, 0x7e, 0x95, 0x3f, 0xbe, 0xe6, 0xb3, 0x4c, 0xee, 0x7f, 0x13,
|
||||
0x4c, 0x80, 0xb2, 0x01, 0x2a, 0x7d, 0x62, 0x1b, 0x88, 0x69, 0x20, 0x36, 0x00, 0x69, 0x80, 0x0d,
|
||||
0xc0, 0x86, 0x1d, 0x23, 0x48, 0x86, 0x49, 0x9f, 0x36, 0x99, 0x23, 0x26, 0x40, 0x6c, 0x88, 0x98,
|
||||
0x10, 0xe2, 0x46, 0x22, 0xd8, 0xc8, 0x36, 0x18, 0x5c, 0x05, 0x62, 0xf1, 0x33, 0xf4, 0x9f, 0xb2,
|
||||
0x2c, 0xba, 0xe1, 0xa9, 0x4f, 0x97, 0xc6, 0xd6, 0x7f, 0x3d, 0x92, 0x97, 0x3e, 0x37, 0xc0, 0x12,
|
||||
0x20, 0xaf, 0x6f, 0xbf, 0x90, 0x8d, 0x77, 0x4c, 0xf3, 0xd3, 0x4b, 0xbb, 0xbd, 0xc2, 0x90, 0x7f,
|
||||
0x79, 0xef, 0x4a, 0xef, 0x6a, 0x27, 0xa3, 0x21, 0xb3, 0x1c, 0x55, 0xfa, 0x00, 0x64, 0x96, 0x23,
|
||||
0xa6, 0x86, 0x92, 0x64, 0xd3, 0x87, 0xee, 0xf9, 0x1b, 0x0e, 0xbc, 0xf0, 0x0a, 0xc3, 0x83, 0x73,
|
||||
0x44, 0xf3, 0x7b, 0xc0, 0xd4, 0x11, 0xdb, 0x48, 0x47, 0x80, 0x48, 0x08, 0xd2, 0x21, 0x6c, 0x4b,
|
||||
0xe0, 0xce, 0xbf, 0xc3, 0xb6, 0xf0, 0x26, 0x15, 0xde, 0x86, 0xe9, 0x77, 0x8d, 0xf6, 0x50, 0x0a,
|
||||
0xd6, 0x5c, 0x08, 0x19, 0x8d, 0x52, 0x90, 0xf5, 0x39, 0x63, 0xf5, 0x68, 0xfd, 0x36, 0x80, 0x2d,
|
||||
0x77, 0xcf, 0x2c, 0x05, 0xb2, 0xe1, 0xa6, 0x27, 0x01, 0xd8, 0xf0, 0xab, 0xbd, 0xc3, 0x85, 0x41,
|
||||
0xbd, 0x23, 0xdb, 0xe3, 0x23, 0x78, 0xd0, 0xbd, 0x11, 0xba, 0xb7, 0x82, 0xa9, 0x82, 0x6d, 0xa0,
|
||||
0x1c, 0x61, 0xdf, 0x53, 0xcf, 0x72, 0xf4, 0x8d, 0xfd, 0xfc, 0xca, 0x15, 0x9a, 0x2b, 0x3e, 0xbd,
|
||||
0x8e, 0xe5, 0xab, 0x4a, 0x40, 0x08, 0x92, 0x0e, 0xdb, 0x00, 0xd3, 0xe8, 0x10, 0xbe, 0x53, 0xc0,
|
||||
0xf6, 0x48, 0x34, 0x76, 0xc2, 0x77, 0xa6, 0x91, 0x1e, 0x40, 0x73, 0xad, 0x44, 0xa3, 0x2a, 0x9b,
|
||||
0x85, 0xe5, 0xa7, 0x03, 0x06, 0xc7, 0x81, 0x62, 0xb7, 0x5c, 0xb0, 0xf7, 0x0b, 0xdd, 0xbf, 0xdf,
|
||||
0xcc, 0x75, 0x00, 0xfa, 0xf5, 0x3b, 0xce, 0x4f, 0xf2, 0xc6, 0xb5, 0x3d, 0x59, 0x1b, 0x36, 0x3e,
|
||||
0xdd, 0x37, 0x9a, 0x2d, 0x89, 0x08, 0xe4, 0x4e, 0x41, 0xf5, 0x5d, 0x90, 0x2e, 0xdc, 0x40, 0xd9,
|
||||
0x10, 0x1c, 0xc3, 0x6b, 0x8f, 0xbf, 0xc4, 0x59, 0x1b, 0xa6, 0xd9, 0xf4, 0xc1, 0x8b, 0x29, 0x9d,
|
||||
0xf7, 0x07, 0x78, 0x3d, 0x2b, 0x52, 0x61, 0x52, 0x00, 0x9d, 0x26, 0x74, 0x52, 0xd3, 0x09, 0x96,
|
||||
0x9e, 0xbe, 0x09, 0xda, 0xda, 0x6b, 0x3d, 0x1b, 0x09, 0x00, 0x09, 0x50, 0x12, 0x02, 0x21, 0xaa,
|
||||
0x74, 0x2a, 0xe8, 0xc4, 0x25, 0x5c, 0x87, 0xfe, 0xc1, 0x7e, 0x73, 0xcd, 0x7d, 0x57, 0xad, 0x1c,
|
||||
0x68, 0x26, 0x6c, 0x77, 0xc3, 0xcd, 0x4f, 0x03, 0xd0, 0xbf, 0xba, 0xbb, 0x94, 0xef, 0x33, 0x9f,
|
||||
0xd7, 0x9e, 0x83, 0xe0, 0x43, 0x7e, 0x2d, 0xf8, 0xa7, 0xa0, 0x4c, 0x2d, 0x71, 0x44, 0x25, 0x44,
|
||||
0x0b, 0x55, 0xa4, 0x72, 0x80, 0xb5, 0xdb, 0xce, 0x64, 0x60, 0xe3, 0xaf, 0x22, 0xda, 0x4f, 0x4f,
|
||||
0x51, 0x3a, 0x9c, 0xd9, 0xb4, 0x9d, 0xb7, 0x95, 0x3f, 0x52, 0x87, 0xb6, 0x16, 0x6b, 0x63, 0xac,
|
||||
0x89, 0x40, 0x2c, 0x5a, 0x83, 0xd6, 0xd2, 0xfe, 0x3f, 0x3a, 0x02, 0x45, 0xcb, 0xf1, 0xd3, 0x40,
|
||||
0xe1, 0x79, 0xe0, 0x29, 0x08, 0xc0, 0xd1, 0xe0, 0xfb, 0x9c, 0x35, 0xb6, 0x6e, 0xe6, 0x93, 0xc0,
|
||||
0x0e, 0x00, 0x07, 0x60, 0xe7, 0xb5, 0x3d, 0xae, 0x93, 0x91, 0x4f, 0x2d, 0xdb, 0x50, 0xb8, 0x14,
|
||||
0xad, 0xc1, 0x2f, 0xa1, 0x4a, 0xef, 0x47, 0x39, 0x99, 0xc4, 0x61, 0x89, 0xd1, 0x8e, 0xe5, 0xf0,
|
||||
0xee, 0x37, 0xc9, 0x98, 0x43, 0xac, 0x7e, 0xcf, 0x2f, 0x93, 0xe9, 0x1e, 0x02, 0x13, 0x82, 0x8d,
|
||||
0x41, 0xa2, 0x64, 0x10, 0x81, 0x8d, 0x11, 0x1b, 0xa7, 0xd9, 0xbe, 0x63, 0xd8, 0x88, 0xe9, 0xa3,
|
||||
0xd3, 0x3c, 0xf3, 0xc0, 0x8b, 0x3c, 0x75, 0xff, 0xf3, 0xbc, 0xf1, 0xcc, 0x1e, 0x2a, 0xb3, 0x0b,
|
||||
0x14, 0xba, 0x1c, 0x72, 0x79, 0x85, 0x52, 0x06, 0x4d, 0x8c, 0x22, 0x42, 0x49, 0x9c, 0xac, 0x23,
|
||||
0x21, 0xd8, 0x28, 0xd9, 0xa7, 0x32, 0x0e, 0x8b, 0x53, 0x60, 0x54, 0x33, 0x7d, 0xf9, 0x5a, 0x8b,
|
||||
0xda, 0xdc, 0x7d, 0xf6, 0x7d, 0xf7, 0xbe, 0x7e, 0x2c, 0x74, 0x13, 0x6d, 0x14, 0x7c, 0xbf, 0xcb,
|
||||
0xfe, 0x8e, 0xce, 0x38, 0x88, 0x38, 0x90, 0x29, 0x81, 0xbf, 0x0c, 0x69, 0x6a, 0x43, 0x2c, 0x28,
|
||||
0x85, 0x69, 0xcc, 0xb3, 0x62, 0xec, 0x42, 0xba, 0x4b, 0x43, 0xd8, 0xb8, 0xb6, 0x24, 0xd9, 0xc9,
|
||||
0x92, 0x70, 0x6a, 0x96, 0x84, 0x54, 0xad, 0x85, 0xb9, 0xa9, 0x05, 0xfe, 0xf5, 0xff, 0x3e, 0xcc,
|
||||
0xe4, 0xbe, 0x37, 0x39, 0x73, 0x4b, 0x0f, 0x5d, 0x3d, 0x1e, 0x8d, 0xd9, 0x79, 0x9e, 0xbb, 0x7f,
|
||||
0x1f, 0xe7, 0x7e, 0x64, 0x1b, 0x83, 0x23, 0x7d, 0x2c, 0xcc, 0x87, 0xcc, 0x97, 0x03, 0x72, 0xbe,
|
||||
0xd0, 0xdf, 0x2d, 0x29, 0xa0, 0x06, 0x34, 0x8e, 0x23, 0x0b, 0x87, 0x50, 0x19, 0x07, 0x22, 0x01,
|
||||
0x23, 0xb8, 0x2e, 0xf8, 0x19, 0xb5, 0x7e, 0xcb, 0xda, 0xbd, 0x97, 0x02, 0xf7, 0xba, 0xcf, 0x7d,
|
||||
0x66, 0x98, 0xfa, 0x3c, 0xeb, 0xfa, 0x46, 0xdc, 0xd3, 0x11, 0x05, 0x4e, 0x1e, 0x95, 0x5b, 0x09,
|
||||
0xa6, 0x9e, 0x2c, 0x92, 0x0a, 0x6a, 0x03, 0xcb, 0xea, 0x4d, 0xab, 0x00, 0xc1, 0x5a, 0x83, 0xc2,
|
||||
0x24, 0x7e, 0x83, 0xc5, 0x88, 0x4e, 0xcc, 0x40, 0xe2, 0x0e, 0xda, 0x61, 0x5b, 0x79, 0x43, 0x8c,
|
||||
0xc5, 0xcf, 0x84, 0xbc, 0xef, 0x23, 0x25, 0x06, 0x4a, 0x7d, 0xf8, 0xc5, 0x65, 0x90, 0x29, 0x24,
|
||||
0x59, 0x4c, 0x37, 0xa8, 0x4e, 0x2f, 0xf2, 0xf0, 0xcf, 0x8e, 0xf1, 0xd0, 0xb3, 0x65, 0x76, 0xef,
|
||||
0x5b, 0xe4, 0x03, 0x5b, 0x35, 0x9f, 0xba, 0x3c, 0x87, 0x23, 0xb5, 0x54, 0x0e, 0x9b, 0xd8, 0x8e,
|
||||
0x23, 0xe0, 0x28, 0x50, 0x92, 0x90, 0x00, 0xcd, 0x48, 0x5f, 0x2f, 0x17, 0x00, 0xf7, 0xba, 0x5d,
|
||||
0xa5, 0x50, 0x3b, 0x9e, 0xfe, 0xb5, 0x7c, 0xa9, 0x88, 0xa0, 0x40, 0xfb, 0xe0, 0x2f, 0x03, 0x53,
|
||||
0x4b, 0xcd, 0x66, 0xa9, 0x50, 0x00, 0x3a, 0x98, 0x62, 0x71, 0x62, 0x9c, 0xc9, 0x63, 0x53, 0x64,
|
||||
0x33, 0x2e, 0x2b, 0x46, 0x06, 0x90, 0xae, 0x21, 0xac, 0x93, 0x49, 0xe7, 0x37, 0x35, 0x12, 0x03,
|
||||
0x31, 0xd8, 0x90, 0x7c, 0x3e, 0xa4, 0x70, 0xc6, 0xa9, 0x88, 0x69, 0x60, 0xa2, 0x2a, 0x54, 0x66,
|
||||
0x70, 0x1c, 0xc3, 0xf4, 0x74, 0x9d, 0xef, 0xde, 0x37, 0xc5, 0x4f, 0x9e, 0xb1, 0x6c, 0x5c, 0x57,
|
||||
0xe4, 0xca, 0x8b, 0x84, 0x4d, 0x2b, 0x0d, 0xd1, 0x62, 0x15, 0xa7, 0x4b, 0x81, 0xf2, 0x40, 0x27,
|
||||
0x72, 0x88, 0x23, 0x28, 0x27, 0x2d, 0x71, 0x0c, 0xb8, 0x8e, 0xe0, 0x67, 0xec, 0xfa, 0x7f, 0xf8,
|
||||
0xf5, 0x95, 0xfd, 0x6e, 0x71, 0x59, 0x84, 0x72, 0xf3, 0x97, 0xb4, 0xa8, 0xb5, 0xe3, 0x83, 0x53,
|
||||
0x48, 0x9d, 0xd8, 0x74, 0x38, 0xad, 0xa0, 0x94, 0xa0, 0x17, 0x0f, 0xf2, 0xc4, 0x03, 0x0f, 0xf3,
|
||||
0x8f, 0x3f, 0x3b, 0xc2, 0xa4, 0x9c, 0x42, 0x57, 0x06, 0xce, 0xec, 0x1e, 0xe7, 0xaa, 0xcb, 0x37,
|
||||
0xd0, 0xbf, 0xe1, 0x5c, 0x6c, 0x26, 0x07, 0x12, 0x27, 0x66, 0x21, 0x21, 0x22, 0x21, 0x22, 0x8d,
|
||||
0xc4, 0xf4, 0x62, 0x83, 0x12, 0x83, 0x02, 0x94, 0xeb, 0x51, 0xad, 0x5a, 0xbe, 0xf5, 0xf7, 0x65,
|
||||
0x0e, 0xcd, 0xaf, 0xe1, 0x1b, 0xb7, 0x6d, 0x61, 0x53, 0xdf, 0x01, 0xe2, 0x50, 0x13, 0xeb, 0x6e,
|
||||
0xa2, 0xb9, 0x37, 0x80, 0xe3, 0x49, 0x1e, 0x91, 0x94, 0xfa, 0x6b, 0x95, 0x24, 0x0c, 0xa5, 0x40,
|
||||
0x04, 0xc7, 0x01, 0xd7, 0x91, 0x15, 0x6b, 0x86, 0x67, 0xce, 0x70, 0x73, 0xa7, 0x9e, 0xa7, 0x4d,
|
||||
0xf9, 0xd5, 0x73, 0x40, 0x27, 0x84, 0xcd, 0xc9, 0x27, 0x9a, 0x30, 0x01, 0x82, 0x49, 0xf9, 0x8f,
|
||||
0x05, 0xa5, 0xd1, 0xf5, 0xc3, 0xfc, 0xe3, 0xf7, 0x7f, 0xc8, 0x9f, 0x3c, 0xd6, 0x83, 0xb7, 0xf5,
|
||||
0xcb, 0xac, 0x1e, 0x7b, 0x0f, 0x91, 0x11, 0x1e, 0xdc, 0xf3, 0x1c, 0x6f, 0xfd, 0xcd, 0xb7, 0xf8,
|
||||
0xd2, 0x55, 0x4f, 0xd2, 0xb5, 0xe9, 0xa2, 0x94, 0xb6, 0x47, 0x69, 0x24, 0x22, 0x39, 0xd5, 0x44,
|
||||
0x7c, 0x04, 0x41, 0xa1, 0x51, 0x1e, 0xfc, 0xdd, 0x3f, 0xcf, 0x12, 0x66, 0xcf, 0x66, 0xfb, 0x6d,
|
||||
0x57, 0xd2, 0xb7, 0xf8, 0x02, 0x8b, 0x0b, 0x45, 0x0a, 0xcb, 0x47, 0xc8, 0xd6, 0xde, 0xc6, 0xb7,
|
||||
0x71, 0x12, 0xb4, 0x44, 0xb5, 0xfe, 0x17, 0x9d, 0x9a, 0x97, 0x6e, 0x93, 0x2b, 0xa5, 0xd5, 0xf2,
|
||||
0xde, 0x5e, 0xbd, 0xca, 0x9d, 0x7c, 0x65, 0x7c, 0xf8, 0x94, 0xf5, 0x3a, 0x9f, 0x14, 0x3d, 0x1a,
|
||||
0xb4, 0x9f, 0x94, 0xa5, 0x36, 0x5c, 0xc2, 0x4a, 0x1d, 0x15, 0xf0, 0xec, 0xbf, 0x3e, 0xc3, 0x77,
|
||||
0x9f, 0x1d, 0xe0, 0xcc, 0xdf, 0xbc, 0x9d, 0xf7, 0xff, 0xda, 0xc7, 0xc9, 0xf9, 0xc9, 0xb7, 0xb5,
|
||||
0xf0, 0xc3, 0x3c, 0xfe, 0xc0, 0x39, 0x7c, 0xe3, 0xfe, 0x4f, 0xf2, 0xc5, 0x55, 0x47, 0xb1, 0xc5,
|
||||
0x15, 0x2d, 0x66, 0xac, 0x50, 0x88, 0x48, 0x5a, 0x2d, 0x5a, 0x40, 0xa3, 0x5d, 0x87, 0x57, 0x5e,
|
||||
0x9d, 0x67, 0x31, 0x1a, 0xe4, 0xb7, 0x7f, 0xf3, 0x7d, 0x0c, 0x66, 0xea, 0x94, 0xe7, 0x0f, 0x53,
|
||||
0x28, 0xe6, 0x61, 0xef, 0x3f, 0x63, 0xe7, 0xf6, 0x42, 0xb7, 0x86, 0xbe, 0xde, 0xb4, 0x10, 0x63,
|
||||
0xe9, 0xd0, 0x4b, 0x88, 0xef, 0x40, 0xc6, 0x63, 0xb9, 0x8e, 0xca, 0xf3, 0x6b, 0xfd, 0x6e, 0xb7,
|
||||
0xb5, 0x2d, 0xa2, 0x96, 0x64, 0x60, 0x6c, 0x80, 0x22, 0x22, 0x9e, 0x3a, 0xc4, 0xf7, 0x1f, 0x9a,
|
||||
0x61, 0xe5, 0xa5, 0x9f, 0xe3, 0xe3, 0x9f, 0xf8, 0x38, 0xa7, 0x75, 0xc1, 0x4a, 0x0f, 0x46, 0x5d,
|
||||
0x58, 0xdb, 0x0d, 0x57, 0xfc, 0xc6, 0x65, 0x54, 0x2f, 0xde, 0xce, 0xae, 0xa7, 0x5f, 0x45, 0x3b,
|
||||
0x5e, 0xa2, 0x5d, 0x9c, 0x04, 0x8a, 0xd2, 0x9c, 0x28, 0xcd, 0xc1, 0x63, 0x96, 0xcd, 0x1b, 0x86,
|
||||
0x38, 0xed, 0xd4, 0x90, 0xf2, 0xde, 0x07, 0xf1, 0x33, 0x35, 0xd4, 0x5b, 0x8f, 0x63, 0x8f, 0xec,
|
||||
0x85, 0x48, 0x43, 0xa1, 0xa7, 0x5d, 0x49, 0xb6, 0x34, 0xd2, 0x04, 0xd5, 0xe6, 0xba, 0x4a, 0xe1,
|
||||
0x3a, 0x8e, 0xed, 0x75, 0x91, 0x60, 0xb9, 0x9b, 0xcd, 0x75, 0x14, 0x73, 0x61, 0x9b, 0x5a, 0xd0,
|
||||
0x0c, 0x9f, 0xf0, 0xe8, 0xd3, 0xfb, 0x31, 0xcb, 0xdf, 0xcb, 0x07, 0x2e, 0xfb, 0x28, 0x6b, 0x7a,
|
||||
0xa0, 0xa8, 0xc0, 0xd3, 0x90, 0x77, 0xe0, 0xde, 0x07, 0xc7, 0x79, 0xee, 0x65, 0x4d, 0x39, 0x7a,
|
||||
0x2f, 0x7f, 0xff, 0x7a, 0x89, 0xcd, 0x1f, 0xaa, 0x83, 0xca, 0xa4, 0x94, 0x5c, 0x2d, 0x31, 0x0f,
|
||||
0xc7, 0xd1, 0x1c, 0x3c, 0x5c, 0x61, 0x59, 0xaf, 0xe2, 0x8c, 0xd5, 0x75, 0xe2, 0xe3, 0xbb, 0x50,
|
||||
0xf6, 0x18, 0xba, 0x72, 0x14, 0xe2, 0xe3, 0xe8, 0x5e, 0x17, 0xfa, 0xbb, 0xc1, 0xd7, 0x69, 0x80,
|
||||
0x69, 0x96, 0xc8, 0x27, 0xf0, 0xf5, 0xe6, 0x53, 0x04, 0xa5, 0x9c, 0x6e, 0xd7, 0x71, 0x29, 0x2a,
|
||||
0xad, 0x12, 0x1c, 0x22, 0x49, 0xb4, 0x6a, 0x51, 0x03, 0x0b, 0xca, 0x42, 0x5c, 0x63, 0xe7, 0xbe,
|
||||
0x32, 0x83, 0xeb, 0x2f, 0x61, 0xeb, 0xfa, 0x15, 0x94, 0xdc, 0x64, 0x1f, 0x0d, 0xfc, 0xd5, 0xdf,
|
||||
0x1e, 0xe0, 0xc1, 0xfd, 0xfd, 0xbc, 0xbd, 0xff, 0x11, 0xf2, 0xf9, 0x5e, 0xe6, 0xb8, 0x1a, 0x6a,
|
||||
0x8f, 0x40, 0xd7, 0x8a, 0x14, 0xc0, 0xd2, 0xea, 0x47, 0x04, 0xb2, 0xae, 0x61, 0xb4, 0x77, 0x81,
|
||||
0xa2, 0xaa, 0x53, 0x3e, 0x78, 0x98, 0x4c, 0x21, 0xc6, 0xf1, 0x23, 0x18, 0xea, 0x05, 0xd7, 0x87,
|
||||
0xdc, 0x08, 0x2a, 0xbf, 0x0a, 0x2a, 0x7b, 0x90, 0xda, 0xc1, 0xd4, 0xe7, 0x4e, 0x5e, 0x49, 0x2b,
|
||||
0x25, 0xe0, 0x78, 0x59, 0xad, 0xb2, 0x5e, 0xbe, 0xb3, 0x44, 0x45, 0xea, 0x28, 0x5b, 0x69, 0x73,
|
||||
0x2c, 0x13, 0x40, 0x65, 0x96, 0xd8, 0x1f, 0xa6, 0x67, 0xf9, 0x5a, 0xfa, 0x7c, 0xc8, 0xa4, 0x7e,
|
||||
0x77, 0x64, 0x7c, 0x91, 0xe9, 0x28, 0xc7, 0x1f, 0x7d, 0xb6, 0x97, 0xb3, 0x7a, 0x9e, 0xe0, 0xa1,
|
||||
0x3f, 0xbb, 0x9c, 0x89, 0x60, 0x82, 0xf2, 0x54, 0x39, 0xd5, 0xbe, 0x24, 0x92, 0x77, 0x6c, 0x6c,
|
||||
0xad, 0xa5, 0x34, 0x90, 0xa7, 0xb4, 0x62, 0x05, 0xe2, 0x17, 0xc9, 0x14, 0x5d, 0x9c, 0x5c, 0x16,
|
||||
0xb2, 0x03, 0x90, 0x2d, 0xa2, 0xfc, 0x6e, 0xb4, 0x6b, 0x51, 0x32, 0x0f, 0x85, 0xd1, 0xa5, 0x55,
|
||||
0xa8, 0x9c, 0xa4, 0xbe, 0x15, 0x50, 0x26, 0xa8, 0x6b, 0xa9, 0xd5, 0x17, 0x97, 0xcc, 0x30, 0x21,
|
||||
0x04, 0x53, 0x60, 0x42, 0xc4, 0x34, 0x40, 0x42, 0x2a, 0x73, 0x65, 0xdc, 0xc2, 0x20, 0x7d, 0xa5,
|
||||
0xa1, 0x56, 0xf4, 0x03, 0x78, 0xf8, 0xf1, 0x69, 0x3e, 0xf8, 0x4b, 0x03, 0x0c, 0x74, 0xc1, 0x15,
|
||||
0x1f, 0xfb, 0x28, 0x71, 0x58, 0xe5, 0xe0, 0xce, 0x7f, 0x61, 0x7e, 0xa1, 0xd1, 0x2e, 0x6b, 0x91,
|
||||
0x8e, 0x67, 0xb2, 0x4f, 0xc2, 0xb1, 0x34, 0xa2, 0x32, 0x64, 0x8a, 0x79, 0x9c, 0x4c, 0x06, 0x14,
|
||||
0x58, 0xa3, 0x98, 0xde, 0x3b, 0xc3, 0x9b, 0x0f, 0xed, 0xe6, 0xc8, 0xa3, 0x4f, 0x20, 0x33, 0x2f,
|
||||
0xbe, 0xb3, 0x1a, 0x97, 0x25, 0x4b, 0x21, 0x4a, 0x63, 0x85, 0xba, 0x6b, 0x6c, 0xa6, 0x62, 0x8d,
|
||||
0x45, 0xb9, 0xa9, 0xfa, 0x24, 0x46, 0xa2, 0x69, 0x5a, 0x31, 0x4e, 0x2c, 0x36, 0xac, 0xe0, 0xe7,
|
||||
0x4e, 0xc5, 0xc9, 0x16, 0x08, 0x0c, 0xe4, 0x74, 0xe2, 0x77, 0x95, 0xc8, 0x72, 0x60, 0x41, 0x71,
|
||||
0x26, 0x70, 0xdf, 0x7d, 0xf7, 0x21, 0x22, 0xe8, 0x8c, 0x8f, 0xb4, 0xba, 0x26, 0x69, 0xb5, 0x27,
|
||||
0x36, 0xd5, 0x4c, 0x93, 0x40, 0x4a, 0x12, 0xc9, 0x9a, 0x12, 0x29, 0x01, 0x2b, 0x68, 0xad, 0x28,
|
||||
0x0e, 0x67, 0x71, 0x7d, 0x8b, 0x76, 0x84, 0xc6, 0xdc, 0x3c, 0xd9, 0x1e, 0x67, 0x29, 0x02, 0x51,
|
||||
0x4b, 0xb4, 0x2c, 0x02, 0x46, 0x54, 0x59, 0xa3, 0x33, 0x6f, 0x47, 0x35, 0xb3, 0x74, 0xb2, 0x69,
|
||||
0x40, 0x78, 0x14, 0xe2, 0x29, 0xc4, 0x2e, 0xd0, 0x95, 0x37, 0xe4, 0x3c, 0x4b, 0xb9, 0x11, 0x33,
|
||||
0x1b, 0x42, 0x35, 0x9d, 0x3e, 0x54, 0xd0, 0x3c, 0xb0, 0xc7, 0x63, 0xeb, 0x65, 0xff, 0x8d, 0x3f,
|
||||
0xf9, 0xe6, 0x9f, 0xa2, 0xbd, 0x2c, 0x6b, 0xce, 0xb9, 0x84, 0xbe, 0x81, 0x7c, 0x42, 0x1c, 0xe9,
|
||||
0xa8, 0xd3, 0x5b, 0xd9, 0xbe, 0x03, 0x80, 0x2c, 0x7d, 0x2a, 0x47, 0x98, 0x3f, 0x52, 0xa5, 0x7b,
|
||||
0xc8, 0xa7, 0xd0, 0xe7, 0xe2, 0x75, 0x79, 0x29, 0xb3, 0x4e, 0x0f, 0xd9, 0xb4, 0xe2, 0x4f, 0xe7,
|
||||
0xcf, 0x7c, 0x1c, 0xe9, 0x29, 0x37, 0x53, 0x1a, 0xde, 0x17, 0x2e, 0x8e, 0xe3, 0x17, 0x7d, 0xa4,
|
||||
0x89, 0x56, 0x35, 0x37, 0x88, 0x11, 0xd1, 0x38, 0x85, 0x2c, 0x03, 0xde, 0x14, 0xe5, 0xfa, 0x34,
|
||||
0x13, 0x01, 0xc4, 0x31, 0x04, 0x59, 0x18, 0xbb, 0x60, 0x88, 0x1f, 0x7f, 0x6b, 0x9c, 0x75, 0x1f,
|
||||
0xb9, 0x0b, 0xaf, 0x6f, 0x03, 0xc5, 0x91, 0xb3, 0xd8, 0x96, 0x7f, 0x91, 0xe2, 0xf0, 0x00, 0x56,
|
||||
0xc2, 0xa5, 0xf5, 0x7a, 0x53, 0x1b, 0x9d, 0x0d, 0x0a, 0xda, 0xc0, 0x94, 0x08, 0xb5, 0xb9, 0x00,
|
||||
0xbf, 0xe0, 0x24, 0xa6, 0xeb, 0x24, 0xb4, 0x6a, 0x09, 0xd8, 0x4e, 0x2b, 0x6d, 0x6b, 0x64, 0xaa,
|
||||
0x5a, 0xb3, 0xe3, 0xfa, 0x8c, 0xb1, 0x17, 0xa6, 0xc3, 0x9a, 0x4c, 0xb4, 0x66, 0x34, 0x4f, 0x2d,
|
||||
0x1d, 0x36, 0x88, 0x88, 0xa2, 0x2c, 0xeb, 0xbb, 0x67, 0x58, 0x19, 0xbf, 0xc4, 0xc2, 0xf4, 0x24,
|
||||
0x93, 0xb3, 0xd3, 0xec, 0x9b, 0x8d, 0xa8, 0x14, 0x0b, 0x6c, 0xdd, 0xa6, 0xc9, 0x1e, 0xb1, 0x6c,
|
||||
0x39, 0xf7, 0x26, 0xfa, 0x2a, 0xa3, 0x7c, 0xb8, 0xf7, 0x27, 0x88, 0xe3, 0x22, 0x4d, 0x9e, 0xd5,
|
||||
0xe4, 0x5e, 0x36, 0x46, 0x59, 0x83, 0xb2, 0x29, 0x53, 0xee, 0x04, 0x63, 0x0d, 0x41, 0x25, 0xa0,
|
||||
0x3a, 0x55, 0xa7, 0x6b, 0x28, 0x93, 0x36, 0x33, 0x3a, 0xb5, 0x65, 0x9b, 0x36, 0x94, 0x6a, 0x44,
|
||||
0x5a, 0x66, 0x25, 0x22, 0xc7, 0x8e, 0x1f, 0x57, 0x6f, 0x39, 0x9f, 0x1c, 0x2b, 0x69, 0x6b, 0x38,
|
||||
0xb7, 0x7b, 0x38, 0x73, 0x16, 0xa2, 0xdb, 0x6d, 0x4d, 0xad, 0x31, 0xa1, 0xa1, 0x3e, 0x5d, 0x27,
|
||||
0x8a, 0x72, 0x0c, 0xac, 0x58, 0xc3, 0x5a, 0xbd, 0x97, 0xc1, 0xa3, 0x0f, 0xe0, 0x4c, 0xbe, 0x40,
|
||||
0x50, 0x99, 0x60, 0xb6, 0x6a, 0xe9, 0x1a, 0x1d, 0x24, 0xbf, 0x26, 0x4b, 0xed, 0xd8, 0xd3, 0x9c,
|
||||
0x2b, 0xb7, 0xf3, 0x89, 0xff, 0xec, 0x63, 0x95, 0xea, 0x28, 0xb2, 0x4c, 0xda, 0x59, 0x31, 0xed,
|
||||
0x96, 0x50, 0xab, 0x49, 0x17, 0x23, 0x51, 0x9d, 0x60, 0xbe, 0x4e, 0x65, 0xaa, 0x46, 0xff, 0x68,
|
||||
0x1e, 0xc7, 0x11, 0xc4, 0x9a, 0x25, 0xcd, 0x3c, 0xac, 0x05, 0x2b, 0xa8, 0x40, 0x20, 0x48, 0xca,
|
||||
0x1e, 0x48, 0x2c, 0xa3, 0x11, 0xe8, 0xc7, 0x36, 0xdc, 0x59, 0xfe, 0xae, 0x5b, 0x9e, 0x10, 0xf1,
|
||||
0xbb, 0xd5, 0x0f, 0xa3, 0x5a, 0x7c, 0xa5, 0x9b, 0xd5, 0x09, 0x95, 0x68, 0xd6, 0x12, 0x56, 0xf0,
|
||||
0xf3, 0x21, 0xbe, 0x3f, 0x89, 0xcc, 0x1e, 0x46, 0x2a, 0x01, 0x03, 0x51, 0xcc, 0xa0, 0xa7, 0x31,
|
||||
0x95, 0x7b, 0x98, 0x9e, 0x18, 0xe1, 0x70, 0xe9, 0x6a, 0x82, 0xc6, 0x0a, 0x4e, 0x73, 0x7f, 0xc4,
|
||||
0x2f, 0xff, 0xa7, 0x59, 0xac, 0xdb, 0x9f, 0x16, 0x53, 0xd2, 0xd1, 0x98, 0x6b, 0x6a, 0xa1, 0xdd,
|
||||
0xd7, 0x52, 0xa6, 0x46, 0xb4, 0x38, 0x4f, 0xa3, 0x96, 0x25, 0x0a, 0x72, 0xf4, 0xae, 0xf0, 0x71,
|
||||
0xdc, 0x08, 0x31, 0x1d, 0x16, 0xd1, 0xaa, 0x6f, 0x04, 0x8c, 0x4d, 0x8a, 0x2a, 0x63, 0x9b, 0x14,
|
||||
0x1e, 0x63, 0x55, 0x50, 0x6b, 0xb0, 0x1b, 0x94, 0xb8, 0x47, 0x5e, 0x1d, 0x90, 0xd3, 0x2e, 0xaa,
|
||||
0x3e, 0x54, 0x9d, 0x0a, 0x83, 0xde, 0x51, 0xd7, 0x4f, 0x9c, 0x53, 0x81, 0xb5, 0x38, 0x9e, 0xc5,
|
||||
0x09, 0xe7, 0xb1, 0x13, 0x0b, 0xb0, 0x00, 0x36, 0x48, 0x42, 0xa1, 0xf8, 0x02, 0x7d, 0x9a, 0xc1,
|
||||
0xae, 0xc3, 0x2c, 0x2b, 0x3d, 0xc7, 0xba, 0x89, 0x47, 0x29, 0x8c, 0x81, 0xf5, 0x73, 0x48, 0x1c,
|
||||
0xa0, 0xb4, 0x4a, 0xc9, 0x66, 0x02, 0x46, 0x68, 0x97, 0xb3, 0xca, 0x54, 0x30, 0x95, 0x59, 0x1a,
|
||||
0x0b, 0x31, 0xb1, 0x1e, 0x41, 0xe7, 0x87, 0x28, 0x16, 0xe7, 0x70, 0x64, 0x3e, 0x05, 0x61, 0xdb,
|
||||
0x1e, 0x9d, 0x96, 0xc7, 0x88, 0x45, 0xc5, 0xa9, 0x26, 0x4c, 0x3b, 0xb1, 0x5a, 0x2b, 0xfb, 0x67,
|
||||
0x66, 0xbd, 0x47, 0x01, 0xdc, 0x8f, 0xfc, 0x78, 0x2f, 0x07, 0x3f, 0x50, 0x9c, 0xae, 0x4e, 0x67,
|
||||
0x7e, 0xd0, 0xb3, 0xc2, 0x5c, 0x93, 0x78, 0x5a, 0x47, 0x93, 0xd9, 0x2b, 0x40, 0xc1, 0x49, 0xa8,
|
||||
0x79, 0x2c, 0x28, 0xcf, 0x85, 0x42, 0x06, 0x0a, 0x3e, 0xd2, 0xb5, 0x06, 0x72, 0xc3, 0x28, 0x7f,
|
||||
0x9a, 0x6a, 0xbd, 0x8c, 0xaa, 0x96, 0xc9, 0x14, 0x32, 0x78, 0x05, 0xbf, 0x1d, 0x5a, 0x34, 0x28,
|
||||
0x53, 0x87, 0x70, 0x81, 0xb8, 0x3c, 0x4f, 0x6d, 0xc1, 0x26, 0xaf, 0x20, 0x8a, 0xa3, 0x64, 0xf3,
|
||||
0x19, 0xdc, 0xe8, 0x28, 0x04, 0x8b, 0xe0, 0x06, 0xed, 0x28, 0xd7, 0xa1, 0xcd, 0x96, 0x6f, 0x44,
|
||||
0x0a, 0x62, 0x69, 0x2d, 0x1b, 0xc7, 0xd0, 0x68, 0xa8, 0xdd, 0x63, 0x77, 0xcf, 0x3d, 0x05, 0x0a,
|
||||
0x17, 0xe0, 0xc0, 0x53, 0x9e, 0x19, 0xdd, 0xa6, 0xbe, 0x59, 0x9d, 0x0e, 0xaf, 0x29, 0x0c, 0xa6,
|
||||
0xdc, 0x48, 0x00, 0xe5, 0x42, 0xa6, 0x0b, 0xbc, 0x2e, 0x28, 0x0a, 0x0a, 0x05, 0xda, 0x05, 0x2f,
|
||||
0x03, 0x8e, 0x87, 0xf2, 0x8b, 0x94, 0x0f, 0xee, 0xa7, 0x36, 0x35, 0x89, 0x58, 0x8b, 0x97, 0xf7,
|
||||
0x71, 0x32, 0xe0, 0xc6, 0x0a, 0x31, 0x01, 0x71, 0xb5, 0x4a, 0xb0, 0xb0, 0x88, 0x09, 0x2c, 0xb8,
|
||||
0x3d, 0x38, 0xb9, 0x33, 0xf0, 0x96, 0xf5, 0xa3, 0x5c, 0x0f, 0x4f, 0x37, 0x50, 0x8d, 0x23, 0x48,
|
||||
0x5c, 0x41, 0x7b, 0x89, 0xe1, 0x4b, 0xb3, 0x9f, 0x2c, 0x69, 0xe3, 0xa1, 0xa9, 0x8d, 0x28, 0xe9,
|
||||
0x38, 0x11, 0xb7, 0xc3, 0x95, 0xb1, 0xea, 0xf8, 0xf4, 0x9c, 0x73, 0x3f, 0x28, 0x9e, 0xff, 0x5d,
|
||||
0x70, 0xdf, 0xf8, 0x0c, 0xac, 0xff, 0xe6, 0x8c, 0xec, 0x1d, 0x5b, 0xb6, 0xbb, 0x7c, 0x34, 0xbe,
|
||||
0xaf, 0x50, 0x72, 0x3f, 0x96, 0xe8, 0x2e, 0x0d, 0x73, 0xda, 0x49, 0x98, 0xac, 0xe7, 0x26, 0x86,
|
||||
0xa9, 0x9c, 0x94, 0x6b, 0x18, 0xd4, 0xe2, 0xeb, 0xd4, 0x26, 0x6b, 0xf4, 0xac, 0x1c, 0x48, 0x6a,
|
||||
0x0d, 0x2b, 0x44, 0x95, 0x06, 0xc1, 0x6c, 0x05, 0xc1, 0x26, 0x85, 0x4f, 0xbe, 0x17, 0xaf, 0xcb,
|
||||
0x07, 0xeb, 0xa2, 0x1c, 0xc1, 0x55, 0x0b, 0x10, 0xd4, 0x92, 0x5e, 0x99, 0x13, 0xa1, 0x33, 0x51,
|
||||
0x1a, 0xe6, 0x53, 0x1f, 0xb2, 0xcd, 0xca, 0x32, 0x15, 0x20, 0x16, 0x08, 0x15, 0x84, 0xd2, 0x2a,
|
||||
0x6f, 0x8c, 0x81, 0x6a, 0x4d, 0x5e, 0xdc, 0x7e, 0xcf, 0x39, 0x7f, 0x0b, 0x0f, 0x53, 0x7a, 0xdf,
|
||||
0xef, 0xa1, 0xe3, 0xd2, 0x46, 0x00, 0xfe, 0xfa, 0x8b, 0x23, 0x55, 0x13, 0x39, 0x77, 0x94, 0xc7,
|
||||
0x43, 0x51, 0xca, 0x24, 0x91, 0x43, 0x4c, 0x5a, 0x8b, 0x27, 0xe1, 0x33, 0x29, 0xb8, 0xa2, 0xf4,
|
||||
0xf7, 0x08, 0xab, 0x5c, 0x7a, 0x57, 0x14, 0xc9, 0xe4, 0x34, 0x99, 0xbc, 0xc6, 0x2f, 0x38, 0xe4,
|
||||
0x7a, 0x5d, 0xf2, 0x25, 0x9f, 0xc2, 0x60, 0x8e, 0x7c, 0x29, 0x87, 0x5f, 0xf0, 0xf0, 0x5c, 0xc1,
|
||||
0xf3, 0x02, 0x5c, 0x35, 0x8f, 0x8a, 0x27, 0x51, 0x7a, 0x1e, 0x9d, 0x09, 0x50, 0x6e, 0xd8, 0x06,
|
||||
0x61, 0x6d, 0x1b, 0x44, 0xd3, 0x37, 0x8c, 0x41, 0x85, 0xef, 0xd4, 0x46, 0x1c, 0xcb, 0xc4, 0xe4,
|
||||
0x94, 0xfb, 0xad, 0xef, 0x1d, 0x7f, 0x38, 0xde, 0xf7, 0xfb, 0xb0, 0xea, 0xb7, 0xbe, 0x83, 0xde,
|
||||
0x78, 0xcb, 0x6e, 0x0e, 0xff, 0x0f, 0xf8, 0x32, 0xcf, 0x33, 0x7b, 0x48, 0x76, 0x57, 0xa7, 0xed,
|
||||
0x2d, 0x61, 0x25, 0x4a, 0x5e, 0x0b, 0x48, 0xda, 0x50, 0xb0, 0x71, 0xaa, 0x6a, 0xb3, 0xa4, 0xbd,
|
||||
0x03, 0xe0, 0xe5, 0x55, 0x0b, 0x18, 0x12, 0xe1, 0xb8, 0x09, 0x81, 0x75, 0x3d, 0xd0, 0xda, 0xa2,
|
||||
0x74, 0x84, 0xce, 0x04, 0xe9, 0x08, 0x51, 0x5e, 0x84, 0x72, 0x62, 0x50, 0x69, 0xeb, 0xa8, 0xf3,
|
||||
0xb0, 0x3a, 0x41, 0xd8, 0x14, 0x44, 0xa0, 0x20, 0xb0, 0x2d, 0xdf, 0x30, 0x86, 0x78, 0x66, 0xce,
|
||||
0xfd, 0xf1, 0xa6, 0x1d, 0xe5, 0x1f, 0x01, 0x34, 0x4a, 0x1b, 0xda, 0x2d, 0xd3, 0x85, 0xb5, 0xbf,
|
||||
0x04, 0xc0, 0xd6, 0x3f, 0x3e, 0x5e, 0xaf, 0xcd, 0x98, 0x3f, 0x9f, 0x3f, 0x12, 0x3f, 0x91, 0x24,
|
||||
0xb3, 0xb8, 0x0d, 0xa6, 0xd9, 0xbb, 0x6a, 0x6a, 0x47, 0xe2, 0x0e, 0x60, 0x51, 0x5b, 0x63, 0x36,
|
||||
0x4c, 0xb5, 0x16, 0xb6, 0xe7, 0x49, 0x94, 0x24, 0x47, 0x96, 0x1e, 0x8c, 0xb4, 0xd6, 0x32, 0x4b,
|
||||
0x5a, 0x4b, 0x88, 0x4d, 0x4c, 0xa9, 0xa1, 0x20, 0x68, 0x9b, 0x94, 0xb5, 0x50, 0x5e, 0xe4, 0xb5,
|
||||
0xd7, 0x0f, 0x9e, 0x72, 0x2d, 0xc0, 0xae, 0xdf, 0x83, 0x4d, 0xb7, 0xbe, 0xde, 0x06, 0xb2, 0xf1,
|
||||
0xc6, 0x47, 0xd9, 0x7d, 0x73, 0xd2, 0x43, 0x3d, 0xe3, 0x96, 0xb9, 0xb7, 0x83, 0xb2, 0xbd, 0x6e,
|
||||
0xfe, 0xed, 0x70, 0x4e, 0xa9, 0x64, 0x23, 0x31, 0xa6, 0xad, 0x11, 0x1b, 0x2d, 0x05, 0x61, 0x3b,
|
||||
0xcc, 0xae, 0x25, 0x64, 0xe7, 0xf7, 0x71, 0x87, 0x69, 0x46, 0x2d, 0x8d, 0x4a, 0x6b, 0x4e, 0xc7,
|
||||
0xb0, 0x36, 0x99, 0x17, 0x5a, 0x54, 0xa0, 0xa0, 0x21, 0x09, 0xa0, 0x34, 0xad, 0xd4, 0xeb, 0x32,
|
||||
0xf9, 0xd6, 0x78, 0xee, 0x77, 0x2e, 0xfd, 0xb3, 0x3d, 0x0b, 0x00, 0xa5, 0x8f, 0xde, 0xc6, 0x3b,
|
||||
0x5e, 0x2b, 0x6c, 0xbc, 0x63, 0x9a, 0x97, 0x6f, 0x5e, 0x05, 0xc0, 0xaa, 0x6b, 0x7f, 0xfd, 0x99,
|
||||
0xea, 0xb4, 0x7c, 0xaa, 0x32, 0x11, 0xc6, 0x09, 0x1d, 0x6f, 0x6e, 0xfc, 0xef, 0x18, 0x9d, 0xfe,
|
||||
0xf4, 0x8e, 0xef, 0x92, 0x43, 0x69, 0x1f, 0x4c, 0xdc, 0x36, 0xa9, 0xe6, 0x41, 0x45, 0x92, 0x80,
|
||||
0xa8, 0xb7, 0x41, 0x00, 0x04, 0x81, 0xcc, 0x1f, 0x3a, 0x9a, 0xfb, 0x83, 0xf3, 0xbe, 0x31, 0xf3,
|
||||
0xfc, 0xee, 0x1b, 0xfa, 0x00, 0x38, 0xf5, 0xa3, 0x5f, 0x6c, 0x01, 0x71, 0x3a, 0x69, 0xe4, 0x9f,
|
||||
0x3e, 0x3e, 0xcf, 0xce, 0xeb, 0x96, 0xf1, 0x9d, 0x27, 0x1f, 0x61, 0xe0, 0xa7, 0xa5, 0xbd, 0x1b,
|
||||
0x2e, 0x0e, 0xa7, 0x9d, 0x8c, 0xf9, 0x90, 0x97, 0x4d, 0xe7, 0x75, 0x30, 0x57, 0xd5, 0x34, 0x01,
|
||||
0x75, 0x32, 0x32, 0xd8, 0xd9, 0x69, 0x34, 0xed, 0x17, 0x3e, 0x9d, 0x1d, 0x48, 0x89, 0x97, 0x6a,
|
||||
0x42, 0x6c, 0x02, 0xa2, 0xde, 0x01, 0x22, 0x4d, 0x23, 0x41, 0x28, 0x73, 0x87, 0x8e, 0xe4, 0x6e,
|
||||
0xd8, 0xb4, 0x63, 0xf6, 0xaf, 0xf6, 0xfc, 0x61, 0x2f, 0x67, 0x6e, 0x7f, 0xe7, 0x0b, 0x51, 0xe7,
|
||||
0xc4, 0x0f, 0xbe, 0xf3, 0x64, 0x95, 0x97, 0x6f, 0x2c, 0x71, 0xe5, 0x13, 0x13, 0x36, 0xff, 0x4f,
|
||||
0x63, 0x2f, 0x6d, 0xbc, 0x60, 0x7a, 0xde, 0xf5, 0xcc, 0x45, 0x9e, 0x8f, 0x9f, 0x74, 0xc3, 0xe5,
|
||||
0x24, 0x54, 0xdc, 0x2e, 0xb5, 0xef, 0xce, 0x46, 0xf4, 0x12, 0xa6, 0x7b, 0x42, 0xa3, 0xbb, 0x09,
|
||||
0xc0, 0x58, 0x08, 0x40, 0x35, 0x7d, 0x22, 0x90, 0x16, 0xc5, 0x6a, 0x34, 0xd4, 0xd1, 0x83, 0xe3,
|
||||
0xd9, 0xff, 0xb9, 0xf1, 0xae, 0xd9, 0xbf, 0xd8, 0xf7, 0x85, 0x5e, 0xb5, 0xee, 0xf6, 0xf9, 0x77,
|
||||
0xf7, 0x7a, 0x7a, 0xf7, 0x17, 0x96, 0xb3, 0xf1, 0xab, 0xc9, 0xdb, 0xd3, 0xb7, 0xee, 0xec, 0xfd,
|
||||
0xef, 0x7d, 0x23, 0xdc, 0x92, 0xeb, 0x57, 0x2b, 0xb5, 0xab, 0xd3, 0x74, 0xad, 0xda, 0x04, 0xf3,
|
||||
0xc4, 0x06, 0x41, 0x93, 0x72, 0x73, 0x32, 0xc0, 0xd2, 0xe4, 0x17, 0x69, 0x88, 0x15, 0x54, 0x90,
|
||||
0x46, 0xa7, 0x50, 0x92, 0xde, 0xae, 0x4d, 0x32, 0x77, 0xb5, 0xaa, 0x5e, 0x3c, 0x38, 0x9e, 0xfd,
|
||||
0xec, 0x39, 0xff, 0x67, 0xe6, 0xf1, 0xbd, 0x5f, 0xe8, 0x65, 0xdd, 0x57, 0xe7, 0x7f, 0xce, 0x0b,
|
||||
0x03, 0xd7, 0x0f, 0xb0, 0xf9, 0xae, 0xe4, 0xad, 0xd0, 0x6b, 0x5f, 0xec, 0x79, 0xff, 0xe0, 0x69,
|
||||
0x72, 0x73, 0xbe, 0x5f, 0x5d, 0xe2, 0xe5, 0x94, 0xa7, 0x1d, 0xdd, 0x6e, 0x21, 0x35, 0x8b, 0xe7,
|
||||
0x13, 0x8b, 0x69, 0x78, 0x27, 0x1d, 0xb7, 0x92, 0x0e, 0x20, 0x14, 0x54, 0xa8, 0x92, 0x3c, 0x11,
|
||||
0x25, 0x77, 0x55, 0x4c, 0x0c, 0x51, 0xa4, 0xa6, 0xe6, 0xcb, 0x3c, 0xf0, 0xda, 0x81, 0xbe, 0x9b,
|
||||
0x3e, 0x74, 0xcf, 0x91, 0x89, 0xd7, 0x6f, 0xea, 0x63, 0xc3, 0xf6, 0xb9, 0xff, 0xe0, 0x15, 0x8e,
|
||||
0xeb, 0x86, 0xd9, 0x9c, 0x5e, 0xa4, 0x79, 0xe4, 0xaa, 0xfe, 0xe1, 0xb5, 0x17, 0xc6, 0xbf, 0xdb,
|
||||
0x55, 0x52, 0x57, 0x78, 0x79, 0x39, 0x3b, 0x93, 0x07, 0xa5, 0x75, 0xfb, 0xf0, 0x4f, 0xd6, 0xe6,
|
||||
0x68, 0x6a, 0x47, 0x52, 0x00, 0x46, 0x52, 0x02, 0x98, 0x68, 0x40, 0x45, 0x80, 0x11, 0x6c, 0x24,
|
||||
0x04, 0x91, 0x0e, 0xc3, 0x90, 0xc7, 0xa6, 0x67, 0xf5, 0xf7, 0xd6, 0xdd, 0xbe, 0xf8, 0x97, 0xc9,
|
||||
0xfe, 0x83, 0x6c, 0xde, 0x31, 0xf5, 0x8b, 0xb9, 0x54, 0xf3, 0xc6, 0x9d, 0xef, 0x43, 0x55, 0x1e,
|
||||
0xe5, 0x8c, 0x5b, 0x13, 0x69, 0x77, 0xdf, 0xd4, 0x77, 0xce, 0xc0, 0xca, 0xf8, 0x57, 0xb2, 0xdd,
|
||||
0xea, 0x43, 0x8e, 0x6b, 0x2f, 0xf4, 0x0b, 0xe0, 0x64, 0xd4, 0xd2, 0x66, 0x87, 0x95, 0x56, 0xa1,
|
||||
0x89, 0x11, 0xc4, 0x2a, 0x54, 0x2c, 0x10, 0x2b, 0x94, 0x91, 0x94, 0xc9, 0x0a, 0x51, 0x43, 0x08,
|
||||
0x23, 0xbd, 0x18, 0xc7, 0x3c, 0x5a, 0xa9, 0xe9, 0x7f, 0x3a, 0x74, 0x34, 0x7f, 0xef, 0x7b, 0xbf,
|
||||
0x33, 0x79, 0xec, 0xdd, 0x5e, 0xbd, 0x7a, 0x57, 0xd7, 0x9c, 0x76, 0x5d, 0xb7, 0x9c, 0xcd, 0x3b,
|
||||
0xda, 0xb7, 0x0e, 0x5e, 0xbe, 0xbe, 0xef, 0xac, 0x81, 0xd1, 0x68, 0x8b, 0x9b, 0xd1, 0xe7, 0xbb,
|
||||
0xae, 0xdd, 0xe6, 0x38, 0x6c, 0xd0, 0xda, 0x16, 0xbd, 0x0c, 0xb8, 0xae, 0x4a, 0x62, 0xbb, 0x55,
|
||||
0xad, 0xca, 0x4e, 0x62, 0x88, 0x03, 0x21, 0x0a, 0x04, 0x13, 0xeb, 0xb2, 0x31, 0x6a, 0xa7, 0xb1,
|
||||
0x3c, 0xd5, 0x08, 0xd4, 0xb3, 0xe3, 0x13, 0x99, 0x67, 0x2e, 0xf8, 0xf6, 0xcc, 0xf8, 0xc9, 0xee,
|
||||
0xc1, 0xfc, 0xc2, 0x81, 0xb4, 0x6e, 0x47, 0x5c, 0x3b, 0xc4, 0xd8, 0xd7, 0x8f, 0xb7, 0xfe, 0xfe,
|
||||
0xe1, 0x65, 0x23, 0xc5, 0xd3, 0xb7, 0x2c, 0x9c, 0x5a, 0xec, 0xb7, 0x43, 0x4e, 0xd6, 0x5d, 0xae,
|
||||
0x2c, 0x23, 0x62, 0xed, 0x90, 0x42, 0x7a, 0x94, 0x98, 0x0c, 0xa2, 0xb5, 0x18, 0x09, 0xb0, 0x7a,
|
||||
0x11, 0xd4, 0x04, 0xc2, 0xdb, 0x51, 0x64, 0x8e, 0xcd, 0x96, 0x9d, 0x89, 0xe7, 0xf7, 0xac, 0x3c,
|
||||
0xf4, 0xdb, 0xf7, 0xbf, 0x12, 0xb4, 0xd6, 0xfe, 0x7c, 0x3f, 0x63, 0x7f, 0x34, 0xfb, 0xae, 0x65,
|
||||
0xfa, 0x7f, 0x4c, 0xe8, 0x21, 0x04, 0x29, 0xb0, 0x36, 0x16, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45,
|
||||
0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
])
|
||||
'''
|
||||
const lv_image_dsc_t image_wink_png = {
|
||||
.header.w = 50,
|
||||
.header.h = 50,
|
||||
.data_size = 5158,
|
||||
.header.cf = LV_IMAGE_CF_RAW_ALPHA,
|
||||
.data = image_wink_png_map,
|
||||
};
|
||||
|
||||
'''
|
||||
@@ -1,32 +0,0 @@
|
||||
#!/opt/bin/lv_micropython -i
|
||||
import lvgl as lv
|
||||
import display_driver
|
||||
from img_wink_png import img_wink_png_map
|
||||
|
||||
image_wink_png = lv.image_dsc_t(
|
||||
{
|
||||
"header": {"w": 50, "h": 50, "cf": lv.COLOR_FORMAT.RAW_ALPHA},
|
||||
"data_size": 5158,
|
||||
"data": img_wink_png_map,
|
||||
}
|
||||
)
|
||||
image1 = lv.image(lv.screen_active())
|
||||
image1.set_src(image_wink_png)
|
||||
image1.align(lv.ALIGN.RIGHT_MID, -250, 0)
|
||||
|
||||
# Create an image from the png file
|
||||
try:
|
||||
with open('wink.png','rb') as f:
|
||||
png_data = f.read()
|
||||
except:
|
||||
print("Could not find wink.png")
|
||||
sys.exit()
|
||||
|
||||
wink_argb = lv.image_dsc_t({
|
||||
'data_size': len(png_data),
|
||||
'data': png_data
|
||||
})
|
||||
|
||||
image2 = lv.image(lv.screen_active())
|
||||
image2.set_src(wink_argb)
|
||||
image2.align(lv.ALIGN.RIGHT_MID, -150, 0)
|
||||
@@ -1,20 +0,0 @@
|
||||
#!/opt/bin/lv_micropython -i
|
||||
import lvgl as lv
|
||||
import display_driver
|
||||
|
||||
bg_color = lv.palette_lighten(lv.PALETTE.LIGHT_BLUE, 5)
|
||||
fg_color = lv.palette_darken(lv.PALETTE.BLUE, 4)
|
||||
|
||||
qr = lv.qrcode(lv.screen_active())
|
||||
qr.set_size(150)
|
||||
qr.set_dark_color(fg_color)
|
||||
qr.set_light_color(bg_color)
|
||||
|
||||
# Set data
|
||||
data = "https://lvgl.io"
|
||||
qr.update(data,len(data))
|
||||
qr.center()
|
||||
|
||||
# Add a border with bg_color
|
||||
qr.set_style_border_color(bg_color, 0)
|
||||
qr.set_style_border_width(5, 0)
|
||||
@@ -1,11 +0,0 @@
|
||||
#!/opt/bin/lv_micropython -i
|
||||
import lvgl as lv
|
||||
import display_driver
|
||||
#
|
||||
# Load a lottie animation from flash
|
||||
#
|
||||
from lv_example_rlottie_approve import lv_example_rlottie_approve
|
||||
|
||||
lottie = lv.rlottie_create_from_raw(lv.screen_active(), 100, 100, lv_example_rlottie_approve)
|
||||
lottie.center()
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
#!/opt/bin/lv_micropython -i
|
||||
import lvgl as lv
|
||||
import display_driver
|
||||
|
||||
lottie = lv.rlottie_create_from_file(lv.screen_active(), 100, 100,"lv_example_rlottie_approve.json")
|
||||
lottie.center()
|
||||
File diff suppressed because one or more lines are too long
@@ -1,17 +0,0 @@
|
||||
from ubuntu_font import ubuntu_font
|
||||
#
|
||||
# Load a font with Tiny_TTF
|
||||
#
|
||||
#Create style with the new font
|
||||
style = lv.style_t()
|
||||
style.init()
|
||||
font = lv.font_t()
|
||||
lv.tiny_ttf_create_data(font, ubuntu_font, len(ubuntu_font), 30)
|
||||
style.set_text_font(font)
|
||||
style.set_text_align(lv.TEXT_ALIGN.CENTER)
|
||||
|
||||
# Create a label with the new style
|
||||
label = lv.label(lv.screen_active())
|
||||
label.add_style(style, 0)
|
||||
label.set_text("Hello world\nI'm a font created with Tiny TTF")
|
||||
label.center()
|
||||
@@ -1,28 +0,0 @@
|
||||
import fs_driver
|
||||
|
||||
# needed for dynamic font loading
|
||||
fs_drv = lv.fs_drv_t()
|
||||
fs_driver.fs_register(fs_drv, 'S')
|
||||
|
||||
# get the directory in which the script is running
|
||||
try:
|
||||
script_path = __file__[:__file__.rfind('/')] if __file__.find('/') >= 0 else '.'
|
||||
except NameError:
|
||||
script_path = ''
|
||||
|
||||
#
|
||||
# Load a font with Tiny_TTF from file
|
||||
#
|
||||
# Create style with the new font
|
||||
style = lv.style_t()
|
||||
style.init()
|
||||
font = lv.font_t()
|
||||
lv.tiny_ttf_create_file(font, "S:" + script_path + "/Ubuntu-Medium.ttf", 30)
|
||||
style.set_text_font(font)
|
||||
style.set_text_align(lv.TEXT_ALIGN.CENTER)
|
||||
|
||||
# Create a label with the new style
|
||||
label = lv.label(lv.screen_active())
|
||||
label.add_style(style, 0)
|
||||
label.set_text("Hello world\nI'm a font created with Tiny TTF")
|
||||
label.center()
|
||||
@@ -1 +0,0 @@
|
||||
pass
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,13 +0,0 @@
|
||||
#!/opt/bin/lv_micropython -i
|
||||
import lvgl as lv
|
||||
import display_driver
|
||||
import fs_driver
|
||||
|
||||
fs_drv = lv.fs_drv_t()
|
||||
fs_driver.fs_register(fs_drv, 'S')
|
||||
|
||||
wp = lv.image(lv.screen_active())
|
||||
# The File system is attached to letter 'S'
|
||||
|
||||
wp.set_src("S:img_lvgl_logo.jpg")
|
||||
wp.center()
|
||||
@@ -1,47 +0,0 @@
|
||||
import fs_driver
|
||||
import os
|
||||
|
||||
LV_FILE_EXPLORER_QUICK_ACCESS = True
|
||||
LV_USE_FS_WIN32 = False
|
||||
LV_FILE_EXPLORER_PATH_MAX_LEN = 128
|
||||
|
||||
def file_explorer_event_handler(e) :
|
||||
|
||||
code = e.get_code()
|
||||
obj = e.get_target_obj()
|
||||
|
||||
if code == lv.EVENT.VALUE_CHANGED:
|
||||
cur_path = obj.explorer_get_current_path()
|
||||
sel_fn = obj.explorer_get_selected_file_name()
|
||||
# print("cur_path: " + str(cur_path), " sel_fn: " + str(sel_fn))
|
||||
print(str(cur_path) + str(sel_fn))
|
||||
|
||||
file_explorer = lv.file_explorer(lv.screen_active())
|
||||
file_explorer.explorer_set_sort(lv.EXPLORER_SORT.KIND)
|
||||
|
||||
|
||||
if LV_USE_FS_WIN32 :
|
||||
file_explorer.explorer_open_dir("D:")
|
||||
if LV_FILE_EXPLORER_QUICK_ACCESS :
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER.HOME_DIR, "C:/Users/Public/Desktop")
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER.VIDEO_DIR, "C:/Users/Public/Videos")
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER_PICTURES_DIR, "C:/Users/Public/Pictures");
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER_MUSIC_DIR, "C:/Users/Public/Music");
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER_DOCS_DIR, "C:/Users/Public/Documents");
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER_FS_DIR, "D:");
|
||||
|
||||
# linux
|
||||
file_explorer.explorer_open_dir("A:/")
|
||||
|
||||
if LV_FILE_EXPLORER_QUICK_ACCESS :
|
||||
home_dir = "A:" + os.getenv('HOME')
|
||||
print("quick access: " + home_dir)
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER.HOME_DIR, home_dir)
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER.VIDEO_DIR, home_dir + "/Videos")
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER.PICTURES_DIR, home_dir + "/Pictures")
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER.MUSIC_DIR, home_dir + "/Music")
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER.DOCS_DIR, home_dir + "/Documents")
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER.FS_DIR, "A:/")
|
||||
|
||||
file_explorer.add_event_cb(file_explorer_event_handler, lv.EVENT.ALL, None)
|
||||
|
||||
@@ -1,102 +0,0 @@
|
||||
import fs_driver
|
||||
import os
|
||||
|
||||
LV_FILE_EXPLORER_QUICK_ACCESS = True
|
||||
LV_USE_FS_WIN32 = False
|
||||
LV_FILE_EXPLORER_PATH_MAX_LEN = 128
|
||||
|
||||
def file_explorer_event_handler(e):
|
||||
code = e.get_code()
|
||||
obj = e.get_target_obj()
|
||||
|
||||
if code == lv.EVENT.VALUE_CHANGED:
|
||||
cur_path = obj.explorer_get_current_path()
|
||||
sel_fn = obj.explorer_get_selected_file_name()
|
||||
print(str(cur_path) + str(sel_fn))
|
||||
|
||||
def button_event_handler(e,fe_quick_access_obj):
|
||||
|
||||
code = e.get_code()
|
||||
button = e.get_target_obj()
|
||||
# lv_obj_t * file_explorer = lv_event_get_user_data(e);
|
||||
|
||||
if code == lv.EVENT.VALUE_CHANGED :
|
||||
if button.has_state(lv.STATE.CHECKED) :
|
||||
fe_quick_access_obj.add_flag(lv.obj.FLAG.HIDDEN)
|
||||
else :
|
||||
fe_quick_access_obj.remove_flag(lv.obj.FLAG.HIDDEN)
|
||||
|
||||
def dd_event_handler(e, file_explorer):
|
||||
|
||||
code = e.get_code()
|
||||
dd = e.get_target_obj()
|
||||
# fe_quick_access_obj = lv_event_get_user_data(e);
|
||||
|
||||
if code == lv.EVENT.VALUE_CHANGED :
|
||||
buf = bytearray(32)
|
||||
lv.dropdown.get_selected_str(dd,buf,len(buf))
|
||||
|
||||
if buf[:4] == b"NONE":
|
||||
# print("set sort to NONE")
|
||||
file_explorer.explorer_set_sort(lv.EXPLORER_SORT.NONE)
|
||||
elif buf[:4] == b"KIND" :
|
||||
# print("set sort to KIND")
|
||||
file_explorer.explorer_set_sort(lv.EXPLORER_SORT.KIND)
|
||||
|
||||
file_explorer = lv.file_explorer(lv.screen_active())
|
||||
|
||||
if LV_USE_FS_WIN32 :
|
||||
file_explorer.explorer_open_dir("D:")
|
||||
if LV_FILE_EXPLORER_QUICK_ACCESS :
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER.HOME_DIR, "C:/Users/Public/Desktop")
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER.VIDEO_DIR, "C:/Users/Public/Videos")
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER_PICTURES_DIR, "C:/Users/Public/Pictures");
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER_MUSIC_DIR, "C:/Users/Public/Music");
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER_DOCS_DIR, "C:/Users/Public/Documents");
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER_FS_DIR, "D:");
|
||||
|
||||
# linux
|
||||
file_explorer.explorer_open_dir("A:/")
|
||||
|
||||
if LV_FILE_EXPLORER_QUICK_ACCESS :
|
||||
home_dir = "A:" + os.getenv('HOME')
|
||||
print("quick access: " + home_dir)
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER.HOME_DIR, home_dir)
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER.VIDEO_DIR, home_dir + "/Videos")
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER.PICTURES_DIR, home_dir + "/Pictures")
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER.MUSIC_DIR, home_dir + "/Music")
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER.DOCS_DIR, home_dir + "/Documents")
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER.FS_DIR, "A:/")
|
||||
|
||||
file_explorer.add_event_cb(file_explorer_event_handler, lv.EVENT.ALL, None)
|
||||
|
||||
# Quick access status control button
|
||||
fe_quick_access_obj = file_explorer.explorer_get_quick_access_area()
|
||||
fe_header_obj = file_explorer.explorer_get_header()
|
||||
button = lv.button(fe_header_obj)
|
||||
button.set_style_radius(2, 0)
|
||||
button.set_style_pad_all(4, 0)
|
||||
button.align(lv.ALIGN.LEFT_MID, 0, 0)
|
||||
button.add_flag(lv.obj.FLAG.CHECKABLE)
|
||||
|
||||
label = lv.label(button)
|
||||
label.set_text(lv.SYMBOL.LIST)
|
||||
label.center()
|
||||
|
||||
button.add_event_cb(lambda evt: button_event_handler(evt,fe_quick_access_obj), lv.EVENT.VALUE_CHANGED, None)
|
||||
#button.add_event_cb(lambda evt: button_event_handler(evt,file_explorer), lv.EVENT.VALUE_CHANGED, None)
|
||||
|
||||
# Sort control
|
||||
opts = "NONE\nKIND"
|
||||
|
||||
dd = lv.dropdown(fe_header_obj)
|
||||
dd.set_style_radius(4, 0)
|
||||
dd.set_style_pad_all(0, 0)
|
||||
dd.set_size(lv.pct(30), lv.SIZE_CONTENT)
|
||||
dd.set_options_static(opts)
|
||||
dd.align(lv.ALIGN.RIGHT_MID, 0, 0)
|
||||
# lv_obj_align_to(dd, button, LV_ALIGN_OUT_RIGHT_MID, 0, 0);
|
||||
|
||||
dd.add_event_cb(lambda evt: dd_event_handler(evt,file_explorer), lv.EVENT.VALUE_CHANGED, None)
|
||||
#dd.add_event_cb(lambda evt: dd_event_handler(evt,fe_quick_access_obj), lv.EVENT.VALUE_CHANGED, None)
|
||||
|
||||
@@ -1,89 +0,0 @@
|
||||
import fs_driver
|
||||
import os
|
||||
|
||||
LV_FILE_EXPLORER_QUICK_ACCESS = True
|
||||
LV_USE_FS_WIN32 = False
|
||||
LV_FILE_EXPLORER_PATH_MAX_LEN = 128
|
||||
|
||||
def exch_table_item(tb, i, j):
|
||||
tmp = tb.get_cell_value(i, 0)
|
||||
tb.set_cell_value(0, 2, tmp)
|
||||
tb.set_cell_value(i, 0, tb.get_cell_value(j, 0))
|
||||
tb.set_cell_value(j, 0, tb.get_cell_value(0, 2))
|
||||
|
||||
tmp = tb.get_cell_value(i, 1)
|
||||
tb.set_cell_value(0, 2, tmp)
|
||||
tb.set_cell_value(i, 1, tb.get_cell_value(j, 1))
|
||||
tb.set_cell_value(j, 1, tb.get_cell_value(0, 2))
|
||||
|
||||
# Quick sort 3 way
|
||||
def sort_by_file_kind(tb, lo, hi) :
|
||||
if lo >= hi:
|
||||
return;
|
||||
|
||||
lt = lo
|
||||
i = lo + 1
|
||||
gt = hi
|
||||
v = tb.get_cell_value(lo, 1)
|
||||
|
||||
while i <= gt :
|
||||
|
||||
if tb.get_cell_value(i, 1) < v :
|
||||
lt += 1
|
||||
i += 1
|
||||
exch_table_item(tb, lt, i)
|
||||
elif tb.get_cell_value(i, 1) > v:
|
||||
gt -= 1
|
||||
exch_table_item(tb, i, gt)
|
||||
else :
|
||||
i += 1
|
||||
sort_by_file_kind(tb, lo, lt - 1);
|
||||
sort_by_file_kind(tb, gt + 1, hi);
|
||||
|
||||
|
||||
def file_explorer_event_handler(e) :
|
||||
|
||||
code = e.get_code()
|
||||
obj = e.get_target_obj()
|
||||
|
||||
if code == lv.EVENT.VALUE_CHANGED:
|
||||
cur_path = obj.explorer_get_current_path()
|
||||
sel_fn = obj.explorer_get_selected_file_name()
|
||||
print(str(cur_path) + str(sel_fn))
|
||||
|
||||
elif code == lv.EVENT.READY :
|
||||
tb = obj.explorer_get_file_table()
|
||||
sum = tb.get_row_count()
|
||||
# print("sum: ",sum)
|
||||
sort_by_file_kind(tb, 0, (sum - 1));
|
||||
|
||||
file_explorer = lv.file_explorer(lv.screen_active())
|
||||
# Before custom sort, please set the default sorting to NONE. The default is NONE.
|
||||
file_explorer.explorer_set_sort(lv.EXPLORER_SORT.NONE)
|
||||
|
||||
file_explorer = lv.file_explorer(lv.screen_active())
|
||||
|
||||
if LV_USE_FS_WIN32 :
|
||||
file_explorer.explorer_open_dir("D:")
|
||||
if LV_FILE_EXPLORER_QUICK_ACCESS :
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER.HOME_DIR, "C:/Users/Public/Desktop")
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER.VIDEO_DIR, "C:/Users/Public/Videos")
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER_PICTURES_DIR, "C:/Users/Public/Pictures");
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER_MUSIC_DIR, "C:/Users/Public/Music");
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER_DOCS_DIR, "C:/Users/Public/Documents");
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER_FS_DIR, "D:");
|
||||
|
||||
# linux
|
||||
file_explorer.explorer_open_dir("A:/")
|
||||
|
||||
if LV_FILE_EXPLORER_QUICK_ACCESS :
|
||||
home_dir = "A:" + os.getenv('HOME')
|
||||
print("quick access: " + home_dir)
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER.HOME_DIR, home_dir)
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER.VIDEO_DIR, home_dir + "/Videos")
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER.PICTURES_DIR, home_dir + "/Pictures")
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER.MUSIC_DIR, home_dir + "/Music")
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER.DOCS_DIR, home_dir + "/Documents")
|
||||
file_explorer.explorer_set_quick_access_path(lv.EXPLORER.FS_DIR, "A:/")
|
||||
|
||||
file_explorer.add_event_cb(file_explorer_event_handler, lv.EVENT.ALL, None)
|
||||
@@ -1,63 +0,0 @@
|
||||
#
|
||||
# Demonstrate a a basic grid navigation
|
||||
#
|
||||
# It's assumed that the default group is set and
|
||||
# there is a keyboard indev
|
||||
|
||||
cont1 = lv.obj(lv.screen_active())
|
||||
lv.gridnav_add(cont1, lv.GRIDNAV_CTRL.NONE)
|
||||
|
||||
# Use flex here, but works with grid or manually placed objects as well
|
||||
cont1.set_flex_flow(lv.FLEX_FLOW.ROW_WRAP)
|
||||
cont1.set_style_bg_color(lv.palette_lighten(lv.PALETTE.BLUE, 5), lv.STATE.FOCUSED)
|
||||
cont1.set_size(lv.pct(50), lv.pct(100))
|
||||
|
||||
# Only the container needs to be in a group
|
||||
lv.group_get_default().add_obj(cont1)
|
||||
|
||||
label = lv.label(cont1)
|
||||
label.set_text("No rollover")
|
||||
|
||||
for i in range(10):
|
||||
obj = lv.button(cont1)
|
||||
obj.set_size(70, lv.SIZE_CONTENT)
|
||||
obj.add_flag(lv.obj.FLAG.CHECKABLE)
|
||||
lv.group_remove_obj(obj) # Not needed, we use the gridnav instead
|
||||
|
||||
label = lv.label(obj)
|
||||
label.set_text("{:d}".format(i))
|
||||
label.center()
|
||||
|
||||
# Create a second container with rollover grid nav mode.
|
||||
|
||||
cont2 = lv.obj(lv.screen_active())
|
||||
lv.gridnav_add(cont2,lv.GRIDNAV_CTRL.ROLLOVER)
|
||||
cont2.set_style_bg_color(lv.palette_lighten(lv.PALETTE.BLUE, 5), lv.STATE.FOCUSED)
|
||||
cont2.set_size(lv.pct(50), lv.pct(100))
|
||||
cont2.align(lv.ALIGN.RIGHT_MID, 0, 0)
|
||||
|
||||
label = lv.label(cont2)
|
||||
label.set_width(lv.pct(100))
|
||||
label.set_text("Rollover\nUse tab to focus the other container")
|
||||
|
||||
# Only the container needs to be in a group
|
||||
lv.group_get_default().add_obj(cont2)
|
||||
|
||||
# Add and place some children manually
|
||||
ta = lv.textarea(cont2)
|
||||
ta.set_size(lv.pct(100), 80)
|
||||
ta.set_pos(0, 80);
|
||||
lv.group_remove_obj(ta) # Not needed, we use the gridnav instead
|
||||
|
||||
cb = lv.checkbox(cont2)
|
||||
cb.set_pos(0, 170)
|
||||
lv.group_remove_obj(cb) # Not needed, we use the gridnav instead
|
||||
|
||||
sw1 = lv.switch(cont2)
|
||||
sw1.set_pos(0, 200);
|
||||
lv.group_remove_obj(sw1) # Not needed, we use the gridnav instead
|
||||
|
||||
sw2 = lv.switch(cont2)
|
||||
sw2.set_pos(lv.pct(50), 200)
|
||||
lv.group_remove_obj(sw2) # Not needed, we use the gridnav instead
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
#
|
||||
# Grid navigation on a list
|
||||
#
|
||||
# It's assumed that the default group is set and
|
||||
# there is a keyboard indev
|
||||
|
||||
list1 = lv.list(lv.screen_active())
|
||||
lv.gridnav_add(list1, lv.GRIDNAV_CTRL.NONE)
|
||||
list1.set_size(lv.pct(45), lv.pct(80))
|
||||
list1.align(lv.ALIGN.LEFT_MID, 5, 0)
|
||||
list1.set_style_bg_color(lv.palette_lighten(lv.PALETTE.BLUE, 5), lv.STATE.FOCUSED)
|
||||
lv.group_get_default().add_obj(list1)
|
||||
|
||||
for i in range(15):
|
||||
item_text = "File {:d}".format(i)
|
||||
item = list1.add_button(lv.SYMBOL.FILE, item_text)
|
||||
item.set_style_bg_opa(0, 0)
|
||||
lv.group_remove_obj(item) # Not needed, we use the gridnav instead
|
||||
|
||||
list2 = lv.list(lv.screen_active())
|
||||
lv.gridnav_add(list2, lv.GRIDNAV_CTRL.ROLLOVER)
|
||||
list2.set_size(lv.pct(45), lv.pct(80))
|
||||
list2.align(lv.ALIGN.RIGHT_MID, -5, 0)
|
||||
list2.set_style_bg_color(lv.palette_lighten(lv.PALETTE.BLUE, 5), lv.STATE.FOCUSED)
|
||||
lv.group_get_default().add_obj(list2)
|
||||
|
||||
for i in range(15):
|
||||
item_text = "Folder {:d}".format(i)
|
||||
item = list2.add_button(lv.SYMBOL.DIRECTORY, item_text)
|
||||
item.set_style_bg_opa(0, 0)
|
||||
lv.group_remove_obj(item)
|
||||
|
||||
@@ -1,84 +0,0 @@
|
||||
def cont_sub_event_cb(e):
|
||||
k = e.get_key()
|
||||
obj = e.get_target_obj()
|
||||
if k == lv.KEY.ENTER:
|
||||
lv.group_focus_obj(obj)
|
||||
|
||||
elif k == lv.KEY.ESC:
|
||||
obj.get_group().focus_next()
|
||||
|
||||
#
|
||||
# Nested grid navigations
|
||||
#
|
||||
# It's assumed that the default group is set and
|
||||
# there is a keyboard indev*/
|
||||
|
||||
cont_main = lv.obj(lv.screen_active())
|
||||
lv.gridnav_add(cont_main,lv.GRIDNAV_CTRL.ROLLOVER | lv.GRIDNAV_CTRL.SCROLL_FIRST)
|
||||
|
||||
# Only the container needs to be in a group
|
||||
lv.group_get_default().add_obj(cont_main)
|
||||
|
||||
# Use flex here, but works with grid or manually placed objects as well
|
||||
cont_main.set_flex_flow(lv.FLEX_FLOW.ROW_WRAP)
|
||||
cont_main.set_style_bg_color(lv.palette_lighten(lv.PALETTE.BLUE, 5), lv.STATE.FOCUSED)
|
||||
cont_main.set_size(lv.pct(80), lv.SIZE_CONTENT)
|
||||
|
||||
button = lv.button(cont_main)
|
||||
lv.group_remove_obj(button)
|
||||
label = lv.label(button)
|
||||
label.set_text("Button 1")
|
||||
|
||||
button = lv.button(cont_main)
|
||||
lv.group_remove_obj(button)
|
||||
label = lv.label(button)
|
||||
label.set_text("Button 2");
|
||||
|
||||
|
||||
# Create an other container with long text to show how LV_GRIDNAV_CTRL_SCROLL_FIRST works
|
||||
cont_sub1 = lv.obj(cont_main)
|
||||
cont_sub1.set_size(lv.pct(100), 100)
|
||||
|
||||
label = lv.label(cont_sub1)
|
||||
cont_sub1.set_style_bg_color(lv.palette_lighten(lv.PALETTE.RED, 5), lv.STATE.FOCUSED)
|
||||
label.set_width(lv.pct(100));
|
||||
label.set_text(
|
||||
"""I'm a very long text which makes my container scrollable.
|
||||
As LV_GRIDNAV_FLAG_SCROLL_FIRST is enabled arrows will scroll me first
|
||||
and a new objects will be focused only when an edge is reached with the scrolling.\n
|
||||
This is only some placeholder text to be sure the parent will be scrollable. \n
|
||||
Hello world!
|
||||
Hello world!
|
||||
Hello world!
|
||||
Hello world!
|
||||
Hello world!
|
||||
Hello world!
|
||||
""")
|
||||
|
||||
# Create a third container that can be focused with ENTER and contains an other grid nav
|
||||
cont_sub2 = lv.obj(cont_main)
|
||||
lv.gridnav_add(cont_sub2, lv.GRIDNAV_CTRL.ROLLOVER)
|
||||
#Only the container needs to be in a group
|
||||
lv.group_get_default().add_obj(cont_sub2)
|
||||
|
||||
cont_sub2.add_event_cb(cont_sub_event_cb, lv.EVENT.KEY, None)
|
||||
|
||||
# Use flex here, but works with grid or manually placed objects as well
|
||||
cont_sub2.set_flex_flow(lv.FLEX_FLOW.ROW_WRAP)
|
||||
cont_sub2.set_style_bg_color(lv.palette_lighten(lv.PALETTE.RED, 5), lv.STATE.FOCUSED)
|
||||
cont_sub2.set_size(lv.pct(100), lv.SIZE_CONTENT)
|
||||
|
||||
label = lv.label(cont_sub2)
|
||||
label.set_text("Use ENTER/ESC to focus/defocus this container")
|
||||
label.set_width(lv.pct(100))
|
||||
|
||||
button = lv.button(cont_sub2)
|
||||
lv.group_remove_obj(button)
|
||||
label = lv.label(button)
|
||||
label.set_text("Button 3")
|
||||
|
||||
button = lv.button(cont_sub2)
|
||||
lv.group_remove_obj(button)
|
||||
label = lv.label(button)
|
||||
label.set_text("Button 4")
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user