1*4882a593Smuzhiyun #ifdef USE_SDL_GPU
2*4882a593Smuzhiyun #define SDL_MAIN_HANDLED /*To fix SDL's "undefined reference to WinMain" issue*/
3*4882a593Smuzhiyun #include <SDL2/SDL.h>
4*4882a593Smuzhiyun #include "lvgl/lvgl.h"
5*4882a593Smuzhiyun #include "lvgl/lv_conf.h"
6*4882a593Smuzhiyun #include "lv_drivers/sdl/sdl_gpu.h"
7*4882a593Smuzhiyun
hal_sdl_init(lv_coord_t hor_res,lv_coord_t ver_res,int rotated)8*4882a593Smuzhiyun void hal_sdl_init(lv_coord_t hor_res, lv_coord_t ver_res, int rotated)
9*4882a593Smuzhiyun {
10*4882a593Smuzhiyun /* Use the 'monitor' driver which creates window on PC's monitor to simulate a display*/
11*4882a593Smuzhiyun monitor_init();
12*4882a593Smuzhiyun /* Tick init.
13*4882a593Smuzhiyun * You have to call 'lv_tick_inc()' in periodically to inform LittelvGL about
14*4882a593Smuzhiyun * how much time were elapsed Create an SDL thread to do this*/
15*4882a593Smuzhiyun SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_WARN);
16*4882a593Smuzhiyun
17*4882a593Smuzhiyun /*Create a display*/
18*4882a593Smuzhiyun static lv_disp_drv_t disp_drv;
19*4882a593Smuzhiyun disp_drv.rotated = rotated;
20*4882a593Smuzhiyun sdl_disp_drv_init(&disp_drv, hor_res, ver_res);
21*4882a593Smuzhiyun
22*4882a593Smuzhiyun lv_disp_t * disp = lv_disp_drv_register(&disp_drv);
23*4882a593Smuzhiyun
24*4882a593Smuzhiyun #if 0
25*4882a593Smuzhiyun lv_theme_t * th = lv_theme_default_init(disp, lv_palette_main(LV_PALETTE_BLUE), lv_palette_main(LV_PALETTE_RED), LV_THEME_DEFAULT_DARK, LV_FONT_DEFAULT);
26*4882a593Smuzhiyun lv_disp_set_theme(disp, th);
27*4882a593Smuzhiyun
28*4882a593Smuzhiyun lv_group_t * g = lv_group_create();
29*4882a593Smuzhiyun lv_group_set_default(g);
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun /* Add the mouse as input device
32*4882a593Smuzhiyun * Use the 'mouse' driver which reads the PC's mouse*/
33*4882a593Smuzhiyun //mouse_init();
34*4882a593Smuzhiyun static lv_indev_drv_t indev_drv_1;
35*4882a593Smuzhiyun lv_indev_drv_init(&indev_drv_1); /*Basic initialization*/
36*4882a593Smuzhiyun indev_drv_1.type = LV_INDEV_TYPE_POINTER;
37*4882a593Smuzhiyun
38*4882a593Smuzhiyun /*This function will be called periodically (by the library) to get the mouse position and state*/
39*4882a593Smuzhiyun indev_drv_1.read_cb = sdl_mouse_read;
40*4882a593Smuzhiyun lv_indev_t *mouse_indev = lv_indev_drv_register(&indev_drv_1);
41*4882a593Smuzhiyun if (!mouse_indev)
42*4882a593Smuzhiyun LV_LOG_WARN("Register indev failed");
43*4882a593Smuzhiyun
44*4882a593Smuzhiyun //keyboard_init();
45*4882a593Smuzhiyun static lv_indev_drv_t indev_drv_2;
46*4882a593Smuzhiyun lv_indev_drv_init(&indev_drv_2); /*Basic initialization*/
47*4882a593Smuzhiyun indev_drv_2.type = LV_INDEV_TYPE_KEYPAD;
48*4882a593Smuzhiyun indev_drv_2.read_cb = sdl_keyboard_read;
49*4882a593Smuzhiyun lv_indev_t *kb_indev = lv_indev_drv_register(&indev_drv_2);
50*4882a593Smuzhiyun lv_indev_set_group(kb_indev, g);
51*4882a593Smuzhiyun //mousewheel_init();
52*4882a593Smuzhiyun static lv_indev_drv_t indev_drv_3;
53*4882a593Smuzhiyun lv_indev_drv_init(&indev_drv_3); /*Basic initialization*/
54*4882a593Smuzhiyun indev_drv_3.type = LV_INDEV_TYPE_ENCODER;
55*4882a593Smuzhiyun indev_drv_3.read_cb = sdl_mousewheel_read;
56*4882a593Smuzhiyun
57*4882a593Smuzhiyun lv_indev_t * enc_indev = lv_indev_drv_register(&indev_drv_3);
58*4882a593Smuzhiyun lv_indev_set_group(enc_indev, g);
59*4882a593Smuzhiyun #endif
60*4882a593Smuzhiyun }
61*4882a593Smuzhiyun #endif
62*4882a593Smuzhiyun
63