/* RetroArch - A frontend for libretro. * Copyright (C) 2010-2014 - Hans-Kristian Arntzen * Copyright (C) 2011-2015 - Daniel De Matteis * * RetroArch is free software: you can redistribute it and/or modify it under the terms * of the GNU General Public License as published by the Free Software Found- * ation, either version 3 of the License, or (at your option) any later version. * * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with RetroArch. * If not, see . */ #ifndef __RETROARCH_MENU_H__ #define __RETROARCH_MENU_H__ #include #include #include #include #include #include #include "../driver.h" #include "../input/input_driver.h" #include "../dynamic.h" #if defined(HAVE_CG) || defined(HAVE_HLSL) || defined(HAVE_GLSL) #ifndef HAVE_SHADER_MANAGER #define HAVE_SHADER_MANAGER #endif #endif #ifndef GFX_MAX_PARAMETERS #define GFX_MAX_PARAMETERS 64 #endif #ifndef GFX_MAX_SHADERS #define GFX_MAX_SHADERS 16 #endif #ifndef MAX_COUNTERS #define MAX_COUNTERS 64 #endif #ifndef MAX_CHEAT_COUNTERS #define MAX_CHEAT_COUNTERS 100 #endif #define MENU_SETTINGS_CORE_INFO_NONE 0xffff #define MENU_SETTINGS_CORE_OPTION_NONE 0xffff #define MENU_SETTINGS_CHEEVOS_NONE 0xffff #define MENU_SETTINGS_CORE_OPTION_CREATE 0x05000 #define MENU_SETTINGS_CORE_OPTION_START 0x10000 #define MENU_SETTINGS_PLAYLIST_ASSOCIATION_START 0x20000 #define MENU_SETTINGS_CHEEVOS_START 0x40000 #define MENU_KEYBOARD_BIND_TIMEOUT_SECONDS 5 #ifdef __cplusplus extern "C" { #endif typedef enum { MENU_FILE_NONE = 0, MENU_FILE_PLAIN, MENU_FILE_DIRECTORY, MENU_FILE_PARENT_DIRECTORY, MENU_FILE_PATH, MENU_FILE_DEVICE, MENU_FILE_CORE, MENU_FILE_PLAYLIST_ENTRY, MENU_FILE_CONTENTLIST_ENTRY, MENU_FILE_SHADER_PRESET, MENU_FILE_SHADER, MENU_FILE_VIDEOFILTER, MENU_FILE_AUDIOFILTER, MENU_FILE_CHEAT, MENU_FILE_OVERLAY, MENU_FILE_FONT, MENU_FILE_CONFIG, MENU_FILE_USE_DIRECTORY, MENU_FILE_SCAN_DIRECTORY, MENU_FILE_CARCHIVE, MENU_FILE_IN_CARCHIVE, MENU_FILE_IMAGE, MENU_FILE_IMAGEVIEWER, MENU_FILE_REMAP, MENU_FILE_DOWNLOAD_CORE, MENU_FILE_DOWNLOAD_CORE_CONTENT, MENU_FILE_DOWNLOAD_CORE_INFO, MENU_FILE_RDB, MENU_FILE_RDB_ENTRY, MENU_FILE_RPL_ENTRY, MENU_FILE_CURSOR, MENU_FILE_RECORD_CONFIG, MENU_FILE_PLAYLIST_COLLECTION, MENU_FILE_PLAYLIST_ASSOCIATION, MENU_FILE_MOVIE, MENU_FILE_MUSIC, MENU_SETTINGS, MENU_SETTINGS_TAB, MENU_HISTORY_TAB, MENU_ADD_TAB, MENU_PLAYLISTS_TAB, MENU_SETTING_NO_ITEM, MENU_SETTING_DRIVER, MENU_SETTING_ACTION, MENU_SETTING_ACTION_RUN, MENU_SETTING_ACTION_CLOSE, MENU_SETTING_ACTION_CORE_OPTIONS, MENU_SETTING_ACTION_CORE_INPUT_REMAPPING_OPTIONS, MENU_SETTING_ACTION_CORE_CHEAT_OPTIONS, MENU_SETTING_ACTION_CORE_INFORMATION, MENU_SETTING_ACTION_CORE_DISK_OPTIONS, MENU_SETTING_ACTION_CORE_SHADER_OPTIONS, MENU_SETTING_ACTION_SAVESTATE, MENU_SETTING_ACTION_LOADSTATE, MENU_SETTING_ACTION_SCREENSHOT, MENU_SETTING_ACTION_RESET, MENU_SETTING_STRING_OPTIONS, MENU_SETTING_GROUP, MENU_SETTING_SUBGROUP, MENU_SETTING_HORIZONTAL_MENU, MENU_INFO_MESSAGE, MENU_FILE_TYPE_T_LAST } menu_file_type_t; typedef enum { MENU_SETTINGS_NONE = MENU_FILE_TYPE_T_LAST + 1, MENU_SETTINGS_SHADER_PARAMETER_0, MENU_SETTINGS_SHADER_PARAMETER_LAST = MENU_SETTINGS_SHADER_PARAMETER_0 + (GFX_MAX_PARAMETERS - 1), MENU_SETTINGS_SHADER_PRESET_PARAMETER_0, MENU_SETTINGS_SHADER_PRESET_PARAMETER_LAST = MENU_SETTINGS_SHADER_PRESET_PARAMETER_0 + (GFX_MAX_PARAMETERS - 1), MENU_SETTINGS_SHADER_PASS_0, MENU_SETTINGS_SHADER_PASS_LAST = MENU_SETTINGS_SHADER_PASS_0 + (GFX_MAX_SHADERS - 1), MENU_SETTINGS_SHADER_PASS_FILTER_0, MENU_SETTINGS_SHADER_PASS_FILTER_LAST = MENU_SETTINGS_SHADER_PASS_FILTER_0 + (GFX_MAX_SHADERS - 1), MENU_SETTINGS_SHADER_PASS_SCALE_0, MENU_SETTINGS_SHADER_PASS_SCALE_LAST = MENU_SETTINGS_SHADER_PASS_SCALE_0 + (GFX_MAX_SHADERS - 1), MENU_SETTINGS_CORE_DISK_OPTIONS_DISK_INDEX, MENU_SETTINGS_CORE_DISK_OPTIONS_DISK_IMAGE_APPEND, MENU_SETTINGS_CORE_DISK_OPTIONS_DISK_CYCLE_TRAY_STATUS, MENU_SETTINGS_BIND_BEGIN, MENU_SETTINGS_BIND_LAST = MENU_SETTINGS_BIND_BEGIN + RARCH_ANALOG_RIGHT_Y_MINUS, MENU_SETTINGS_BIND_ALL_LAST = MENU_SETTINGS_BIND_BEGIN + RARCH_MENU_TOGGLE, MENU_SETTINGS_CUSTOM_BIND, MENU_SETTINGS_CUSTOM_BIND_KEYBOARD, MENU_SETTINGS_CUSTOM_BIND_ALL, MENU_SETTINGS_CUSTOM_BIND_DEFAULT_ALL, MENU_SETTINGS_LIBRETRO_PERF_COUNTERS_BEGIN, MENU_SETTINGS_LIBRETRO_PERF_COUNTERS_END = MENU_SETTINGS_LIBRETRO_PERF_COUNTERS_BEGIN + (MAX_COUNTERS - 1), MENU_SETTINGS_PERF_COUNTERS_BEGIN, MENU_SETTINGS_PERF_COUNTERS_END = MENU_SETTINGS_PERF_COUNTERS_BEGIN + (MAX_COUNTERS - 1), MENU_SETTINGS_CHEAT_BEGIN, MENU_SETTINGS_CHEAT_END = MENU_SETTINGS_CHEAT_BEGIN + (MAX_CHEAT_COUNTERS - 1), MENU_SETTINGS_INPUT_DESC_BEGIN, MENU_SETTINGS_INPUT_DESC_END = MENU_SETTINGS_INPUT_DESC_BEGIN + (MAX_USERS * (RARCH_FIRST_CUSTOM_BIND + 4)), MENU_SETTINGS_LAST } menu_settings_t; /** * menu_init: * @data : Menu context handle. * * Create and initialize menu handle. * * Returns: menu handle on success, otherwise NULL. **/ void *menu_init(const void *data); /** * menu_iterate: * @render_this_frame : Render this frame or not * @action : Associated action for this frame * * Runs RetroArch menu for one frame. * * Returns: 0 on success, -1 if we need to quit out of the loop. **/ int menu_iterate(bool render_this_frame, enum menu_action action); int menu_iterate_render(void); /** * menu_free: * @menu : Menu handle. * * Frees a menu handle **/ void menu_free(menu_handle_t *menu); /** * menu_load_content: * type : Type of content to load. * * Loads content into currently selected core. * Will also optionally push the content entry to the history playlist. * * Returns: true (1) if successful, otherwise false (0). **/ bool menu_load_content(enum rarch_core_type type); int menu_common_load_content(const char *core_path, const char *full_path, bool persist, enum rarch_core_type type); #ifdef __cplusplus } #endif #endif