annotate SDL3/SDL_test_common.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2 Simple DirectMedia Layer
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 This software is provided 'as-is', without any express or implied
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 warranty. In no event will the authors be held liable for any damages
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 arising from the use of this software.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 Permission is granted to anyone to use this software for any purpose,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 including commercial applications, and to alter it and redistribute it
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 freely, subject to the following restrictions:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 1. The origin of this software must not be misrepresented; you must not
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 claim that you wrote the original software. If you use this software
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 in a product, an acknowledgment in the product documentation would be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 appreciated but is not required.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 2. Altered source versions must be plainly marked as such, and must not be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 misrepresented as being the original software.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 3. This notice may not be removed or altered from any source distribution.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 * Common functions of SDL test framework.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 * This code is a part of the SDL test library, not the main SDL library.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 /* Ported from original test/common.h file. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 #ifndef SDL_test_common_h_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 #define SDL_test_common_h_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 #include <SDL3/SDL.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 #ifdef SDL_PLATFORM_PSP
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 #define DEFAULT_WINDOW_WIDTH 480
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 #define DEFAULT_WINDOW_HEIGHT 272
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 #elif defined(SDL_PLATFORM_VITA)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 #define DEFAULT_WINDOW_WIDTH 960
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 #define DEFAULT_WINDOW_HEIGHT 544
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 #else
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 #define DEFAULT_WINDOW_WIDTH 640
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 #define DEFAULT_WINDOW_HEIGHT 480
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46 typedef Uint32 SDLTest_VerboseFlags;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 #define VERBOSE_VIDEO 0x00000001
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 #define VERBOSE_MODES 0x00000002
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 #define VERBOSE_RENDER 0x00000004
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 #define VERBOSE_EVENT 0x00000008
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 #define VERBOSE_AUDIO 0x00000010
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 #define VERBOSE_MOTION 0x00000020
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 /* !< Function pointer parsing one argument at argv[index], returning the number of parsed arguments,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55 * or a negative value when the argument is invalid */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56 typedef int (SDLCALL *SDLTest_ParseArgumentsFp)(void *data, char **argv, int index);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58 /* !< Finalize the argument parser. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 typedef void (SDLCALL *SDLTest_FinalizeArgumentParserFp)(void *arg);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61 typedef struct SDLTest_ArgumentParser
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
63 /* !< Parse an argument. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
64 SDLTest_ParseArgumentsFp parse_arguments;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
65 /* !< Finalize this argument parser. Called once before parsing the first argument. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66 SDLTest_FinalizeArgumentParserFp finalize;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67 /* !< Null-terminated array of arguments. Printed when running with --help. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
68 const char **usage;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
69 /* !< User data, passed to all callbacks. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
70 void *data;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
71 /* !< Next argument parser. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
72 struct SDLTest_ArgumentParser *next;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
73 } SDLTest_ArgumentParser;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
74
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
75 typedef struct
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
76 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
77 /* SDL init flags */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
78 char **argv;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
79 SDL_InitFlags flags;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
80 SDLTest_VerboseFlags verbose;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
81
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
82 /* Video info */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
83 const char *videodriver;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
84 int display_index;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
85 SDL_DisplayID displayID;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
86 const char *window_title;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
87 const char *window_icon;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
88 SDL_WindowFlags window_flags;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
89 bool flash_on_focus_loss;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
90 int window_x;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
91 int window_y;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
92 int window_w;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
93 int window_h;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
94 int window_minW;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
95 int window_minH;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
96 int window_maxW;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
97 int window_maxH;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
98 float window_min_aspect;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
99 float window_max_aspect;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
100 int logical_w;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
101 int logical_h;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
102 bool auto_scale_content;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
103 SDL_RendererLogicalPresentation logical_presentation;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
104 float scale;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
105 int depth;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
106 float refresh_rate;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
107 bool fill_usable_bounds;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
108 bool fullscreen_exclusive;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
109 SDL_DisplayMode fullscreen_mode;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
110 int num_windows;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
111 SDL_Window **windows;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
112 const char *gpudriver;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
113
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
114 /* Renderer info */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
115 const char *renderdriver;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
116 int render_vsync;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
117 bool skip_renderer;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
118 SDL_Renderer **renderers;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
119 SDL_Texture **targets;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
120
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
121 /* Audio info */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
122 const char *audiodriver;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
123 SDL_AudioFormat audio_format;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
124 int audio_channels;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
125 int audio_freq;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
126 SDL_AudioDeviceID audio_id;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
127
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
128 /* GL settings */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
129 int gl_red_size;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
130 int gl_green_size;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
131 int gl_blue_size;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
132 int gl_alpha_size;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
133 int gl_buffer_size;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
134 int gl_depth_size;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
135 int gl_stencil_size;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
136 int gl_double_buffer;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
137 int gl_accum_red_size;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
138 int gl_accum_green_size;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
139 int gl_accum_blue_size;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
140 int gl_accum_alpha_size;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
141 int gl_stereo;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
142 int gl_release_behavior;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
143 int gl_multisamplebuffers;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
144 int gl_multisamplesamples;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
145 int gl_retained_backing;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
146 int gl_accelerated;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
147 int gl_major_version;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
148 int gl_minor_version;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
149 int gl_debug;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
150 int gl_profile_mask;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
151
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
152 /* Mouse info */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
153 SDL_Rect confine;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
154 bool hide_cursor;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
155
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
156 /* Misc. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
157 int quit_after_ms_interval;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
158 SDL_TimerID quit_after_ms_timer;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
159
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
160 /* Options info */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
161 SDLTest_ArgumentParser common_argparser;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
162 SDLTest_ArgumentParser video_argparser;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
163 SDLTest_ArgumentParser audio_argparser;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
164
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
165 SDLTest_ArgumentParser *argparser;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
166 } SDLTest_CommonState;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
167
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
168 #include <SDL3/SDL_begin_code.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
169 /* Set up for C function definitions, even when using C++ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
170 #ifdef __cplusplus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
171 extern "C" {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
172 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
173
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
174 /* Function prototypes */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
175
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
176 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
177 * Parse command line parameters and create common state.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
178 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
179 * \param argv Array of command line parameters
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
180 * \param flags Flags indicating which subsystem to initialize (i.e. SDL_INIT_VIDEO | SDL_INIT_AUDIO)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
181 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
182 * \returns a newly allocated common state object.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
183 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
184 SDLTest_CommonState * SDLCALL SDLTest_CommonCreateState(char **argv, SDL_InitFlags flags);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
185
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
186 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
187 * Free the common state object.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
188 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
189 * You should call SDL_Quit() before calling this function.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
190 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
191 * \param state The common state object to destroy
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
192 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
193 void SDLCALL SDLTest_CommonDestroyState(SDLTest_CommonState *state);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
194
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
195 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
196 * Process one common argument.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
197 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
198 * \param state The common state describing the test window to create.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
199 * \param index The index of the argument to process in argv[].
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
200 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
201 * \returns the number of arguments processed (i.e. 1 for --fullscreen, 2 for --video [videodriver], or -1 on error.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
202 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
203 int SDLCALL SDLTest_CommonArg(SDLTest_CommonState *state, int index);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
204
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
205
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
206 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
207 * Logs command line usage info.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
208 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
209 * This logs the appropriate command line options for the subsystems in use
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
210 * plus other common options, and then any application-specific options.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
211 * This uses the SDL_Log() function and splits up output to be friendly to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
212 * 80-character-wide terminals.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
213 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
214 * \param state The common state describing the test window for the app.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
215 * \param argv0 argv[0], as passed to main/SDL_main.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
216 * \param options an array of strings for application specific options. The last element of the array should be NULL.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
217 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
218 void SDLCALL SDLTest_CommonLogUsage(SDLTest_CommonState *state, const char *argv0, const char **options);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
219
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
220 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
221 * Open test window.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
222 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
223 * \param state The common state describing the test window to create.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
224 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
225 * \returns true if initialization succeeded, false otherwise
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
226 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
227 bool SDLCALL SDLTest_CommonInit(SDLTest_CommonState *state);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
228
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
229 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
230 * Easy argument handling when test app doesn't need any custom args.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
231 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
232 * \param state The common state describing the test window to create.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
233 * \param argc argc, as supplied to SDL_main
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
234 * \param argv argv, as supplied to SDL_main
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
235 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
236 * \returns false if app should quit, true otherwise.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
237 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
238 bool SDLCALL SDLTest_CommonDefaultArgs(SDLTest_CommonState *state, int argc, char **argv);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
239
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
240 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
241 * Print the details of an event.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
242 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
243 * This is automatically called by SDLTest_CommonEvent() as needed.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
244 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
245 * \param event The event to print.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
246 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
247 void SDLCALL SDLTest_PrintEvent(const SDL_Event *event);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
248
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
249 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
250 * Common event handler for test windows if you use a standard SDL_main.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
251 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
252 * \param state The common state used to create test window.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
253 * \param event The event to handle.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
254 * \param done Flag indicating we are done.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
255 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
256 void SDLCALL SDLTest_CommonEvent(SDLTest_CommonState *state, SDL_Event *event, int *done);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
257
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
258 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
259 * Common event handler for test windows if you use SDL_AppEvent.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
260 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
261 * This does _not_ free anything in `event`.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
262 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
263 * \param state The common state used to create test window.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
264 * \param event The event to handle.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
265 * \returns Value suitable for returning from SDL_AppEvent().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
266 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
267 SDL_AppResult SDLCALL SDLTest_CommonEventMainCallbacks(SDLTest_CommonState *state, const SDL_Event *event);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
268
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
269 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
270 * Close test window.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
271 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
272 * \param state The common state used to create test window.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
273 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
274 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
275 void SDLCALL SDLTest_CommonQuit(SDLTest_CommonState *state);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
276
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
277 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
278 * Draws various window information (position, size, etc.) to the renderer.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
279 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
280 * \param renderer The renderer to draw to.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
281 * \param window The window whose information should be displayed.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
282 * \param usedHeight Returns the height used, so the caller can draw more below.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
283 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
284 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
285 void SDLCALL SDLTest_CommonDrawWindowInfo(SDL_Renderer *renderer, SDL_Window *window, float *usedHeight);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
286
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
287 /* Ends C function definitions when using C++ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
288 #ifdef __cplusplus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
289 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
290 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
291 #include <SDL3/SDL_close_code.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
292
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
293 #endif /* SDL_test_common_h_ */