1 | /* |
2 | Simple DirectMedia Layer |
3 | Copyright (C) 1997-2021 Sam Lantinga <slouken@libsdl.org> |
4 | |
5 | This software is provided 'as-is', without any express or implied |
6 | warranty. In no event will the authors be held liable for any damages |
7 | arising from the use of this software. |
8 | |
9 | Permission is granted to anyone to use this software for any purpose, |
10 | including commercial applications, and to alter it and redistribute it |
11 | freely, subject to the following restrictions: |
12 | |
13 | 1. The origin of this software must not be misrepresented; you must not |
14 | claim that you wrote the original software. If you use this software |
15 | in a product, an acknowledgment in the product documentation would be |
16 | appreciated but is not required. |
17 | 2. Altered source versions must be plainly marked as such, and must not be |
18 | misrepresented as being the original software. |
19 | 3. This notice may not be removed or altered from any source distribution. |
20 | */ |
21 | |
22 | /** |
23 | * \file SDL_test_common.h |
24 | * |
25 | * Include file for SDL test framework. |
26 | * |
27 | * This code is a part of the SDL2_test library, not the main SDL library. |
28 | */ |
29 | |
30 | /* Ported from original test\common.h file. */ |
31 | |
32 | #ifndef SDL_test_common_h_ |
33 | #define SDL_test_common_h_ |
34 | |
35 | #include "SDL.h" |
36 | |
37 | #if defined(__PSP__) |
38 | #define DEFAULT_WINDOW_WIDTH 480 |
39 | #define DEFAULT_WINDOW_HEIGHT 272 |
40 | #else |
41 | #define DEFAULT_WINDOW_WIDTH 640 |
42 | #define DEFAULT_WINDOW_HEIGHT 480 |
43 | #endif |
44 | |
45 | #define VERBOSE_VIDEO 0x00000001 |
46 | #define VERBOSE_MODES 0x00000002 |
47 | #define VERBOSE_RENDER 0x00000004 |
48 | #define VERBOSE_EVENT 0x00000008 |
49 | #define VERBOSE_AUDIO 0x00000010 |
50 | |
51 | typedef struct |
52 | { |
53 | /* SDL init flags */ |
54 | char **argv; |
55 | Uint32 flags; |
56 | Uint32 verbose; |
57 | |
58 | /* Video info */ |
59 | const char *videodriver; |
60 | int display; |
61 | const char *window_title; |
62 | const char *window_icon; |
63 | Uint32 window_flags; |
64 | int window_x; |
65 | int window_y; |
66 | int window_w; |
67 | int window_h; |
68 | int window_minW; |
69 | int window_minH; |
70 | int window_maxW; |
71 | int window_maxH; |
72 | int logical_w; |
73 | int logical_h; |
74 | float scale; |
75 | int depth; |
76 | int refresh_rate; |
77 | int num_windows; |
78 | SDL_Window **windows; |
79 | |
80 | /* Renderer info */ |
81 | const char *renderdriver; |
82 | Uint32 render_flags; |
83 | SDL_bool skip_renderer; |
84 | SDL_Renderer **renderers; |
85 | SDL_Texture **targets; |
86 | |
87 | /* Audio info */ |
88 | const char *audiodriver; |
89 | SDL_AudioSpec audiospec; |
90 | |
91 | /* GL settings */ |
92 | int gl_red_size; |
93 | int gl_green_size; |
94 | int gl_blue_size; |
95 | int gl_alpha_size; |
96 | int gl_buffer_size; |
97 | int gl_depth_size; |
98 | int gl_stencil_size; |
99 | int gl_double_buffer; |
100 | int gl_accum_red_size; |
101 | int gl_accum_green_size; |
102 | int gl_accum_blue_size; |
103 | int gl_accum_alpha_size; |
104 | int gl_stereo; |
105 | int gl_multisamplebuffers; |
106 | int gl_multisamplesamples; |
107 | int gl_retained_backing; |
108 | int gl_accelerated; |
109 | int gl_major_version; |
110 | int gl_minor_version; |
111 | int gl_debug; |
112 | int gl_profile_mask; |
113 | } SDLTest_CommonState; |
114 | |
115 | #include "begin_code.h" |
116 | /* Set up for C function definitions, even when using C++ */ |
117 | #ifdef __cplusplus |
118 | extern "C" { |
119 | #endif |
120 | |
121 | /* Function prototypes */ |
122 | |
123 | /** |
124 | * \brief Parse command line parameters and create common state. |
125 | * |
126 | * \param argv Array of command line parameters |
127 | * \param flags Flags indicating which subsystem to initialize (i.e. SDL_INIT_VIDEO | SDL_INIT_AUDIO) |
128 | * |
129 | * \returns Returns a newly allocated common state object. |
130 | */ |
131 | SDLTest_CommonState *SDLTest_CommonCreateState(char **argv, Uint32 flags); |
132 | |
133 | /** |
134 | * \brief Process one common argument. |
135 | * |
136 | * \param state The common state describing the test window to create. |
137 | * \param index The index of the argument to process in argv[]. |
138 | * |
139 | * \returns The number of arguments processed (i.e. 1 for --fullscreen, 2 for --video [videodriver], or -1 on error. |
140 | */ |
141 | int SDLTest_CommonArg(SDLTest_CommonState * state, int index); |
142 | |
143 | |
144 | /** |
145 | * \brief Logs command line usage info. |
146 | * |
147 | * This logs the appropriate command line options for the subsystems in use |
148 | * plus other common options, and then any application-specific options. |
149 | * This uses the SDL_Log() function and splits up output to be friendly to |
150 | * 80-character-wide terminals. |
151 | * |
152 | * \param state The common state describing the test window for the app. |
153 | * \param argv0 argv[0], as passed to main/SDL_main. |
154 | * \param options an array of strings for application specific options. The last element of the array should be NULL. |
155 | */ |
156 | void SDLTest_CommonLogUsage(SDLTest_CommonState * state, const char *argv0, const char **options); |
157 | |
158 | /** |
159 | * \brief Returns common usage information |
160 | * |
161 | * You should (probably) be using SDLTest_CommonLogUsage() instead, but this |
162 | * function remains for binary compatibility. Strings returned from this |
163 | * function are valid until SDLTest_CommonQuit() is called, in which case |
164 | * those strings' memory is freed and can no longer be used. |
165 | * |
166 | * \param state The common state describing the test window to create. |
167 | * \returns String with usage information |
168 | */ |
169 | const char *SDLTest_CommonUsage(SDLTest_CommonState * state); |
170 | |
171 | /** |
172 | * \brief Open test window. |
173 | * |
174 | * \param state The common state describing the test window to create. |
175 | * |
176 | * \returns True if initialization succeeded, false otherwise |
177 | */ |
178 | SDL_bool SDLTest_CommonInit(SDLTest_CommonState * state); |
179 | |
180 | /** |
181 | * \brief Easy argument handling when test app doesn't need any custom args. |
182 | * |
183 | * \param state The common state describing the test window to create. |
184 | * \param argc argc, as supplied to SDL_main |
185 | * \param argv argv, as supplied to SDL_main |
186 | * |
187 | * \returns False if app should quit, true otherwise. |
188 | */ |
189 | SDL_bool SDLTest_CommonDefaultArgs(SDLTest_CommonState * state, const int argc, char **argv); |
190 | |
191 | /** |
192 | * \brief Common event handler for test windows. |
193 | * |
194 | * \param state The common state used to create test window. |
195 | * \param event The event to handle. |
196 | * \param done Flag indicating we are done. |
197 | * |
198 | */ |
199 | void SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done); |
200 | |
201 | /** |
202 | * \brief Close test window. |
203 | * |
204 | * \param state The common state used to create test window. |
205 | * |
206 | */ |
207 | void SDLTest_CommonQuit(SDLTest_CommonState * state); |
208 | |
209 | |
210 | /* Ends C function definitions when using C++ */ |
211 | #ifdef __cplusplus |
212 | } |
213 | #endif |
214 | #include "close_code.h" |
215 | |
216 | #endif /* SDL_test_common_h_ */ |
217 | |
218 | /* vi: set ts=4 sw=4 expandtab: */ |
219 | |