static void lakka_frame(void) { struct font_output_list *msg; gl_t *gl = (gl_t*)driver.video_data; menu_category_t *active_category = (menu_category_t*)&categories[menu_active_category]; menu_item_t *active_item; if (!driver.menu || !gl || !active_category) return; active_item = (menu_item_t*)&active_category->items[active_category->active_item]; update_tweens(0.002); glViewport(0, 0, gl->win_width, gl->win_height); lakka_draw_background(); lakka_draw_categories(); if (depth == 0 && active_category) lakka_draw_text(active_category->name, title_margin_left, title_margin_top, 1, 1.0); else if (active_item) lakka_draw_text(active_item->name, title_margin_left, title_margin_top, 1, 1.0); lakka_draw_icon(textures[TEXTURE_ARROW].id, margin_left + hspacing*(menu_active_category+1) + all_categories_x + icon_size/2.0, margin_top + vspacing*active_item_factor + icon_size/2.0, arrow_alpha, 0, i_active_zoom); gl_set_viewport(gl, gl->win_width, gl->win_height, false, false); }
static void lakka_frame(void) { menu_item_t *active_item = NULL; menu_category_t *active_category = NULL; lakka_handle_t *lakka = NULL; gl_t *gl = (gl_t*)driver_video_resolve(NULL); if (!gl) return; if (!driver.menu) return; lakka = (lakka_handle_t*)driver.menu->userdata; if (!lakka) return; active_category = (menu_category_t*) &lakka->categories[lakka->menu_active_category]; if (!active_category) return; active_item = (menu_item_t*) &active_category->items[active_category->active_item]; update_tweens(0.002); #if defined(HAVE_FBO) && defined(LAKKA_EFFECTS) glBindFramebuffer(GL_FRAMEBUFFER, fbo); glClearColor(0.0, 0.0, 0.0, 0.0); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); lakka_draw_categories(lakka); lakka_draw_arrow(lakka); glBindFramebuffer(GL_FRAMEBUFFER, 0); glViewport(0, 0, gl->win_width, gl->win_height); lakka_draw_background(); lakka_draw_fbo(); #else glViewport(0, 0, gl->win_width, gl->win_height); lakka_draw_background(); lakka_draw_categories(lakka); lakka_draw_arrow(lakka); #endif if (lakka->depth == 0) lakka_draw_text(lakka, active_category->name, lakka->title_margin_left, lakka->title_margin_top, 1, 1.0); else if (active_item) lakka_draw_text(lakka, active_item->name, lakka->title_margin_left, lakka->title_margin_top, 1, 1.0); gl_set_viewport(gl, gl->win_width, gl->win_height, false, false); glDisable(GL_BLEND); }
static void lakka_frame(void) { struct font_output_list *msg; gl_t *gl = (gl_t*)driver.video_data; menu_category_t *active_category = (menu_category_t*)&categories[menu_active_category]; menu_item_t *active_item; if (!driver.menu || !gl || !active_category) return; active_item = (menu_item_t*)&active_category->items[active_category->active_item]; update_tweens(0.002); glViewport(0, 0, gl->win_width, gl->win_height); lakka_draw_background(); lakka_draw_categories(); if (depth == 0) { if (active_category) lakka_draw_text(&active_category->out, 15.0, 40.0, 1, 1.0); } else { if (active_item) lakka_draw_text(&active_item->out, 15.0, 40.0, 1, 1.0); lakka_draw_icon(textures[TEXTURE_ARROW].id, 156 + HSPACING*(menu_active_category+1) + all_categories_x + 150 +-dim/2.0, 300 + VSPACING*2.4 + (dim/2.0), 1, 0, I_ACTIVE_ZOOM); } gl_set_viewport(gl, gl->win_width, gl->win_height, false, false); }
static void xmb_frame(void) { int i; char title_msg[64]; size_t end; const char *dir = NULL; const char *label = NULL; unsigned menu_type = 0; xmb_handle_t *xmb = (xmb_handle_t*)driver.menu->userdata; gl_t *gl = (gl_t*)driver_video_resolve(NULL); if (!xmb || !gl) return; if (driver.menu->need_refresh && g_extern.is_menu && !driver.menu->msg_force) return; update_tweens(0.002); glViewport(0, 0, gl->win_width, gl->win_height); xmb_render_background(); file_list_get_last(driver.menu->menu_stack, &dir, &label, &menu_type); get_title(label, dir, menu_type, xmb->title, sizeof(xmb->title)); xmb_draw_text(xmb->title, 30, 40, 1, 1); const char *core_name = g_extern.menu.info.library_name; if (!core_name) core_name = g_extern.system.info.library_name; if (!core_name) core_name = "No Core"; const char *core_version = g_extern.menu.info.library_version; if (!core_version) core_version = g_extern.system.info.library_version; if (!core_version) core_version = ""; snprintf(title_msg, sizeof(title_msg), "%s - %s %s", PACKAGE_VERSION, core_name, core_version); xmb_draw_text(title_msg, 30, gl->win_height - 30, 1, 1); end = file_list_get_size(driver.menu->selection_buf); for (i = 0; i < end; i++) { char value[PATH_MAX], path_buf[PATH_MAX]; const char *path = NULL, *entry_label = NULL; unsigned type = 0, w = 0; xmb_node_t *node = NULL; file_list_get_at_offset(driver.menu->selection_buf, i, &path, &entry_label, &type); node = (xmb_node_t*)file_list_get_userdata_at_offset( driver.menu->selection_buf, i); disp_set_label(&w, type, i, label, value, sizeof(value), entry_label, path, path_buf, sizeof(path_buf)); xmb_draw_icon(xmb->textures[XMB_TEXTURE_SETTING].id, xmb->margin_left + xmb->hspacing - xmb->icon_size/2.0, xmb->margin_top + node->y + xmb->icon_size/2.0, node->alpha, 0, node->zoom); xmb_draw_text(path_buf, xmb->margin_left + xmb->hspacing + xmb->label_margin_left, xmb->margin_top + node->y + xmb->label_margin_top, 1, node->alpha); xmb_draw_text(value, xmb->margin_left + xmb->hspacing + xmb->label_margin_left + xmb->setting_margin_left, xmb->margin_top + node->y + xmb->label_margin_top, 1, node->alpha); } xmb_draw_icon(xmb->textures[XMB_TEXTURE_SETTINGS].id, xmb->margin_left + xmb->hspacing - xmb->icon_size / 2.0, xmb->margin_top + xmb->icon_size / 2.0, 1.0, 0, 1.0); #ifdef GEKKO const char *message_queue; if (driver.menu->msg_force) { message_queue = msg_queue_pull(g_extern.msg_queue); driver.menu->msg_force = false; } else message_queue = driver.current_msg; xmb_render_messagebox(message_queue); #endif if (driver.menu->keyboard.display) { char msg[PATH_MAX]; const char *str = *driver.menu->keyboard.buffer; if (!str) str = ""; snprintf(msg, sizeof(msg), "%s\n%s", driver.menu->keyboard.label, str); xmb_render_messagebox(msg); } if (xmb->box_message[0] != '\0') { xmb_render_background(); xmb_render_messagebox(xmb->box_message); xmb->box_message[0] = '\0'; } gl_set_viewport(gl, gl->win_width, gl->win_height, false, false); }