test/testrelative.c
author Dimitris Zenios <dimitris.zenios@gmail.com>
Thu, 31 May 2012 13:37:02 +0300
changeset 6316 a89c79a3f0cd
parent 6311 4e5e46f43438
child 6318 49b2cb56db6e
permissions -rw-r--r--
1.Moved all xinput2 functionality to its own file
2.Implement touch events using Xinput2.Leave evtouch as a fallback when xinput2 is not supported
slouken@6311
     1
/*
slouken@6311
     2
  Copyright (C) 1997-2011 Sam Lantinga <slouken@libsdl.org>
slouken@6311
     3
slouken@6311
     4
  This software is provided 'as-is', without any express or implied
slouken@6311
     5
  warranty.  In no event will the authors be held liable for any damages
slouken@6311
     6
  arising from the use of this software.
slouken@6311
     7
slouken@6311
     8
  Permission is granted to anyone to use this software for any purpose,
slouken@6311
     9
  including commercial applications, and to alter it and redistribute it
slouken@6311
    10
  freely.
slouken@6311
    11
*/
slouken@6311
    12
slouken@6311
    13
/* Simple program:  Test relative mouse motion */
slouken@6311
    14
slouken@6311
    15
#include <stdlib.h>
slouken@6311
    16
#include <stdio.h>
slouken@6311
    17
#include <time.h>
slouken@6311
    18
slouken@6311
    19
#include "common.h"
slouken@6311
    20
slouken@6311
    21
slouken@6311
    22
static CommonState *state;
slouken@6311
    23
static SDL_Rect rect;
slouken@6311
    24
slouken@6311
    25
static void
slouken@6311
    26
DrawRects(SDL_Renderer * renderer)
slouken@6311
    27
{
slouken@6311
    28
    SDL_SetRenderDrawColor(renderer, 255, 127, 0, 255);
slouken@6311
    29
    SDL_RenderFillRect(renderer,&rect);
slouken@6311
    30
}
slouken@6311
    31
slouken@6311
    32
int
slouken@6311
    33
main(int argc, char *argv[])
slouken@6311
    34
{
slouken@6311
    35
    int i, done;
slouken@6311
    36
    SDL_Event event;
slouken@6311
    37
slouken@6311
    38
 
slouken@6311
    39
    /* Initialize test framework */
slouken@6311
    40
    state = CommonCreateState(argv, SDL_INIT_VIDEO);
slouken@6311
    41
    if (!state) {
slouken@6311
    42
        return 1;
slouken@6311
    43
    }
slouken@6311
    44
    if (!CommonInit(state)) {
slouken@6311
    45
        return 2;
slouken@6311
    46
    }
slouken@6311
    47
slouken@6311
    48
    /* Create the windows and initialize the renderers */
slouken@6311
    49
    for (i = 0; i < state->num_windows; ++i) {
slouken@6311
    50
        SDL_Renderer *renderer = state->renderers[i];
slouken@6311
    51
        SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_NONE);
slouken@6311
    52
        SDL_SetRenderDrawColor(renderer, 0xA0, 0xA0, 0xA0, 0xFF);
slouken@6311
    53
        SDL_RenderClear(renderer);
slouken@6311
    54
    }
slouken@6311
    55
slouken@6311
    56
    srand((unsigned int)time(NULL));
dimitris@6316
    57
    if(SDL_SetRelativeMouseMode(SDL_TRUE) < 0) {
dimitris@6316
    58
        return 3;
dimitris@6316
    59
    };
slouken@6311
    60
slouken@6311
    61
    rect.x = DEFAULT_WINDOW_WIDTH / 2;
slouken@6311
    62
    rect.y = DEFAULT_WINDOW_HEIGHT / 2;
slouken@6311
    63
    rect.w = 10;
slouken@6311
    64
    rect.h = 10;
slouken@6311
    65
    /* Main render loop */
slouken@6311
    66
    done = 0;
slouken@6311
    67
    while (!done) {
slouken@6311
    68
        /* Check for events */
slouken@6311
    69
        while (SDL_PollEvent(&event)) {
slouken@6311
    70
            CommonEvent(state, &event, &done);
slouken@6311
    71
            switch(event.type) {
slouken@6311
    72
                case SDL_MOUSEMOTION:
slouken@6311
    73
                {
slouken@6311
    74
                    /*printf("mouse motion ABS x %d y %d REL x %d y %d\n",event.motion.x,event.motion.y,event.motion.xrel,event.motion.yrel);*/
slouken@6311
    75
                    rect.x += event.motion.xrel;
slouken@6311
    76
                    rect.y += event.motion.yrel;
slouken@6311
    77
slouken@6311
    78
                }
slouken@6311
    79
                break;
slouken@6311
    80
            }
slouken@6311
    81
        }
slouken@6311
    82
        for (i = 0; i < state->num_windows; ++i) {
slouken@6311
    83
            SDL_Renderer *renderer = state->renderers[i];
slouken@6311
    84
            SDL_SetRenderDrawColor(renderer, 0xA0, 0xA0, 0xA0, 0xFF);
slouken@6311
    85
            SDL_RenderClear(renderer);
slouken@6311
    86
slouken@6311
    87
            DrawRects(renderer);
slouken@6311
    88
slouken@6311
    89
            SDL_RenderPresent(renderer);
slouken@6311
    90
        }
slouken@6311
    91
    }
slouken@6311
    92
slouken@6311
    93
    CommonQuit(state);
slouken@6311
    94
    return 0;
slouken@6311
    95
}
slouken@6311
    96
slouken@6311
    97
/* vi: set ts=4 sw=4 expandtab: */