/* RetroArch - A frontend for libretro. * Copyright (C) 2010-2014 - Hans-Kristian Arntzen * Copyright (C) 2011-2017 - 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 __VIDEO_DEFINES__H #define __VIDEO_DEFINES__H #include RETRO_BEGIN_DECLS enum { TEXTURES = 8, TEXTURESMASK = TEXTURES - 1 }; enum texture_filter_type { TEXTURE_FILTER_LINEAR = 0, TEXTURE_FILTER_NEAREST, TEXTURE_FILTER_MIPMAP_LINEAR, TEXTURE_FILTER_MIPMAP_NEAREST }; enum aspect_ratio { ASPECT_RATIO_4_3 = 0, ASPECT_RATIO_16_9, ASPECT_RATIO_16_10, ASPECT_RATIO_16_15, ASPECT_RATIO_21_9, ASPECT_RATIO_1_1, ASPECT_RATIO_2_1, ASPECT_RATIO_3_2, ASPECT_RATIO_3_4, ASPECT_RATIO_4_1, ASPECT_RATIO_4_4, ASPECT_RATIO_5_4, ASPECT_RATIO_6_5, ASPECT_RATIO_7_9, ASPECT_RATIO_8_3, ASPECT_RATIO_8_7, ASPECT_RATIO_19_12, ASPECT_RATIO_19_14, ASPECT_RATIO_30_17, ASPECT_RATIO_32_9, ASPECT_RATIO_CONFIG, ASPECT_RATIO_SQUARE, ASPECT_RATIO_CORE, ASPECT_RATIO_CUSTOM, ASPECT_RATIO_FULL, ASPECT_RATIO_END }; enum rotation { ORIENTATION_NORMAL = 0, ORIENTATION_VERTICAL, ORIENTATION_FLIPPED, ORIENTATION_FLIPPED_ROTATED, ORIENTATION_END }; enum autoswitch_refresh_rate { AUTOSWITCH_REFRESH_RATE_EXCLUSIVE_FULLSCREEN = 0, AUTOSWITCH_REFRESH_RATE_WINDOWED_FULLSCREEN, AUTOSWITCH_REFRESH_RATE_ALL_FULLSCREEN, AUTOSWITCH_REFRESH_RATE_OFF, AUTOSWITCH_REFRESH_RATE_LAST }; enum rarch_display_type { /* Non-bindable types like consoles, KMS, VideoCore, etc. */ RARCH_DISPLAY_NONE = 0, /* video_display => Display*, video_window => Window */ RARCH_DISPLAY_X11, /* video_display => N/A, video_window => HWND */ RARCH_DISPLAY_WIN32, RARCH_DISPLAY_WAYLAND, RARCH_DISPLAY_OSX }; enum font_driver_render_api { FONT_DRIVER_RENDER_DONT_CARE, FONT_DRIVER_RENDER_OPENGL_API, FONT_DRIVER_RENDER_OPENGL_CORE_API, FONT_DRIVER_RENDER_OPENGL1_API, FONT_DRIVER_RENDER_D3D8_API, FONT_DRIVER_RENDER_D3D9_API, FONT_DRIVER_RENDER_D3D10_API, FONT_DRIVER_RENDER_D3D11_API, FONT_DRIVER_RENDER_D3D12_API, FONT_DRIVER_RENDER_PS2, FONT_DRIVER_RENDER_VITA2D, FONT_DRIVER_RENDER_CTR, FONT_DRIVER_RENDER_WIIU, FONT_DRIVER_RENDER_VULKAN_API, FONT_DRIVER_RENDER_METAL_API, FONT_DRIVER_RENDER_CACA, FONT_DRIVER_RENDER_SIXEL, FONT_DRIVER_RENDER_NETWORK_VIDEO, FONT_DRIVER_RENDER_GDI, FONT_DRIVER_RENDER_VGA, FONT_DRIVER_RENDER_SWITCH, FONT_DRIVER_RENDER_RSX }; enum text_alignment { TEXT_ALIGN_LEFT = 0, TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER }; #ifndef COLOR_ABGR #define COLOR_ABGR(r, g, b, a) (((unsigned)(a) << 24) | ((b) << 16) | ((g) << 8) | ((r) << 0)) #endif #define LAST_ASPECT_RATIO ASPECT_RATIO_FULL /* ABGR color format defines */ #define WHITE 0xffffffffu #define RED 0xff0000ffu #define GREEN 0xff00ff00u #define BLUE 0xffff0000u #define YELLOW 0xff00ffffu #define PURPLE 0xffff00ffu #define CYAN 0xffffff00u #define ORANGE 0xff0063ffu #define SILVER 0xff8c848cu #define LIGHTBLUE 0xFFFFE0E0U #define LIGHTORANGE 0xFFE0EEFFu #define FONT_COLOR_RGBA(r, g, b, a) (((unsigned)(r) << 24) | ((g) << 16) | ((b) << 8) | ((a) << 0)) #define FONT_COLOR_GET_RED(col) (((col) >> 24) & 0xff) #define FONT_COLOR_GET_GREEN(col) (((col) >> 16) & 0xff) #define FONT_COLOR_GET_BLUE(col) (((col) >> 8) & 0xff) #define FONT_COLOR_GET_ALPHA(col) (((col) >> 0) & 0xff) #define FONT_COLOR_ARGB_TO_RGBA(col) ( (((col) >> 24) & 0xff) | (((unsigned)(col) << 8) & 0xffffff00) ) typedef struct video_viewport { int x; int y; unsigned width; unsigned height; unsigned full_width; unsigned full_height; } video_viewport_t; typedef struct gfx_ctx_flags { uint32_t flags; } gfx_ctx_flags_t; struct Size2D { unsigned width, height; }; enum gfx_ctx_api { GFX_CTX_NONE = 0, GFX_CTX_OPENGL_API, GFX_CTX_OPENGL_ES_API, GFX_CTX_DIRECT3D8_API, GFX_CTX_DIRECT3D9_API, GFX_CTX_DIRECT3D10_API, GFX_CTX_DIRECT3D11_API, GFX_CTX_DIRECT3D12_API, GFX_CTX_OPENVG_API, GFX_CTX_VULKAN_API, GFX_CTX_METAL_API, GFX_CTX_RSX_API }; enum display_metric_types { DISPLAY_METRIC_NONE = 0, DISPLAY_METRIC_MM_WIDTH, DISPLAY_METRIC_MM_HEIGHT, DISPLAY_METRIC_DPI, DISPLAY_METRIC_PIXEL_WIDTH, DISPLAY_METRIC_PIXEL_HEIGHT }; enum display_flags { GFX_CTX_FLAGS_NONE = 0, GFX_CTX_FLAGS_GL_CORE_CONTEXT, GFX_CTX_FLAGS_MULTISAMPLING, GFX_CTX_FLAGS_CUSTOMIZABLE_SWAPCHAIN_IMAGES, GFX_CTX_FLAGS_CUSTOMIZABLE_FRAME_LATENCY, GFX_CTX_FLAGS_HARD_SYNC, GFX_CTX_FLAGS_BLACK_FRAME_INSERTION, GFX_CTX_FLAGS_MENU_FRAME_FILTERING, GFX_CTX_FLAGS_ADAPTIVE_VSYNC, GFX_CTX_FLAGS_SHADERS_GLSL, GFX_CTX_FLAGS_SHADERS_CG, GFX_CTX_FLAGS_SHADERS_HLSL, GFX_CTX_FLAGS_SHADERS_SLANG, GFX_CTX_FLAGS_SCREENSHOTS_SUPPORTED, GFX_CTX_FLAGS_OVERLAY_BEHIND_MENU_SUPPORTED }; enum shader_uniform_type { UNIFORM_1F = 0, UNIFORM_2F, UNIFORM_3F, UNIFORM_4F, UNIFORM_1FV, UNIFORM_2FV, UNIFORM_3FV, UNIFORM_4FV, UNIFORM_1I }; enum shader_program_type { SHADER_PROGRAM_VERTEX = 0, SHADER_PROGRAM_FRAGMENT, SHADER_PROGRAM_COMBINED }; RETRO_END_DECLS #endif