SDL  2.0
SDL_test_common.c
Go to the documentation of this file.
1 /*
2  Simple DirectMedia Layer
3  Copyright (C) 1997-2020 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 /* Ported from original test/common.c file. */
23 
24 #include "SDL_config.h"
25 #include "SDL_test.h"
26 
27 #include <stdio.h>
28 
29 static const char *video_usage[] = {
30  "[--video driver]", "[--renderer driver]", "[--gldebug]",
31  "[--info all|video|modes|render|event]",
32  "[--log all|error|system|audio|video|render|input]", "[--display N]",
33  "[--fullscreen | --fullscreen-desktop | --windows N]", "[--title title]",
34  "[--icon icon.bmp]", "[--center | --position X,Y]", "[--geometry WxH]",
35  "[--min-geometry WxH]", "[--max-geometry WxH]", "[--logical WxH]",
36  "[--scale N]", "[--depth N]", "[--refresh R]", "[--vsync]", "[--noframe]",
37  "[--resize]", "[--minimize]", "[--maximize]", "[--grab]",
38  "[--allow-highdpi]", "[--usable-bounds]"
39 };
40 
41 static const char *audio_usage[] = {
42  "[--rate N]", "[--format U8|S8|U16|U16LE|U16BE|S16|S16LE|S16BE]",
43  "[--channels N]", "[--samples N]"
44 };
45 
46 static void SDL_snprintfcat(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char *fmt, ... )
47 {
48  size_t length = SDL_strlen(text);
49  va_list ap;
50 
51  va_start(ap, fmt);
52  text += length;
53  maxlen -= length;
54  SDL_vsnprintf(text, maxlen, fmt, ap);
55  va_end(ap);
56 }
57 
60 {
61  int i;
63 
64  /* Do this first so we catch all allocations */
65  for (i = 1; argv[i]; ++i) {
66  if (SDL_strcasecmp(argv[i], "--trackmem") == 0) {
68  break;
69  }
70  }
71 
72  state = (SDLTest_CommonState *)SDL_calloc(1, sizeof(*state));
73  if (!state) {
75  return NULL;
76  }
77 
78  /* Initialize some defaults */
79  state->argv = argv;
80  state->flags = flags;
81  state->window_title = argv[0];
82  state->window_flags = 0;
83  state->window_x = SDL_WINDOWPOS_UNDEFINED;
84  state->window_y = SDL_WINDOWPOS_UNDEFINED;
85  state->window_w = DEFAULT_WINDOW_WIDTH;
86  state->window_h = DEFAULT_WINDOW_HEIGHT;
87  state->num_windows = 1;
88  state->audiospec.freq = 22050;
89  state->audiospec.format = AUDIO_S16;
90  state->audiospec.channels = 2;
91  state->audiospec.samples = 2048;
92 
93  /* Set some very sane GL defaults */
94  state->gl_red_size = 3;
95  state->gl_green_size = 3;
96  state->gl_blue_size = 2;
97  state->gl_alpha_size = 0;
98  state->gl_buffer_size = 0;
99  state->gl_depth_size = 16;
100  state->gl_stencil_size = 0;
101  state->gl_double_buffer = 1;
102  state->gl_accum_red_size = 0;
103  state->gl_accum_green_size = 0;
104  state->gl_accum_blue_size = 0;
105  state->gl_accum_alpha_size = 0;
106  state->gl_stereo = 0;
107  state->gl_multisamplebuffers = 0;
108  state->gl_multisamplesamples = 0;
109  state->gl_retained_backing = 1;
110  state->gl_accelerated = -1;
111  state->gl_debug = 0;
112 
113  return state;
114 }
115 
116 int
118 {
119  char **argv = state->argv;
120 
121  if (SDL_strcasecmp(argv[index], "--video") == 0) {
122  ++index;
123  if (!argv[index]) {
124  return -1;
125  }
126  state->videodriver = argv[index];
127  return 2;
128  }
129  if (SDL_strcasecmp(argv[index], "--renderer") == 0) {
130  ++index;
131  if (!argv[index]) {
132  return -1;
133  }
134  state->renderdriver = argv[index];
135  return 2;
136  }
137  if (SDL_strcasecmp(argv[index], "--gldebug") == 0) {
138  state->gl_debug = 1;
139  return 1;
140  }
141  if (SDL_strcasecmp(argv[index], "--info") == 0) {
142  ++index;
143  if (!argv[index]) {
144  return -1;
145  }
146  if (SDL_strcasecmp(argv[index], "all") == 0) {
147  state->verbose |=
149  VERBOSE_EVENT);
150  return 2;
151  }
152  if (SDL_strcasecmp(argv[index], "video") == 0) {
153  state->verbose |= VERBOSE_VIDEO;
154  return 2;
155  }
156  if (SDL_strcasecmp(argv[index], "modes") == 0) {
157  state->verbose |= VERBOSE_MODES;
158  return 2;
159  }
160  if (SDL_strcasecmp(argv[index], "render") == 0) {
161  state->verbose |= VERBOSE_RENDER;
162  return 2;
163  }
164  if (SDL_strcasecmp(argv[index], "event") == 0) {
165  state->verbose |= VERBOSE_EVENT;
166  return 2;
167  }
168  return -1;
169  }
170  if (SDL_strcasecmp(argv[index], "--log") == 0) {
171  ++index;
172  if (!argv[index]) {
173  return -1;
174  }
175  if (SDL_strcasecmp(argv[index], "all") == 0) {
177  return 2;
178  }
179  if (SDL_strcasecmp(argv[index], "error") == 0) {
181  return 2;
182  }
183  if (SDL_strcasecmp(argv[index], "system") == 0) {
185  return 2;
186  }
187  if (SDL_strcasecmp(argv[index], "audio") == 0) {
189  return 2;
190  }
191  if (SDL_strcasecmp(argv[index], "video") == 0) {
193  return 2;
194  }
195  if (SDL_strcasecmp(argv[index], "render") == 0) {
197  return 2;
198  }
199  if (SDL_strcasecmp(argv[index], "input") == 0) {
201  return 2;
202  }
203  return -1;
204  }
205  if (SDL_strcasecmp(argv[index], "--display") == 0) {
206  ++index;
207  if (!argv[index]) {
208  return -1;
209  }
210  state->display = SDL_atoi(argv[index]);
211  if (SDL_WINDOWPOS_ISUNDEFINED(state->window_x)) {
212  state->window_x = SDL_WINDOWPOS_UNDEFINED_DISPLAY(state->display);
213  state->window_y = SDL_WINDOWPOS_UNDEFINED_DISPLAY(state->display);
214  }
215  if (SDL_WINDOWPOS_ISCENTERED(state->window_x)) {
216  state->window_x = SDL_WINDOWPOS_CENTERED_DISPLAY(state->display);
217  state->window_y = SDL_WINDOWPOS_CENTERED_DISPLAY(state->display);
218  }
219  return 2;
220  }
221  if (SDL_strcasecmp(argv[index], "--fullscreen") == 0) {
222  state->window_flags |= SDL_WINDOW_FULLSCREEN;
223  state->num_windows = 1;
224  return 1;
225  }
226  if (SDL_strcasecmp(argv[index], "--fullscreen-desktop") == 0) {
227  state->window_flags |= SDL_WINDOW_FULLSCREEN_DESKTOP;
228  state->num_windows = 1;
229  return 1;
230  }
231  if (SDL_strcasecmp(argv[index], "--allow-highdpi") == 0) {
232  state->window_flags |= SDL_WINDOW_ALLOW_HIGHDPI;
233  return 1;
234  }
235  if (SDL_strcasecmp(argv[index], "--windows") == 0) {
236  ++index;
237  if (!argv[index] || !SDL_isdigit(*argv[index])) {
238  return -1;
239  }
240  if (!(state->window_flags & SDL_WINDOW_FULLSCREEN)) {
241  state->num_windows = SDL_atoi(argv[index]);
242  }
243  return 2;
244  }
245  if (SDL_strcasecmp(argv[index], "--title") == 0) {
246  ++index;
247  if (!argv[index]) {
248  return -1;
249  }
250  state->window_title = argv[index];
251  return 2;
252  }
253  if (SDL_strcasecmp(argv[index], "--icon") == 0) {
254  ++index;
255  if (!argv[index]) {
256  return -1;
257  }
258  state->window_icon = argv[index];
259  return 2;
260  }
261  if (SDL_strcasecmp(argv[index], "--center") == 0) {
262  state->window_x = SDL_WINDOWPOS_CENTERED;
263  state->window_y = SDL_WINDOWPOS_CENTERED;
264  return 1;
265  }
266  if (SDL_strcasecmp(argv[index], "--position") == 0) {
267  char *x, *y;
268  ++index;
269  if (!argv[index]) {
270  return -1;
271  }
272  x = argv[index];
273  y = argv[index];
274  while (*y && *y != ',') {
275  ++y;
276  }
277  if (!*y) {
278  return -1;
279  }
280  *y++ = '\0';
281  state->window_x = SDL_atoi(x);
282  state->window_y = SDL_atoi(y);
283  return 2;
284  }
285  if (SDL_strcasecmp(argv[index], "--usable-bounds") == 0) {
286  /* !!! FIXME: this is a bit of a hack, but I don't want to add a
287  !!! FIXME: flag to the public structure in 2.0.x */
288  state->window_x = -1;
289  state->window_y = -1;
290  state->window_w = -1;
291  state->window_h = -1;
292  return 1;
293  }
294  if (SDL_strcasecmp(argv[index], "--geometry") == 0) {
295  char *w, *h;
296  ++index;
297  if (!argv[index]) {
298  return -1;
299  }
300  w = argv[index];
301  h = argv[index];
302  while (*h && *h != 'x') {
303  ++h;
304  }
305  if (!*h) {
306  return -1;
307  }
308  *h++ = '\0';
309  state->window_w = SDL_atoi(w);
310  state->window_h = SDL_atoi(h);
311  return 2;
312  }
313  if (SDL_strcasecmp(argv[index], "--min-geometry") == 0) {
314  char *w, *h;
315  ++index;
316  if (!argv[index]) {
317  return -1;
318  }
319  w = argv[index];
320  h = argv[index];
321  while (*h && *h != 'x') {
322  ++h;
323  }
324  if (!*h) {
325  return -1;
326  }
327  *h++ = '\0';
328  state->window_minW = SDL_atoi(w);
329  state->window_minH = SDL_atoi(h);
330  return 2;
331  }
332  if (SDL_strcasecmp(argv[index], "--max-geometry") == 0) {
333  char *w, *h;
334  ++index;
335  if (!argv[index]) {
336  return -1;
337  }
338  w = argv[index];
339  h = argv[index];
340  while (*h && *h != 'x') {
341  ++h;
342  }
343  if (!*h) {
344  return -1;
345  }
346  *h++ = '\0';
347  state->window_maxW = SDL_atoi(w);
348  state->window_maxH = SDL_atoi(h);
349  return 2;
350  }
351  if (SDL_strcasecmp(argv[index], "--logical") == 0) {
352  char *w, *h;
353  ++index;
354  if (!argv[index]) {
355  return -1;
356  }
357  w = argv[index];
358  h = argv[index];
359  while (*h && *h != 'x') {
360  ++h;
361  }
362  if (!*h) {
363  return -1;
364  }
365  *h++ = '\0';
366  state->logical_w = SDL_atoi(w);
367  state->logical_h = SDL_atoi(h);
368  return 2;
369  }
370  if (SDL_strcasecmp(argv[index], "--scale") == 0) {
371  ++index;
372  if (!argv[index]) {
373  return -1;
374  }
375  state->scale = (float)SDL_atof(argv[index]);
376  return 2;
377  }
378  if (SDL_strcasecmp(argv[index], "--depth") == 0) {
379  ++index;
380  if (!argv[index]) {
381  return -1;
382  }
383  state->depth = SDL_atoi(argv[index]);
384  return 2;
385  }
386  if (SDL_strcasecmp(argv[index], "--refresh") == 0) {
387  ++index;
388  if (!argv[index]) {
389  return -1;
390  }
391  state->refresh_rate = SDL_atoi(argv[index]);
392  return 2;
393  }
394  if (SDL_strcasecmp(argv[index], "--vsync") == 0) {
395  state->render_flags |= SDL_RENDERER_PRESENTVSYNC;
396  return 1;
397  }
398  if (SDL_strcasecmp(argv[index], "--noframe") == 0) {
399  state->window_flags |= SDL_WINDOW_BORDERLESS;
400  return 1;
401  }
402  if (SDL_strcasecmp(argv[index], "--resize") == 0) {
403  state->window_flags |= SDL_WINDOW_RESIZABLE;
404  return 1;
405  }
406  if (SDL_strcasecmp(argv[index], "--minimize") == 0) {
407  state->window_flags |= SDL_WINDOW_MINIMIZED;
408  return 1;
409  }
410  if (SDL_strcasecmp(argv[index], "--maximize") == 0) {
411  state->window_flags |= SDL_WINDOW_MAXIMIZED;
412  return 1;
413  }
414  if (SDL_strcasecmp(argv[index], "--grab") == 0) {
415  state->window_flags |= SDL_WINDOW_INPUT_GRABBED;
416  return 1;
417  }
418  if (SDL_strcasecmp(argv[index], "--rate") == 0) {
419  ++index;
420  if (!argv[index]) {
421  return -1;
422  }
423  state->audiospec.freq = SDL_atoi(argv[index]);
424  return 2;
425  }
426  if (SDL_strcasecmp(argv[index], "--format") == 0) {
427  ++index;
428  if (!argv[index]) {
429  return -1;
430  }
431  if (SDL_strcasecmp(argv[index], "U8") == 0) {
432  state->audiospec.format = AUDIO_U8;
433  return 2;
434  }
435  if (SDL_strcasecmp(argv[index], "S8") == 0) {
436  state->audiospec.format = AUDIO_S8;
437  return 2;
438  }
439  if (SDL_strcasecmp(argv[index], "U16") == 0) {
440  state->audiospec.format = AUDIO_U16;
441  return 2;
442  }
443  if (SDL_strcasecmp(argv[index], "U16LE") == 0) {
444  state->audiospec.format = AUDIO_U16LSB;
445  return 2;
446  }
447  if (SDL_strcasecmp(argv[index], "U16BE") == 0) {
448  state->audiospec.format = AUDIO_U16MSB;
449  return 2;
450  }
451  if (SDL_strcasecmp(argv[index], "S16") == 0) {
452  state->audiospec.format = AUDIO_S16;
453  return 2;
454  }
455  if (SDL_strcasecmp(argv[index], "S16LE") == 0) {
456  state->audiospec.format = AUDIO_S16LSB;
457  return 2;
458  }
459  if (SDL_strcasecmp(argv[index], "S16BE") == 0) {
460  state->audiospec.format = AUDIO_S16MSB;
461  return 2;
462  }
463  return -1;
464  }
465  if (SDL_strcasecmp(argv[index], "--channels") == 0) {
466  ++index;
467  if (!argv[index]) {
468  return -1;
469  }
470  state->audiospec.channels = (Uint8) SDL_atoi(argv[index]);
471  return 2;
472  }
473  if (SDL_strcasecmp(argv[index], "--samples") == 0) {
474  ++index;
475  if (!argv[index]) {
476  return -1;
477  }
478  state->audiospec.samples = (Uint16) SDL_atoi(argv[index]);
479  return 2;
480  }
481  if (SDL_strcasecmp(argv[index], "--trackmem") == 0) {
482  /* Already handled in SDLTest_CommonCreateState() */
483  return 1;
484  }
485  if ((SDL_strcasecmp(argv[index], "-h") == 0)
486  || (SDL_strcasecmp(argv[index], "--help") == 0)) {
487  /* Print the usage message */
488  return -1;
489  }
490  if (SDL_strcmp(argv[index], "-NSDocumentRevisionsDebugMode") == 0) {
491  /* Debug flag sent by Xcode */
492  return 2;
493  }
494  return 0;
495 }
496 
497 void
498 SDLTest_CommonLogUsage(SDLTest_CommonState * state, const char *argv0, const char **options)
499 {
500  int i;
501 
502  SDL_Log("USAGE: %s", argv0);
503  SDL_Log(" %s", "[--trackmem]");
504 
505  if (state->flags & SDL_INIT_VIDEO) {
506  for (i = 0; i < SDL_arraysize(video_usage); i++) {
507  SDL_Log(" %s", video_usage[i]);
508  }
509  }
510 
511  if (state->flags & SDL_INIT_AUDIO) {
512  for (i = 0; i < SDL_arraysize(audio_usage); i++) {
513  SDL_Log(" %s", audio_usage[i]);
514  }
515  }
516 
517  if (options) {
518  for (i = 0; options[i] != NULL; i++) {
519  SDL_Log(" %s", options[i]);
520  }
521  }
522 }
523 
524 static const char *
525 BuildCommonUsageString(char **pstr, const char **strlist, const int numitems, const char **strlist2, const int numitems2)
526 {
527  char *str = *pstr;
528  if (!str) {
529  size_t len = SDL_strlen("[--trackmem]") + 2;
530  int i;
531  for (i = 0; i < numitems; i++) {
532  len += SDL_strlen(strlist[i]) + 1;
533  }
534  if (strlist2) {
535  for (i = 0; i < numitems2; i++) {
536  len += SDL_strlen(strlist2[i]) + 1;
537  }
538  }
539  str = (char *) SDL_calloc(1, len);
540  if (!str) {
541  return ""; /* oh well. */
542  }
543  SDL_strlcat(str, "[--trackmem] ", len);
544  for (i = 0; i < numitems-1; i++) {
545  SDL_strlcat(str, strlist[i], len);
546  SDL_strlcat(str, " ", len);
547  }
548  SDL_strlcat(str, strlist[i], len);
549  if (strlist2) {
550  SDL_strlcat(str, " ", len);
551  for (i = 0; i < numitems2-1; i++) {
552  SDL_strlcat(str, strlist2[i], len);
553  SDL_strlcat(str, " ", len);
554  }
555  SDL_strlcat(str, strlist2[i], len);
556  }
557  *pstr = str;
558  }
559  return str;
560 }
561 
562 static char *common_usage_video = NULL;
563 static char *common_usage_audio = NULL;
565 
566 const char *
568 {
569 
570  switch (state->flags & (SDL_INIT_VIDEO | SDL_INIT_AUDIO)) {
571  case SDL_INIT_VIDEO:
573  case SDL_INIT_AUDIO:
577  default:
578  return "[--trackmem]";
579  }
580 }
581 
582 
583 SDL_bool
585 {
586  int i = 1;
587  while (i < argc) {
588  const int consumed = SDLTest_CommonArg(state, i);
589  if (consumed == 0) {
590  SDLTest_CommonLogUsage(state, argv[0], NULL);
591  return SDL_FALSE;
592  }
593  i += consumed;
594  }
595  return SDL_TRUE;
596 }
597 
598 static void
599 SDLTest_PrintRendererFlag(char *text, size_t maxlen, Uint32 flag)
600 {
601  switch (flag) {
603  SDL_snprintfcat(text, maxlen, "Software");
604  break;
606  SDL_snprintfcat(text, maxlen, "Accelerated");
607  break;
609  SDL_snprintfcat(text, maxlen, "PresentVSync");
610  break;
612  SDL_snprintfcat(text, maxlen, "TargetTexturesSupported");
613  break;
614  default:
615  SDL_snprintfcat(text, maxlen, "0x%8.8x", flag);
616  break;
617  }
618 }
619 
620 static void
622 {
623  switch (format) {
625  SDL_snprintfcat(text, maxlen, "Unknown");
626  break;
628  SDL_snprintfcat(text, maxlen, "Index1LSB");
629  break;
631  SDL_snprintfcat(text, maxlen, "Index1MSB");
632  break;
634  SDL_snprintfcat(text, maxlen, "Index4LSB");
635  break;
637  SDL_snprintfcat(text, maxlen, "Index4MSB");
638  break;
640  SDL_snprintfcat(text, maxlen, "Index8");
641  break;
643  SDL_snprintfcat(text, maxlen, "RGB332");
644  break;
646  SDL_snprintfcat(text, maxlen, "RGB444");
647  break;
649  SDL_snprintfcat(text, maxlen, "BGR444");
650  break;
652  SDL_snprintfcat(text, maxlen, "RGB555");
653  break;
655  SDL_snprintfcat(text, maxlen, "BGR555");
656  break;
658  SDL_snprintfcat(text, maxlen, "ARGB4444");
659  break;
661  SDL_snprintfcat(text, maxlen, "ABGR4444");
662  break;
664  SDL_snprintfcat(text, maxlen, "ARGB1555");
665  break;
667  SDL_snprintfcat(text, maxlen, "ABGR1555");
668  break;
670  SDL_snprintfcat(text, maxlen, "RGB565");
671  break;
673  SDL_snprintfcat(text, maxlen, "BGR565");
674  break;
676  SDL_snprintfcat(text, maxlen, "RGB24");
677  break;
679  SDL_snprintfcat(text, maxlen, "BGR24");
680  break;
682  SDL_snprintfcat(text, maxlen, "RGB888");
683  break;
685  SDL_snprintfcat(text, maxlen, "BGR888");
686  break;
688  SDL_snprintfcat(text, maxlen, "ARGB8888");
689  break;
691  SDL_snprintfcat(text, maxlen, "RGBA8888");
692  break;
694  SDL_snprintfcat(text, maxlen, "ABGR8888");
695  break;
697  SDL_snprintfcat(text, maxlen, "BGRA8888");
698  break;
700  SDL_snprintfcat(text, maxlen, "ARGB2101010");
701  break;
703  SDL_snprintfcat(text, maxlen, "YV12");
704  break;
706  SDL_snprintfcat(text, maxlen, "IYUV");
707  break;
709  SDL_snprintfcat(text, maxlen, "YUY2");
710  break;
712  SDL_snprintfcat(text, maxlen, "UYVY");
713  break;
715  SDL_snprintfcat(text, maxlen, "YVYU");
716  break;
718  SDL_snprintfcat(text, maxlen, "NV12");
719  break;
721  SDL_snprintfcat(text, maxlen, "NV21");
722  break;
723  default:
724  SDL_snprintfcat(text, maxlen, "0x%8.8x", format);
725  break;
726  }
727 }
728 
729 static void
731 {
732  int i, count;
733  char text[1024];
734 
735  SDL_Log(" Renderer %s:\n", info->name);
736 
737  SDL_snprintf(text, sizeof(text), " Flags: 0x%8.8X", info->flags);
738  SDL_snprintfcat(text, sizeof(text), " (");
739  count = 0;
740  for (i = 0; i < sizeof(info->flags) * 8; ++i) {
741  Uint32 flag = (1 << i);
742  if (info->flags & flag) {
743  if (count > 0) {
744  SDL_snprintfcat(text, sizeof(text), " | ");
745  }
746  SDLTest_PrintRendererFlag(text, sizeof(text), flag);
747  ++count;
748  }
749  }
750  SDL_snprintfcat(text, sizeof(text), ")");
751  SDL_Log("%s\n", text);
752 
753  SDL_snprintf(text, sizeof(text), " Texture formats (%d): ", info->num_texture_formats);
754  for (i = 0; i < (int) info->num_texture_formats; ++i) {
755  if (i > 0) {
756  SDL_snprintfcat(text, sizeof(text), ", ");
757  }
759  }
760  SDL_Log("%s\n", text);
761 
762  if (info->max_texture_width || info->max_texture_height) {
763  SDL_Log(" Max Texture Size: %dx%d\n",
765  }
766 }
767 
768 static SDL_Surface *
769 SDLTest_LoadIcon(const char *file)
770 {
771  SDL_Surface *icon;
772 
773  /* Load the icon surface */
774  icon = SDL_LoadBMP(file);
775  if (icon == NULL) {
776  SDL_Log("Couldn't load %s: %s\n", file, SDL_GetError());
777  return (NULL);
778  }
779 
780  if (icon->format->palette) {
781  /* Set the colorkey */
782  SDL_SetColorKey(icon, 1, *((Uint8 *) icon->pixels));
783  }
784 
785  return (icon);
786 }
787 
790 {
791  int w, h;
792  const int RESIZE_BORDER = 8;
793  const int DRAGGABLE_TITLE = 32;
794 
795  /*SDL_Log("Hit test point %d,%d\n", area->x, area->y);*/
796 
797  SDL_GetWindowSize(win, &w, &h);
798 
799  if (area->x < RESIZE_BORDER) {
800  if (area->y < RESIZE_BORDER) {
801  SDL_Log("SDL_HITTEST_RESIZE_TOPLEFT\n");
803  } else if (area->y >= (h-RESIZE_BORDER)) {
804  SDL_Log("SDL_HITTEST_RESIZE_BOTTOMLEFT\n");
806  } else {
807  SDL_Log("SDL_HITTEST_RESIZE_LEFT\n");
809  }
810  } else if (area->x >= (w-RESIZE_BORDER)) {
811  if (area->y < RESIZE_BORDER) {
812  SDL_Log("SDL_HITTEST_RESIZE_TOPRIGHT\n");
814  } else if (area->y >= (h-RESIZE_BORDER)) {
815  SDL_Log("SDL_HITTEST_RESIZE_BOTTOMRIGHT\n");
817  } else {
818  SDL_Log("SDL_HITTEST_RESIZE_RIGHT\n");
820  }
821  } else if (area->y >= (h-RESIZE_BORDER)) {
822  SDL_Log("SDL_HITTEST_RESIZE_BOTTOM\n");
824  } else if (area->y < RESIZE_BORDER) {
825  SDL_Log("SDL_HITTEST_RESIZE_TOP\n");
826  return SDL_HITTEST_RESIZE_TOP;
827  } else if (area->y < DRAGGABLE_TITLE) {
828  SDL_Log("SDL_HITTEST_DRAGGABLE\n");
829  return SDL_HITTEST_DRAGGABLE;
830  }
831  return SDL_HITTEST_NORMAL;
832 }
833 
834 SDL_bool
836 {
837  int i, j, m, n, w, h;
838  SDL_DisplayMode fullscreen_mode;
839  char text[1024];
840 
841  if (state->flags & SDL_INIT_VIDEO) {
842  if (state->verbose & VERBOSE_VIDEO) {
844  if (n == 0) {
845  SDL_Log("No built-in video drivers\n");
846  } else {
847  SDL_snprintf(text, sizeof(text), "Built-in video drivers:");
848  for (i = 0; i < n; ++i) {
849  if (i > 0) {
850  SDL_snprintfcat(text, sizeof(text), ",");
851  }
852  SDL_snprintfcat(text, sizeof(text), " %s", SDL_GetVideoDriver(i));
853  }
854  SDL_Log("%s\n", text);
855  }
856  }
857  if (SDL_VideoInit(state->videodriver) < 0) {
858  SDL_Log("Couldn't initialize video driver: %s\n",
859  SDL_GetError());
860  return SDL_FALSE;
861  }
862  if (state->verbose & VERBOSE_VIDEO) {
863  SDL_Log("Video driver: %s\n",
865  }
866 
867  /* Upload GL settings */
872  SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, state->gl_double_buffer);
873  SDL_GL_SetAttribute(SDL_GL_BUFFER_SIZE, state->gl_buffer_size);
875  SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, state->gl_stencil_size);
876  SDL_GL_SetAttribute(SDL_GL_ACCUM_RED_SIZE, state->gl_accum_red_size);
877  SDL_GL_SetAttribute(SDL_GL_ACCUM_GREEN_SIZE, state->gl_accum_green_size);
878  SDL_GL_SetAttribute(SDL_GL_ACCUM_BLUE_SIZE, state->gl_accum_blue_size);
879  SDL_GL_SetAttribute(SDL_GL_ACCUM_ALPHA_SIZE, state->gl_accum_alpha_size);
881  SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, state->gl_multisamplebuffers);
882  SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, state->gl_multisamplesamples);
883  if (state->gl_accelerated >= 0) {
885  state->gl_accelerated);
886  }
887  SDL_GL_SetAttribute(SDL_GL_RETAINED_BACKING, state->gl_retained_backing);
888  if (state->gl_major_version) {
891  }
892  if (state->gl_debug) {
894  }
895  if (state->gl_profile_mask) {
897  }
898 
899  if (state->verbose & VERBOSE_MODES) {
900  SDL_Rect bounds, usablebounds;
901  float hdpi = 0;
902  float vdpi = 0;
904  int bpp;
905  Uint32 Rmask, Gmask, Bmask, Amask;
906 #if SDL_VIDEO_DRIVER_WINDOWS
907  int adapterIndex = 0;
908  int outputIndex = 0;
909 #endif
911  SDL_Log("Number of displays: %d\n", n);
912  for (i = 0; i < n; ++i) {
913  SDL_Log("Display %d: %s\n", i, SDL_GetDisplayName(i));
914 
915  SDL_zero(bounds);
916  SDL_GetDisplayBounds(i, &bounds);
917 
918  SDL_zero(usablebounds);
919  SDL_GetDisplayUsableBounds(i, &usablebounds);
920 
921  SDL_GetDisplayDPI(i, NULL, &hdpi, &vdpi);
922 
923  SDL_Log("Bounds: %dx%d at %d,%d\n", bounds.w, bounds.h, bounds.x, bounds.y);
924  SDL_Log("Usable bounds: %dx%d at %d,%d\n", usablebounds.w, usablebounds.h, usablebounds.x, usablebounds.y);
925  SDL_Log("DPI: %fx%f\n", hdpi, vdpi);
926 
928  SDL_PixelFormatEnumToMasks(mode.format, &bpp, &Rmask, &Gmask,
929  &Bmask, &Amask);
930  SDL_Log(" Current mode: %dx%d@%dHz, %d bits-per-pixel (%s)\n",
931  mode.w, mode.h, mode.refresh_rate, bpp,
932  SDL_GetPixelFormatName(mode.format));
933  if (Rmask || Gmask || Bmask) {
934  SDL_Log(" Red Mask = 0x%.8x\n", Rmask);
935  SDL_Log(" Green Mask = 0x%.8x\n", Gmask);
936  SDL_Log(" Blue Mask = 0x%.8x\n", Bmask);
937  if (Amask)
938  SDL_Log(" Alpha Mask = 0x%.8x\n", Amask);
939  }
940 
941  /* Print available fullscreen video modes */
943  if (m == 0) {
944  SDL_Log("No available fullscreen video modes\n");
945  } else {
946  SDL_Log(" Fullscreen video modes:\n");
947  for (j = 0; j < m; ++j) {
949  SDL_PixelFormatEnumToMasks(mode.format, &bpp, &Rmask,
950  &Gmask, &Bmask, &Amask);
951  SDL_Log(" Mode %d: %dx%d@%dHz, %d bits-per-pixel (%s)\n",
952  j, mode.w, mode.h, mode.refresh_rate, bpp,
953  SDL_GetPixelFormatName(mode.format));
954  if (Rmask || Gmask || Bmask) {
955  SDL_Log(" Red Mask = 0x%.8x\n",
956  Rmask);
957  SDL_Log(" Green Mask = 0x%.8x\n",
958  Gmask);
959  SDL_Log(" Blue Mask = 0x%.8x\n",
960  Bmask);
961  if (Amask)
962  SDL_Log(" Alpha Mask = 0x%.8x\n",
963  Amask);
964  }
965  }
966  }
967 
968 #if SDL_VIDEO_DRIVER_WINDOWS
969  /* Print the D3D9 adapter index */
970  adapterIndex = SDL_Direct3D9GetAdapterIndex( i );
971  SDL_Log("D3D9 Adapter Index: %d", adapterIndex);
972 
973  /* Print the DXGI adapter and output indices */
974  SDL_DXGIGetOutputInfo(i, &adapterIndex, &outputIndex);
975  SDL_Log("DXGI Adapter Index: %d Output Index: %d", adapterIndex, outputIndex);
976 #endif
977  }
978  }
979 
980  if (state->verbose & VERBOSE_RENDER) {
981  SDL_RendererInfo info;
982 
984  if (n == 0) {
985  SDL_Log("No built-in render drivers\n");
986  } else {
987  SDL_Log("Built-in render drivers:\n");
988  for (i = 0; i < n; ++i) {
989  SDL_GetRenderDriverInfo(i, &info);
990  SDLTest_PrintRenderer(&info);
991  }
992  }
993  }
994 
995  SDL_zero(fullscreen_mode);
996  switch (state->depth) {
997  case 8:
998  fullscreen_mode.format = SDL_PIXELFORMAT_INDEX8;
999  break;
1000  case 15:
1001  fullscreen_mode.format = SDL_PIXELFORMAT_RGB555;
1002  break;
1003  case 16:
1004  fullscreen_mode.format = SDL_PIXELFORMAT_RGB565;
1005  break;
1006  case 24:
1007  fullscreen_mode.format = SDL_PIXELFORMAT_RGB24;
1008  break;
1009  default:
1010  fullscreen_mode.format = SDL_PIXELFORMAT_RGB888;
1011  break;
1012  }
1013  fullscreen_mode.refresh_rate = state->refresh_rate;
1014 
1015  state->windows =
1016  (SDL_Window **) SDL_calloc(state->num_windows,
1017  sizeof(*state->windows));
1018  state->renderers =
1019  (SDL_Renderer **) SDL_calloc(state->num_windows,
1020  sizeof(*state->renderers));
1021  state->targets =
1022  (SDL_Texture **) SDL_calloc(state->num_windows,
1023  sizeof(*state->targets));
1024  if (!state->windows || !state->renderers) {
1025  SDL_Log("Out of memory!\n");
1026  return SDL_FALSE;
1027  }
1028  for (i = 0; i < state->num_windows; ++i) {
1029  char title[1024];
1030  SDL_Rect r = {
1031  state->window_x, state->window_y,
1032  state->window_w, state->window_h
1033  };
1034 
1035  /* !!! FIXME: hack to make --usable-bounds work for now. */
1036  if ((r.x == -1) && (r.y == -1) && (r.w == -1) && (r.h == -1)) {
1037  SDL_GetDisplayUsableBounds(state->display, &r);
1038  }
1039 
1040  if (state->num_windows > 1) {
1041  SDL_snprintf(title, SDL_arraysize(title), "%s %d",
1042  state->window_title, i + 1);
1043  } else {
1044  SDL_strlcpy(title, state->window_title, SDL_arraysize(title));
1045  }
1046  state->windows[i] =
1047  SDL_CreateWindow(title, r.x, r.y, r.w, r.h, state->window_flags);
1048  if (!state->windows[i]) {
1049  SDL_Log("Couldn't create window: %s\n",
1050  SDL_GetError());
1051  return SDL_FALSE;
1052  }
1053  if (state->window_minW || state->window_minH) {
1054  SDL_SetWindowMinimumSize(state->windows[i], state->window_minW, state->window_minH);
1055  }
1056  if (state->window_maxW || state->window_maxH) {
1057  SDL_SetWindowMaximumSize(state->windows[i], state->window_maxW, state->window_maxH);
1058  }
1059  SDL_GetWindowSize(state->windows[i], &w, &h);
1060  if (!(state->window_flags & SDL_WINDOW_RESIZABLE) &&
1061  (w != state->window_w || h != state->window_h)) {
1062  printf("Window requested size %dx%d, got %dx%d\n", state->window_w, state->window_h, w, h);
1063  state->window_w = w;
1064  state->window_h = h;
1065  }
1066  if (SDL_SetWindowDisplayMode(state->windows[i], &fullscreen_mode) < 0) {
1067  SDL_Log("Can't set up fullscreen display mode: %s\n",
1068  SDL_GetError());
1069  return SDL_FALSE;
1070  }
1071 
1072  /* Add resize/drag areas for windows that are borderless and resizable */
1073  if ((state->window_flags & (SDL_WINDOW_RESIZABLE|SDL_WINDOW_BORDERLESS)) ==
1076  }
1077 
1078  if (state->window_icon) {
1079  SDL_Surface *icon = SDLTest_LoadIcon(state->window_icon);
1080  if (icon) {
1081  SDL_SetWindowIcon(state->windows[i], icon);
1082  SDL_FreeSurface(icon);
1083  }
1084  }
1085 
1086  SDL_ShowWindow(state->windows[i]);
1087 
1088  if (!state->skip_renderer
1089  && (state->renderdriver
1090  || !(state->window_flags & (SDL_WINDOW_OPENGL | SDL_WINDOW_VULKAN)))) {
1091  m = -1;
1092  if (state->renderdriver) {
1093  SDL_RendererInfo info;
1095  for (j = 0; j < n; ++j) {
1096  SDL_GetRenderDriverInfo(j, &info);
1097  if (SDL_strcasecmp(info.name, state->renderdriver) ==
1098  0) {
1099  m = j;
1100  break;
1101  }
1102  }
1103  if (m == -1) {
1104  SDL_Log("Couldn't find render driver named %s",
1105  state->renderdriver);
1106  return SDL_FALSE;
1107  }
1108  }
1109  state->renderers[i] = SDL_CreateRenderer(state->windows[i],
1110  m, state->render_flags);
1111  if (!state->renderers[i]) {
1112  SDL_Log("Couldn't create renderer: %s\n",
1113  SDL_GetError());
1114  return SDL_FALSE;
1115  }
1116  if (state->logical_w && state->logical_h) {
1117  SDL_RenderSetLogicalSize(state->renderers[i], state->logical_w, state->logical_h);
1118  } else if (state->scale != 0.) {
1119  SDL_RenderSetScale(state->renderers[i], state->scale, state->scale);
1120  }
1121  if (state->verbose & VERBOSE_RENDER) {
1122  SDL_RendererInfo info;
1123 
1124  SDL_Log("Current renderer:\n");
1125  SDL_GetRendererInfo(state->renderers[i], &info);
1126  SDLTest_PrintRenderer(&info);
1127  }
1128  }
1129  }
1130  }
1131 
1132  if (state->flags & SDL_INIT_AUDIO) {
1133  if (state->verbose & VERBOSE_AUDIO) {
1135  if (n == 0) {
1136  SDL_Log("No built-in audio drivers\n");
1137  } else {
1138  SDL_snprintf(text, sizeof(text), "Built-in audio drivers:");
1139  for (i = 0; i < n; ++i) {
1140  if (i > 0) {
1141  SDL_snprintfcat(text, sizeof(text), ",");
1142  }
1143  SDL_snprintfcat(text, sizeof(text), " %s", SDL_GetAudioDriver(i));
1144  }
1145  SDL_Log("%s\n", text);
1146  }
1147  }
1148  if (SDL_AudioInit(state->audiodriver) < 0) {
1149  SDL_Log("Couldn't initialize audio driver: %s\n",
1150  SDL_GetError());
1151  return SDL_FALSE;
1152  }
1153  if (state->verbose & VERBOSE_AUDIO) {
1154  SDL_Log("Audio driver: %s\n",
1156  }
1157 
1158  if (SDL_OpenAudio(&state->audiospec, NULL) < 0) {
1159  SDL_Log("Couldn't open audio: %s\n", SDL_GetError());
1160  return SDL_FALSE;
1161  }
1162  }
1163 
1164  return SDL_TRUE;
1165 }
1166 
1167 static const char *
1168 DisplayOrientationName(int orientation)
1169 {
1170  switch (orientation)
1171  {
1172 #define CASE(X) case SDL_ORIENTATION_##X: return #X
1173  CASE(UNKNOWN);
1174  CASE(LANDSCAPE);
1175  CASE(LANDSCAPE_FLIPPED);
1176  CASE(PORTRAIT);
1177  CASE(PORTRAIT_FLIPPED);
1178 #undef CASE
1179 default: return "???";
1180  }
1181 }
1182 
1183 static const char *
1185 {
1186  switch (axis)
1187  {
1188 #define AXIS_CASE(ax) case SDL_CONTROLLER_AXIS_##ax: return #ax
1189  AXIS_CASE(INVALID);
1190  AXIS_CASE(LEFTX);
1191  AXIS_CASE(LEFTY);
1192  AXIS_CASE(RIGHTX);
1193  AXIS_CASE(RIGHTY);
1194  AXIS_CASE(TRIGGERLEFT);
1195  AXIS_CASE(TRIGGERRIGHT);
1196 #undef AXIS_CASE
1197 default: return "???";
1198  }
1199 }
1200 
1201 static const char *
1203 {
1204  switch (button)
1205  {
1206 #define BUTTON_CASE(btn) case SDL_CONTROLLER_BUTTON_##btn: return #btn
1207  BUTTON_CASE(INVALID);
1208  BUTTON_CASE(A);
1209  BUTTON_CASE(B);
1210  BUTTON_CASE(X);
1211  BUTTON_CASE(Y);
1212  BUTTON_CASE(BACK);
1213  BUTTON_CASE(GUIDE);
1214  BUTTON_CASE(START);
1215  BUTTON_CASE(LEFTSTICK);
1216  BUTTON_CASE(RIGHTSTICK);
1217  BUTTON_CASE(LEFTSHOULDER);
1218  BUTTON_CASE(RIGHTSHOULDER);
1219  BUTTON_CASE(DPAD_UP);
1220  BUTTON_CASE(DPAD_DOWN);
1221  BUTTON_CASE(DPAD_LEFT);
1222  BUTTON_CASE(DPAD_RIGHT);
1223 #undef BUTTON_CASE
1224 default: return "???";
1225  }
1226 }
1227 
1228 static void
1230 {
1231  if ((event->type == SDL_MOUSEMOTION) || (event->type == SDL_FINGERMOTION)) {
1232  /* Mouse and finger motion are really spammy */
1233  return;
1234  }
1235 
1236  switch (event->type) {
1237  case SDL_DISPLAYEVENT:
1238  switch (event->display.event) {
1240  SDL_Log("SDL EVENT: Display %d changed orientation to %s", event->display.display, DisplayOrientationName(event->display.data1));
1241  break;
1242  default:
1243  SDL_Log("SDL EVENT: Display %d got unknown event 0x%4.4x",
1244  event->display.display, event->display.event);
1245  break;
1246  }
1247  break;
1248  case SDL_WINDOWEVENT:
1249  switch (event->window.event) {
1250  case SDL_WINDOWEVENT_SHOWN:
1251  SDL_Log("SDL EVENT: Window %d shown", event->window.windowID);
1252  break;
1254  SDL_Log("SDL EVENT: Window %d hidden", event->window.windowID);
1255  break;
1257  SDL_Log("SDL EVENT: Window %d exposed", event->window.windowID);
1258  break;
1259  case SDL_WINDOWEVENT_MOVED:
1260  SDL_Log("SDL EVENT: Window %d moved to %d,%d",
1261  event->window.windowID, event->window.data1,
1262  event->window.data2);
1263  break;
1265  SDL_Log("SDL EVENT: Window %d resized to %dx%d",
1266  event->window.windowID, event->window.data1,
1267  event->window.data2);
1268  break;
1270  SDL_Log("SDL EVENT: Window %d changed size to %dx%d",
1271  event->window.windowID, event->window.data1,
1272  event->window.data2);
1273  break;
1275  SDL_Log("SDL EVENT: Window %d minimized", event->window.windowID);
1276  break;
1278  SDL_Log("SDL EVENT: Window %d maximized", event->window.windowID);
1279  break;
1281  SDL_Log("SDL EVENT: Window %d restored", event->window.windowID);
1282  break;
1283  case SDL_WINDOWEVENT_ENTER:
1284  SDL_Log("SDL EVENT: Mouse entered window %d",
1285  event->window.windowID);
1286  break;
1287  case SDL_WINDOWEVENT_LEAVE:
1288  SDL_Log("SDL EVENT: Mouse left window %d", event->window.windowID);
1289  break;
1291  SDL_Log("SDL EVENT: Window %d gained keyboard focus",
1292  event->window.windowID);
1293  break;
1295  SDL_Log("SDL EVENT: Window %d lost keyboard focus",
1296  event->window.windowID);
1297  break;
1298  case SDL_WINDOWEVENT_CLOSE:
1299  SDL_Log("SDL EVENT: Window %d closed", event->window.windowID);
1300  break;
1302  SDL_Log("SDL EVENT: Window %d take focus", event->window.windowID);
1303  break;
1305  SDL_Log("SDL EVENT: Window %d hit test", event->window.windowID);
1306  break;
1307  default:
1308  SDL_Log("SDL EVENT: Window %d got unknown event 0x%4.4x",
1309  event->window.windowID, event->window.event);
1310  break;
1311  }
1312  break;
1313  case SDL_KEYDOWN:
1314  SDL_Log("SDL EVENT: Keyboard: key pressed in window %d: scancode 0x%08X = %s, keycode 0x%08X = %s",
1315  event->key.windowID,
1316  event->key.keysym.scancode,
1317  SDL_GetScancodeName(event->key.keysym.scancode),
1318  event->key.keysym.sym, SDL_GetKeyName(event->key.keysym.sym));
1319  break;
1320  case SDL_KEYUP:
1321  SDL_Log("SDL EVENT: Keyboard: key released in window %d: scancode 0x%08X = %s, keycode 0x%08X = %s",
1322  event->key.windowID,
1323  event->key.keysym.scancode,
1324  SDL_GetScancodeName(event->key.keysym.scancode),
1325  event->key.keysym.sym, SDL_GetKeyName(event->key.keysym.sym));
1326  break;
1327  case SDL_TEXTEDITING:
1328  SDL_Log("SDL EVENT: Keyboard: text editing \"%s\" in window %d",
1329  event->edit.text, event->edit.windowID);
1330  break;
1331  case SDL_TEXTINPUT:
1332  SDL_Log("SDL EVENT: Keyboard: text input \"%s\" in window %d",
1333  event->text.text, event->text.windowID);
1334  break;
1335  case SDL_KEYMAPCHANGED:
1336  SDL_Log("SDL EVENT: Keymap changed");
1337  break;
1338  case SDL_MOUSEMOTION:
1339  SDL_Log("SDL EVENT: Mouse: moved to %d,%d (%d,%d) in window %d",
1340  event->motion.x, event->motion.y,
1341  event->motion.xrel, event->motion.yrel,
1342  event->motion.windowID);
1343  break;
1344  case SDL_MOUSEBUTTONDOWN:
1345  SDL_Log("SDL EVENT: Mouse: button %d pressed at %d,%d with click count %d in window %d",
1346  event->button.button, event->button.x, event->button.y, event->button.clicks,
1347  event->button.windowID);
1348  break;
1349  case SDL_MOUSEBUTTONUP:
1350  SDL_Log("SDL EVENT: Mouse: button %d released at %d,%d with click count %d in window %d",
1351  event->button.button, event->button.x, event->button.y, event->button.clicks,
1352  event->button.windowID);
1353  break;
1354  case SDL_MOUSEWHEEL:
1355  SDL_Log("SDL EVENT: Mouse: wheel scrolled %d in x and %d in y (reversed: %d) in window %d",
1356  event->wheel.x, event->wheel.y, event->wheel.direction, event->wheel.windowID);
1357  break;
1358  case SDL_JOYDEVICEADDED:
1359  SDL_Log("SDL EVENT: Joystick index %d attached",
1360  event->jdevice.which);
1361  break;
1362  case SDL_JOYDEVICEREMOVED:
1363  SDL_Log("SDL EVENT: Joystick %d removed",
1364  event->jdevice.which);
1365  break;
1366  case SDL_JOYBALLMOTION:
1367  SDL_Log("SDL EVENT: Joystick %d: ball %d moved by %d,%d",
1368  event->jball.which, event->jball.ball, event->jball.xrel,
1369  event->jball.yrel);
1370  break;
1371  case SDL_JOYHATMOTION:
1372  {
1373  const char *position = "UNKNOWN";
1374  switch (event->jhat.value) {
1375  case SDL_HAT_CENTERED:
1376  position = "CENTER";
1377  break;
1378  case SDL_HAT_UP:
1379  position = "UP";
1380  break;
1381  case SDL_HAT_RIGHTUP:
1382  position = "RIGHTUP";
1383  break;
1384  case SDL_HAT_RIGHT:
1385  position = "RIGHT";
1386  break;
1387  case SDL_HAT_RIGHTDOWN:
1388  position = "RIGHTDOWN";
1389  break;
1390  case SDL_HAT_DOWN:
1391  position = "DOWN";
1392  break;
1393  case SDL_HAT_LEFTDOWN:
1394  position = "LEFTDOWN";
1395  break;
1396  case SDL_HAT_LEFT:
1397  position = "LEFT";
1398  break;
1399  case SDL_HAT_LEFTUP:
1400  position = "LEFTUP";
1401  break;
1402  }
1403  SDL_Log("SDL EVENT: Joystick %d: hat %d moved to %s", event->jhat.which,
1404  event->jhat.hat, position);
1405  }
1406  break;
1407  case SDL_JOYBUTTONDOWN:
1408  SDL_Log("SDL EVENT: Joystick %d: button %d pressed",
1409  event->jbutton.which, event->jbutton.button);
1410  break;
1411  case SDL_JOYBUTTONUP:
1412  SDL_Log("SDL EVENT: Joystick %d: button %d released",
1413  event->jbutton.which, event->jbutton.button);
1414  break;
1416  SDL_Log("SDL EVENT: Controller index %d attached",
1417  event->cdevice.which);
1418  break;
1420  SDL_Log("SDL EVENT: Controller %d removed",
1421  event->cdevice.which);
1422  break;
1424  SDL_Log("SDL EVENT: Controller %d axis %d ('%s') value: %d",
1425  event->caxis.which,
1426  event->caxis.axis,
1428  event->caxis.value);
1429  break;
1431  SDL_Log("SDL EVENT: Controller %d button %d ('%s') down",
1432  event->cbutton.which, event->cbutton.button,
1434  break;
1436  SDL_Log("SDL EVENT: Controller %d button %d ('%s') up",
1437  event->cbutton.which, event->cbutton.button,
1439  break;
1440  case SDL_CLIPBOARDUPDATE:
1441  SDL_Log("SDL EVENT: Clipboard updated");
1442  break;
1443 
1444  case SDL_FINGERMOTION:
1445  SDL_Log("SDL EVENT: Finger: motion touch=%ld, finger=%ld, x=%f, y=%f, dx=%f, dy=%f, pressure=%f",
1446  (long) event->tfinger.touchId,
1447  (long) event->tfinger.fingerId,
1448  event->tfinger.x, event->tfinger.y,
1449  event->tfinger.dx, event->tfinger.dy, event->tfinger.pressure);
1450  break;
1451  case SDL_FINGERDOWN:
1452  case SDL_FINGERUP:
1453  SDL_Log("SDL EVENT: Finger: %s touch=%ld, finger=%ld, x=%f, y=%f, dx=%f, dy=%f, pressure=%f",
1454  (event->type == SDL_FINGERDOWN) ? "down" : "up",
1455  (long) event->tfinger.touchId,
1456  (long) event->tfinger.fingerId,
1457  event->tfinger.x, event->tfinger.y,
1458  event->tfinger.dx, event->tfinger.dy, event->tfinger.pressure);
1459  break;
1460  case SDL_DOLLARGESTURE:
1461  SDL_Log("SDL_EVENT: Dollar gesture detect: %ld", (long) event->dgesture.gestureId);
1462  break;
1463  case SDL_DOLLARRECORD:
1464  SDL_Log("SDL_EVENT: Dollar gesture record: %ld", (long) event->dgesture.gestureId);
1465  break;
1466  case SDL_MULTIGESTURE:
1467  SDL_Log("SDL_EVENT: Multi gesture fingers: %d", event->mgesture.numFingers);
1468  break;
1469 
1471  SDL_Log("SDL EVENT: render device reset");
1472  break;
1474  SDL_Log("SDL EVENT: render targets reset");
1475  break;
1476 
1477  case SDL_APP_TERMINATING:
1478  SDL_Log("SDL EVENT: App terminating");
1479  break;
1480  case SDL_APP_LOWMEMORY:
1481  SDL_Log("SDL EVENT: App running low on memory");
1482  break;
1484  SDL_Log("SDL EVENT: App will enter the background");
1485  break;
1487  SDL_Log("SDL EVENT: App entered the background");
1488  break;
1490  SDL_Log("SDL EVENT: App will enter the foreground");
1491  break;
1493  SDL_Log("SDL EVENT: App entered the foreground");
1494  break;
1495  case SDL_DROPBEGIN:
1496  SDL_Log("SDL EVENT: Drag and drop beginning");
1497  break;
1498  case SDL_DROPFILE:
1499  SDL_Log("SDL EVENT: Drag and drop file: '%s'", event->drop.file);
1500  break;
1501  case SDL_DROPTEXT:
1502  SDL_Log("SDL EVENT: Drag and drop text: '%s'", event->drop.file);
1503  break;
1504  case SDL_DROPCOMPLETE:
1505  SDL_Log("SDL EVENT: Drag and drop ending");
1506  break;
1507  case SDL_QUIT:
1508  SDL_Log("SDL EVENT: Quit requested");
1509  break;
1510  case SDL_USEREVENT:
1511  SDL_Log("SDL EVENT: User event %d", event->user.code);
1512  break;
1513  default:
1514  SDL_Log("Unknown event 0x%4.4x", event->type);
1515  break;
1516  }
1517 }
1518 
1519 static void
1521 {
1524 
1525  if (!renderer) {
1526  return;
1527  }
1528 
1532  0x00FF0000, 0x0000FF00, 0x000000FF,
1533 #else
1534  0x000000FF, 0x0000FF00, 0x00FF0000,
1535 #endif
1536  0x00000000);
1537  if (!surface) {
1538  SDL_Log("Couldn't create surface: %s\n", SDL_GetError());
1539  return;
1540  }
1541 
1542  if (SDL_RenderReadPixels(renderer, NULL, surface->format->format,
1543  surface->pixels, surface->pitch) < 0) {
1544  SDL_Log("Couldn't read screen: %s\n", SDL_GetError());
1545  SDL_free(surface);
1546  return;
1547  }
1548 
1549  if (SDL_SaveBMP(surface, "screenshot.bmp") < 0) {
1550  SDL_Log("Couldn't save screenshot.bmp: %s\n", SDL_GetError());
1551  SDL_free(surface);
1552  return;
1553  }
1554 }
1555 
1556 static void
1557 FullscreenTo(int index, int windowId)
1558 {
1559  Uint32 flags;
1560  struct SDL_Rect rect = { 0, 0, 0, 0 };
1561  SDL_Window *window = SDL_GetWindowFromID(windowId);
1562  if (!window) {
1563  return;
1564  }
1565 
1567 
1569  if (flags & SDL_WINDOW_FULLSCREEN) {
1571  SDL_Delay( 15 );
1572  }
1573 
1576 }
1577 
1578 void
1580 {
1581  int i;
1582  static SDL_MouseMotionEvent lastEvent;
1583 
1584  if (state->verbose & VERBOSE_EVENT) {
1586  }
1587 
1588  switch (event->type) {
1589  case SDL_WINDOWEVENT:
1590  switch (event->window.event) {
1591  case SDL_WINDOWEVENT_CLOSE:
1592  {
1593  SDL_Window *window = SDL_GetWindowFromID(event->window.windowID);
1594  if (window) {
1595  for (i = 0; i < state->num_windows; ++i) {
1596  if (window == state->windows[i]) {
1597  if (state->targets[i]) {
1598  SDL_DestroyTexture(state->targets[i]);
1599  state->targets[i] = NULL;
1600  }
1601  if (state->renderers[i]) {
1602  SDL_DestroyRenderer(state->renderers[i]);
1603  state->renderers[i] = NULL;
1604  }
1605  SDL_DestroyWindow(state->windows[i]);
1606  state->windows[i] = NULL;
1607  break;
1608  }
1609  }
1610  }
1611  }
1612  break;
1613  }
1614  break;
1615  case SDL_KEYDOWN: {
1616  SDL_bool withControl = !!(event->key.keysym.mod & KMOD_CTRL);
1617  SDL_bool withShift = !!(event->key.keysym.mod & KMOD_SHIFT);
1618  SDL_bool withAlt = !!(event->key.keysym.mod & KMOD_ALT);
1619 
1620  switch (event->key.keysym.sym) {
1621  /* Add hotkeys here */
1622  case SDLK_PRINTSCREEN: {
1623  SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
1624  if (window) {
1625  for (i = 0; i < state->num_windows; ++i) {
1626  if (window == state->windows[i]) {
1627  SDLTest_ScreenShot(state->renderers[i]);
1628  }
1629  }
1630  }
1631  }
1632  break;
1633  case SDLK_EQUALS:
1634  if (withControl) {
1635  /* Ctrl-+ double the size of the window */
1636  SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
1637  if (window) {
1638  int w, h;
1639  SDL_GetWindowSize(window, &w, &h);
1640  SDL_SetWindowSize(window, w*2, h*2);
1641  }
1642  }
1643  break;
1644  case SDLK_MINUS:
1645  if (withControl) {
1646  /* Ctrl-- half the size of the window */
1647  SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
1648  if (window) {
1649  int w, h;
1650  SDL_GetWindowSize(window, &w, &h);
1651  SDL_SetWindowSize(window, w/2, h/2);
1652  }
1653  }
1654  break;
1655  case SDLK_UP:
1656  case SDLK_DOWN:
1657  case SDLK_LEFT:
1658  case SDLK_RIGHT:
1659  if (withAlt) {
1660  /* Alt-Up/Down/Left/Right switches between displays */
1661  SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
1662  if (window) {
1663  int currentIndex = SDL_GetWindowDisplayIndex(window);
1664  int numDisplays = SDL_GetNumVideoDisplays();
1665 
1666  if (currentIndex >= 0 && numDisplays >= 1) {
1667  int dest;
1668  if (event->key.keysym.sym == SDLK_UP || event->key.keysym.sym == SDLK_LEFT) {
1669  dest = (currentIndex + numDisplays - 1) % numDisplays;
1670  } else {
1671  dest = (currentIndex + numDisplays + 1) % numDisplays;
1672  }
1673  SDL_Log("Centering on display %d\n", dest);
1677  }
1678  }
1679  }
1680  if (withShift) {
1681  /* Shift-Up/Down/Left/Right shift the window by 100px */
1682  SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
1683  if (window) {
1684  const int delta = 100;
1685  int x, y;
1687 
1688  if (event->key.keysym.sym == SDLK_UP) y -= delta;
1689  if (event->key.keysym.sym == SDLK_DOWN) y += delta;
1690  if (event->key.keysym.sym == SDLK_LEFT) x -= delta;
1691  if (event->key.keysym.sym == SDLK_RIGHT) x += delta;
1692 
1693  SDL_Log("Setting position to (%d, %d)\n", x, y);
1695  }
1696  }
1697  break;
1698  case SDLK_o:
1699  if (withControl) {
1700  /* Ctrl-O (or Ctrl-Shift-O) changes window opacity. */
1701  SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
1702  if (window) {
1703  float opacity;
1704  if (SDL_GetWindowOpacity(window, &opacity) == 0) {
1705  if (withShift) {
1706  opacity += 0.20f;
1707  } else {
1708  opacity -= 0.20f;
1709  }
1710  SDL_SetWindowOpacity(window, opacity);
1711  }
1712  }
1713  }
1714  break;
1715 
1716  case SDLK_c:
1717  if (withControl) {
1718  /* Ctrl-C copy awesome text! */
1719  SDL_SetClipboardText("SDL rocks!\nYou know it!");
1720  printf("Copied text to clipboard\n");
1721  }
1722  if (withAlt) {
1723  /* Alt-C toggle a render clip rectangle */
1724  for (i = 0; i < state->num_windows; ++i) {
1725  int w, h;
1726  if (state->renderers[i]) {
1727  SDL_Rect clip;
1728  SDL_GetWindowSize(state->windows[i], &w, &h);
1729  SDL_RenderGetClipRect(state->renderers[i], &clip);
1730  if (SDL_RectEmpty(&clip)) {
1731  clip.x = w/4;
1732  clip.y = h/4;
1733  clip.w = w/2;
1734  clip.h = h/2;
1735  SDL_RenderSetClipRect(state->renderers[i], &clip);
1736  } else {
1737  SDL_RenderSetClipRect(state->renderers[i], NULL);
1738  }
1739  }
1740  }
1741  }
1742  if (withShift) {
1743  SDL_Window *current_win = SDL_GetKeyboardFocus();
1744  if (current_win) {
1745  const SDL_bool shouldCapture = (SDL_GetWindowFlags(current_win) & SDL_WINDOW_MOUSE_CAPTURE) == 0;
1746  const int rc = SDL_CaptureMouse(shouldCapture);
1747  SDL_Log("%sapturing mouse %s!\n", shouldCapture ? "C" : "Unc", (rc == 0) ? "succeeded" : "failed");
1748  }
1749  }
1750  break;
1751  case SDLK_v:
1752  if (withControl) {
1753  /* Ctrl-V paste awesome text! */
1754  char *text = SDL_GetClipboardText();
1755  if (*text) {
1756  printf("Clipboard: %s\n", text);
1757  } else {
1758  printf("Clipboard is empty\n");
1759  }
1760  SDL_free(text);
1761  }
1762  break;
1763  case SDLK_g:
1764  if (withControl) {
1765  /* Ctrl-G toggle grab */
1766  SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
1767  if (window) {
1769  }
1770  }
1771  break;
1772  case SDLK_m:
1773  if (withControl) {
1774  /* Ctrl-M maximize */
1775  SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
1776  if (window) {
1778  if (flags & SDL_WINDOW_MAXIMIZED) {
1780  } else {
1782  }
1783  }
1784  }
1785  break;
1786  case SDLK_r:
1787  if (withControl) {
1788  /* Ctrl-R toggle mouse relative mode */
1790  }
1791  break;
1792  case SDLK_z:
1793  if (withControl) {
1794  /* Ctrl-Z minimize */
1795  SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
1796  if (window) {
1798  }
1799  }
1800  break;
1801  case SDLK_RETURN:
1802  if (withControl) {
1803  /* Ctrl-Enter toggle fullscreen */
1804  SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
1805  if (window) {
1807  if (flags & SDL_WINDOW_FULLSCREEN) {
1809  } else {
1811  }
1812  }
1813  } else if (withAlt) {
1814  /* Alt-Enter toggle fullscreen desktop */
1815  SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
1816  if (window) {
1818  if (flags & SDL_WINDOW_FULLSCREEN) {
1820  } else {
1822  }
1823  }
1824  } else if (withShift) {
1825  /* Shift-Enter toggle fullscreen desktop / fullscreen */
1826  SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
1827  if (window) {
1831  } else {
1833  }
1834  }
1835  }
1836 
1837  break;
1838  case SDLK_b:
1839  if (withControl) {
1840  /* Ctrl-B toggle window border */
1841  SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
1842  if (window) {
1844  const SDL_bool b = ((flags & SDL_WINDOW_BORDERLESS) != 0) ? SDL_TRUE : SDL_FALSE;
1846  }
1847  }
1848  break;
1849  case SDLK_a:
1850  if (withControl) {
1851  /* Ctrl-A reports absolute mouse position. */
1852  int x, y;
1853  const Uint32 mask = SDL_GetGlobalMouseState(&x, &y);
1854  SDL_Log("ABSOLUTE MOUSE: (%d, %d)%s%s%s%s%s\n", x, y,
1855  (mask & SDL_BUTTON_LMASK) ? " [LBUTTON]" : "",
1856  (mask & SDL_BUTTON_MMASK) ? " [MBUTTON]" : "",
1857  (mask & SDL_BUTTON_RMASK) ? " [RBUTTON]" : "",
1858  (mask & SDL_BUTTON_X1MASK) ? " [X2BUTTON]" : "",
1859  (mask & SDL_BUTTON_X2MASK) ? " [X2BUTTON]" : "");
1860  }
1861  break;
1862  case SDLK_0:
1863  if (withControl) {
1864  SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
1865  SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_INFORMATION, "Test Message", "You're awesome!", window);
1866  }
1867  break;
1868  case SDLK_1:
1869  if (withControl) {
1870  FullscreenTo(0, event->key.windowID);
1871  }
1872  break;
1873  case SDLK_2:
1874  if (withControl) {
1875  FullscreenTo(1, event->key.windowID);
1876  }
1877  break;
1878  case SDLK_ESCAPE:
1879  *done = 1;
1880  break;
1881  case SDLK_SPACE:
1882  {
1883  char message[256];
1884  SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
1885 
1886  SDL_snprintf(message, sizeof(message), "(%i, %i), rel (%i, %i)\n", lastEvent.x, lastEvent.y, lastEvent.xrel, lastEvent.yrel);
1888  break;
1889  }
1890  default:
1891  break;
1892  }
1893  break;
1894  }
1895  case SDL_QUIT:
1896  *done = 1;
1897  break;
1898  case SDL_MOUSEMOTION:
1899  lastEvent = event->motion;
1900  break;
1901 
1902  case SDL_DROPFILE:
1903  case SDL_DROPTEXT:
1904  SDL_free(event->drop.file);
1905  break;
1906  }
1907 }
1908 
1909 void
1911 {
1912  int i;
1913 
1920 
1921  SDL_free(state->windows);
1922  if (state->targets) {
1923  for (i = 0; i < state->num_windows; ++i) {
1924  if (state->targets[i]) {
1925  SDL_DestroyTexture(state->targets[i]);
1926  }
1927  }
1928  SDL_free(state->targets);
1929  }
1930  if (state->renderers) {
1931  for (i = 0; i < state->num_windows; ++i) {
1932  if (state->renderers[i]) {
1933  SDL_DestroyRenderer(state->renderers[i]);
1934  }
1935  }
1936  SDL_free(state->renderers);
1937  }
1938  if (state->flags & SDL_INIT_VIDEO) {
1939  SDL_VideoQuit();
1940  }
1941  if (state->flags & SDL_INIT_AUDIO) {
1942  SDL_AudioQuit();
1943  }
1944  SDL_free(state);
1945  SDL_Quit();
1947 }
1948 
1949 /* vi: set ts=4 sw=4 expandtab: */
SDL_HITTEST_DRAGGABLE
@ SDL_HITTEST_DRAGGABLE
Definition: SDL_video.h:1022
SDLTest_CommonDefaultArgs
SDL_bool SDLTest_CommonDefaultArgs(SDLTest_CommonState *state, const int argc, char **argv)
Easy argument handling when test app doesn't need any custom args.
Definition: SDL_test_common.c:584
SDL_zero
#define SDL_zero(x)
Definition: SDL_stdinc.h:418
SDL_WINDOW_MOUSE_CAPTURE
@ SDL_WINDOW_MOUSE_CAPTURE
Definition: SDL_video.h:115
SDL_GetWindowDisplayIndex
#define SDL_GetWindowDisplayIndex
Definition: SDL_dynapi_overrides.h:510
SDLK_SPACE
@ SDLK_SPACE
Definition: SDL_keycode.h:58
format
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
Definition: SDL_opengl.h:1572
VERBOSE_VIDEO
#define VERBOSE_VIDEO
Definition: SDL_test_common.h:45
SDL_CONTROLLERDEVICEREMOVED
@ SDL_CONTROLLERDEVICEREMOVED
Definition: SDL_events.h:124
SDL_OpenAudio
#define SDL_OpenAudio
Definition: SDL_dynapi_overrides.h:78
SDL_Point::x
int x
Definition: SDL_rect.h:50
SDL_PIXELFORMAT_ARGB1555
@ SDL_PIXELFORMAT_ARGB1555
Definition: SDL_pixels.h:215
SDL_GetError
#define SDL_GetError
Definition: SDL_dynapi_overrides.h:113
SDL_SetClipboardText
#define SDL_SetClipboardText
Definition: SDL_dynapi_overrides.h:98
Uint32
uint32_t Uint32
Definition: SDL_stdinc.h:203
SDL_GetPixelFormatName
#define SDL_GetPixelFormatName
Definition: SDL_dynapi_overrides.h:277
SDL_DisplayMode::format
Uint32 format
Definition: SDL_video.h:55
SDL_WINDOW_ALLOW_HIGHDPI
@ SDL_WINDOW_ALLOW_HIGHDPI
Definition: SDL_video.h:112
SDL_strlcat
#define SDL_strlcat
Definition: SDL_dynapi_overrides.h:396
SDL_DXGIGetOutputInfo
SDL_bool SDL_DXGIGetOutputInfo(int displayIndex, int *adapterIndex, int *outputIndex)
Returns the DXGI Adapter and Output indices for the specified display index.
SDL_strlcpy
#define SDL_strlcpy
Definition: SDL_dynapi_overrides.h:394
SDL_MouseMotionEvent::y
Sint32 y
Definition: SDL_events.h:261
SDL_GL_RETAINED_BACKING
@ SDL_GL_RETAINED_BACKING
Definition: SDL_video.h:215
SDL_APP_TERMINATING
@ SDL_APP_TERMINATING
Definition: SDL_events.h:63
SDL_SetWindowMinimumSize
#define SDL_SetWindowMinimumSize
Definition: SDL_dynapi_overrides.h:528
SDL_AudioInit
#define SDL_AudioInit
Definition: SDL_dynapi_overrides.h:75
SDL_MouseMotionEvent
Mouse motion event structure (event.motion.*)
Definition: SDL_events.h:253
SDL_APP_DIDENTERBACKGROUND
@ SDL_APP_DIDENTERBACKGROUND
Definition: SDL_events.h:75
SDL_APP_DIDENTERFOREGROUND
@ SDL_APP_DIDENTERFOREGROUND
Definition: SDL_events.h:83
mask
GLenum GLint GLuint mask
Definition: SDL_opengl_glext.h:660
SDL_Surface
A collection of pixels used in software blitting.
Definition: SDL_surface.h:70
SDL_ShowWindow
#define SDL_ShowWindow
Definition: SDL_dynapi_overrides.h:533
AUDIO_U16LSB
#define AUDIO_U16LSB
Definition: SDL_audio.h:91
SDL_DISPLAYEVENT
@ SDL_DISPLAYEVENT
Definition: SDL_events.h:89
SDL_DISPLAYEVENT_ORIENTATION
@ SDL_DISPLAYEVENT_ORIENTATION
Definition: SDL_video.h:177
SDL_WINDOWPOS_CENTERED
#define SDL_WINDOWPOS_CENTERED
Definition: SDL_video.h:138
SDL_PRINTF_FORMAT_STRING
#define SDL_PRINTF_FORMAT_STRING
Definition: SDL_stdinc.h:300
SDL_WINDOW_MINIMIZED
@ SDL_WINDOW_MINIMIZED
Definition: SDL_video.h:105
SDL_PIXELFORMAT_INDEX1LSB
@ SDL_PIXELFORMAT_INDEX1LSB
Definition: SDL_pixels.h:174
SDL_PIXELFORMAT_RGB888
@ SDL_PIXELFORMAT_RGB888
Definition: SDL_pixels.h:239
SDL_GetNumVideoDrivers
#define SDL_GetNumVideoDrivers
Definition: SDL_dynapi_overrides.h:496
SDL_test.h
SDL_SetWindowSize
#define SDL_SetWindowSize
Definition: SDL_dynapi_overrides.h:526
SDL_PIXELFORMAT_NV21
@ SDL_PIXELFORMAT_NV21
Definition: SDL_pixels.h:292
SDL_RenderGetClipRect
#define SDL_RenderGetClipRect
Definition: SDL_dynapi_overrides.h:327
SDL_PIXELFORMAT_UYVY
@ SDL_PIXELFORMAT_UYVY
Definition: SDL_pixels.h:286
SDL_HAT_CENTERED
#define SDL_HAT_CENTERED
Definition: SDL_joystick.h:339
NULL
#define NULL
Definition: begin_code.h:167
surface
EGLSurface surface
Definition: eglext.h:248
SDL_HAT_DOWN
#define SDL_HAT_DOWN
Definition: SDL_joystick.h:342
b
GLboolean GLboolean GLboolean b
Definition: SDL_opengl_glext.h:1112
endif
set set set set set set set macro pixldst1 abits if abits op else op endif endm macro pixldst2 abits if abits op else op endif endm macro pixldst4 abits if abits op else op endif endm macro pixldst0 abits op endm macro pixldst3 mem_operand op endm macro pixldst30 mem_operand op endm macro pixldst abits if abits elseif abits elseif abits elseif abits elseif abits pixldst0 abits else pixldst0 abits pixldst0 abits pixldst0 abits pixldst0 abits endif elseif abits else pixldst0 abits pixldst0 abits endif elseif abits else error unsupported bpp *numpix else pixst endif endm macro pixld1_s mem_operand if asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl elseif asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl else error unsupported endif endm macro pixld2_s mem_operand if mov asr add asl add asl mov asr sub UNIT_X add asl mov asr add asl add asl mov asr add UNIT_X add asl else pixld1_s mem_operand pixld1_s mem_operand endif endm macro pixld0_s mem_operand if asr adds SRC_WIDTH_FIXED bpl add asl elseif asr adds SRC_WIDTH_FIXED bpl add asl endif endm macro pixld_s_internal mem_operand if mem_operand pixld2_s mem_operand pixdeinterleave basereg elseif mem_operand elseif mem_operand elseif mem_operand elseif mem_operand pixld0_s mem_operand else pixld0_s mem_operand pixld0_s mem_operand pixld0_s mem_operand pixld0_s mem_operand endif elseif mem_operand else pixld0_s mem_operand pixld0_s mem_operand endif elseif mem_operand else error unsupported mem_operand if bpp mem_operand endif endm macro vuzp8 reg2 vuzp d d &reg2 endm macro vzip8 reg2 vzip d d &reg2 endm macro pixdeinterleave basereg basereg basereg basereg basereg endif endm macro pixinterleave basereg basereg basereg basereg basereg endif endm macro PF boost_increment endif if endif PF tst PF addne PF subne PF cmp ORIG_W if endif if endif if endif PF subge ORIG_W PF subges if endif if endif if endif endif endm macro cache_preload_simple endif if dst_r_bpp pld[DST_R, #(PREFETCH_DISTANCE_SIMPLE *dst_r_bpp/8)] endif if mask_bpp pld endif[MASK, #(PREFETCH_DISTANCE_SIMPLE *mask_bpp/8)] endif endif endm macro fetch_mask_pixblock pixld mask_basereg pixblock_size MASK endm macro ensure_destination_ptr_alignment process_pixblock_tail_head if beq irp skip1 beq endif SRC MASK if dst_r_bpp DST_R else add endif PF add sub src_basereg pixdeinterleave mask_basereg pixdeinterleave dst_r_basereg process_pixblock_head pixblock_size cache_preload_simple process_pixblock_tail pixinterleave dst_w_basereg irp beq endif process_pixblock_tail_head tst beq irp if pixblock_size chunk_size tst beq pixld_src SRC pixld MASK if DST_R else pixld DST_R endif if
Definition: pixman-arm-neon-asm.h:549
message
GLuint GLsizei const GLchar * message
Definition: SDL_opengl_glext.h:2486
SDL_WINDOWEVENT_FOCUS_LOST
@ SDL_WINDOWEVENT_FOCUS_LOST
Definition: SDL_video.h:165
SDL_Surface::pixels
void * pixels
Definition: SDL_surface.h:76
SDL_GetNumRenderDrivers
#define SDL_GetNumRenderDrivers
Definition: SDL_dynapi_overrides.h:298
SDL_KEYUP
@ SDL_KEYUP
Definition: SDL_events.h:97
SDL_GetDisplayMode
#define SDL_GetDisplayMode
Definition: SDL_dynapi_overrides.h:506
SDLTest_CommonLogUsage
void SDLTest_CommonLogUsage(SDLTest_CommonState *state, const char *argv0, const char **options)
Logs command line usage info.
Definition: SDL_test_common.c:498
SDL_GL_ACCELERATED_VISUAL
@ SDL_GL_ACCELERATED_VISUAL
Definition: SDL_video.h:214
SDLTest_CommonState
Definition: SDL_test_common.h:51
SDL_WINDOWEVENT_CLOSE
@ SDL_WINDOWEVENT_CLOSE
Definition: SDL_video.h:166
mode
GLenum mode
Definition: SDL_opengl_glext.h:1125
SDL_SetWindowDisplayMode
#define SDL_SetWindowDisplayMode
Definition: SDL_dynapi_overrides.h:511
SDL_GetDisplayName
#define SDL_GetDisplayName
Definition: SDL_dynapi_overrides.h:502
SDL_CONTROLLERBUTTONDOWN
@ SDL_CONTROLLERBUTTONDOWN
Definition: SDL_events.h:121
SDL_snprintfcat
static void SDL_snprintfcat(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char *fmt,...)
Definition: SDL_test_common.c:46
SDL_BUTTON_RMASK
#define SDL_BUTTON_RMASK
Definition: SDL_mouse.h:289
SDLK_ESCAPE
@ SDLK_ESCAPE
Definition: SDL_keycode.h:55
SDL_WINDOWEVENT_ENTER
@ SDL_WINDOWEVENT_ENTER
Definition: SDL_video.h:162
SDL_DOLLARRECORD
@ SDL_DOLLARRECORD
Definition: SDL_events.h:134
SDL_SetWindowFullscreen
#define SDL_SetWindowFullscreen
Definition: SDL_dynapi_overrides.h:539
SDL_GL_MULTISAMPLEBUFFERS
@ SDL_GL_MULTISAMPLEBUFFERS
Definition: SDL_video.h:212
SDL_PIXELFORMAT_YUY2
@ SDL_PIXELFORMAT_YUY2
Definition: SDL_pixels.h:284
count
GLuint GLuint GLsizei count
Definition: SDL_opengl.h:1571
SDL_GetWindowFlags
#define SDL_GetWindowFlags
Definition: SDL_dynapi_overrides.h:518
SDL_PIXELFORMAT_BGR888
@ SDL_PIXELFORMAT_BGR888
Definition: SDL_pixels.h:245
SDLTest_ScreenShot
static void SDLTest_ScreenShot(SDL_Renderer *renderer)
Definition: SDL_test_common.c:1520
SDLCALL
#define SDLCALL
Definition: SDL_internal.h:49
SDL_WINDOW_FULLSCREEN
@ SDL_WINDOW_FULLSCREEN
Definition: SDL_video.h:99
SDL_PIXELFORMAT_BGR565
@ SDL_PIXELFORMAT_BGR565
Definition: SDL_pixels.h:230
r
GLdouble GLdouble GLdouble r
Definition: SDL_opengl.h:2079
SDL_WINDOW_OPENGL
@ SDL_WINDOW_OPENGL
Definition: SDL_video.h:100
SDL_MOUSEBUTTONUP
@ SDL_MOUSEBUTTONUP
Definition: SDL_events.h:107
SDL_WINDOWEVENT_RESIZED
@ SDL_WINDOWEVENT_RESIZED
Definition: SDL_video.h:154
viewport
static SDL_Rect viewport
Definition: testviewport.c:28
SDL_BUTTON_X2MASK
#define SDL_BUTTON_X2MASK
Definition: SDL_mouse.h:291
SDL_TEXTEDITING
@ SDL_TEXTEDITING
Definition: SDL_events.h:98
SDL_LOG_CATEGORY_INPUT
@ SDL_LOG_CATEGORY_INPUT
Definition: SDL_log.h:73
SDL_WINDOW_FULLSCREEN_DESKTOP
@ SDL_WINDOW_FULLSCREEN_DESKTOP
Definition: SDL_video.h:110
SDL_WINDOWPOS_UNDEFINED
#define SDL_WINDOWPOS_UNDEFINED
Definition: SDL_video.h:129
SDL_GetDesktopDisplayMode
#define SDL_GetDesktopDisplayMode
Definition: SDL_dynapi_overrides.h:507
CASE
#define CASE(X)
SDLK_z
@ SDLK_z
Definition: SDL_keycode.h:125
SDL_RectEmpty
SDL_FORCE_INLINE SDL_bool SDL_RectEmpty(const SDL_Rect *r)
Returns true if the rectangle has no area.
Definition: SDL_rect.h:108
SDL_GL_ACCUM_GREEN_SIZE
@ SDL_GL_ACCUM_GREEN_SIZE
Definition: SDL_video.h:208
SDL_HITTEST_RESIZE_TOPLEFT
@ SDL_HITTEST_RESIZE_TOPLEFT
Definition: SDL_video.h:1023
SDL_WINDOWPOS_ISCENTERED
#define SDL_WINDOWPOS_ISCENTERED(X)
Definition: SDL_video.h:139
SDL_PIXELFORMAT_RGB565
@ SDL_PIXELFORMAT_RGB565
Definition: SDL_pixels.h:227
SDL_WINDOW_MAXIMIZED
@ SDL_WINDOW_MAXIMIZED
Definition: SDL_video.h:106
SDL_JOYDEVICEREMOVED
@ SDL_JOYDEVICEREMOVED
Definition: SDL_events.h:117
VERBOSE_MODES
#define VERBOSE_MODES
Definition: SDL_test_common.h:46
SDL_WINDOWEVENT_MOVED
@ SDL_WINDOWEVENT_MOVED
Definition: SDL_video.h:152
index
GLuint index
Definition: SDL_opengl_glext.h:663
SDLTest_CommonArg
int SDLTest_CommonArg(SDLTest_CommonState *state, int index)
Process one common argument.
Definition: SDL_test_common.c:117
SDL_GetDisplayUsableBounds
#define SDL_GetDisplayUsableBounds
Definition: SDL_dynapi_overrides.h:596
SDL_AudioQuit
#define SDL_AudioQuit
Definition: SDL_dynapi_overrides.h:76
SDL_KEYDOWN
@ SDL_KEYDOWN
Definition: SDL_events.h:96
SDL_CreateWindow
#define SDL_CreateWindow
Definition: SDL_dynapi_overrides.h:514
SDL_GL_CONTEXT_MINOR_VERSION
@ SDL_GL_CONTEXT_MINOR_VERSION
Definition: SDL_video.h:217
SDL_APP_LOWMEMORY
@ SDL_APP_LOWMEMORY
Definition: SDL_events.h:67
h
GLfloat GLfloat GLfloat GLfloat h
Definition: SDL_opengl_glext.h:1949
length
GLuint GLsizei GLsizei * length
Definition: SDL_opengl_glext.h:672
SDL_GL_CONTEXT_FLAGS
@ SDL_GL_CONTEXT_FLAGS
Definition: SDL_video.h:219
SDL_Rect::x
int x
Definition: SDL_rect.h:79
SDL_CONTROLLERDEVICEADDED
@ SDL_CONTROLLERDEVICEADDED
Definition: SDL_events.h:123
SDL_SetWindowIcon
#define SDL_SetWindowIcon
Definition: SDL_dynapi_overrides.h:521
SDL_GetNumVideoDisplays
#define SDL_GetNumVideoDisplays
Definition: SDL_dynapi_overrides.h:501
SDLTest_PrintRendererFlag
static void SDLTest_PrintRendererFlag(char *text, size_t maxlen, Uint32 flag)
Definition: SDL_test_common.c:599
SDL_RendererInfo
Information on the capabilities of a render driver or context.
Definition: SDL_render.h:78
SDL_PIXELFORMAT_IYUV
@ SDL_PIXELFORMAT_IYUV
Definition: SDL_pixels.h:282
SDL_WINDOW_RESIZABLE
@ SDL_WINDOW_RESIZABLE
Definition: SDL_video.h:104
SDL_APP_WILLENTERFOREGROUND
@ SDL_APP_WILLENTERFOREGROUND
Definition: SDL_events.h:79
SDL_CONTROLLERAXISMOTION
@ SDL_CONTROLLERAXISMOTION
Definition: SDL_events.h:120
video_usage
static const char * video_usage[]
Definition: SDL_test_common.c:29
data
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: SDL_opengl.h:1974
SDL_Rect::w
int w
Definition: SDL_rect.h:80
SDL_HAT_LEFTDOWN
#define SDL_HAT_LEFTDOWN
Definition: SDL_joystick.h:347
SDL_RENDER_TARGETS_RESET
@ SDL_RENDER_TARGETS_RESET
Definition: SDL_events.h:154
SDLK_1
@ SDLK_1
Definition: SDL_keycode.h:75
SDL_SetRelativeMouseMode
#define SDL_SetRelativeMouseMode
Definition: SDL_dynapi_overrides.h:249
SDL_Window
The type used to identify a window.
Definition: SDL_sysvideo.h:74
SDL_GetRenderDriverInfo
#define SDL_GetRenderDriverInfo
Definition: SDL_dynapi_overrides.h:299
SDL_DisplayMode
The structure that defines a display mode.
Definition: SDL_video.h:53
SDL_GetKeyboardFocus
#define SDL_GetKeyboardFocus
Definition: SDL_dynapi_overrides.h:216
n
GLdouble n
Definition: SDL_opengl_glext.h:1955
SDL_PIXELFORMAT_RGB332
@ SDL_PIXELFORMAT_RGB332
Definition: SDL_pixels.h:188
SDLK_r
@ SDLK_r
Definition: SDL_keycode.h:117
SDL_strcasecmp
#define SDL_strcasecmp
Definition: SDL_dynapi_overrides.h:419
ControllerButtonName
static const char * ControllerButtonName(const SDL_GameControllerButton button)
Definition: SDL_test_common.c:1202
SDL_WINDOWEVENT_SHOWN
@ SDL_WINDOWEVENT_SHOWN
Definition: SDL_video.h:148
SDLTest_LoadIcon
static SDL_Surface * SDLTest_LoadIcon(const char *file)
Definition: SDL_test_common.c:769
SDL_GetWindowSize
#define SDL_GetWindowSize
Definition: SDL_dynapi_overrides.h:527
AUDIO_U8
#define AUDIO_U8
Definition: SDL_audio.h:89
SDL_MinimizeWindow
#define SDL_MinimizeWindow
Definition: SDL_dynapi_overrides.h:537
SDLTest_PrintPixelFormat
static void SDLTest_PrintPixelFormat(char *text, size_t maxlen, Uint32 format)
Definition: SDL_test_common.c:621
SDL_FINGERUP
@ SDL_FINGERUP
Definition: SDL_events.h:129
SDL_RENDERER_SOFTWARE
@ SDL_RENDERER_SOFTWARE
Definition: SDL_render.h:66
SDLK_c
@ SDLK_c
Definition: SDL_keycode.h:102
SDL_GL_ALPHA_SIZE
@ SDL_GL_ALPHA_SIZE
Definition: SDL_video.h:202
BUTTON_CASE
#define BUTTON_CASE(btn)
len
GLenum GLsizei len
Definition: SDL_opengl_glext.h:2929
SDL_GL_CONTEXT_DEBUG_FLAG
@ SDL_GL_CONTEXT_DEBUG_FLAG
Definition: SDL_video.h:237
SDL_LIL_ENDIAN
#define SDL_LIL_ENDIAN
Definition: SDL_endian.h:37
SDL_HITTEST_RESIZE_BOTTOMRIGHT
@ SDL_HITTEST_RESIZE_BOTTOMRIGHT
Definition: SDL_video.h:1027
SDL_PIXELFORMAT_BGR555
@ SDL_PIXELFORMAT_BGR555
Definition: SDL_pixels.h:200
SDL_ShowSimpleMessageBox
#define SDL_ShowSimpleMessageBox
Definition: SDL_dynapi_overrides.h:244
event
struct _cl_event * event
Definition: SDL_opengl_glext.h:2652
SDL_Renderer
Definition: SDL_sysrender.h:109
SDL_FALSE
@ SDL_FALSE
Definition: SDL_stdinc.h:163
done
int done
Definition: checkkeys.c:28
SDL_MOUSEMOTION
@ SDL_MOUSEMOTION
Definition: SDL_events.h:105
common_usage_audio
static char * common_usage_audio
Definition: SDL_test_common.c:563
SDLK_MINUS
@ SDLK_MINUS
Definition: SDL_keycode.h:71
SDL_HITTEST_RESIZE_TOPRIGHT
@ SDL_HITTEST_RESIZE_TOPRIGHT
Definition: SDL_video.h:1025
SDL_PIXELFORMAT_YVYU
@ SDL_PIXELFORMAT_YVYU
Definition: SDL_pixels.h:288
SDL_FINGERDOWN
@ SDL_FINGERDOWN
Definition: SDL_events.h:128
SDL_LOG_CATEGORY_ERROR
@ SDL_LOG_CATEGORY_ERROR
Definition: SDL_log.h:67
SDL_SetWindowGrab
#define SDL_SetWindowGrab
Definition: SDL_dynapi_overrides.h:543
SDL_HitTestResult
SDL_HitTestResult
Possible return values from the SDL_HitTest callback.
Definition: SDL_video.h:1019
SDLK_m
@ SDLK_m
Definition: SDL_keycode.h:112
SDL_PIXELFORMAT_ARGB4444
@ SDL_PIXELFORMAT_ARGB4444
Definition: SDL_pixels.h:203
SDL_atof
#define SDL_atof
Definition: SDL_dynapi_overrides.h:411
SDLTest_LogAllocations
void SDLTest_LogAllocations(void)
Print a log of any outstanding allocations.
Definition: SDL_test_memory.c:222
SDL_GL_ACCUM_ALPHA_SIZE
@ SDL_GL_ACCUM_ALPHA_SIZE
Definition: SDL_video.h:210
x
GLint GLint GLint GLint GLint x
Definition: SDL_opengl.h:1574
SDL_CONTROLLERBUTTONUP
@ SDL_CONTROLLERBUTTONUP
Definition: SDL_events.h:122
window
EGLSurface EGLNativeWindowType * window
Definition: eglext.h:1025
SDL_Log
#define SDL_Log
Definition: SDL_dynapi_overrides.h:31
SDL_TEXTINPUT
@ SDL_TEXTINPUT
Definition: SDL_events.h:99
SDL_RendererInfo::flags
Uint32 flags
Definition: SDL_render.h:81
SDL_DROPCOMPLETE
@ SDL_DROPCOMPLETE
Definition: SDL_events.h:144
SDL_GL_SetAttribute
#define SDL_GL_SetAttribute
Definition: SDL_dynapi_overrides.h:557
SDL_GL_GREEN_SIZE
@ SDL_GL_GREEN_SIZE
Definition: SDL_video.h:200
SDL_Rect::y
int y
Definition: SDL_rect.h:79
SDL_GetRelativeMouseMode
#define SDL_GetRelativeMouseMode
Definition: SDL_dynapi_overrides.h:250
SDL_Rect::h
int h
Definition: SDL_rect.h:80
SDL_free
#define SDL_free
Definition: SDL_dynapi_overrides.h:377
SDL_MouseMotionEvent::xrel
Sint32 xrel
Definition: SDL_events.h:262
SDL_PIXELFORMAT_RGB444
@ SDL_PIXELFORMAT_RGB444
Definition: SDL_pixels.h:191
SDL_DROPTEXT
@ SDL_DROPTEXT
Definition: SDL_events.h:142
SDL_HITTEST_RESIZE_BOTTOM
@ SDL_HITTEST_RESIZE_BOTTOM
Definition: SDL_video.h:1028
SDL_PIXELFORMAT_BGR444
@ SDL_PIXELFORMAT_BGR444
Definition: SDL_pixels.h:194
SDL_GL_ACCUM_BLUE_SIZE
@ SDL_GL_ACCUM_BLUE_SIZE
Definition: SDL_video.h:209
SDL_RenderGetViewport
#define SDL_RenderGetViewport
Definition: SDL_dynapi_overrides.h:325
SDLTest_PrintRenderer
static void SDLTest_PrintRenderer(SDL_RendererInfo *info)
Definition: SDL_test_common.c:730
SDL_GetClipboardText
#define SDL_GetClipboardText
Definition: SDL_dynapi_overrides.h:99
DEFAULT_WINDOW_HEIGHT
#define DEFAULT_WINDOW_HEIGHT
Definition: SDL_test_common.h:42
SDL_QUIT
@ SDL_QUIT
Definition: SDL_events.h:60
SDL_GL_BUFFER_SIZE
@ SDL_GL_BUFFER_SIZE
Definition: SDL_video.h:203
SDL_GL_STEREO
@ SDL_GL_STEREO
Definition: SDL_video.h:211
SDLK_PRINTSCREEN
@ SDLK_PRINTSCREEN
Definition: SDL_keycode.h:142
SDL_DisplayMode::refresh_rate
int refresh_rate
Definition: SDL_video.h:58
AXIS_CASE
#define AXIS_CASE(ax)
SDL_RENDERER_PRESENTVSYNC
@ SDL_RENDERER_PRESENTVSYNC
Definition: SDL_render.h:69
SDL_PIXELFORMAT_ARGB2101010
@ SDL_PIXELFORMAT_ARGB2101010
Definition: SDL_pixels.h:263
SDL_WINDOWPOS_UNDEFINED_DISPLAY
#define SDL_WINDOWPOS_UNDEFINED_DISPLAY(X)
Definition: SDL_video.h:128
SDL_vsnprintf
#define SDL_vsnprintf
Definition: SDL_dynapi_overrides.h:421
SDL_Direct3D9GetAdapterIndex
int SDL_Direct3D9GetAdapterIndex(int displayIndex)
Returns the D3D9 adapter index that matches the specified display index.
X
set set set set set set set set set set set set set set set set set set set set *set set set macro pixldst op &r &cond WK op &r &cond WK op &r &cond WK else op &m &cond &ia op &r &cond WK else op &m &cond &ia elseif elseif else error unsupported base if elseif elseif else error unsupported unaligned pixldst unaligned endm macro pixst base base else pixldst base endif endm macro PF base if bpp PF set rept prefetch_distance PF set OFFSET endr endif endm macro preload_leading_step2 base if bpp ifc DST PF PF else if bpp lsl PF PF lsl PF PF lsl PF PF PF else PF lsl PF lsl PF lsl PF endif SIZE macro preload_middle scratch_holds_offset if bpp if else PF PF endif endif endif endm macro preload_trailing base if bpp if bpp *pix_per_block PF PF lsl PF PF PF PF PF else PF lsl PF X
Definition: pixman-arm-simd-asm.h:255
DEFAULT_WINDOW_WIDTH
#define DEFAULT_WINDOW_WIDTH
Definition: SDL_test_common.h:41
SDL_HITTEST_RESIZE_LEFT
@ SDL_HITTEST_RESIZE_LEFT
Definition: SDL_video.h:1030
rect
SDL_Rect rect
Definition: testrelative.c:27
BuildCommonUsageString
static const char * BuildCommonUsageString(char **pstr, const char **strlist, const int numitems, const char **strlist2, const int numitems2)
Definition: SDL_test_common.c:525
SDL_WINDOWEVENT_EXPOSED
@ SDL_WINDOWEVENT_EXPOSED
Definition: SDL_video.h:150
SDL_FreeSurface
#define SDL_FreeSurface
Definition: SDL_dynapi_overrides.h:446
SDL_PIXELFORMAT_ABGR1555
@ SDL_PIXELFORMAT_ABGR1555
Definition: SDL_pixels.h:221
SDL_MOUSEWHEEL
@ SDL_MOUSEWHEEL
Definition: SDL_events.h:108
SDL_PixelFormat::palette
SDL_Palette * palette
Definition: SDL_pixels.h:321
SDL_isdigit
#define SDL_isdigit
Definition: SDL_dynapi_overrides.h:382
SDLK_a
@ SDLK_a
Definition: SDL_keycode.h:100
Uint16
uint16_t Uint16
Definition: SDL_stdinc.h:191
SDL_PixelFormatEnumToMasks
#define SDL_PixelFormatEnumToMasks
Definition: SDL_dynapi_overrides.h:278
SDL_SetColorKey
#define SDL_SetColorKey
Definition: SDL_dynapi_overrides.h:453
SDL_VideoInit
#define SDL_VideoInit
Definition: SDL_dynapi_overrides.h:498
SDL_GetWindowFromID
#define SDL_GetWindowFromID
Definition: SDL_dynapi_overrides.h:517
SDL_HAT_LEFT
#define SDL_HAT_LEFT
Definition: SDL_joystick.h:343
SDL_BUTTON_LMASK
#define SDL_BUTTON_LMASK
Definition: SDL_mouse.h:287
SDL_GameControllerAxis
SDL_GameControllerAxis
Definition: SDL_gamecontroller.h:302
common_usage_video
static char * common_usage_video
Definition: SDL_test_common.c:562
SDL_Quit
#define SDL_Quit
Definition: SDL_dynapi_overrides.h:58
SDL_FINGERMOTION
@ SDL_FINGERMOTION
Definition: SDL_events.h:130
SDL_GetWindowPosition
#define SDL_GetWindowPosition
Definition: SDL_dynapi_overrides.h:525
SDL_WINDOWEVENT_HIT_TEST
@ SDL_WINDOWEVENT_HIT_TEST
Definition: SDL_video.h:168
text
static char text[MAX_TEXT_LENGTH]
Definition: testime.c:47
SDL_WINDOW_INPUT_GRABBED
@ SDL_WINDOW_INPUT_GRABBED
Definition: SDL_video.h:107
SDL_APP_WILLENTERBACKGROUND
@ SDL_APP_WILLENTERBACKGROUND
Definition: SDL_events.h:71
SDL_PIXELFORMAT_ABGR4444
@ SDL_PIXELFORMAT_ABGR4444
Definition: SDL_pixels.h:209
SDL_WINDOWEVENT_SIZE_CHANGED
@ SDL_WINDOWEVENT_SIZE_CHANGED
Definition: SDL_video.h:155
SDL_RenderSetLogicalSize
#define SDL_RenderSetLogicalSize
Definition: SDL_dynapi_overrides.h:322
SDL_Delay
#define SDL_Delay
Definition: SDL_dynapi_overrides.h:486
SDL_PIXELFORMAT_ARGB8888
@ SDL_PIXELFORMAT_ARGB8888
Definition: SDL_pixels.h:251
SDL_GetDisplayBounds
#define SDL_GetDisplayBounds
Definition: SDL_dynapi_overrides.h:503
SDL_LoadBMP
#define SDL_LoadBMP(file)
Definition: SDL_surface.h:201
SDL_RestoreWindow
#define SDL_RestoreWindow
Definition: SDL_dynapi_overrides.h:538
SDL_HAT_LEFTUP
#define SDL_HAT_LEFTUP
Definition: SDL_joystick.h:346
KMOD_SHIFT
#define KMOD_SHIFT
Definition: SDL_keycode.h:343
SDLTest_ExampleHitTestCallback
static SDL_HitTestResult SDLTest_ExampleHitTestCallback(SDL_Window *win, const SDL_Point *area, void *data)
Definition: SDL_test_common.c:789
SDL_BUTTON_X1MASK
#define SDL_BUTTON_X1MASK
Definition: SDL_mouse.h:290
SDL_SetWindowOpacity
#define SDL_SetWindowOpacity
Definition: SDL_dynapi_overrides.h:598
SDL_WINDOWEVENT_MINIMIZED
@ SDL_WINDOWEVENT_MINIMIZED
Definition: SDL_video.h:158
SDL_WINDOWPOS_CENTERED_DISPLAY
#define SDL_WINDOWPOS_CENTERED_DISPLAY(X)
Definition: SDL_video.h:137
SDL_WINDOWEVENT_TAKE_FOCUS
@ SDL_WINDOWEVENT_TAKE_FOCUS
Definition: SDL_video.h:167
SDLTest_TrackAllocations
int SDLTest_TrackAllocations(void)
Start tracking SDL memory allocations.
Definition: SDL_test_memory.c:197
axis
SDL_Texture * axis
Definition: testgamecontroller.c:67
SDL_GetAudioDriver
#define SDL_GetAudioDriver
Definition: SDL_dynapi_overrides.h:74
SDLK_0
@ SDLK_0
Definition: SDL_keycode.h:74
SDLTest_CommonUsage
const char * SDLTest_CommonUsage(SDLTest_CommonState *state)
Returns common usage information.
Definition: SDL_test_common.c:567
SDL_OutOfMemory
#define SDL_OutOfMemory()
Definition: SDL_error.h:52
SDL_GetCurrentAudioDriver
#define SDL_GetCurrentAudioDriver
Definition: SDL_dynapi_overrides.h:77
SDL_MESSAGEBOX_INFORMATION
@ SDL_MESSAGEBOX_INFORMATION
Definition: SDL_messagebox.h:41
VERBOSE_RENDER
#define VERBOSE_RENDER
Definition: SDL_test_common.h:47
SDL_GL_CONTEXT_MAJOR_VERSION
@ SDL_GL_CONTEXT_MAJOR_VERSION
Definition: SDL_video.h:216
SDL_GL_ACCUM_RED_SIZE
@ SDL_GL_ACCUM_RED_SIZE
Definition: SDL_video.h:207
SDL_GL_CONTEXT_PROFILE_MASK
@ SDL_GL_CONTEXT_PROFILE_MASK
Definition: SDL_video.h:220
SDL_GetWindowOpacity
#define SDL_GetWindowOpacity
Definition: SDL_dynapi_overrides.h:599
SDLTest_CommonEvent
void SDLTest_CommonEvent(SDLTest_CommonState *state, SDL_Event *event, int *done)
Common event handler for test windows.
Definition: SDL_test_common.c:1579
y
GLint GLint GLint GLint GLint GLint y
Definition: SDL_opengl.h:1574
SDL_HITTEST_NORMAL
@ SDL_HITTEST_NORMAL
Definition: SDL_video.h:1021
SDL_GetVideoDriver
#define SDL_GetVideoDriver
Definition: SDL_dynapi_overrides.h:497
SDL_RenderSetScale
#define SDL_RenderSetScale
Definition: SDL_dynapi_overrides.h:328
bpp
set set set set set set set macro pixldst1 abits if abits op else op endif endm macro pixldst2 abits if abits op else op endif endm macro pixldst4 abits if abits op else op endif endm macro pixldst0 abits op endm macro pixldst3 mem_operand op endm macro pixldst30 mem_operand op endm macro pixldst abits if abits elseif abits elseif abits elseif abits elseif abits pixldst0 abits else pixldst0 abits pixldst0 abits pixldst0 abits pixldst0 abits endif elseif abits else pixldst0 abits pixldst0 abits endif elseif abits else error unsupported bpp
Definition: pixman-arm-neon-asm.h:146
SDL_DROPBEGIN
@ SDL_DROPBEGIN
Definition: SDL_events.h:143
SDLK_LEFT
@ SDLK_LEFT
Definition: SDL_keycode.h:152
SDL_GL_DEPTH_SIZE
@ SDL_GL_DEPTH_SIZE
Definition: SDL_video.h:205
SDL_KEYMAPCHANGED
@ SDL_KEYMAPCHANGED
Definition: SDL_events.h:100
SDL_CreateRGBSurface
#define SDL_CreateRGBSurface
Definition: SDL_dynapi_overrides.h:444
SDL_HITTEST_RESIZE_RIGHT
@ SDL_HITTEST_RESIZE_RIGHT
Definition: SDL_video.h:1026
SDL_arraysize
#define SDL_arraysize(array)
Definition: SDL_stdinc.h:115
SDL_PIXELFORMAT_INDEX1MSB
@ SDL_PIXELFORMAT_INDEX1MSB
Definition: SDL_pixels.h:177
SDL_calloc
#define SDL_calloc
Definition: SDL_dynapi_overrides.h:375
SDL_DestroyTexture
#define SDL_DestroyTexture
Definition: SDL_dynapi_overrides.h:347
SDL_atoi
#define SDL_atoi
Definition: SDL_dynapi_overrides.h:410
SDL_PIXELFORMAT_RGB555
@ SDL_PIXELFORMAT_RGB555
Definition: SDL_pixels.h:197
m
const GLfloat * m
Definition: SDL_opengl_glext.h:6095
SDL_GetScancodeName
#define SDL_GetScancodeName
Definition: SDL_dynapi_overrides.h:222
common_usage_videoaudio
static char * common_usage_videoaudio
Definition: SDL_test_common.c:564
SDL_INIT_VIDEO
#define SDL_INIT_VIDEO
Definition: SDL.h:80
renderer
static SDL_Renderer * renderer
Definition: testaudiocapture.c:21
SDLK_g
@ SDLK_g
Definition: SDL_keycode.h:106
SDL_TRUE
@ SDL_TRUE
Definition: SDL_stdinc.h:164
SDL_GetWindowGrab
#define SDL_GetWindowGrab
Definition: SDL_dynapi_overrides.h:544
SDL_PIXELFORMAT_INDEX4LSB
@ SDL_PIXELFORMAT_INDEX4LSB
Definition: SDL_pixels.h:180
SDL_GetCurrentVideoDriver
#define SDL_GetCurrentVideoDriver
Definition: SDL_dynapi_overrides.h:500
SDL_MouseMotionEvent::x
Sint32 x
Definition: SDL_events.h:260
SDL_SetWindowHitTest
#define SDL_SetWindowHitTest
Definition: SDL_dynapi_overrides.h:585
SDL_Point
The structure that defines a point (integer)
Definition: SDL_rect.h:48
SDL_LogSetPriority
#define SDL_LogSetPriority
Definition: SDL_dynapi_overrides.h:236
SDLK_RETURN
@ SDLK_RETURN
Definition: SDL_keycode.h:54
SDL_SetWindowBordered
#define SDL_SetWindowBordered
Definition: SDL_dynapi_overrides.h:532
SDL_HAT_RIGHT
#define SDL_HAT_RIGHT
Definition: SDL_joystick.h:341
SDL_RENDERER_TARGETTEXTURE
@ SDL_RENDERER_TARGETTEXTURE
Definition: SDL_render.h:71
AUDIO_S16
#define AUDIO_S16
Definition: SDL_audio.h:96
SDL_PIXELFORMAT_RGBA8888
@ SDL_PIXELFORMAT_RGBA8888
Definition: SDL_pixels.h:254
SDL_GL_RED_SIZE
@ SDL_GL_RED_SIZE
Definition: SDL_video.h:199
SDL_GetKeyName
#define SDL_GetKeyName
Definition: SDL_dynapi_overrides.h:224
SDLTest_CommonCreateState
SDLTest_CommonState * SDLTest_CommonCreateState(char **argv, Uint32 flags)
Parse command line parameters and create common state.
Definition: SDL_test_common.c:59
SDL_snprintf
#define SDL_snprintf
Definition: SDL_dynapi_overrides.h:40
SDL_Rect
A rectangle, with the origin at the upper left (integer).
Definition: SDL_rect.h:77
SDL_RendererInfo::max_texture_width
int max_texture_width
Definition: SDL_render.h:84
VERBOSE_AUDIO
#define VERBOSE_AUDIO
Definition: SDL_test_common.h:49
KMOD_ALT
#define KMOD_ALT
Definition: SDL_keycode.h:344
SDL_JOYBUTTONUP
@ SDL_JOYBUTTONUP
Definition: SDL_events.h:115
SDL_Texture
Definition: SDL_sysrender.h:36
SDL_MULTIGESTURE
@ SDL_MULTIGESTURE
Definition: SDL_events.h:135
SDL_RENDER_DEVICE_RESET
@ SDL_RENDER_DEVICE_RESET
Definition: SDL_events.h:155
SDL_PIXELFORMAT_RGB24
@ SDL_PIXELFORMAT_RGB24
Definition: SDL_pixels.h:233
SDL_PIXELFORMAT_NV12
@ SDL_PIXELFORMAT_NV12
Definition: SDL_pixels.h:290
SDL_LOG_PRIORITY_VERBOSE
@ SDL_LOG_PRIORITY_VERBOSE
Definition: SDL_log.h:104
Y
set set set set set set set set set set set set set set set set set set set set *set set set macro pixldst op &r &cond WK op &r &cond WK op &r &cond WK else op &m &cond &ia op &r &cond WK else op &m &cond &ia elseif elseif else error unsupported base if elseif elseif else error unsupported unaligned pixldst unaligned endm macro pixst base base else pixldst base endif endm macro PF base if bpp PF set rept prefetch_distance PF set OFFSET endr endif endm macro preload_leading_step2 base if bpp ifc DST PF PF else if bpp lsl PF PF lsl PF PF lsl PF PF PF else PF lsl PF lsl PF lsl PF endif SIZE macro preload_middle scratch_holds_offset if bpp if else PF PF endif endif endif endm macro preload_trailing base if bpp if bpp *pix_per_block PF PF lsl PF PF PF PF PF else PF lsl PF lsl PF PF PF PF PF base if bpp if narrow_case &&bpp<=dst_w_bpp) PF bic, WK0, base, #31 PF pld,[WK0] PF add, WK1, base, X, LSL #bpp_shift PF sub, WK1, WK1, #1 PF bic, WK1, WK1, #31 PF cmp, WK1, WK0 PF beq, 90f PF pld,[WK1]90:.else PF bic, WK0, base, #31 PF pld,[WK0] PF add, WK1, base, X, lsl #bpp_shift PF sub, WK1, WK1, #1 PF bic, WK1, WK1, #31 PF cmp, WK1, WK0 PF beq, 92f91:PF add, WK0, WK0, #32 PF cmp, WK0, WK1 PF pld,[WK0] PF bne, 91b92:.endif .endif.endm.macro conditional_process1_helper cond, process_head, process_tail, numbytes, firstreg, unaligned_src, unaligned_mask, decrementx process_head cond, numbytes, firstreg, unaligned_src, unaligned_mask, 0 .if decrementx sub &cond X, X, #8 *numbytes/dst_w_bpp .endif process_tail cond, numbytes, firstreg .if !((flags) &FLAG_PROCESS_DOES_STORE) pixst cond, numbytes, firstreg, DST .endif.endm.macro conditional_process1 cond, process_head, process_tail, numbytes, firstreg, unaligned_src, unaligned_mask, decrementx .if(flags) &FLAG_BRANCH_OVER .ifc cond, mi bpl 100f .endif .ifc cond, cs bcc 100f .endif .ifc cond, ne beq 100f .endif conditional_process1_helper, process_head, process_tail, numbytes, firstreg, unaligned_src, unaligned_mask, decrementx100:.else conditional_process1_helper cond, process_head, process_tail, numbytes, firstreg, unaligned_src, unaligned_mask, decrementx .endif.endm.macro conditional_process2 test, cond1, cond2, process_head, process_tail, numbytes1, numbytes2, firstreg1, firstreg2, unaligned_src, unaligned_mask, decrementx .if(flags) &(FLAG_DST_READWRITE|FLAG_BRANCH_OVER|FLAG_PROCESS_CORRUPTS_PSR|FLAG_PROCESS_DOES_STORE) test conditional_process1 cond1, process_head, process_tail, numbytes1, firstreg1, unaligned_src, unaligned_mask, decrementx .if(flags) &FLAG_PROCESS_CORRUPTS_PSR test .endif conditional_process1 cond2, process_head, process_tail, numbytes2, firstreg2, unaligned_src, unaligned_mask, decrementx .else test process_head cond1, numbytes1, firstreg1, unaligned_src, unaligned_mask, 0 process_head cond2, numbytes2, firstreg2, unaligned_src, unaligned_mask, 0 .if decrementx sub &cond1 X, X, #8 *numbytes1/dst_w_bpp sub &cond2 X, X, #8 *numbytes2/dst_w_bpp .endif process_tail cond1, numbytes1, firstreg1 process_tail cond2, numbytes2, firstreg2 pixst cond1, numbytes1, firstreg1, DST pixst cond2, numbytes2, firstreg2, DST .endif.endm.macro test_bits_1_0_ptr .if(flags) &FLAG_PROCESS_CORRUPTS_WK0 movs SCRATCH, X, lsl #32-1 .else movs SCRATCH, WK0, lsl #32-1 .endif.endm.macro test_bits_3_2_ptr .if(flags) &FLAG_PROCESS_CORRUPTS_WK0 movs SCRATCH, X, lsl #32-3 .else movs SCRATCH, WK0, lsl #32-3 .endif.endm.macro leading_15bytes process_head, process_tail .set DECREMENT_X, 1 .if(flags) &FLAG_PROCESS_CORRUPTS_WK0 .set DECREMENT_X, 0 sub X, X, WK0, lsr #dst_bpp_shift str X,[sp, #LINE_SAVED_REG_COUNT *4] mov X, WK0 .endif .if dst_w_bpp==8 conditional_process2 test_bits_1_0_ptr, mi, cs, process_head, process_tail, 1, 2, 1, 2, 1, 1, DECREMENT_X .elseif dst_w_bpp==16 test_bits_1_0_ptr conditional_process1 cs, process_head, process_tail, 2, 2, 1, 1, DECREMENT_X .endif conditional_process2 test_bits_3_2_ptr, mi, cs, process_head, process_tail, 4, 8, 1, 2, 1, 1, DECREMENT_X .if(flags) &FLAG_PROCESS_CORRUPTS_WK0 ldr X,[sp, #LINE_SAVED_REG_COUNT *4] .endif.endm.macro test_bits_3_2_pix movs SCRATCH, X, lsl #dst_bpp_shift+32-3.endm.macro test_bits_1_0_pix .if dst_w_bpp==8 movs SCRATCH, X, lsl #dst_bpp_shift+32-1 .else movs SCRATCH, X, lsr #1 .endif.endm.macro trailing_15bytes process_head, process_tail, unaligned_src, unaligned_mask conditional_process2 test_bits_3_2_pix, cs, mi, process_head, process_tail, 8, 4, 0, 2, unaligned_src, unaligned_mask, 0 .if dst_w_bpp==16 test_bits_1_0_pix conditional_process1 cs, process_head, process_tail, 2, 0, unaligned_src, unaligned_mask, 0 .elseif dst_w_bpp==8 conditional_process2 test_bits_1_0_pix, cs, mi, process_head, process_tail, 2, 1, 0, 1, unaligned_src, unaligned_mask, 0 .endif.endm.macro wide_case_inner_loop process_head, process_tail, unaligned_src, unaligned_mask, dst_alignment110:.set SUBBLOCK, 0 .rept pix_per_block *dst_w_bpp/128 process_head, 16, 0, unaligned_src, unaligned_mask, 1 .if(src_bpp > 0) &&(mask_bpp==0) &&((flags) &FLAG_PROCESS_PRESERVES_SCRATCH) preload_middle src_bpp, SRC, 1 .elseif(src_bpp==0) &&(mask_bpp > 0) &&((flags) &FLAG_PROCESS_PRESERVES_SCRATCH) preload_middle mask_bpp, MASK, 1 .else preload_middle src_bpp, SRC, 0 preload_middle mask_bpp, MASK, 0 .endif .if(dst_r_bpp > 0) &&((SUBBLOCK % 2)==0) &&(((flags) &FLAG_NO_PRELOAD_DST)==0) PF pld,[DST, #32 *prefetch_distance - dst_alignment] .endif process_tail, 16, 0 .if !((flags) &FLAG_PROCESS_DOES_STORE) pixst, 16, 0, DST .endif .set SUBBLOCK, SUBBLOCK+1 .endr subs X, X, #pix_per_block bhs 110b.endm.macro wide_case_inner_loop_and_trailing_pixels process_head, process_tail, process_inner_loop, exit_label, unaligned_src, unaligned_mask .if dst_r_bpp > tst bne process_inner_loop DST_PRELOAD_BIAS endif preload_trailing SRC preload_trailing MASK DST endif add medium_case_inner_loop_and_trailing_pixels unaligned_mask endm macro medium_case_inner_loop_and_trailing_pixels DST endif subs bhs tst beq exit_label trailing_15bytes unaligned_mask endm macro narrow_case_inner_loop_and_trailing_pixels unaligned_mask tst conditional_process1 trailing_15bytes unaligned_mask endm macro switch_on_alignment exit_label if bne endif if bne endif action if endif if bne endif action if endif endif endm macro end_of_line last_one if SINGLE_SCANLINE ifc b endif else if vars_spilled word LINE_SAVED_REGS endif subs Y
Definition: pixman-arm-simd-asm.h:554
SDL_MaximizeWindow
#define SDL_MaximizeWindow
Definition: SDL_dynapi_overrides.h:536
KMOD_CTRL
#define KMOD_CTRL
Definition: SDL_keycode.h:342
SDL_PIXELFORMAT_UNKNOWN
@ SDL_PIXELFORMAT_UNKNOWN
Definition: SDL_pixels.h:173
AUDIO_S16MSB
#define AUDIO_S16MSB
Definition: SDL_audio.h:94
SDL_LOG_CATEGORY_SYSTEM
@ SDL_LOG_CATEGORY_SYSTEM
Definition: SDL_log.h:69
SDL_PIXELFORMAT_BGRA8888
@ SDL_PIXELFORMAT_BGRA8888
Definition: SDL_pixels.h:260
SDL_GL_DOUBLEBUFFER
@ SDL_GL_DOUBLEBUFFER
Definition: SDL_video.h:204
SDL_MOUSEBUTTONDOWN
@ SDL_MOUSEBUTTONDOWN
Definition: SDL_events.h:106
SDL_strlen
#define SDL_strlen
Definition: SDL_dynapi_overrides.h:393
SDLK_RIGHT
@ SDLK_RIGHT
Definition: SDL_keycode.h:151
SDL_JOYDEVICEADDED
@ SDL_JOYDEVICEADDED
Definition: SDL_events.h:116
SDLK_o
@ SDLK_o
Definition: SDL_keycode.h:114
SDL_GL_STENCIL_SIZE
@ SDL_GL_STENCIL_SIZE
Definition: SDL_video.h:206
SDL_GetGlobalMouseState
#define SDL_GetGlobalMouseState
Definition: SDL_dynapi_overrides.h:586
SDL_CaptureMouse
#define SDL_CaptureMouse
Definition: SDL_dynapi_overrides.h:584
SDL_LOG_CATEGORY_AUDIO
@ SDL_LOG_CATEGORY_AUDIO
Definition: SDL_log.h:70
SDLTest_PrintEvent
static void SDLTest_PrintEvent(SDL_Event *event)
Definition: SDL_test_common.c:1229
SDL_PIXELFORMAT_BGR24
@ SDL_PIXELFORMAT_BGR24
Definition: SDL_pixels.h:236
SDL_HAT_UP
#define SDL_HAT_UP
Definition: SDL_joystick.h:340
AUDIO_S16LSB
#define AUDIO_S16LSB
Definition: SDL_audio.h:92
SDL_GetDisplayDPI
#define SDL_GetDisplayDPI
Definition: SDL_dynapi_overrides.h:504
SDL_RendererInfo::name
const char * name
Definition: SDL_render.h:80
SDL_GL_BLUE_SIZE
@ SDL_GL_BLUE_SIZE
Definition: SDL_video.h:201
SDL_VideoQuit
#define SDL_VideoQuit
Definition: SDL_dynapi_overrides.h:499
SDL_WINDOWEVENT_HIDDEN
@ SDL_WINDOWEVENT_HIDDEN
Definition: SDL_video.h:149
j
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)
Definition: SDL_x11sym.h:50
SDL_Event
General event structure.
Definition: SDL_events.h:558
SDL_WINDOWEVENT
@ SDL_WINDOWEVENT
Definition: SDL_events.h:92
AUDIO_S8
#define AUDIO_S8
Definition: SDL_audio.h:90
SDL_PIXELFORMAT_INDEX4MSB
@ SDL_PIXELFORMAT_INDEX4MSB
Definition: SDL_pixels.h:183
SDL_WINDOWEVENT_RESTORED
@ SDL_WINDOWEVENT_RESTORED
Definition: SDL_video.h:160
SDL_PIXELFORMAT_INDEX8
@ SDL_PIXELFORMAT_INDEX8
Definition: SDL_pixels.h:186
SDL_LogSetAllPriority
#define SDL_LogSetAllPriority
Definition: SDL_dynapi_overrides.h:235
RESIZE_BORDER
#define RESIZE_BORDER
Definition: testhittesting.c:6
SDL_OUT_Z_CAP
const SDL_PRINTF_FORMAT_STRING char int const SDL_PRINTF_FORMAT_STRING char int const SDL_PRINTF_FORMAT_STRING char int const SDL_PRINTF_FORMAT_STRING char const char const SDL_SCANF_FORMAT_STRING char return SDL_ThreadFunction const char void return Uint32 return Uint32 SDL_AssertionHandler void SDL_SpinLock SDL_atomic_t int int return SDL_atomic_t return void void void return void return int return SDL_AudioSpec SDL_AudioSpec return int int return return int SDL_RWops int SDL_AudioSpec Uint8 Uint32 return SDL_AudioCVT SDL_AudioFormat Uint8 int SDL_AudioFormat Uint8 int return Uint8 const Uint8 Uint32 int const char return return return return return return return return Uint32 return Uint32 SDL_Event return SDL_Event int return SDL_EventFilter void SDL_EventFilter void SDL_EventFilter void int return const char const char return SDL_JoystickGUID return int return int return SDL_GameController return int return const char return SDL_GameController SDL_GameControllerAxis return const char return SDL_GameController SDL_GameControllerButton return SDL_GameController SDL_RWops return SDL_TouchID SDL_RWops return int return int return return SDL_Joystick return SDL_Haptic SDL_Haptic return SDL_Haptic return SDL_Haptic SDL_HapticEffect return SDL_Haptic int Uint32 return SDL_Haptic int SDL_Haptic int return SDL_Haptic return SDL_Haptic return SDL_Haptic return SDL_Haptic return const char const char return const char SDL_HintCallback void int return SDL_Joystick return SDL_Joystick return const char return SDL_Joystick return SDL_Joystick return SDL_Joystick return int return SDL_Joystick int return SDL_Joystick int return return return SDL_Scancode return SDL_Scancode return SDL_Keycode return return const char return void int SDL_LogPriority SDL_LogOutputFunction void Uint32 const char const char SDL_Window return int int return SDL_Window int int return SDL_Surface int int return SDL_Cursor return int return SDL_mutex return SDL_mutex return Uint32 return SDL_sem return SDL_sem Uint32 return SDL_sem return SDL_cond SDL_cond return SDL_cond SDL_mutex Uint32 return Uint32 int Uint32 Uint32 Uint32 Uint32 return Uint32 return int return SDL_Palette const SDL_Color int int return const SDL_PixelFormat Uint8 Uint8 Uint8 return Uint32 const SDL_PixelFormat Uint8 Uint8 Uint8 float Uint16 int int return const SDL_Rect const SDL_Rect SDL_Rect return const SDL_Point int const SDL_Rect SDL_Rect return return int int Uint32 SDL_Window SDL_Renderer return SDL_Surface return SDL_Renderer SDL_RendererInfo return SDL_Renderer Uint32 int int int return SDL_Texture Uint32 int int int return SDL_Texture Uint8 Uint8 Uint8 return SDL_Texture Uint8 return SDL_Texture SDL_BlendMode return SDL_Texture const SDL_Rect const Uint8 int const Uint8 int const Uint8 int return SDL_Texture SDL_Renderer SDL_Texture return SDL_Renderer int int return SDL_Renderer const SDL_Rect return SDL_Renderer const SDL_Rect return SDL_Renderer float float return SDL_Renderer Uint8 Uint8 Uint8 Uint8 return SDL_Renderer SDL_BlendMode return SDL_Renderer return SDL_Renderer const SDL_Point int return SDL_Renderer const SDL_Point int return SDL_Renderer const SDL_Rect int return SDL_Renderer const SDL_Rect int return SDL_Renderer SDL_Texture const SDL_Rect const SDL_Rect const double const SDL_Point const SDL_RendererFlip return SDL_Renderer SDL_Renderer SDL_Texture return void int return return SDL_RWops return SDL_RWops return SDL_RWops return SDL_RWops return SDL_RWops Uint16 return SDL_RWops Uint32 return SDL_RWops Uint64 return const char unsigned int unsigned int unsigned int unsigned int Uint32 return SDL_Window SDL_Surface SDL_WindowShapeMode return size_t return void size_t return const char return void size_t size_t int(*) int return int return int size_t return size_t return const wchar_t return const wchar_t size_t retur SDL_OUT_Z_CAP)(c) char *a
Definition: SDL_dynapi_procs.h:425
SDL_MouseMotionEvent::yrel
Sint32 yrel
Definition: SDL_events.h:263
SDL_JOYBUTTONDOWN
@ SDL_JOYBUTTONDOWN
Definition: SDL_events.h:114
SDL_RENDERER_ACCELERATED
@ SDL_RENDERER_ACCELERATED
Definition: SDL_render.h:67
SDL_RendererInfo::texture_formats
Uint32 texture_formats[16]
Definition: SDL_render.h:83
SDL_CreateRenderer
#define SDL_CreateRenderer
Definition: SDL_dynapi_overrides.h:301
SDL_RenderSetClipRect
#define SDL_RenderSetClipRect
Definition: SDL_dynapi_overrides.h:326
SDLK_b
@ SDLK_b
Definition: SDL_keycode.h:101
SDL_RendererInfo::max_texture_height
int max_texture_height
Definition: SDL_render.h:85
SDL_strcmp
#define SDL_strcmp
Definition: SDL_dynapi_overrides.h:417
SDL_BYTEORDER
#define SDL_BYTEORDER
Definition: SDL_config_pandora.h:37
SDL_PIXELFORMAT_YV12
@ SDL_PIXELFORMAT_YV12
Definition: SDL_pixels.h:280
SDLK_UP
@ SDLK_UP
Definition: SDL_keycode.h:154
flags
GLbitfield flags
Definition: SDL_opengl_glext.h:1483
VERBOSE_EVENT
#define VERBOSE_EVENT
Definition: SDL_test_common.h:48
SDL_WINDOWEVENT_FOCUS_GAINED
@ SDL_WINDOWEVENT_FOCUS_GAINED
Definition: SDL_video.h:164
SDL_DestroyRenderer
#define SDL_DestroyRenderer
Definition: SDL_dynapi_overrides.h:348
SDL_SaveBMP
#define SDL_SaveBMP(surface, file)
Definition: SDL_surface.h:224
SDLK_EQUALS
@ SDLK_EQUALS
Definition: SDL_keycode.h:87
SDLTest_CommonInit
SDL_bool SDLTest_CommonInit(SDLTest_CommonState *state)
Open test window.
Definition: SDL_test_common.c:835
SDL_GetNumDisplayModes
#define SDL_GetNumDisplayModes
Definition: SDL_dynapi_overrides.h:505
SDL_SetWindowPosition
#define SDL_SetWindowPosition
Definition: SDL_dynapi_overrides.h:524
SDLK_2
@ SDLK_2
Definition: SDL_keycode.h:76
DisplayOrientationName
static const char * DisplayOrientationName(int orientation)
Definition: SDL_test_common.c:1168
FullscreenTo
static void FullscreenTo(int index, int windowId)
Definition: SDL_test_common.c:1557
SDL_PIXELFORMAT_ABGR8888
@ SDL_PIXELFORMAT_ABGR8888
Definition: SDL_pixels.h:257
SDL_HITTEST_RESIZE_TOP
@ SDL_HITTEST_RESIZE_TOP
Definition: SDL_video.h:1024
SDL_Surface::format
SDL_PixelFormat * format
Definition: SDL_surface.h:73
SDL_RenderReadPixels
#define SDL_RenderReadPixels
Definition: SDL_dynapi_overrides.h:345
SDL_HAT_RIGHTDOWN
#define SDL_HAT_RIGHTDOWN
Definition: SDL_joystick.h:345
state
struct xkb_state * state
Definition: SDL_waylandsym.h:114
AUDIO_U16MSB
#define AUDIO_U16MSB
Definition: SDL_audio.h:93
audio_usage
static const char * audio_usage[]
Definition: SDL_test_common.c:41
SDLK_v
@ SDLK_v
Definition: SDL_keycode.h:121
SDL_JOYHATMOTION
@ SDL_JOYHATMOTION
Definition: SDL_events.h:113
SDL_DOLLARGESTURE
@ SDL_DOLLARGESTURE
Definition: SDL_events.h:133
SDL_LOG_CATEGORY_RENDER
@ SDL_LOG_CATEGORY_RENDER
Definition: SDL_log.h:72
AUDIO_U16
#define AUDIO_U16
Definition: SDL_audio.h:95
ControllerAxisName
static const char * ControllerAxisName(const SDL_GameControllerAxis axis)
Definition: SDL_test_common.c:1184
SDL_BUTTON_MMASK
#define SDL_BUTTON_MMASK
Definition: SDL_mouse.h:288
SDL_DROPFILE
@ SDL_DROPFILE
Definition: SDL_events.h:141
SDL_SetWindowMaximumSize
#define SDL_SetWindowMaximumSize
Definition: SDL_dynapi_overrides.h:530
SDL_DestroyWindow
#define SDL_DestroyWindow
Definition: SDL_dynapi_overrides.h:549
button
SDL_Texture * button
Definition: testgamecontroller.c:67
SDLTest_CommonQuit
void SDLTest_CommonQuit(SDLTest_CommonState *state)
Close test window.
Definition: SDL_test_common.c:1910
i
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)
Definition: SDL_x11sym.h:50
SDL_HAT_RIGHTUP
#define SDL_HAT_RIGHTUP
Definition: SDL_joystick.h:344
SDL_WINDOWPOS_ISUNDEFINED
#define SDL_WINDOWPOS_ISUNDEFINED(X)
Definition: SDL_video.h:130
SDLK_DOWN
@ SDLK_DOWN
Definition: SDL_keycode.h:153
SDL_HITTEST_RESIZE_BOTTOMLEFT
@ SDL_HITTEST_RESIZE_BOTTOMLEFT
Definition: SDL_video.h:1029
SDL_Point::y
int y
Definition: SDL_rect.h:51
SDL_GetNumAudioDrivers
#define SDL_GetNumAudioDrivers
Definition: SDL_dynapi_overrides.h:73
SDL_WINDOWEVENT_MAXIMIZED
@ SDL_WINDOWEVENT_MAXIMIZED
Definition: SDL_video.h:159
SDL_CLIPBOARDUPDATE
@ SDL_CLIPBOARDUPDATE
Definition: SDL_events.h:138
SDL_JOYBALLMOTION
@ SDL_JOYBALLMOTION
Definition: SDL_events.h:112
SDL_GL_MULTISAMPLESAMPLES
@ SDL_GL_MULTISAMPLESAMPLES
Definition: SDL_video.h:213
SDL_WINDOWEVENT_LEAVE
@ SDL_WINDOWEVENT_LEAVE
Definition: SDL_video.h:163
SDL_bool
SDL_bool
Definition: SDL_stdinc.h:161
SDL_RendererInfo::num_texture_formats
Uint32 num_texture_formats
Definition: SDL_render.h:82
SDL_USEREVENT
@ SDL_USEREVENT
Definition: SDL_events.h:160
SDL_WINDOW_BORDERLESS
@ SDL_WINDOW_BORDERLESS
Definition: SDL_video.h:103
SDL_LOG_CATEGORY_VIDEO
@ SDL_LOG_CATEGORY_VIDEO
Definition: SDL_log.h:71
w
GLubyte GLubyte GLubyte GLubyte w
Definition: SDL_opengl_glext.h:734
SDL_GetRendererInfo
#define SDL_GetRendererInfo
Definition: SDL_dynapi_overrides.h:304
SDL_WINDOW_VULKAN
@ SDL_WINDOW_VULKAN
Definition: SDL_video.h:121
SDL_INIT_AUDIO
#define SDL_INIT_AUDIO
Definition: SDL.h:79
SDL_GameControllerButton
SDL_GameControllerButton
Definition: SDL_gamecontroller.h:346
Uint8
uint8_t Uint8
Definition: SDL_stdinc.h:179