static void gl1_load_texture_data( GLuint id, enum gfx_wrap_type wrap_type, enum texture_filter_type filter_type, unsigned alignment, unsigned width, unsigned height, const void *frame, unsigned base_size) { GLint mag_filter, min_filter; bool use_rgba = video_driver_supports_rgba(); bool rgb32 = (base_size == (sizeof(uint32_t))); GLenum wrap = gl1_wrap_type_to_enum(wrap_type); /* GL1.x does not have mipmapping support. */ switch (filter_type) { case TEXTURE_FILTER_MIPMAP_NEAREST: case TEXTURE_FILTER_NEAREST: min_filter = GL_NEAREST; mag_filter = GL_NEAREST; break; case TEXTURE_FILTER_MIPMAP_LINEAR: case TEXTURE_FILTER_LINEAR: default: min_filter = GL_LINEAR; mag_filter = GL_LINEAR; break; } gl1_bind_texture(id, wrap, mag_filter, min_filter); glPixelStorei(GL_UNPACK_ALIGNMENT, alignment); glTexImage2D(GL_TEXTURE_2D, 0, (use_rgba || !rgb32) ? GL_RGBA : RARCH_GL1_INTERNAL_FORMAT32, width, height, 0, (use_rgba || !rgb32) ? GL_RGBA : RARCH_GL1_TEXTURE_TYPE32, (rgb32) ? RARCH_GL1_FORMAT32 : GL_UNSIGNED_BYTE, frame); }
struct nk_image nk_common_image_load(const char *filename) { int x,y,n; struct texture_image ti; uintptr_t tex; ti.width = 0; ti.height = 0; ti.pixels = NULL; ti.supports_rgba = video_driver_supports_rgba(); image_texture_load(&ti, filename); if (!ti.pixels) printf("Failed to load image: %s\n", filename); video_driver_texture_load(&ti, TEXTURE_FILTER_MIPMAP_NEAREST, &tex); image_texture_free(&ti); return nk_image_id((int)tex); }
void ozone_context_reset_horizontal_list(ozone_handle_t *ozone) { unsigned i; const char *title; char title_noext[255]; char *chr; bool hyphen_found; size_t list_size = ozone_list_get_size(ozone, MENU_LIST_HORIZONTAL); for (i = 0; i < list_size; i++) { const char *path = NULL; ozone_node_t *node = (ozone_node_t*)file_list_get_userdata_at_offset(ozone->horizontal_list, i); if (!node) { node = ozone_alloc_node(); if (!node) continue; } file_list_get_at_offset(ozone->horizontal_list, i, &path, NULL, NULL, NULL); if (!path) continue; if (!strstr(path, file_path_str(FILE_PATH_LPL_EXTENSION))) continue; { struct texture_image ti; char *sysname = (char*) malloc(PATH_MAX_LENGTH * sizeof(char)); char *texturepath = (char*) malloc(PATH_MAX_LENGTH * sizeof(char)); char *content_texturepath = (char*) malloc(PATH_MAX_LENGTH * sizeof(char)); char *icons_path = (char*) malloc(PATH_MAX_LENGTH * sizeof(char)); strlcpy(icons_path, ozone->icons_path, PATH_MAX_LENGTH * sizeof(char)); sysname[0] = texturepath[0] = content_texturepath[0] = '\0'; fill_pathname_base_noext(sysname, path, PATH_MAX_LENGTH * sizeof(char)); fill_pathname_join_concat(texturepath, icons_path, sysname, file_path_str(FILE_PATH_PNG_EXTENSION), PATH_MAX_LENGTH * sizeof(char)); /* If the playlist icon doesn't exist return default */ if (!filestream_exists(texturepath)) fill_pathname_join_concat(texturepath, icons_path, "default", file_path_str(FILE_PATH_PNG_EXTENSION), PATH_MAX_LENGTH * sizeof(char)); ti.width = 0; ti.height = 0; ti.pixels = NULL; ti.supports_rgba = video_driver_supports_rgba(); if (image_texture_load(&ti, texturepath)) { if(ti.pixels) { video_driver_texture_unload(&node->icon); video_driver_texture_load(&ti, TEXTURE_FILTER_MIPMAP_LINEAR, &node->icon); } image_texture_free(&ti); } fill_pathname_join_delim(sysname, sysname, file_path_str(FILE_PATH_CONTENT_BASENAME), '-', PATH_MAX_LENGTH * sizeof(char)); strlcat(content_texturepath, icons_path, PATH_MAX_LENGTH * sizeof(char)); strlcat(content_texturepath, path_default_slash(), PATH_MAX_LENGTH * sizeof(char)); strlcat(content_texturepath, sysname, PATH_MAX_LENGTH * sizeof(char)); /* If the content icon doesn't exist return default-content */ if (!filestream_exists(content_texturepath)) { strlcat(icons_path, path_default_slash(), PATH_MAX_LENGTH * sizeof(char)); strlcat(icons_path, "default", PATH_MAX_LENGTH * sizeof(char)); fill_pathname_join_delim(content_texturepath, icons_path, file_path_str(FILE_PATH_CONTENT_BASENAME), '-', PATH_MAX_LENGTH * sizeof(char)); } if (image_texture_load(&ti, content_texturepath)) { if(ti.pixels) { video_driver_texture_unload(&node->content_icon); video_driver_texture_load(&ti, TEXTURE_FILTER_MIPMAP_LINEAR, &node->content_icon); } image_texture_free(&ti); } /* Console name */ menu_entries_get_at_offset( ozone->horizontal_list, i, &title, NULL, NULL, NULL, NULL); fill_pathname_base_noext(title_noext, title, sizeof(title_noext)); /* Format : "Vendor - Console" Remove everything before the hyphen and the subsequent space */ chr = title_noext; hyphen_found = false; while (true) { if (*chr == '-') { hyphen_found = true; break; } else if (*chr == '\0') break; chr++; } if (hyphen_found) chr += 2; else chr = title_noext; if (node->console_name) free(node->console_name); node->console_name = strdup(chr); free(sysname); free(texturepath); free(content_texturepath); free(icons_path); } } }