1 2/** 3 * @file main 4 * 5 */ 6 7/********************* 8 * INCLUDES 9 *********************/ 10#include <stdlib.h> 11#include <unistd.h> 12#define SDL_MAIN_HANDLED /*To fix SDL's "undefined reference to WinMain" issue*/ 13#include <SDL2/SDL.h> 14#include <emscripten.h> 15#include "lvgl/lvgl.h" 16#include "lvgl/demos/lv_demos.h" 17#include "lvgl/examples/lv_examples.h" 18 19/********************* 20 * DEFINES 21 *********************/ 22 23/*On OSX SDL needs different handling*/ 24#if defined(__APPLE__) && defined(TARGET_OS_MAC) 25# if __APPLE__ && TARGET_OS_MAC 26#define SDL_APPLE 27# endif 28#endif 29 30/********************** 31 * TYPEDEFS 32 **********************/ 33 34/********************** 35 * STATIC PROTOTYPES 36 **********************/ 37static void hal_init(void); 38static int tick_thread(void * data); 39static void memory_monitor(lv_timer_t * param); 40 41/********************** 42 * STATIC VARIABLES 43 **********************/ 44static lv_display_t * disp1; 45 46int monitor_hor_res, monitor_ver_res; 47 48/********************** 49 * MACROS 50 **********************/ 51 52/********************** 53 * GLOBAL FUNCTIONS 54 **********************/ 55void do_loop(void *arg); 56 57/* Allows disabling CHOSEN_DEMO */ 58static void lv_example_noop(void) { 59} 60 61int main(int argc, char ** argv) 62{ 63 64 monitor_hor_res = 800; 65 monitor_ver_res = 480; 66 printf("Starting with screen resolution of %dx%d px\n", monitor_hor_res, monitor_ver_res); 67 68 /*Initialize LittlevGL*/ 69 lv_init(); 70 71 /*Initialize the HAL (display, input devices, tick) for LittlevGL*/ 72 hal_init(); 73 74 lv_demo_widgets(); 75 76 emscripten_set_main_loop_arg(do_loop, NULL, -1, true); 77} 78 79void do_loop(void *arg) 80{ 81 /* Periodically call the lv_timer handler. 82 * It could be done in a timer interrupt or an OS task too.*/ 83 lv_timer_handler(); 84} 85 86/********************** 87 * STATIC FUNCTIONS 88 **********************/ 89 90 91/** 92 * Initialize the Hardware Abstraction Layer (HAL) for the Littlev graphics library 93 */ 94static void hal_init(void) 95{ 96 lv_display_t * disp = lv_sdl_window_create(monitor_hor_res, monitor_ver_res); 97 98 lv_group_t * g = lv_group_create(); 99 lv_group_set_default(g); 100 101 lv_sdl_mouse_create(); 102 lv_indev_t * mousewheel = lv_sdl_mousewheel_create(); 103 lv_indev_set_group(mousewheel, lv_group_get_default()); 104 105 lv_indev_t * keyboard = lv_sdl_keyboard_create(); 106 lv_indev_set_group(keyboard, lv_group_get_default()); 107} 108