include/SDL_test_common.h
author Sam Lantinga <slouken@libsdl.org>
Wed, 29 May 2013 03:22:19 -0700
changeset 7240 39eb4958950a
parent 7194 987fb567bba9
child 7796 75c80f36038e
permissions -rw-r--r--
When the window is resized, the viewport is automatically reset.
This resolves lots of confusion around resizable windows. Most people don't expect a viewport to be implicitly set when the renderer is created and then not to be reset to the window size if the window is resized.

Added common test command line parameters --logical WxH and --scale N to test the render logical size and scaling APIs.
aschiffler@6727
     1
/*
aschiffler@6727
     2
  Simple DirectMedia Layer
slouken@6885
     3
  Copyright (C) 1997-2013 Sam Lantinga <slouken@libsdl.org>
aschiffler@6727
     4
aschiffler@6727
     5
  This software is provided 'as-is', without any express or implied
aschiffler@6727
     6
  warranty.  In no event will the authors be held liable for any damages
aschiffler@6727
     7
  arising from the use of this software.
aschiffler@6727
     8
aschiffler@6727
     9
  Permission is granted to anyone to use this software for any purpose,
aschiffler@6727
    10
  including commercial applications, and to alter it and redistribute it
aschiffler@6727
    11
  freely, subject to the following restrictions:
aschiffler@6727
    12
aschiffler@6727
    13
  1. The origin of this software must not be misrepresented; you must not
aschiffler@6727
    14
     claim that you wrote the original software. If you use this software
aschiffler@6727
    15
     in a product, an acknowledgment in the product documentation would be
aschiffler@6727
    16
     appreciated but is not required.
aschiffler@6727
    17
  2. Altered source versions must be plainly marked as such, and must not be
aschiffler@6727
    18
     misrepresented as being the original software.
aschiffler@6727
    19
  3. This notice may not be removed or altered from any source distribution.
aschiffler@6727
    20
*/
aschiffler@6727
    21
aschiffler@6727
    22
/**
aschiffler@6727
    23
 *  \file SDL_test_common.h
slouken@7191
    24
 *
aschiffler@6727
    25
 *  Include file for SDL test framework.
aschiffler@6727
    26
 *
aschiffler@6727
    27
 *  This code is a part of the SDL2_test library, not the main SDL library.
aschiffler@6727
    28
 */
aschiffler@6727
    29
aschiffler@6727
    30
/* Ported from original test\common.h file. */
aschiffler@6727
    31
aschiffler@6727
    32
#ifndef _SDL_test_common_h
aschiffler@6727
    33
#define _SDL_test_common_h
aschiffler@6727
    34
aschiffler@6727
    35
#include "SDL.h"
aschiffler@6727
    36
slouken@7011
    37
#if defined(__PSP__)
kimonline@7009
    38
#define DEFAULT_WINDOW_WIDTH  480
kimonline@7009
    39
#define DEFAULT_WINDOW_HEIGHT 272
aschiffler@6727
    40
#else
aschiffler@6727
    41
#define DEFAULT_WINDOW_WIDTH  640
aschiffler@6727
    42
#define DEFAULT_WINDOW_HEIGHT 480
aschiffler@6727
    43
#endif
aschiffler@6727
    44
aschiffler@6727
    45
#define VERBOSE_VIDEO   0x00000001
aschiffler@6727
    46
#define VERBOSE_MODES   0x00000002
aschiffler@6727
    47
#define VERBOSE_RENDER  0x00000004
aschiffler@6727
    48
#define VERBOSE_EVENT   0x00000008
aschiffler@6727
    49
#define VERBOSE_AUDIO   0x00000010
aschiffler@6727
    50
aschiffler@6727
    51
typedef struct
aschiffler@6727
    52
{
aschiffler@6727
    53
    /* SDL init flags */
aschiffler@6727
    54
    char **argv;
aschiffler@6727
    55
    Uint32 flags;
aschiffler@6727
    56
    Uint32 verbose;
aschiffler@6727
    57
aschiffler@6727
    58
    /* Video info */
aschiffler@6727
    59
    const char *videodriver;
aschiffler@6727
    60
    int display;
aschiffler@6727
    61
    const char *window_title;
aschiffler@6727
    62
    const char *window_icon;
aschiffler@6727
    63
    Uint32 window_flags;
aschiffler@6727
    64
    int window_x;
aschiffler@6727
    65
    int window_y;
aschiffler@6727
    66
    int window_w;
aschiffler@6727
    67
    int window_h;
slouken@6788
    68
    int window_minW;
slouken@6788
    69
    int window_minH;
slouken@6788
    70
    int window_maxW;
slouken@6788
    71
    int window_maxH;
slouken@7240
    72
    int logical_w;
slouken@7240
    73
    int logical_h;
slouken@7240
    74
    float scale;
aschiffler@6727
    75
    int depth;
aschiffler@6727
    76
    int refresh_rate;
aschiffler@6727
    77
    int num_windows;
aschiffler@6727
    78
    SDL_Window **windows;
aschiffler@6727
    79
aschiffler@6727
    80
    /* Renderer info */
aschiffler@6727
    81
    const char *renderdriver;
aschiffler@6727
    82
    Uint32 render_flags;
aschiffler@6727
    83
    SDL_bool skip_renderer;
aschiffler@6727
    84
    SDL_Renderer **renderers;
aschiffler@6727
    85
aschiffler@6727
    86
    /* Audio info */
aschiffler@6727
    87
    const char *audiodriver;
aschiffler@6727
    88
    SDL_AudioSpec audiospec;
aschiffler@6727
    89
aschiffler@6727
    90
    /* GL settings */
aschiffler@6727
    91
    int gl_red_size;
aschiffler@6727
    92
    int gl_green_size;
aschiffler@6727
    93
    int gl_blue_size;
aschiffler@6727
    94
    int gl_alpha_size;
aschiffler@6727
    95
    int gl_buffer_size;
aschiffler@6727
    96
    int gl_depth_size;
aschiffler@6727
    97
    int gl_stencil_size;
aschiffler@6727
    98
    int gl_double_buffer;
aschiffler@6727
    99
    int gl_accum_red_size;
aschiffler@6727
   100
    int gl_accum_green_size;
aschiffler@6727
   101
    int gl_accum_blue_size;
aschiffler@6727
   102
    int gl_accum_alpha_size;
aschiffler@6727
   103
    int gl_stereo;
aschiffler@6727
   104
    int gl_multisamplebuffers;
aschiffler@6727
   105
    int gl_multisamplesamples;
aschiffler@6727
   106
    int gl_retained_backing;
aschiffler@6727
   107
    int gl_accelerated;
aschiffler@6727
   108
    int gl_major_version;
aschiffler@6727
   109
    int gl_minor_version;
slouken@7194
   110
    int gl_debug;
aschiffler@6727
   111
} SDLTest_CommonState;
aschiffler@6727
   112
aschiffler@6727
   113
#include "begin_code.h"
aschiffler@6727
   114
/* Set up for C function definitions, even when using C++ */
aschiffler@6727
   115
#ifdef __cplusplus
aschiffler@6727
   116
extern "C" {
aschiffler@6727
   117
#endif
aschiffler@6727
   118
aschiffler@6727
   119
/* Function prototypes */
aschiffler@6727
   120
aschiffler@6727
   121
/**
aschiffler@6727
   122
 * \brief Parse command line parameters and create common state.
aschiffler@6727
   123
 *
aschiffler@6727
   124
 * \param argv Array of command line parameters
aschiffler@6727
   125
 * \param flags Flags indicating which subsystem to initialize (i.e. SDL_INIT_VIDEO | SDL_INIT_AUDIO)
aschiffler@6727
   126
 *
aschiffler@6727
   127
 * \returns Returns a newly allocated common state object.
aschiffler@6727
   128
 */
aschiffler@6727
   129
SDLTest_CommonState *SDLTest_CommonCreateState(char **argv, Uint32 flags);
aschiffler@6727
   130
aschiffler@6727
   131
/**
aschiffler@6727
   132
 * \brief Process one common argument.
aschiffler@6727
   133
 *
aschiffler@6727
   134
 * \param state The common state describing the test window to create.
aschiffler@6727
   135
 * \param index The index of the argument to process in argv[].
aschiffler@6727
   136
 *
aschiffler@6727
   137
 * \returns The number of arguments processed (i.e. 1 for --fullscreen, 2 for --video [videodriver], or -1 on error.
aschiffler@6727
   138
 */
aschiffler@6727
   139
int SDLTest_CommonArg(SDLTest_CommonState * state, int index);
aschiffler@6727
   140
aschiffler@6727
   141
/**
aschiffler@6727
   142
 * \brief Returns common usage information
aschiffler@6727
   143
 *
aschiffler@6727
   144
 * \param state The common state describing the test window to create.
aschiffler@6727
   145
 *
aschiffler@6727
   146
 * \returns String with usage information
aschiffler@6727
   147
 */
aschiffler@6727
   148
const char *SDLTest_CommonUsage(SDLTest_CommonState * state);
aschiffler@6727
   149
aschiffler@6727
   150
/**
aschiffler@6727
   151
 * \brief Open test window.
aschiffler@6727
   152
 *
aschiffler@6727
   153
 * \param state The common state describing the test window to create.
aschiffler@6727
   154
 *
aschiffler@6727
   155
 * \returns True if initialization succeeded, false otherwise
aschiffler@6727
   156
 */
aschiffler@6727
   157
SDL_bool SDLTest_CommonInit(SDLTest_CommonState * state);
aschiffler@6727
   158
aschiffler@6727
   159
/**
aschiffler@6727
   160
 * \brief Common event handler for test windows.
aschiffler@6727
   161
 *
aschiffler@6727
   162
 * \param state The common state used to create test window.
aschiffler@6727
   163
 * \param event The event to handle.
aschiffler@6727
   164
 * \param done Flag indicating we are done.
aschiffler@6727
   165
 *
aschiffler@6727
   166
 */
aschiffler@6727
   167
void SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done);
aschiffler@6727
   168
aschiffler@6727
   169
/**
aschiffler@6727
   170
 * \brief Close test window.
aschiffler@6727
   171
 *
aschiffler@6727
   172
 * \param state The common state used to create test window.
aschiffler@6727
   173
 *
aschiffler@6727
   174
 */
aschiffler@6727
   175
void SDLTest_CommonQuit(SDLTest_CommonState * state);
aschiffler@6727
   176
aschiffler@6727
   177
aschiffler@6727
   178
/* Ends C function definitions when using C++ */
aschiffler@6727
   179
#ifdef __cplusplus
aschiffler@6727
   180
}
aschiffler@6727
   181
#endif
aschiffler@6727
   182
#include "close_code.h"
aschiffler@6727
   183
aschiffler@6727
   184
#endif /* _SDL_test_common_h */
aschiffler@6727
   185
aschiffler@6727
   186
/* vi: set ts=4 sw=4 expandtab: */