void menu_display_draw_bg(menu_display_ctx_draw_t *draw) { static struct video_coords coords; const float *new_vertex = NULL; const float *new_tex_coord = NULL; settings_t *settings = config_get_ptr(); if (!menu_disp || !draw) return; new_vertex = draw->vertex; new_tex_coord = draw->tex_coord; if (!new_vertex) new_vertex = menu_disp->get_default_vertices(); if (!new_tex_coord) new_tex_coord = menu_disp->get_default_tex_coords(); coords.vertices = draw->vertex_count; coords.vertex = new_vertex; coords.tex_coord = new_tex_coord; coords.lut_tex_coord = new_tex_coord; coords.color = (const float*)draw->color; draw->coords = &coords; if (!menu_display_libretro_running() && !menu_display_shader_pipeline_active()) menu_display_set_alpha(draw->color, settings->menu.wallpaper.opacity); if (!draw->texture) draw->texture = menu_display_white_texture; draw->matrix_data = (math_matrix_4x4*)menu_disp->get_default_mvp(); }
static void xui_render_background(void) { #if 0 /* TODO/FIXME - refactor this */ if (menu_display_libretro_running()) XuiElementSetShow(m_background, FALSE); else #endif XuiElementSetShow(m_background, TRUE); }
static void nk_menu_frame(void *data) { float white_bg[16]= { 0.98, 0.98, 0.98, 1, 0.98, 0.98, 0.98, 1, 0.98, 0.98, 0.98, 1, 0.98, 0.98, 0.98, 1, }; unsigned width, height, ticker_limit, i; nk_menu_handle_t *nk = (nk_menu_handle_t*)data; settings_t *settings = config_get_ptr(); bool libretro_running = menu_display_libretro_running(); if (!nk) return; video_driver_get_size(&width, &height); menu_display_set_viewport(); nk_input_begin(&nk->ctx); nk_menu_input_gamepad(nk); nk_menu_input_mouse_movement(&nk->ctx); nk_menu_input_mouse_button(&nk->ctx); nk_menu_input_keyboard(&nk->ctx); if (width != nk->size.x || height != nk->size.y) { nk->size.x = width; nk->size.y = height; nk->size_changed = true; } nk_input_end(&nk->ctx); nk_menu_main(nk); if(nk_window_is_closed(&nk->ctx, "Shader Parameters")) nk_menu_wnd_shader_parameters(nk); nk_common_device_draw(&device, &nk->ctx, width, height, NK_ANTI_ALIASING_ON); menu_display_draw_cursor( &white_bg[0], 64, nk->textures.list[NK_TEXTURE_POINTER], menu_input_mouse_state(MENU_MOUSE_X_AXIS), menu_input_mouse_state(MENU_MOUSE_Y_AXIS), width, height); menu_display_restore_clear_color(); menu_display_unset_viewport(); }
bool menu_display_libretro(void) { video_driver_set_texture_enable(true, false); if (menu_display_libretro_running()) { if (!input_driver_is_libretro_input_blocked()) input_driver_set_libretro_input_blocked(); core_run(); input_driver_unset_libretro_input_blocked(); return true; } return video_driver_cached_frame_render(); }
static void zarch_frame(void *data) { unsigned i; float coord_color[16]; float coord_color2[16]; menu_display_ctx_draw_t draw; menu_display_ctx_coord_draw_t coord_draw; settings_t *settings = config_get_ptr(); zui_t *zui = (zui_t*)data; video_coord_array_t *ca = menu_display_get_coords_array(); if (!zui) return; video_driver_get_size(&zui->width, &zui->height); menu_display_set_viewport(); for (i = 0; i < 16; i++) { coord_color[i] = 0; coord_color2[i] = 2.0f; if (i == 3 || i == 7 || i == 11 || i == 15) { coord_color[i] = 0.10f; coord_color2[i] = 0.10f; } } zui->rendering = true; zui->hash = 0; zui->item.hot = 0; /* why do i need this? */ zui->mouse.wheel = menu_input_mouse_state(MENU_MOUSE_WHEEL_DOWN) - menu_input_mouse_state(MENU_MOUSE_WHEEL_UP); menu_display_coords_array_reset(); zui->tmp_block.carr.coords.vertices = 0; menu_display_font_bind_block((font_data_t*)zui->font, &zui->tmp_block); menu_display_push_quad(zui->width, zui->height, zui_bg_screen, 0, 0, zui->width, zui->height); menu_display_snow(zui->width, zui->height); switch (zarch_layout) { case LAY_HOME: if (zarch_zui_render_sidebar(zui)) return; if (zarch_zui_render_lay_root(zui)) return; break; case LAY_SETTINGS: zarch_zui_render_lay_settings(zui); break; case LAY_PICK_CORE: if (zarch_zui_render_sidebar(zui)) return; if (zarch_zui_render_pick_core(zui)) return; break; } if (settings->menu.mouse.enable) zarch_zui_draw_cursor( zarch_zui_input_state(zui, MENU_ZARCH_MOUSE_X), zarch_zui_input_state(zui, MENU_ZARCH_MOUSE_Y)); if (!zarch_zui_input_state(zui, MENU_ZARCH_PRESSED)) zui->item.active = 0; else if (zui->item.active == 0) zui->item.active = -1; menu_display_blend_begin(); draw.x = 0; draw.y = 0; draw.width = zui->width; draw.height = zui->height; draw.coords = (struct video_coords*)ca; draw.matrix_data = &zui->mvp; draw.texture = menu_display_white_texture; draw.prim_type = MENU_DISPLAY_PRIM_TRIANGLES; draw.pipeline.id = 0; menu_display_draw(&draw); menu_display_blend_end(); memset(&draw, 0, sizeof(menu_display_ctx_draw_t)); coord_draw.ptr = NULL; menu_display_get_tex_coords(&coord_draw); draw.width = zui->width; draw.height = zui->height; draw.texture = zui->textures.bg; draw.color = &coord_color[0]; draw.vertex = NULL; draw.tex_coord = coord_draw.ptr; draw.vertex_count = 4; draw.prim_type = MENU_DISPLAY_PRIM_TRIANGLESTRIP; if (!menu_display_libretro_running() && draw.texture) draw.color = &coord_color2[0]; menu_display_blend_begin(); draw.x = 0; draw.y = 0; menu_display_draw_bg(&draw); menu_display_draw(&draw); menu_display_blend_end(); zui->rendering = false; menu_display_font_flush_block((font_data_t*)zui->font); menu_display_unset_viewport(); }