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; if (!zui) return; video_driver_get_size(&zui->width, &zui->height); menu_display_ctl(MENU_DISPLAY_CTL_SET_VIEWPORT, NULL); menu_display_ctl(MENU_DISPLAY_CTL_FONT_BUF, &zui->fb_buf); 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); zui->ca.coords.vertices = 0; zui->tmp_block.carr.coords.vertices = 0; menu_display_ctl(MENU_DISPLAY_CTL_FONT_BIND_BLOCK, &zui->tmp_block); zarch_zui_push_quad(zui->width, zui->height, zui_bg_screen, &zui->ca, 0, 0, zui->width, zui->height); zarch_zui_snow(zui, &zui->ca, 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_ctl(MENU_DISPLAY_CTL_BLEND_BEGIN, NULL); draw.x = 0; draw.y = 0; draw.width = zui->width; draw.height = zui->height; draw.coords = (struct gfx_coords*)&zui->ca; draw.matrix_data = &zui->mvp; draw.texture = zui->textures.white; draw.prim_type = MENU_DISPLAY_PRIM_TRIANGLES; menu_display_ctl(MENU_DISPLAY_CTL_DRAW, &draw); menu_display_ctl(MENU_DISPLAY_CTL_BLEND_END, NULL); memset(&draw, 0, sizeof(menu_display_ctx_draw_t)); coord_draw.ptr = NULL; menu_display_ctl(MENU_DISPLAY_CTL_TEX_COORDS_GET, &coord_draw); draw.width = zui->width; draw.height = zui->height; draw.texture = zui->textures.bg; draw.handle_alpha = 0.75f; draw.force_transparency = false; draw.color = &coord_color[0]; draw.color2 = &coord_color2[0]; draw.vertex = NULL; draw.tex_coord = coord_draw.ptr; draw.vertex_count = 4; draw.prim_type = MENU_DISPLAY_PRIM_TRIANGLESTRIP; menu_display_ctl(MENU_DISPLAY_CTL_DRAW_BG, &draw); zui->rendering = false; menu_display_ctl(MENU_DISPLAY_CTL_FONT_FLUSH_BLOCK, NULL); menu_display_ctl(MENU_DISPLAY_CTL_UNSET_VIEWPORT, NULL); }
static void zarch_frame(void) { unsigned i; float coord_color[16]; float coord_color2[16]; zui_t *zui = NULL; const struct font_renderer *font_driver = NULL; driver_t *driver = driver_get_ptr(); settings_t *settings = config_get_ptr(); menu_handle_t *menu = menu_driver_get_ptr(); if (!menu) return; (void)driver; zui = (zui_t*)menu->userdata; zui->menu = menu; video_driver_get_size(&zui->width, &zui->height); menu_display_ctl(MENU_DISPLAY_CTL_SET_VIEWPORT, NULL); menu_display_ctl(MENU_DISPLAY_CTL_FONT_BUF, &zui->fb_buf); 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); zui->ca.coords.vertices = 0; zui->tmp_block.carr.coords.vertices = 0; font_driver = driver->font_osd_driver; menu_display_font_bind_block(zui->menu, font_driver, &zui->tmp_block); zarch_zui_push_quad(zui->width, zui->height, ZUI_BG_SCREEN, &zui->ca, 0, 0, zui->width, zui->height); zarch_zui_snow(zui, &zui->ca, zui->width, zui->height); switch (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(); menu_display_draw( 0, 0, zui->width, zui->height, (struct gfx_coords*)&zui->ca, &zui->mvp, zui->textures.white, MENU_DISPLAY_PRIM_TRIANGLES); menu_display_blend_end(); menu_display_draw_bg( zui->width, zui->height, zui->textures.bg.id, 0.75f, false, &coord_color[0], &coord_color2[0], NULL, menu_display_get_tex_coords(), 4, MENU_DISPLAY_PRIM_TRIANGLESTRIP); menu_display_font_flush_block(zui->menu, driver->font_osd_driver); zui->rendering = false; menu_display_ctl(MENU_DISPLAY_CTL_UNSET_VIEWPORT, NULL); }