#include "SDL.h"
#include "begin_code.h"
#include "close_code.h"
Go to the source code of this file.
Include file for SDL test framework.
This code is a part of the SDL2_test library, not the main SDL library.
Definition in file SDL_test_common.h.
◆ DEFAULT_WINDOW_HEIGHT
#define DEFAULT_WINDOW_HEIGHT 480 |
◆ DEFAULT_WINDOW_WIDTH
#define DEFAULT_WINDOW_WIDTH 640 |
◆ VERBOSE_AUDIO
#define VERBOSE_AUDIO 0x00000010 |
◆ VERBOSE_EVENT
#define VERBOSE_EVENT 0x00000008 |
◆ VERBOSE_MODES
#define VERBOSE_MODES 0x00000002 |
◆ VERBOSE_RENDER
#define VERBOSE_RENDER 0x00000004 |
◆ VERBOSE_VIDEO
#define VERBOSE_VIDEO 0x00000001 |
◆ SDLTest_CommonArg()
Process one common argument.
- Parameters
-
state | The common state describing the test window to create. |
index | The index of the argument to process in argv[]. |
- Returns
- The number of arguments processed (i.e. 1 for –fullscreen, 2 for –video [videodriver], or -1 on error.
Definition at line 106 of file SDL_test_common.c.
108 char **argv =
state->argv;
212 state->num_windows = 1;
217 state->num_windows = 1;
263 while (*
y && *
y !=
',') {
282 while (*
h && *
h !=
'x') {
301 while (*
h && *
h !=
'x') {
320 while (*
h && *
h !=
'x') {
339 while (*
h && *
h !=
'x') {
References AUDIO_S16, AUDIO_S16LSB, AUDIO_S16MSB, AUDIO_S8, AUDIO_U16, AUDIO_U16LSB, AUDIO_U16MSB, AUDIO_U8, SDL_atof, SDL_atoi, SDL_isdigit, SDL_LOG_CATEGORY_AUDIO, SDL_LOG_CATEGORY_ERROR, SDL_LOG_CATEGORY_INPUT, SDL_LOG_CATEGORY_RENDER, SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_CATEGORY_VIDEO, SDL_LOG_PRIORITY_VERBOSE, SDL_LogSetAllPriority, SDL_LogSetPriority, SDL_RENDERER_PRESENTVSYNC, SDL_strcasecmp, SDL_strcmp, SDL_WINDOW_ALLOW_HIGHDPI, SDL_WINDOW_BORDERLESS, SDL_WINDOW_FULLSCREEN, SDL_WINDOW_FULLSCREEN_DESKTOP, SDL_WINDOW_INPUT_GRABBED, SDL_WINDOW_MAXIMIZED, SDL_WINDOW_MINIMIZED, SDL_WINDOW_RESIZABLE, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED_DISPLAY, SDL_WINDOWPOS_ISCENTERED, SDL_WINDOWPOS_ISUNDEFINED, SDL_WINDOWPOS_UNDEFINED_DISPLAY, state, VERBOSE_EVENT, VERBOSE_MODES, VERBOSE_RENDER, and VERBOSE_VIDEO.
Referenced by main().
◆ SDLTest_CommonCreateState()
Parse command line parameters and create common state.
- Parameters
-
argv | Array of command line parameters |
flags | Flags indicating which subsystem to initialize (i.e. SDL_INIT_VIDEO | SDL_INIT_AUDIO) |
- Returns
- Returns a newly allocated common state object.
Definition at line 48 of file SDL_test_common.c.
54 for (
i = 1; argv[
i]; ++
i) {
70 state->window_title = argv[0];
71 state->window_flags = 0;
76 state->num_windows = 1;
77 state->audiospec.freq = 22050;
79 state->audiospec.channels = 2;
80 state->audiospec.samples = 2048;
83 state->gl_red_size = 3;
84 state->gl_green_size = 3;
85 state->gl_blue_size = 2;
86 state->gl_alpha_size = 0;
87 state->gl_buffer_size = 0;
88 state->gl_depth_size = 16;
89 state->gl_stencil_size = 0;
90 state->gl_double_buffer = 1;
91 state->gl_accum_red_size = 0;
92 state->gl_accum_green_size = 0;
93 state->gl_accum_blue_size = 0;
94 state->gl_accum_alpha_size = 0;
96 state->gl_multisamplebuffers = 0;
97 state->gl_multisamplesamples = 0;
98 state->gl_retained_backing = 1;
99 state->gl_accelerated = -1;
References AUDIO_S16, DEFAULT_WINDOW_HEIGHT, DEFAULT_WINDOW_WIDTH, i, NULL, SDL_calloc, SDL_OutOfMemory, SDL_strcasecmp, SDL_WINDOWPOS_UNDEFINED, SDLTest_TrackAllocations(), and state.
Referenced by main().
◆ SDLTest_CommonEvent()
Common event handler for test windows.
- Parameters
-
state | The common state used to create test window. |
event | The event to handle. |
done | Flag indicating we are done. |
Definition at line 1463 of file SDL_test_common.c.
1472 switch (
event->type) {
1474 switch (
event->window.event) {
1479 for (
i = 0;
i <
state->num_windows; ++
i) {
1485 if (
state->renderers[
i]) {
1504 switch (
event->key.keysym.sym) {
1509 for (
i = 0;
i <
state->num_windows; ++
i) {
1550 if (currentIndex >= 0 && numDisplays >= 1) {
1553 dest = (currentIndex + numDisplays - 1) % numDisplays;
1555 dest = (currentIndex + numDisplays + 1) % numDisplays;
1557 SDL_Log(
"Centering on display %d\n", dest);
1568 const int delta = 100;
1577 SDL_Log(
"Setting position to (%d, %d)\n",
x,
y);
1604 printf(
"Copied text to clipboard\n");
1608 for (
i = 0;
i <
state->num_windows; ++
i) {
1610 if (
state->renderers[
i]) {
1631 SDL_Log(
"%sapturing mouse %s!\n", shouldCapture ?
"C" :
"Unc", (rc == 0) ?
"succeeded" :
"failed");
1640 printf(
"Clipboard: %s\n",
text);
1642 printf(
"Clipboard is empty\n");
1697 }
else if (withAlt) {
1708 }
else if (withShift) {
1738 SDL_Log(
"ABSOLUTE MOUSE: (%d, %d)%s%s%s%s%s\n",
x,
y,
1783 lastEvent =
event->motion;
References done, FullscreenTo(), SDL_Rect::h, i, KMOD_ALT, KMOD_CTRL, KMOD_SHIFT, NULL, SDL_BUTTON_LMASK, SDL_BUTTON_MMASK, SDL_BUTTON_RMASK, SDL_BUTTON_X1MASK, SDL_BUTTON_X2MASK, SDL_CaptureMouse, SDL_DestroyRenderer, SDL_DestroyTexture, SDL_DestroyWindow, SDL_DROPFILE, SDL_DROPTEXT, SDL_FALSE, SDL_free, SDL_GetClipboardText, SDL_GetGlobalMouseState, SDL_GetKeyboardFocus, SDL_GetNumVideoDisplays, SDL_GetRelativeMouseMode, SDL_GetWindowDisplayIndex, SDL_GetWindowFlags, SDL_GetWindowFromID, SDL_GetWindowGrab, SDL_GetWindowOpacity, SDL_GetWindowPosition, SDL_GetWindowSize, SDL_KEYDOWN, SDL_Log, SDL_MaximizeWindow, SDL_MESSAGEBOX_INFORMATION, SDL_MinimizeWindow, SDL_MOUSEMOTION, SDL_QUIT, SDL_RectEmpty(), SDL_RenderGetClipRect, SDL_RenderSetClipRect, SDL_RestoreWindow, SDL_SetClipboardText, SDL_SetRelativeMouseMode, SDL_SetWindowBordered, SDL_SetWindowFullscreen, SDL_SetWindowGrab, SDL_SetWindowOpacity, SDL_SetWindowPosition, SDL_SetWindowSize, SDL_ShowSimpleMessageBox, SDL_snprintf, SDL_TRUE, SDL_WINDOW_BORDERLESS, SDL_WINDOW_FULLSCREEN, SDL_WINDOW_FULLSCREEN_DESKTOP, SDL_WINDOW_MAXIMIZED, SDL_WINDOW_MOUSE_CAPTURE, SDL_WINDOWEVENT, SDL_WINDOWEVENT_CLOSE, SDL_WINDOWPOS_CENTERED_DISPLAY, SDLK_0, SDLK_1, SDLK_2, SDLK_a, SDLK_b, SDLK_c, SDLK_DOWN, SDLK_EQUALS, SDLK_ESCAPE, SDLK_g, SDLK_LEFT, SDLK_m, SDLK_MINUS, SDLK_o, SDLK_PRINTSCREEN, SDLK_r, SDLK_RETURN, SDLK_RIGHT, SDLK_SPACE, SDLK_UP, SDLK_v, SDLK_z, SDLTest_PrintEvent(), SDLTest_ScreenShot(), state, text, VERBOSE_EVENT, SDL_Rect::w, SDL_MouseMotionEvent::x, SDL_Rect::x, SDL_MouseMotionEvent::xrel, SDL_MouseMotionEvent::y, SDL_Rect::y, and SDL_MouseMotionEvent::yrel.
Referenced by loop(), and main().
◆ SDLTest_CommonInit()
Open test window.
- Parameters
-
state | The common state describing the test window to create. |
- Returns
- True if initialization succeeded, false otherwise
Definition at line 726 of file SDL_test_common.c.
736 SDL_Log(
"No built-in video drivers\n");
739 for (
i = 0;
i <
n; ++
i) {
749 SDL_Log(
"Couldn't initialize video driver: %s\n",
774 if (
state->gl_accelerated >= 0) {
776 state->gl_accelerated);
779 if (
state->gl_major_version) {
783 if (
state->gl_debug) {
786 if (
state->gl_profile_mask) {
796 Uint32 Rmask, Gmask, Bmask, Amask;
797 #if SDL_VIDEO_DRIVER_WINDOWS
798 int adapterIndex = 0;
802 SDL_Log(
"Number of displays: %d\n",
n);
803 for (
i = 0;
i <
n; ++
i) {
814 SDL_Log(
"Bounds: %dx%d at %d,%d\n", bounds.
w, bounds.
h, bounds.
x, bounds.
y);
815 SDL_Log(
"Usable bounds: %dx%d at %d,%d\n", usablebounds.
w, usablebounds.
h, usablebounds.
x, usablebounds.
y);
816 SDL_Log(
"DPI: %fx%f\n", hdpi, vdpi);
821 SDL_Log(
" Current mode: %dx%d@%dHz, %d bits-per-pixel (%s)\n",
824 if (Rmask || Gmask || Bmask) {
825 SDL_Log(
" Red Mask = 0x%.8x\n", Rmask);
826 SDL_Log(
" Green Mask = 0x%.8x\n", Gmask);
827 SDL_Log(
" Blue Mask = 0x%.8x\n", Bmask);
829 SDL_Log(
" Alpha Mask = 0x%.8x\n", Amask);
835 SDL_Log(
"No available fullscreen video modes\n");
837 SDL_Log(
" Fullscreen video modes:\n");
838 for (
j = 0;
j <
m; ++
j) {
841 &Gmask, &Bmask, &Amask);
842 SDL_Log(
" Mode %d: %dx%d@%dHz, %d bits-per-pixel (%s)\n",
845 if (Rmask || Gmask || Bmask) {
846 SDL_Log(
" Red Mask = 0x%.8x\n",
848 SDL_Log(
" Green Mask = 0x%.8x\n",
850 SDL_Log(
" Blue Mask = 0x%.8x\n",
853 SDL_Log(
" Alpha Mask = 0x%.8x\n",
859 #if SDL_VIDEO_DRIVER_WINDOWS
862 SDL_Log(
"D3D9 Adapter Index: %d", adapterIndex);
866 SDL_Log(
"DXGI Adapter Index: %d Output Index: %d", adapterIndex, outputIndex);
876 SDL_Log(
"No built-in render drivers\n");
878 SDL_Log(
"Built-in render drivers:\n");
879 for (
i = 0;
i <
n; ++
i) {
887 switch (
state->depth) {
908 sizeof(*
state->windows));
911 sizeof(*
state->renderers));
914 sizeof(*
state->targets));
919 for (
i = 0;
i <
state->num_windows; ++
i) {
922 if (
state->num_windows > 1) {
924 state->window_title,
i + 1);
931 state->window_flags);
933 SDL_Log(
"Couldn't create window: %s\n",
937 if (
state->window_minW ||
state->window_minH) {
940 if (
state->window_maxW ||
state->window_maxH) {
946 printf(
"Window requested size %dx%d, got %dx%d\n",
state->window_w,
state->window_h,
w,
h);
951 SDL_Log(
"Can't set up fullscreen display mode: %s\n",
962 if (
state->window_icon) {
972 if (!
state->skip_renderer
973 && (
state->renderdriver
976 if (
state->renderdriver) {
979 for (
j = 0;
j <
n; ++
j) {
988 SDL_Log(
"Couldn't find render driver named %s",
989 state->renderdriver);
995 if (!
state->renderers[
i]) {
996 SDL_Log(
"Couldn't create renderer: %s\n",
1002 }
else if (
state->scale) {
1008 SDL_Log(
"Current renderer:\n");
1020 SDL_Log(
"No built-in audio drivers\n");
1023 for (
i = 0;
i <
n; ++
i) {
1033 SDL_Log(
"Couldn't initialize audio driver: %s\n",
References SDL_DisplayMode::format, SDL_Rect::h, i, j, SDL_RendererInfo::name, NULL, SDL_DisplayMode::refresh_rate, SDL_arraysize, SDL_AudioInit, SDL_calloc, SDL_CreateRenderer, SDL_CreateWindow, SDL_Direct3D9GetAdapterIndex(), SDL_DXGIGetOutputInfo(), SDL_FALSE, SDL_FreeSurface, SDL_GetAudioDriver, SDL_GetCurrentAudioDriver, SDL_GetCurrentVideoDriver, SDL_GetDesktopDisplayMode, SDL_GetDisplayBounds, SDL_GetDisplayDPI, SDL_GetDisplayMode, SDL_GetDisplayName, SDL_GetDisplayUsableBounds, SDL_GetError, SDL_GetNumAudioDrivers, SDL_GetNumDisplayModes, SDL_GetNumRenderDrivers, SDL_GetNumVideoDisplays, SDL_GetNumVideoDrivers, SDL_GetPixelFormatName, SDL_GetRenderDriverInfo, SDL_GetRendererInfo, SDL_GetVideoDriver, SDL_GetWindowSize, SDL_GL_ACCELERATED_VISUAL, SDL_GL_ACCUM_ALPHA_SIZE, SDL_GL_ACCUM_BLUE_SIZE, SDL_GL_ACCUM_GREEN_SIZE, SDL_GL_ACCUM_RED_SIZE, SDL_GL_ALPHA_SIZE, SDL_GL_BLUE_SIZE, SDL_GL_BUFFER_SIZE, SDL_GL_CONTEXT_DEBUG_FLAG, SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_MAJOR_VERSION, SDL_GL_CONTEXT_MINOR_VERSION, SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_DEPTH_SIZE, SDL_GL_DOUBLEBUFFER, SDL_GL_GREEN_SIZE, SDL_GL_MULTISAMPLEBUFFERS, SDL_GL_MULTISAMPLESAMPLES, SDL_GL_RED_SIZE, SDL_GL_RETAINED_BACKING, SDL_GL_SetAttribute, SDL_GL_STENCIL_SIZE, SDL_GL_STEREO, SDL_INIT_AUDIO, SDL_INIT_VIDEO, SDL_Log, SDL_OpenAudio, SDL_PIXELFORMAT_INDEX8, SDL_PIXELFORMAT_RGB24, SDL_PIXELFORMAT_RGB555, SDL_PIXELFORMAT_RGB565, SDL_PIXELFORMAT_RGB888, SDL_PixelFormatEnumToMasks, SDL_RenderSetLogicalSize, SDL_RenderSetScale, SDL_SetWindowDisplayMode, SDL_SetWindowHitTest, SDL_SetWindowIcon, SDL_SetWindowMaximumSize, SDL_SetWindowMinimumSize, SDL_ShowWindow, SDL_snprintf, SDL_snprintfcat(), SDL_strcasecmp, SDL_strlcpy, SDL_TRUE, SDL_VideoInit, SDL_WINDOW_BORDERLESS, SDL_WINDOW_OPENGL, SDL_WINDOW_RESIZABLE, SDL_WINDOW_VULKAN, SDL_zero, SDLTest_ExampleHitTestCallback(), SDLTest_LoadIcon(), SDLTest_PrintRenderer(), state, text, VERBOSE_AUDIO, VERBOSE_MODES, VERBOSE_RENDER, VERBOSE_VIDEO, SDL_Rect::w, SDL_Rect::x, and SDL_Rect::y.
Referenced by main().
◆ SDLTest_CommonQuit()
Close test window.
- Parameters
-
state | The common state used to create test window. |
Definition at line 1794 of file SDL_test_common.c.
1799 if (
state->targets) {
1800 for (
i = 0;
i <
state->num_windows; ++
i) {
1807 if (
state->renderers) {
1808 for (
i = 0;
i <
state->num_windows; ++
i) {
1809 if (
state->renderers[
i]) {
References i, SDL_AudioQuit, SDL_DestroyRenderer, SDL_DestroyTexture, SDL_free, SDL_INIT_AUDIO, SDL_INIT_VIDEO, SDL_Quit, SDL_VideoQuit, SDLTest_LogAllocations(), and state.
Referenced by main(), and quit().
◆ SDLTest_CommonUsage()
@ SDL_WINDOW_MOUSE_CAPTURE
#define SDL_GetWindowDisplayIndex
#define SDL_SetClipboardText
#define SDL_GetPixelFormatName
@ SDL_WINDOW_ALLOW_HIGHDPI
SDL_bool SDL_DXGIGetOutputInfo(int displayIndex, int *adapterIndex, int *outputIndex)
Returns the DXGI Adapter and Output indices for the specified display index.
#define SDL_SetWindowMinimumSize
@ SDL_GL_MULTISAMPLESAMPLES
Mouse motion event structure (event.motion.*)
A collection of pixels used in software blitting.
void SDLTest_LogAllocations()
Print a log of any outstanding allocations.
#define SDL_WINDOWPOS_CENTERED
#define SDL_GetNumVideoDrivers
#define SDL_SetWindowSize
#define SDL_RenderGetClipRect
GLboolean GLboolean GLboolean b
GLuint GLsizei const GLchar * message
#define SDL_GetNumRenderDrivers
#define SDL_GetDisplayMode
#define SDL_SetWindowDisplayMode
#define SDL_GetDisplayName
static void SDL_snprintfcat(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char *fmt,...)
#define SDL_SetWindowFullscreen
#define SDL_GetWindowFlags
static void SDLTest_ScreenShot(SDL_Renderer *renderer)
#define SDL_BUTTON_X2MASK
@ SDL_WINDOW_FULLSCREEN_DESKTOP
#define SDL_WINDOWPOS_UNDEFINED
@ SDL_GL_RETAINED_BACKING
#define SDL_GetDesktopDisplayMode
@ SDL_GL_CONTEXT_PROFILE_MASK
SDL_FORCE_INLINE SDL_bool SDL_RectEmpty(const SDL_Rect *r)
Returns true if the rectangle has no area.
@ SDL_LOG_CATEGORY_SYSTEM
#define SDL_WINDOWPOS_ISCENTERED(X)
#define SDL_GetDisplayUsableBounds
GLfloat GLfloat GLfloat GLfloat h
#define SDL_SetWindowIcon
#define SDL_GetNumVideoDisplays
Information on the capabilities of a render driver or context.
#define SDL_SetRelativeMouseMode
The type used to identify a window.
#define SDL_GetRenderDriverInfo
The structure that defines a display mode.
#define SDL_GetKeyboardFocus
static SDL_Surface * SDLTest_LoadIcon(const char *file)
#define SDL_GetWindowSize
#define SDL_MinimizeWindow
@ SDL_GL_CONTEXT_DEBUG_FLAG
#define SDL_ShowSimpleMessageBox
int SDLTest_TrackAllocations()
Start tracking SDL memory allocations.
#define SDL_SetWindowGrab
GLint GLint GLint GLint GLint x
EGLSurface EGLNativeWindowType * window
#define SDL_GL_SetAttribute
#define SDL_GetRelativeMouseMode
static void SDLTest_PrintRenderer(SDL_RendererInfo *info)
#define SDL_GetClipboardText
#define DEFAULT_WINDOW_HEIGHT
@ SDL_RENDERER_PRESENTVSYNC
#define SDL_WINDOWPOS_UNDEFINED_DISPLAY(X)
int SDL_Direct3D9GetAdapterIndex(int displayIndex)
Returns the D3D9 adapter index that matches the specified display index.
#define DEFAULT_WINDOW_WIDTH
@ SDL_GL_ACCELERATED_VISUAL
#define SDL_PixelFormatEnumToMasks
#define SDL_GetWindowFromID
#define SDL_GetWindowPosition
static char text[MAX_TEXT_LENGTH]
@ SDL_WINDOW_INPUT_GRABBED
@ SDL_GL_ACCUM_ALPHA_SIZE
#define SDL_RenderSetLogicalSize
#define SDL_GetDisplayBounds
#define SDL_RestoreWindow
static SDL_HitTestResult SDLTest_ExampleHitTestCallback(SDL_Window *win, const SDL_Point *area, void *data)
#define SDL_BUTTON_X1MASK
#define SDL_SetWindowOpacity
#define SDL_WINDOWPOS_CENTERED_DISPLAY(X)
#define SDL_GetAudioDriver
#define SDL_OutOfMemory()
#define SDL_GetCurrentAudioDriver
@ SDL_MESSAGEBOX_INFORMATION
#define SDL_GetWindowOpacity
GLint GLint GLint GLint GLint GLint y
@ SDL_LOG_CATEGORY_RENDER
#define SDL_GetVideoDriver
#define SDL_RenderSetScale
#define SDL_arraysize(array)
#define SDL_DestroyTexture
#define SDL_GetWindowGrab
#define SDL_GetCurrentVideoDriver
#define SDL_SetWindowHitTest
#define SDL_LogSetPriority
#define SDL_SetWindowBordered
@ SDL_GL_CONTEXT_MINOR_VERSION
A rectangle, with the origin at the upper left.
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int int in j)
@ SDL_GL_MULTISAMPLEBUFFERS
@ SDL_LOG_PRIORITY_VERBOSE
#define SDL_MaximizeWindow
#define SDL_GetGlobalMouseState
static void SDLTest_PrintEvent(SDL_Event *event)
#define SDL_GetDisplayDPI
#define SDL_LogSetAllPriority
#define SDL_CreateRenderer
#define SDL_RenderSetClipRect
#define SDL_DestroyRenderer
#define SDL_GetNumDisplayModes
#define SDL_SetWindowPosition
static void FullscreenTo(int index, int windowId)
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
#define SDL_SetWindowMaximumSize
#define SDL_DestroyWindow
#define SDL_WINDOWPOS_ISUNDEFINED(X)
#define SDL_GetNumAudioDrivers
@ SDL_GL_CONTEXT_MAJOR_VERSION
GLubyte GLubyte GLubyte GLubyte w
@ SDL_GL_ACCUM_GREEN_SIZE
#define SDL_GetRendererInfo