Atlas - testwm2.c
Home / ext / SDL2 / test Lines: 4 | Size: 4921 bytes [Download] [Show on GitHub] [Search similar files] [Raw] [Raw (proxy)][FILE BEGIN]1/* 2 Copyright (C) 1997-2018 Sam Lantinga <[email protected]> 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 22static SDLTest_CommonState *state; 23int done; 24 25static 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}; 39int system_cursor = -1; 40SDL_Cursor *cursor = NULL; 41 42/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ 43static void 44quit(int rc) 45{ 46 SDLTest_CommonQuit(state); 47 exit(rc); 48} 49 50void 51loop() 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 117int 118main(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: */ 175[FILE END](C) 2025 0x4248 (C) 2025 4248 Media and 4248 Systems, All part of 0x4248 See LICENCE files for more information. Not all files are by 0x4248 always check Licencing.