xref: /OK3568_Linux_fs/app/lvgl_demo/rk_demo/furniture_control/icebox_ui.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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