1 #include <stdio.h>
2 #include "main.h"
3 #include "icebox_ui.h"
4 #include "furniture_control_ui.h"
5
6 ///////////////////// VARIABLES ////////////////////
7 static lv_obj_t * ui_icebox_screen = NULL;
8 static lv_obj_t * ui_icebox_box = NULL;
9 static lv_obj_t * ui_icebox_text_box = NULL;
10 static lv_obj_t * text_box1 = NULL;
11 static lv_obj_t * text_box2 = NULL;
12 static lv_obj_t * ui_icebox_png_box = NULL;
13 static lv_obj_t * bg_pic = NULL;
14 static lv_obj_t * text_bg;
15 static lv_obj_t * ui_icebox_tem;
16 static lv_obj_t * ui_Label1;
17 static lv_obj_t * ui_Label3;
18 static lv_obj_t * ui_rice;
19 static lv_obj_t * ui_return;
20 static lv_img_dsc_t * bg_snapshot;
21
22 ///////////////////// TEST LVGL SETTINGS ////////////////////
23
24 ///////////////////// ANIMATIONS ////////////////////
25
26 ///////////////////// FUNCTIONS ////////////////////
27
icebox_page_jump_furniture_control_callback(lv_event_t * event)28 void icebox_page_jump_furniture_control_callback(lv_event_t* event) {
29 printf("icebox_page_jump_furniture_control_callback is into \n");
30 furniture_control_ui_init();
31 lv_obj_del(ui_icebox_screen);
32 free(bg_snapshot);
33 ui_icebox_screen = NULL;
34 }
35
bg_pic_snapshot_blur(void)36 static void bg_pic_snapshot_blur(void)
37 {
38 lv_draw_rect_dsc_t dsc;
39
40 bg_snapshot = lv_snapshot_take(bg_pic, LV_IMG_CF_TRUE_COLOR);
41
42 lv_obj_t * canvas = lv_canvas_create(NULL);
43 lv_area_t area;
44 lv_canvas_set_buffer(canvas, bg_snapshot->data,
45 bg_snapshot->header.w,
46 bg_snapshot->header.h,
47 bg_snapshot->header.cf);
48 area.x1 = 0;
49 area.y1 = 0;
50 area.x2 = bg_snapshot->header.w - 1;
51 area.y2 = bg_snapshot->header.h - 1;
52 lv_canvas_blur_ver(canvas, &area, 100);
53 lv_canvas_blur_hor(canvas, &area, 100);
54 lv_draw_rect_dsc_init(&dsc);
55 dsc.bg_opa = 70;
56 dsc.bg_color = lv_color_black();
57 lv_canvas_draw_rect(canvas, 0, 0,
58 bg_snapshot->header.w,
59 bg_snapshot->header.h, &dsc);
60 lv_obj_del(canvas);
61 }
62
63 ///////////////////// SCREENS ////////////////////
ui_icebox_screen_init(void)64 void ui_icebox_screen_init(void)
65 {
66 int x, y;
67 int ofs;
68 ui_icebox_screen = lv_obj_create(NULL);
69 lv_obj_clear_flag(ui_icebox_screen, LV_OBJ_FLAG_SCROLLABLE); /// Flags
70
71 bg_pic = lv_img_create(ui_icebox_screen);
72 lv_obj_set_pos(bg_pic, 0, 0);
73 lv_img_set_src(bg_pic, BG_PIC_0);
74 bg_pic_snapshot_blur();
75
76 ui_icebox_box = lv_obj_create(ui_icebox_screen);
77 lv_obj_remove_style_all(ui_icebox_box);
78 lv_obj_set_width(ui_icebox_box, lv_pct(100));
79 lv_obj_set_height(ui_icebox_box, lv_pct(33));
80 lv_obj_align(ui_icebox_box, LV_ALIGN_TOP_LEFT, 0, lv_pct(33));
81 lv_obj_refr_pos(ui_icebox_box);
82 //lv_obj_set_flex_flow(ui_icebox_box, LV_FLEX_FLOW_ROW);//行
83
84 text_bg = lv_img_create(ui_icebox_box);
85 lv_obj_set_width(text_bg, lv_pct(100));
86 lv_obj_set_height(text_bg, lv_pct(100));
87 lv_obj_refr_pos(text_bg);
88 x = lv_obj_get_x(text_bg) + lv_obj_get_x(ui_icebox_box);
89 y = lv_obj_get_y(text_bg) + lv_obj_get_y(ui_icebox_box);
90 ofs = (y * bg_snapshot->header.w + x) * lv_img_cf_get_px_size(bg_snapshot->header.cf) / 8;
91 bg_snapshot->data = bg_snapshot->data + ofs;
92 lv_img_set_src(text_bg, bg_snapshot);
93 lv_obj_clear_flag(text_bg, LV_OBJ_FLAG_SCROLLABLE);
94
95 ui_icebox_text_box = lv_obj_create(text_bg);
96 lv_obj_remove_style_all(ui_icebox_text_box);
97 lv_obj_set_width(ui_icebox_text_box, lv_pct(66));
98 lv_obj_set_height(ui_icebox_text_box, lv_pct(80));
99 lv_obj_clear_flag(ui_icebox_text_box, LV_OBJ_FLAG_SCROLLABLE);
100
101 text_box1 = lv_obj_create(ui_icebox_text_box);
102 lv_obj_remove_style_all(text_box1);
103 lv_obj_set_width(text_box1, lv_pct(100));
104 lv_obj_set_height(text_box1, lv_pct(30));
105 lv_obj_align(text_box1, LV_ALIGN_TOP_LEFT, 0, 0);
106
107 ui_Label1 = lv_label_create(text_box1);
108 lv_obj_set_width(ui_Label1, LV_SIZE_CONTENT); /// 1
109 lv_obj_set_height(ui_Label1, LV_SIZE_CONTENT); /// 1
110 lv_obj_add_style(ui_Label1, &style_txt_m, LV_PART_MAIN);
111 lv_obj_set_align(ui_Label1, LV_ALIGN_CENTER);
112 lv_label_set_text(ui_Label1, "每日食谱-炒饭");
113
114 text_box2 = lv_obj_create(ui_icebox_text_box);
115 lv_obj_remove_style_all(text_box2);
116 lv_obj_set_width(text_box2, lv_pct(100));
117 lv_obj_set_height(text_box2, lv_pct(66));
118 lv_obj_align(text_box2, LV_ALIGN_BOTTOM_LEFT, 0, 0);
119
120 ui_Label3 = lv_label_create(text_box2);
121 lv_obj_set_width(ui_Label3, LV_SIZE_CONTENT); /// 1
122 lv_obj_set_height(ui_Label3, LV_SIZE_CONTENT); /// 1
123 lv_obj_add_style(ui_Label3, &style_txt_m, LV_PART_MAIN);
124 lv_obj_set_align(ui_Label3, LV_ALIGN_CENTER);
125 lv_label_set_text(ui_Label3,
126 "将玉米粒、青豆、胡萝卜入锅一起炒匀,\n加适量的盐调味、滴几滴蚝油炒匀。");
127
128 ui_icebox_png_box = lv_img_create(text_bg);
129 lv_obj_set_width(ui_icebox_png_box, lv_pct(30));
130 lv_obj_set_height(ui_icebox_png_box, lv_pct(100));
131 lv_obj_align(ui_icebox_png_box, LV_ALIGN_TOP_RIGHT, 0, 0);
132
133 ui_rice = lv_img_create(ui_icebox_png_box);
134 lv_img_set_src(ui_rice, IMG_RICE);
135 lv_obj_set_width(ui_rice, LV_SIZE_CONTENT); /// 150
136 lv_obj_set_height(ui_rice, LV_SIZE_CONTENT); /// 115
137 lv_obj_set_align(ui_rice, LV_ALIGN_CENTER);
138
139 ui_return = lv_img_create(ui_icebox_screen);
140 lv_img_set_src(ui_return, IMG_RETURN_BTN);
141 lv_obj_set_width(ui_return, LV_SIZE_CONTENT); /// 32
142 lv_obj_set_height(ui_return, LV_SIZE_CONTENT); /// 32
143 lv_obj_align(ui_return, LV_ALIGN_TOP_LEFT, 10, 10);
144 lv_obj_add_flag(ui_return, LV_OBJ_FLAG_CLICKABLE | LV_OBJ_FLAG_ADV_HITTEST); /// Flags
145 lv_obj_clear_flag(ui_return, LV_OBJ_FLAG_SCROLLABLE); /// Flags
146 if (ui_return != NULL) {
147 lv_obj_add_event_cb(ui_return, icebox_page_jump_furniture_control_callback, LV_EVENT_CLICKED, NULL);
148 }
149
150 }
151
icebox_ui_init(void)152 void icebox_ui_init(void)
153 {
154 if (!ui_icebox_screen)
155 ui_icebox_screen_init();
156 lv_disp_load_scr(ui_icebox_screen);
157 }
158