SDL
2.0
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
testwm2.c
Go to the documentation of this file.
1
/*
2
Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
3
4
This software is provided 'as-is', without any express or implied
5
warranty. In no event will the authors be held liable for any damages
6
arising from the use of this software.
7
8
Permission is granted to anyone to use this software for any purpose,
9
including commercial applications, and to alter it and redistribute it
10
freely.
11
*/
12
13
#include <stdlib.h>
14
#include <stdio.h>
15
16
#ifdef __EMSCRIPTEN__
17
#include <emscripten/emscripten.h>
18
#endif
19
20
#include "
SDL_test_common.h
"
21
22
static
SDLTest_CommonState
*
state
;
23
int
done
;
24
25
static
const
char
*
cursorNames
[] = {
26
"arrow"
,
27
"ibeam"
,
28
"wait"
,
29
"crosshair"
,
30
"waitarrow"
,
31
"sizeNWSE"
,
32
"sizeNESW"
,
33
"sizeWE"
,
34
"sizeNS"
,
35
"sizeALL"
,
36
"NO"
,
37
"hand"
,
38
};
39
int
system_cursor
= -1;
40
SDL_Cursor
*
cursor
=
NULL
;
41
42
/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */
43
static
void
44
quit
(
int
rc)
45
{
46
SDLTest_CommonQuit
(state);
47
exit(rc);
48
}
49
50
void
51
loop
()
52
{
53
int
i
;
54
SDL_Event
event
;
55
/* Check for events */
56
while
(
SDL_PollEvent
(&event)) {
57
SDLTest_CommonEvent
(state, &event, &
done
);
58
59
if
(event.
type
==
SDL_WINDOWEVENT
) {
60
if
(event.
window
.
event
==
SDL_WINDOWEVENT_RESIZED
) {
61
SDL_Window
*
window
=
SDL_GetWindowFromID
(event.
window
.
windowID
);
62
if
(window) {
63
SDL_Log
(
"Window %d resized to %dx%d\n"
,
64
event.
window
.
windowID
,
65
event.
window
.
data1
,
66
event.
window
.
data2
);
67
}
68
}
69
if
(event.
window
.
event
==
SDL_WINDOWEVENT_MOVED
) {
70
SDL_Window
*
window
=
SDL_GetWindowFromID
(event.
window
.
windowID
);
71
if
(window) {
72
SDL_Log
(
"Window %d moved to %d,%d (display %s)\n"
,
73
event.
window
.
windowID
,
74
event.
window
.
data1
,
75
event.
window
.
data2
,
76
SDL_GetDisplayName
(
SDL_GetWindowDisplayIndex
(window)));
77
}
78
}
79
}
80
if
(event.
type
==
SDL_KEYUP
) {
81
SDL_bool
updateCursor =
SDL_FALSE
;
82
83
if
(event.
key
.
keysym
.
sym
==
SDLK_LEFT
) {
84
--
system_cursor
;
85
if
(
system_cursor
< 0) {
86
system_cursor
=
SDL_NUM_SYSTEM_CURSORS
- 1;
87
}
88
updateCursor =
SDL_TRUE
;
89
}
else
if
(event.
key
.
keysym
.
sym
==
SDLK_RIGHT
) {
90
++
system_cursor
;
91
if
(
system_cursor
>=
SDL_NUM_SYSTEM_CURSORS
) {
92
system_cursor
= 0;
93
}
94
updateCursor =
SDL_TRUE
;
95
}
96
if
(updateCursor) {
97
SDL_Log
(
"Changing cursor to \"%s\""
,
cursorNames
[
system_cursor
]);
98
SDL_FreeCursor
(cursor);
99
cursor =
SDL_CreateSystemCursor
((
SDL_SystemCursor
)system_cursor);
100
SDL_SetCursor
(cursor);
101
}
102
}
103
}
104
105
for
(i = 0; i < state->
num_windows
; ++
i
) {
106
SDL_Renderer
*
renderer
= state->
renderers
[
i
];
107
SDL_RenderClear
(renderer);
108
SDL_RenderPresent
(renderer);
109
}
110
#ifdef __EMSCRIPTEN__
111
if
(
done
) {
112
emscripten_cancel_main_loop();
113
}
114
#endif
115
}
116
117
int
118
main
(
int
argc,
char
*argv[])
119
{
120
int
i
;
121
122
/* Enable standard application logging */
123
SDL_LogSetPriority
(
SDL_LOG_CATEGORY_APPLICATION
,
SDL_LOG_PRIORITY_INFO
);
124
125
SDL_assert
(
SDL_arraysize
(
cursorNames
) ==
SDL_NUM_SYSTEM_CURSORS
);
126
127
/* Initialize test framework */
128
state =
SDLTest_CommonCreateState
(argv,
SDL_INIT_VIDEO
);
129
if
(!state) {
130
return
1;
131
}
132
for
(i = 1; i < argc;) {
133
int
consumed;
134
135
consumed =
SDLTest_CommonArg
(state, i);
136
if
(consumed == 0) {
137
consumed = -1;
138
}
139
if
(consumed < 0) {
140
SDL_Log
(
"Usage: %s %s\n"
, argv[0],
SDLTest_CommonUsage
(state));
141
quit
(1);
142
}
143
i += consumed;
144
}
145
if
(!
SDLTest_CommonInit
(state)) {
146
quit
(2);
147
}
148
149
SDL_EventState
(
SDL_DROPFILE
,
SDL_ENABLE
);
150
SDL_EventState
(
SDL_DROPTEXT
,
SDL_ENABLE
);
151
152
for
(i = 0; i < state->
num_windows
; ++
i
) {
153
SDL_Renderer
*
renderer
= state->
renderers
[
i
];
154
SDL_SetRenderDrawColor
(renderer, 0xA0, 0xA0, 0xA0, 0xFF);
155
SDL_RenderClear
(renderer);
156
}
157
158
/* Main render loop */
159
done
= 0;
160
#ifdef __EMSCRIPTEN__
161
emscripten_set_main_loop(
loop
, 0, 1);
162
#else
163
while
(!
done
) {
164
loop
();
165
}
166
#endif
167
SDL_FreeCursor
(cursor);
168
169
quit
(0);
170
/* keep the compiler happy ... */
171
return
(0);
172
}
173
174
/* vi: set ts=4 sw=4 expandtab: */
test
testwm2.c
Generated on Sun Jun 26 2022 23:07:21 for SDL by
1.8.1.2