void snake_main(void) { struct rtgui_app *application; struct rtgui_win *win; rtgui_rect_t rect; application = rtgui_app_create(rt_thread_self(), "sanke_app"); if (application != RT_NULL) { rtgui_get_screen_rect(&rect); rtgui_set_mainwin_rect(&rect); win = rtgui_mainwin_create(RT_NULL, "sanke_win", RTGUI_WIN_STYLE_MAINWIN | RTGUI_WIN_STYLE_DESTROY_ON_CLOSE); if (win == RT_NULL) { rt_kprintf("sanke_win create fail!\r\n"); return; } rtgui_object_set_event_handler(RTGUI_OBJECT(win), event_handler); timer = rtgui_timer_create(RT_TICK_PER_SECOND / 2, RT_TIMER_FLAG_PERIODIC, timeout, (void *)win); rtgui_win_show(win, RT_TRUE); //Í˳öºó²Å·µ»Ø map_deinit(map); snake_deinit(); food_deinit(); rtgui_app_destroy(application); } }
rt_err_t rtgui_graphic_set_device(rt_device_t device) { rt_err_t result; struct rt_device_graphic_info info; struct rtgui_graphic_ext_ops *ext_ops; /* get framebuffer address */ result = rt_device_control(device, RTGRAPHIC_CTRL_GET_INFO, &info); if (result != RT_EOK) { /* get device information failed */ return -RT_ERROR; } /* if the first set graphic device */ if (_driver.width == 0 || _driver.height == 0) { rtgui_rect_t rect; rtgui_get_mainwin_rect(&rect); if (rect.x2 == 0 || rect.y2 == 0) { rtgui_rect_init(&rect, 0, 0, info.width, info.height); /* re-set main-window */ rtgui_set_mainwin_rect(&rect); } } /* initialize framebuffer driver */ _driver.device = device; _driver.pixel_format = info.pixel_format; _driver.bits_per_pixel = info.bits_per_pixel; _driver.width = info.width; _driver.height = info.height; _driver.pitch = _driver.width * _UI_BITBYTES(_driver.bits_per_pixel); _driver.framebuffer = info.framebuffer; /* get graphic extension operations */ result = rt_device_control(device, RTGRAPHIC_CTRL_GET_EXT, &ext_ops); if (result == RT_EOK) { _driver.ext_ops = ext_ops; } if (info.framebuffer != RT_NULL) { /* is a frame buffer device */ _driver.ops = rtgui_framebuffer_get_ops(_driver.pixel_format); } else { /* is a pixel device */ _driver.ops = rtgui_pixel_device_get_ops(_driver.pixel_format); } #ifdef RTGUI_USING_HW_CURSOR /* set default cursor image */ rtgui_cursor_set_image(RTGUI_CURSOR_ARROW); #endif #ifdef RTGUI_USING_VFRAMEBUFFER _graphic_driver_vmode_init(); #endif return RT_EOK; }