static void glui_layout(menu_handle_t *menu, glui_handle_t *glui) { menu_display_t *disp = menu_display_get_ptr(); float scale_factor; unsigned width, height; video_driver_get_size(&width, &height); /* Mobiles platforms may have very small display metrics coupled to a high resolution, so we should be dpi aware to ensure the entries hitboxes are big enough. On desktops, we just care about readability, with every widget size proportional to the display width. */ scale_factor = menu_display_get_dpi(); glui->line_height = scale_factor / 3; glui->margin = scale_factor / 6; menu->display.header_height = scale_factor / 3; menu->display.font.size = scale_factor / 10; /* we assume the average glyph aspect ratio is close to 3:4 */ glui->glyph_width = menu->display.font.size * 3/4; glui_font(menu); if (disp && disp->font.buf) /* calculate a more realistic ticker_limit */ { driver_t *driver = driver_get_ptr(); int m_width = driver->font_osd_driver->get_message_width(disp->font.buf, "a", 1, 1); if (m_width) glui->glyph_width = m_width; } }
static void nk_menu_layout(nk_menu_handle_t *nk) { float scale_factor; unsigned width, height, new_header_height; video_driver_get_size(&width, &height); scale_factor = menu_display_get_dpi(); menu_display_set_header_height(new_header_height); }
static void *glui_init(void) { float dpi; glui_handle_t *glui = NULL; const video_driver_t *video_driver = NULL; menu_handle_t *menu = NULL; settings_t *settings = config_get_ptr(); gl_t *gl = (gl_t*) video_driver_get_ptr(&video_driver); if (video_driver != &video_gl || !gl) { RARCH_ERR("Cannot initialize GLUI menu driver: gl video driver is not active.\n"); return NULL; } menu = (menu_handle_t*)calloc(1, sizeof(*menu)); if (!menu) goto error; menu->userdata = (glui_handle_t*)calloc(1, sizeof(glui_handle_t)); if (!menu->userdata) goto error; glui = (glui_handle_t*)menu->userdata; dpi = menu_display_get_dpi(); glui->line_height = dpi / 3; glui->margin = dpi / 6; glui->ticker_limit = dpi / 3; menu->display.header_height = dpi / 3; menu->display.font.size = dpi / 8; glui->textures.bg.id = 0; glui_allocate_white_texture(glui); if (settings->menu.wallpaper[0] != '\0') rarch_main_data_msg_queue_push(DATA_TYPE_IMAGE, settings->menu.wallpaper, "cb_menu_wallpaper", 0, 1, true); return menu; error: if (menu) free(menu); return NULL; }
static void glui_layout(menu_handle_t *menu, glui_handle_t *glui) { float scale_factor; unsigned width, height; settings_t *settings = config_get_ptr(); video_driver_get_size(&width, &height); if (settings->video.fullscreen) scale_factor = menu_display_get_dpi(); else scale_factor = width / 6; glui->line_height = scale_factor / 3; glui->margin = scale_factor / 6; glui->ticker_limit = scale_factor / 3; menu->display.header_height = scale_factor / 3; menu->display.font.size = scale_factor / 8; }