cscg22-gearboy

CSCG 2022 Challenge 'Gearboy'
git clone https://git.sinitax.com/sinitax/cscg22-gearboy
Log | Files | Refs | sfeed.txt

testdropfile.c (2378B)


      1/*
      2  Copyright (C) 1997-2014 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#include "SDL_test_common.h"
     17
     18static SDLTest_CommonState *state;
     19
     20/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */
     21static void
     22quit(int rc)
     23{
     24    SDLTest_CommonQuit(state);
     25    exit(rc);
     26}
     27
     28int
     29main(int argc, char *argv[])
     30{
     31    int i, done;
     32    SDL_Event event;
     33
     34	/* Enable standard application logging */
     35    SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);
     36
     37    /* Initialize test framework */
     38    state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO);
     39    if (!state) {
     40        return 1;
     41    }
     42
     43    for (i = 1; i < argc;) {
     44        int consumed;
     45
     46        consumed = SDLTest_CommonArg(state, i);
     47        /* needed voodoo to allow app to launch via OS X Finder */
     48        if (SDL_strncmp(argv[i], "-psn", 4)==0) {
     49            consumed = 1;
     50        }
     51        if (consumed == 0) {
     52            consumed = -1;
     53        }
     54        if (consumed < 0) {
     55            SDL_Log("Usage: %s %s\n", argv[0], SDLTest_CommonUsage(state));
     56            quit(1);
     57        }
     58        i += consumed;
     59    }
     60    if (!SDLTest_CommonInit(state)) {
     61        quit(2);
     62    }
     63
     64    for (i = 0; i < state->num_windows; ++i) {
     65        SDL_Renderer *renderer = state->renderers[i];
     66        SDL_SetRenderDrawColor(renderer, 0xA0, 0xA0, 0xA0, 0xFF);
     67        SDL_RenderClear(renderer);
     68        SDL_RenderPresent(renderer);
     69    }
     70
     71    SDL_EventState(SDL_DROPFILE, SDL_ENABLE);
     72
     73    /* Main render loop */
     74    done = 0;
     75    while (!done) {
     76        /* Check for events */
     77        while (SDL_PollEvent(&event)) {
     78            SDLTest_CommonEvent(state, &event, &done);
     79
     80            if (event.type == SDL_DROPFILE) {
     81                char *dropped_filedir = event.drop.file;
     82                SDL_Log("File dropped on window: %s", dropped_filedir);
     83                SDL_free(dropped_filedir);
     84            }
     85        }
     86    }
     87
     88    quit(0);
     89    /* keep the compiler happy ... */
     90    return(0);
     91}
     92
     93/* vi: set ts=4 sw=4 expandtab: */