1 /* RetroArch - A frontend for libretro. 2 * Copyright (C) 2010-2014 - Hans-Kristian Arntzen 3 * Copyright (C) 2011-2017 - Daniel De Matteis 4 * 5 * RetroArch is free software: you can redistribute it and/or modify it under the terms 6 * of the GNU General Public License as published by the Free Software Found- 7 * ation, either version 3 of the License, or (at your option) any later version. 8 * 9 * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 10 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 11 * PURPOSE. See the GNU General Public License for more details. 12 * 13 * You should have received a copy of the GNU General Public License along with RetroArch. 14 * If not, see <http://www.gnu.org/licenses/>. 15 */ 16 17 #ifndef __VIDEO_DEFINES__H 18 #define __VIDEO_DEFINES__H 19 20 #include <retro_common_api.h> 21 22 RETRO_BEGIN_DECLS 23 24 enum texture_filter_type 25 { 26 TEXTURE_FILTER_LINEAR = 0, 27 TEXTURE_FILTER_NEAREST, 28 TEXTURE_FILTER_MIPMAP_LINEAR, 29 TEXTURE_FILTER_MIPMAP_NEAREST 30 }; 31 32 enum aspect_ratio 33 { 34 ASPECT_RATIO_4_3 = 0, 35 ASPECT_RATIO_16_9, 36 ASPECT_RATIO_16_10, 37 ASPECT_RATIO_16_15, 38 ASPECT_RATIO_21_9, 39 ASPECT_RATIO_1_1, 40 ASPECT_RATIO_2_1, 41 ASPECT_RATIO_3_2, 42 ASPECT_RATIO_3_4, 43 ASPECT_RATIO_4_1, 44 ASPECT_RATIO_4_4, 45 ASPECT_RATIO_5_4, 46 ASPECT_RATIO_6_5, 47 ASPECT_RATIO_7_9, 48 ASPECT_RATIO_8_3, 49 ASPECT_RATIO_8_7, 50 ASPECT_RATIO_19_12, 51 ASPECT_RATIO_19_14, 52 ASPECT_RATIO_30_17, 53 ASPECT_RATIO_32_9, 54 ASPECT_RATIO_CONFIG, 55 ASPECT_RATIO_SQUARE, 56 ASPECT_RATIO_CORE, 57 ASPECT_RATIO_CUSTOM, 58 ASPECT_RATIO_FULL, 59 60 ASPECT_RATIO_END 61 }; 62 63 enum rotation 64 { 65 ORIENTATION_NORMAL = 0, 66 ORIENTATION_VERTICAL, 67 ORIENTATION_FLIPPED, 68 ORIENTATION_FLIPPED_ROTATED, 69 ORIENTATION_END 70 }; 71 72 enum rarch_display_type 73 { 74 /* Non-bindable types like consoles, KMS, VideoCore, etc. */ 75 RARCH_DISPLAY_NONE = 0, 76 /* video_display => Display*, video_window => Window */ 77 RARCH_DISPLAY_X11, 78 /* video_display => N/A, video_window => HWND */ 79 RARCH_DISPLAY_WIN32, 80 RARCH_DISPLAY_WAYLAND, 81 RARCH_DISPLAY_OSX 82 }; 83 84 enum font_driver_render_api 85 { 86 FONT_DRIVER_RENDER_DONT_CARE, 87 FONT_DRIVER_RENDER_OPENGL_API, 88 FONT_DRIVER_RENDER_OPENGL_CORE_API, 89 FONT_DRIVER_RENDER_OPENGL1_API, 90 FONT_DRIVER_RENDER_D3D8_API, 91 FONT_DRIVER_RENDER_D3D9_API, 92 FONT_DRIVER_RENDER_D3D10_API, 93 FONT_DRIVER_RENDER_D3D11_API, 94 FONT_DRIVER_RENDER_D3D12_API, 95 FONT_DRIVER_RENDER_PS2, 96 FONT_DRIVER_RENDER_VITA2D, 97 FONT_DRIVER_RENDER_CTR, 98 FONT_DRIVER_RENDER_WIIU, 99 FONT_DRIVER_RENDER_VULKAN_API, 100 FONT_DRIVER_RENDER_METAL_API, 101 FONT_DRIVER_RENDER_CACA, 102 FONT_DRIVER_RENDER_SIXEL, 103 FONT_DRIVER_RENDER_NETWORK_VIDEO, 104 FONT_DRIVER_RENDER_GDI, 105 FONT_DRIVER_RENDER_VGA, 106 FONT_DRIVER_RENDER_SWITCH 107 }; 108 109 enum text_alignment 110 { 111 TEXT_ALIGN_LEFT = 0, 112 TEXT_ALIGN_RIGHT, 113 TEXT_ALIGN_CENTER 114 }; 115 116 #ifndef COLOR_ABGR 117 #define COLOR_ABGR(r, g, b, a) (((unsigned)(a) << 24) | ((b) << 16) | ((g) << 8) | ((r) << 0)) 118 #endif 119 120 #define LAST_ASPECT_RATIO ASPECT_RATIO_FULL 121 122 /* ABGR color format defines */ 123 124 #define WHITE 0xffffffffu 125 #define RED 0xff0000ffu 126 #define GREEN 0xff00ff00u 127 #define BLUE 0xffff0000u 128 #define YELLOW 0xff00ffffu 129 #define PURPLE 0xffff00ffu 130 #define CYAN 0xffffff00u 131 #define ORANGE 0xff0063ffu 132 #define SILVER 0xff8c848cu 133 #define LIGHTBLUE 0xFFFFE0E0U 134 #define LIGHTORANGE 0xFFE0EEFFu 135 136 #define FONT_COLOR_RGBA(r, g, b, a) (((unsigned)(r) << 24) | ((g) << 16) | ((b) << 8) | ((a) << 0)) 137 #define FONT_COLOR_GET_RED(col) (((col) >> 24) & 0xff) 138 #define FONT_COLOR_GET_GREEN(col) (((col) >> 16) & 0xff) 139 #define FONT_COLOR_GET_BLUE(col) (((col) >> 8) & 0xff) 140 #define FONT_COLOR_GET_ALPHA(col) (((col) >> 0) & 0xff) 141 #define FONT_COLOR_ARGB_TO_RGBA(col) ( (((col) >> 24) & 0xff) | (((unsigned)(col) << 8) & 0xffffff00) ) 142 143 typedef struct video_viewport 144 { 145 int x; 146 int y; 147 unsigned width; 148 unsigned height; 149 unsigned full_width; 150 unsigned full_height; 151 } video_viewport_t; 152 153 typedef struct gfx_ctx_flags 154 { 155 uint32_t flags; 156 } gfx_ctx_flags_t; 157 158 struct Size2D 159 { 160 unsigned width, height; 161 }; 162 163 RETRO_END_DECLS 164 165 #endif 166