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