test/testrelative.c
author Sam Lantinga <slouken@libsdl.org>
Wed, 30 May 2012 11:25:35 -0400
changeset 6311 4e5e46f43438
child 6316 a89c79a3f0cd
permissions -rw-r--r--
Initial support for XInput2 by Dimitris Zenios

1.initial work on XInput2 support
2.Implemented relative mouse motion when XInput2 is enabled
3.Created a test app to test relative mouse motion
4.Fixed Bug #1498
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));
slouken@6311
    57
    SDL_SetRelativeMouseMode(SDL_TRUE);
slouken@6311
    58
slouken@6311
    59
    rect.x = DEFAULT_WINDOW_WIDTH / 2;
slouken@6311
    60
    rect.y = DEFAULT_WINDOW_HEIGHT / 2;
slouken@6311
    61
    rect.w = 10;
slouken@6311
    62
    rect.h = 10;
slouken@6311
    63
    /* Main render loop */
slouken@6311
    64
    done = 0;
slouken@6311
    65
    while (!done) {
slouken@6311
    66
        /* Check for events */
slouken@6311
    67
        while (SDL_PollEvent(&event)) {
slouken@6311
    68
            CommonEvent(state, &event, &done);
slouken@6311
    69
            switch(event.type) {
slouken@6311
    70
                case SDL_MOUSEMOTION:
slouken@6311
    71
                {
slouken@6311
    72
                    /*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
    73
                    rect.x += event.motion.xrel;
slouken@6311
    74
                    rect.y += event.motion.yrel;
slouken@6311
    75
slouken@6311
    76
                }
slouken@6311
    77
                break;
slouken@6311
    78
            }
slouken@6311
    79
        }
slouken@6311
    80
        for (i = 0; i < state->num_windows; ++i) {
slouken@6311
    81
            SDL_Renderer *renderer = state->renderers[i];
slouken@6311
    82
            SDL_SetRenderDrawColor(renderer, 0xA0, 0xA0, 0xA0, 0xFF);
slouken@6311
    83
            SDL_RenderClear(renderer);
slouken@6311
    84
slouken@6311
    85
            DrawRects(renderer);
slouken@6311
    86
slouken@6311
    87
            SDL_RenderPresent(renderer);
slouken@6311
    88
        }
slouken@6311
    89
    }
slouken@6311
    90
slouken@6311
    91
    CommonQuit(state);
slouken@6311
    92
    return 0;
slouken@6311
    93
}
slouken@6311
    94
slouken@6311
    95
/* vi: set ts=4 sw=4 expandtab: */