115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot/* 215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot Copyright (C) 1997-2014 Sam Lantinga <slouken@libsdl.org> 315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot This software is provided 'as-is', without any express or implied 515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot warranty. In no event will the authors be held liable for any damages 615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot arising from the use of this software. 715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot Permission is granted to anyone to use this software for any purpose, 915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot including commercial applications, and to alter it and redistribute it 1015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot freely. 1115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot*/ 1215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 1315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot#include <stdlib.h> 1415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot#include <stdio.h> 1515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 1615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot#include "SDL_test_common.h" 1715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 1815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robotstatic SDLTest_CommonState *state; 1915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 2015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ 2115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robotstatic void 2215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robotquit(int rc) 2315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot{ 2415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot SDLTest_CommonQuit(state); 2515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot exit(rc); 2615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot} 2715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 2815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robotint 2915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robotmain(int argc, char *argv[]) 3015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot{ 3115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot static const char *cursorNames[] = { 3215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot "arrow", 3315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot "ibeam", 3415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot "wait", 3515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot "crosshair", 3615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot "waitarrow", 3715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot "sizeNWSE", 3815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot "sizeNESW", 3915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot "sizeWE", 4015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot "sizeNS", 4115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot "sizeALL", 4215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot "NO", 4315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot "hand", 4415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot }; 4515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 4615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot int i, done; 4715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot SDL_Event event; 4815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot int system_cursor = -1; 4915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot SDL_Cursor *cursor = NULL; 5015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 5115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot /* Enable standard application logging */ 5215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO); 5315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 5415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot SDL_assert(SDL_arraysize(cursorNames) == SDL_NUM_SYSTEM_CURSORS); 5515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 5615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot /* Initialize test framework */ 5715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO); 5815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot if (!state) { 5915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot return 1; 6015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 6115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot state->skip_renderer = SDL_TRUE; 6215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot for (i = 1; i < argc;) { 6315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot int consumed; 6415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 6515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot consumed = SDLTest_CommonArg(state, i); 6615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot if (consumed == 0) { 6715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot consumed = -1; 6815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 6915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot if (consumed < 0) { 7015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot SDL_Log("Usage: %s %s\n", argv[0], SDLTest_CommonUsage(state)); 7115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot quit(1); 7215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 7315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot i += consumed; 7415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 7515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot if (!SDLTest_CommonInit(state)) { 7615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot quit(2); 7715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 7815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 7915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot /* Main render loop */ 8015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot done = 0; 8115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot while (!done) { 8215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot /* Check for events */ 8315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot while (SDL_PollEvent(&event)) { 8415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot SDLTest_CommonEvent(state, &event, &done); 8515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 8615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot if (event.type == SDL_WINDOWEVENT) { 8715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot if (event.window.event == SDL_WINDOWEVENT_RESIZED) { 8815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot SDL_Window *window = SDL_GetWindowFromID(event.window.windowID); 8915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot if (window) { 9015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot SDL_Log("Window %d resized to %dx%d\n", 9115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot event.window.windowID, 9215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot event.window.data1, 9315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot event.window.data2); 9415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 9515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 9615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot if (event.window.event == SDL_WINDOWEVENT_MOVED) { 9715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot SDL_Window *window = SDL_GetWindowFromID(event.window.windowID); 9815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot if (window) { 9915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot SDL_Log("Window %d moved to %d,%d (display %s)\n", 10015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot event.window.windowID, 10115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot event.window.data1, 10215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot event.window.data2, 10315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot SDL_GetDisplayName(SDL_GetWindowDisplayIndex(window))); 10415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 10515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 10615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 10715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot if (event.type == SDL_KEYUP) { 10815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot SDL_bool updateCursor = SDL_FALSE; 10915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 11015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot if (event.key.keysym.sym == SDLK_LEFT) { 11115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot --system_cursor; 11215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot if (system_cursor < 0) { 11315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot system_cursor = SDL_NUM_SYSTEM_CURSORS - 1; 11415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 11515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot updateCursor = SDL_TRUE; 11615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } else if (event.key.keysym.sym == SDLK_RIGHT) { 11715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot ++system_cursor; 11815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot if (system_cursor >= SDL_NUM_SYSTEM_CURSORS) { 11915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot system_cursor = 0; 12015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 12115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot updateCursor = SDL_TRUE; 12215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 12315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot if (updateCursor) { 12415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot SDL_Log("Changing cursor to \"%s\"", cursorNames[system_cursor]); 12515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot SDL_FreeCursor(cursor); 12615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot cursor = SDL_CreateSystemCursor((SDL_SystemCursor)system_cursor); 12715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot SDL_SetCursor(cursor); 12815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 12915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 13015560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 13115560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot } 13215560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot SDL_FreeCursor(cursor); 13315560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 13415560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot quit(0); 13515560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot /* keep the compiler happy ... */ 13615560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot return(0); 13715560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot} 13815560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot 13915560bb32cdb9b47db48eb4865b736df9708a8fandroid-build-team Robot/* vi: set ts=4 sw=4 expandtab: */ 140