include/SDL_video.h
author Sam Lantinga <slouken@libsdl.org>
Wed, 18 Jul 2012 15:17:27 -0700
changeset 6370 93187f7f7d5d
parent 6296 b42657486c0d
child 6382 64d54101773a
permissions -rw-r--r--
Improved simultaneous support for OpenGL and OpenGL ES

From Scott Percival

Okay, I think I have something for this. Tested it on GL and GLES
machines, it seems to work okay.

- Add a new SDL GL attribute SDL_GL_CONTEXT_EGL:
- Only useful for the X11 video driver at the moment
- Set to 1 for an EGL context, 0 to use the default for the video driver
- Default is 0, unless library is built for EGL only
- Should be set after SDL init, but before window/context
creation (i.e. same place you'd specify attributes for major/minor GL
version)
- After a lot of agony pondering the least-terrible way to go about
it, made it so that X11_GL_LoadLibrary and X11_GLES_LoadLibrary check
SDL_GL_CONTEXT_EGL. If no GL context exists yet, and the attribute
choice doesn't match with the checking function, then it changes all
the function pointers in the video driver and passes control on to the
new LoadLibrary method.
- Likewise, make X11_CreateWindow check this attribute before firing
off a call to X11_GL_GetVisual/X11_GLES_GetVisual
- Added a sanity check to the start of X11_GL_LoadLibrary
- Tidied up SDL_x11opengles.h
- Moved ownership of the gles_data structure over to
X11_GLES_LoadLibrary/UnloadLibrary
- Should incorporate the 3 fixes posted by Andre Heider

This is obviously quite a bit to take in, but is (at least) a proof of
concept for the approach I think EGL/GLX mingling should take. Any
comments/criticism is much appreciated.
slouken@0
     1
/*
slouken@5535
     2
  Simple DirectMedia Layer
slouken@6138
     3
  Copyright (C) 1997-2012 Sam Lantinga <slouken@libsdl.org>
slouken@0
     4
slouken@5535
     5
  This software is provided 'as-is', without any express or implied
slouken@5535
     6
  warranty.  In no event will the authors be held liable for any damages
slouken@5535
     7
  arising from the use of this software.
slouken@0
     8
slouken@5535
     9
  Permission is granted to anyone to use this software for any purpose,
slouken@5535
    10
  including commercial applications, and to alter it and redistribute it
slouken@5535
    11
  freely, subject to the following restrictions:
slouken@0
    12
slouken@5535
    13
  1. The origin of this software must not be misrepresented; you must not
slouken@5535
    14
     claim that you wrote the original software. If you use this software
slouken@5535
    15
     in a product, an acknowledgment in the product documentation would be
slouken@5535
    16
     appreciated but is not required.
slouken@5535
    17
  2. Altered source versions must be plainly marked as such, and must not be
slouken@5535
    18
     misrepresented as being the original software.
slouken@5535
    19
  3. This notice may not be removed or altered from any source distribution.
slouken@0
    20
*/
slouken@0
    21
slouken@1895
    22
/**
slouken@3407
    23
 *  \file SDL_video.h
slouken@3407
    24
 *  
slouken@3407
    25
 *  Header file for SDL video functions.
slouken@1895
    26
 */
slouken@0
    27
slouken@0
    28
#ifndef _SDL_video_h
slouken@0
    29
#define _SDL_video_h
slouken@0
    30
slouken@1356
    31
#include "SDL_stdinc.h"
slouken@1895
    32
#include "SDL_pixels.h"
slouken@2275
    33
#include "SDL_rect.h"
slouken@2275
    34
#include "SDL_surface.h"
slouken@0
    35
slouken@0
    36
#include "begin_code.h"
slouken@0
    37
/* Set up for C function definitions, even when using C++ */
slouken@0
    38
#ifdef __cplusplus
slouken@1895
    39
/* *INDENT-OFF* */
slouken@0
    40
extern "C" {
slouken@1895
    41
/* *INDENT-ON* */
slouken@0
    42
#endif
slouken@0
    43
slouken@1895
    44
/**
slouken@3407
    45
 *  \brief  The structure that defines a display mode
slouken@3407
    46
 *  
slouken@3407
    47
 *  \sa SDL_GetNumDisplayModes()
slouken@3407
    48
 *  \sa SDL_GetDisplayMode()
slouken@3407
    49
 *  \sa SDL_GetDesktopDisplayMode()
slouken@3407
    50
 *  \sa SDL_GetCurrentDisplayMode()
slouken@3407
    51
 *  \sa SDL_GetClosestDisplayMode()
slouken@3500
    52
 *  \sa SDL_SetWindowDisplayMode()
slouken@3500
    53
 *  \sa SDL_GetWindowDisplayMode()
slouken@1895
    54
 */
slouken@1895
    55
typedef struct
slouken@1895
    56
{
slouken@1895
    57
    Uint32 format;              /**< pixel format */
slouken@1895
    58
    int w;                      /**< width */
slouken@1895
    59
    int h;                      /**< height */
slouken@1895
    60
    int refresh_rate;           /**< refresh rate (or zero for unspecified) */
slouken@1895
    61
    void *driverdata;           /**< driver-specific data, initialize to 0 */
slouken@1895
    62
} SDL_DisplayMode;
slouken@0
    63
slouken@1895
    64
/**
slouken@3407
    65
 *  \brief The type used to identify a window
slouken@3407
    66
 *  
slouken@3407
    67
 *  \sa SDL_CreateWindow()
slouken@3407
    68
 *  \sa SDL_CreateWindowFrom()
slouken@3407
    69
 *  \sa SDL_DestroyWindow()
slouken@3407
    70
 *  \sa SDL_GetWindowData()
slouken@3407
    71
 *  \sa SDL_GetWindowFlags()
slouken@3407
    72
 *  \sa SDL_GetWindowGrab()
slouken@3407
    73
 *  \sa SDL_GetWindowPosition()
slouken@3407
    74
 *  \sa SDL_GetWindowSize()
slouken@3407
    75
 *  \sa SDL_GetWindowTitle()
slouken@3407
    76
 *  \sa SDL_HideWindow()
slouken@3407
    77
 *  \sa SDL_MaximizeWindow()
slouken@3407
    78
 *  \sa SDL_MinimizeWindow()
slouken@3407
    79
 *  \sa SDL_RaiseWindow()
slouken@3407
    80
 *  \sa SDL_RestoreWindow()
slouken@3407
    81
 *  \sa SDL_SetWindowData()
slouken@3407
    82
 *  \sa SDL_SetWindowFullscreen()
slouken@3407
    83
 *  \sa SDL_SetWindowGrab()
slouken@3407
    84
 *  \sa SDL_SetWindowIcon()
slouken@3407
    85
 *  \sa SDL_SetWindowPosition()
slouken@3407
    86
 *  \sa SDL_SetWindowSize()
slouken@3407
    87
 *  \sa SDL_SetWindowTitle()
slouken@3407
    88
 *  \sa SDL_ShowWindow()
slouken@1895
    89
 */
slouken@3685
    90
typedef struct SDL_Window SDL_Window;
slouken@0
    91
slouken@1895
    92
/**
slouken@3407
    93
 *  \brief The flags on a window
slouken@3407
    94
 *  
slouken@3407
    95
 *  \sa SDL_GetWindowFlags()
slouken@1895
    96
 */
slouken@1895
    97
typedef enum
slouken@1895
    98
{
slouken@5380
    99
    SDL_WINDOW_FULLSCREEN = 0x00000001,         /**< fullscreen window */
slouken@1895
   100
    SDL_WINDOW_OPENGL = 0x00000002,             /**< window usable with OpenGL context */
slouken@1895
   101
    SDL_WINDOW_SHOWN = 0x00000004,              /**< window is visible */
slouken@5380
   102
    SDL_WINDOW_HIDDEN = 0x00000008,             /**< window is not visible */
slouken@5380
   103
    SDL_WINDOW_BORDERLESS = 0x00000010,         /**< no window decoration */
slouken@5380
   104
    SDL_WINDOW_RESIZABLE = 0x00000020,          /**< window can be resized */
slouken@5380
   105
    SDL_WINDOW_MINIMIZED = 0x00000040,          /**< window is minimized */
slouken@5380
   106
    SDL_WINDOW_MAXIMIZED = 0x00000080,          /**< window is maximized */
slouken@1895
   107
    SDL_WINDOW_INPUT_GRABBED = 0x00000100,      /**< window has grabbed input focus */
slouken@1895
   108
    SDL_WINDOW_INPUT_FOCUS = 0x00000200,        /**< window has input focus */
slouken@3057
   109
    SDL_WINDOW_MOUSE_FOCUS = 0x00000400,        /**< window has mouse focus */
slouken@3057
   110
    SDL_WINDOW_FOREIGN = 0x00000800             /**< window not created by SDL */
slouken@1895
   111
} SDL_WindowFlags;
slouken@0
   112
slouken@1895
   113
/**
slouken@3407
   114
 *  \brief Used to indicate that you don't care what the window position is.
slouken@1895
   115
 */
slouken@5246
   116
#define SDL_WINDOWPOS_UNDEFINED_MASK    0x1FFF0000
slouken@5246
   117
#define SDL_WINDOWPOS_UNDEFINED_DISPLAY(X)  (SDL_WINDOWPOS_UNDEFINED_MASK|(X))
slouken@5246
   118
#define SDL_WINDOWPOS_UNDEFINED         SDL_WINDOWPOS_UNDEFINED_DISPLAY(0)
slouken@5246
   119
#define SDL_WINDOWPOS_ISUNDEFINED(X)    \
slouken@5246
   120
            (((X)&0xFFFF0000) == SDL_WINDOWPOS_UNDEFINED_MASK)
slouken@3407
   121
slouken@1895
   122
/**
slouken@3407
   123
 *  \brief Used to indicate that the window position should be centered.
slouken@1895
   124
 */
slouken@5246
   125
#define SDL_WINDOWPOS_CENTERED_MASK    0x2FFF0000
slouken@5246
   126
#define SDL_WINDOWPOS_CENTERED_DISPLAY(X)  (SDL_WINDOWPOS_CENTERED_MASK|(X))
slouken@5246
   127
#define SDL_WINDOWPOS_CENTERED         SDL_WINDOWPOS_CENTERED_DISPLAY(0)
slouken@5246
   128
#define SDL_WINDOWPOS_ISCENTERED(X)    \
slouken@5246
   129
            (((X)&0xFFFF0000) == SDL_WINDOWPOS_CENTERED_MASK)
slouken@1895
   130
slouken@1895
   131
/**
slouken@3407
   132
 *  \brief Event subtype for window events
slouken@1895
   133
 */
slouken@1895
   134
typedef enum
slouken@1895
   135
{
slouken@3407
   136
    SDL_WINDOWEVENT_NONE,           /**< Never used */
slouken@3407
   137
    SDL_WINDOWEVENT_SHOWN,          /**< Window has been shown */
slouken@3407
   138
    SDL_WINDOWEVENT_HIDDEN,         /**< Window has been hidden */
slouken@3407
   139
    SDL_WINDOWEVENT_EXPOSED,        /**< Window has been exposed and should be 
slouken@3407
   140
                                         redrawn */
slouken@3407
   141
    SDL_WINDOWEVENT_MOVED,          /**< Window has been moved to data1, data2 
slouken@3407
   142
                                     */
slouken@5276
   143
    SDL_WINDOWEVENT_RESIZED,        /**< Window has been resized to data1xdata2 */
slouken@5276
   144
    SDL_WINDOWEVENT_SIZE_CHANGED,   /**< The window size has changed, either as a result of an API call or through the system or user changing the window size. */
slouken@3407
   145
    SDL_WINDOWEVENT_MINIMIZED,      /**< Window has been minimized */
slouken@3407
   146
    SDL_WINDOWEVENT_MAXIMIZED,      /**< Window has been maximized */
slouken@3407
   147
    SDL_WINDOWEVENT_RESTORED,       /**< Window has been restored to normal size
slouken@3407
   148
                                         and position */
slouken@3691
   149
    SDL_WINDOWEVENT_ENTER,          /**< Window has gained mouse focus */
slouken@3691
   150
    SDL_WINDOWEVENT_LEAVE,          /**< Window has lost mouse focus */
slouken@3691
   151
    SDL_WINDOWEVENT_FOCUS_GAINED,   /**< Window has gained keyboard focus */
slouken@3691
   152
    SDL_WINDOWEVENT_FOCUS_LOST,     /**< Window has lost keyboard focus */
slouken@3407
   153
    SDL_WINDOWEVENT_CLOSE           /**< The window manager requests that the 
slouken@3407
   154
                                         window be closed */
slouken@1895
   155
} SDL_WindowEventID;
slouken@1895
   156
slouken@1895
   157
/**
slouken@3407
   158
 *  \brief An opaque handle to an OpenGL context.
slouken@1895
   159
 */
slouken@1895
   160
typedef void *SDL_GLContext;
slouken@1895
   161
slouken@1895
   162
/**
slouken@3407
   163
 *  \brief OpenGL configuration attributes
slouken@0
   164
 */
slouken@1895
   165
typedef enum
slouken@1895
   166
{
slouken@0
   167
    SDL_GL_RED_SIZE,
slouken@0
   168
    SDL_GL_GREEN_SIZE,
slouken@0
   169
    SDL_GL_BLUE_SIZE,
slouken@0
   170
    SDL_GL_ALPHA_SIZE,
slouken@0
   171
    SDL_GL_BUFFER_SIZE,
slouken@0
   172
    SDL_GL_DOUBLEBUFFER,
slouken@0
   173
    SDL_GL_DEPTH_SIZE,
slouken@0
   174
    SDL_GL_STENCIL_SIZE,
slouken@0
   175
    SDL_GL_ACCUM_RED_SIZE,
slouken@0
   176
    SDL_GL_ACCUM_GREEN_SIZE,
slouken@0
   177
    SDL_GL_ACCUM_BLUE_SIZE,
slouken@450
   178
    SDL_GL_ACCUM_ALPHA_SIZE,
slouken@655
   179
    SDL_GL_STEREO,
slouken@656
   180
    SDL_GL_MULTISAMPLEBUFFERS,
slouken@1736
   181
    SDL_GL_MULTISAMPLESAMPLES,
hfutrell@2747
   182
    SDL_GL_ACCELERATED_VISUAL,
slouken@3100
   183
    SDL_GL_RETAINED_BACKING,
slouken@3139
   184
    SDL_GL_CONTEXT_MAJOR_VERSION,
slouken@6296
   185
    SDL_GL_CONTEXT_MINOR_VERSION,
slouken@6370
   186
    SDL_GL_CONTEXT_EGL,
slouken@6296
   187
    SDL_GL_CONTEXT_FLAGS,
slouken@6296
   188
    SDL_GL_CONTEXT_PROFILE_MASK
slouken@0
   189
} SDL_GLattr;
slouken@0
   190
slouken@6296
   191
typedef enum
slouken@6296
   192
{
slouken@6296
   193
    SDL_GL_CONTEXT_PROFILE_CORE           = 0x0001,
slouken@6296
   194
    SDL_GL_CONTEXT_PROFILE_COMPATIBILITY  = 0x0002,
slouken@6296
   195
    SDL_GL_CONTEXT_PROFILE_ES2            = 0x0004
slouken@6296
   196
} SDL_GLprofile;
slouken@6296
   197
slouken@6296
   198
typedef enum
slouken@6296
   199
{
slouken@6296
   200
    SDL_GL_CONTEXT_DEBUG_FLAG              = 0x0001,
slouken@6296
   201
    SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG = 0x0002,
slouken@6296
   202
    SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG      = 0x0004
slouken@6296
   203
} SDL_GLcontextFlag;
slouken@6296
   204
slouken@0
   205
slouken@0
   206
/* Function prototypes */
slouken@0
   207
slouken@1895
   208
/**
slouken@3407
   209
 *  \brief Get the number of video drivers compiled into SDL
slouken@3407
   210
 *  
slouken@3407
   211
 *  \sa SDL_GetVideoDriver()
slouken@0
   212
 */
slouken@1895
   213
extern DECLSPEC int SDLCALL SDL_GetNumVideoDrivers(void);
slouken@1895
   214
slouken@1895
   215
/**
slouken@3407
   216
 *  \brief Get the name of a built in video driver.
slouken@3407
   217
 *  
slouken@3407
   218
 *  \note The video drivers are presented in the order in which they are
slouken@3407
   219
 *        normally checked during initialization.
slouken@3407
   220
 *  
slouken@3407
   221
 *  \sa SDL_GetNumVideoDrivers()
slouken@1895
   222
 */
slouken@1895
   223
extern DECLSPEC const char *SDLCALL SDL_GetVideoDriver(int index);
slouken@1895
   224
slouken@1895
   225
/**
slouken@3407
   226
 *  \brief Initialize the video subsystem, optionally specifying a video driver.
slouken@3407
   227
 *  
slouken@3407
   228
 *  \param driver_name Initialize a specific driver by name, or NULL for the 
slouken@3407
   229
 *                     default video driver.
slouken@3407
   230
 *  
slouken@3407
   231
 *  \return 0 on success, -1 on error
slouken@3407
   232
 *  
slouken@3407
   233
 *  This function initializes the video subsystem; setting up a connection
slouken@3407
   234
 *  to the window manager, etc, and determines the available display modes
slouken@3407
   235
 *  and pixel formats, but does not initialize a window or graphics mode.
slouken@3407
   236
 *  
slouken@3407
   237
 *  \sa SDL_VideoQuit()
slouken@1895
   238
 */
slouken@5123
   239
extern DECLSPEC int SDLCALL SDL_VideoInit(const char *driver_name);
slouken@1895
   240
slouken@1895
   241
/**
slouken@3407
   242
 *  \brief Shuts down the video subsystem.
slouken@3407
   243
 *  
slouken@3407
   244
 *  This function closes all windows, and restores the original video mode.
slouken@3407
   245
 *  
slouken@3407
   246
 *  \sa SDL_VideoInit()
slouken@1895
   247
 */
slouken@337
   248
extern DECLSPEC void SDLCALL SDL_VideoQuit(void);
slouken@0
   249
slouken@1895
   250
/**
slouken@3407
   251
 *  \brief Returns the name of the currently initialized video driver.
slouken@3407
   252
 *  
slouken@3407
   253
 *  \return The name of the current video driver or NULL if no driver
slouken@3407
   254
 *          has been initialized
slouken@3407
   255
 *  
slouken@3407
   256
 *  \sa SDL_GetNumVideoDrivers()
slouken@3407
   257
 *  \sa SDL_GetVideoDriver()
slouken@0
   258
 */
slouken@1895
   259
extern DECLSPEC const char *SDLCALL SDL_GetCurrentVideoDriver(void);
slouken@0
   260
slouken@1895
   261
/**
slouken@3407
   262
 *  \brief Returns the number of available video displays.
slouken@3407
   263
 *  
slouken@3528
   264
 *  \sa SDL_GetDisplayBounds()
slouken@0
   265
 */
slouken@1895
   266
extern DECLSPEC int SDLCALL SDL_GetNumVideoDisplays(void);
slouken@0
   267
slouken@1895
   268
/**
slouken@3528
   269
 *  \brief Get the desktop area represented by a display, with the primary
slouken@3528
   270
 *         display located at 0,0
slouken@3528
   271
 *  
slouken@3528
   272
 *  \return 0 on success, or -1 if the index is out of range.
slouken@3528
   273
 *  
slouken@3528
   274
 *  \sa SDL_GetNumVideoDisplays()
slouken@3528
   275
 */
slouken@5244
   276
extern DECLSPEC int SDLCALL SDL_GetDisplayBounds(int displayIndex, SDL_Rect * rect);
slouken@3528
   277
slouken@3528
   278
/**
slouken@5244
   279
 *  \brief Returns the number of available display modes.
slouken@3407
   280
 *  
slouken@3407
   281
 *  \sa SDL_GetDisplayMode()
slouken@0
   282
 */
slouken@5244
   283
extern DECLSPEC int SDLCALL SDL_GetNumDisplayModes(int displayIndex);
slouken@0
   284
slouken@1895
   285
/**
slouken@3407
   286
 *  \brief Fill in information about a specific display mode.
slouken@3407
   287
 *  
slouken@3407
   288
 *  \note The display modes are sorted in this priority:
slouken@3407
   289
 *        \li bits per pixel -> more colors to fewer colors
slouken@3407
   290
 *        \li width -> largest to smallest
slouken@3407
   291
 *        \li height -> largest to smallest
slouken@3407
   292
 *        \li refresh rate -> highest to lowest
slouken@3407
   293
 *  
slouken@3407
   294
 *  \sa SDL_GetNumDisplayModes()
slouken@0
   295
 */
slouken@5244
   296
extern DECLSPEC int SDLCALL SDL_GetDisplayMode(int displayIndex, int modeIndex,
slouken@1967
   297
                                               SDL_DisplayMode * mode);
slouken@0
   298
slouken@1895
   299
/**
slouken@5244
   300
 *  \brief Fill in information about the desktop display mode.
slouken@1895
   301
 */
slouken@5244
   302
extern DECLSPEC int SDLCALL SDL_GetDesktopDisplayMode(int displayIndex, SDL_DisplayMode * mode);
slouken@1895
   303
slouken@1895
   304
/**
slouken@3407
   305
 *  \brief Fill in information about the current display mode.
slouken@1895
   306
 */
slouken@5244
   307
extern DECLSPEC int SDLCALL SDL_GetCurrentDisplayMode(int displayIndex, SDL_DisplayMode * mode);
slouken@1895
   308
slouken@3400
   309
slouken@1895
   310
/**
slouken@3407
   311
 *  \brief Get the closest match to the requested display mode.
slouken@3407
   312
 *  
slouken@3407
   313
 *  \param mode The desired display mode
slouken@3407
   314
 *  \param closest A pointer to a display mode to be filled in with the closest 
slouken@3407
   315
 *                 match of the available display modes.
slouken@3407
   316
 *  
slouken@3407
   317
 *  \return The passed in value \c closest, or NULL if no matching video mode 
slouken@3407
   318
 *          was available.
slouken@3407
   319
 *  
slouken@3407
   320
 *  The available display modes are scanned, and \c closest is filled in with the
slouken@3407
   321
 *  closest mode matching the requested mode and returned.  The mode format and 
slouken@3407
   322
 *  refresh_rate default to the desktop mode if they are 0.  The modes are 
slouken@3407
   323
 *  scanned with size being first priority, format being second priority, and 
slouken@3407
   324
 *  finally checking the refresh_rate.  If all the available modes are too 
slouken@3407
   325
 *  small, then NULL is returned.
slouken@3407
   326
 *  
slouken@3407
   327
 *  \sa SDL_GetNumDisplayModes()
slouken@3407
   328
 *  \sa SDL_GetDisplayMode()
slouken@1895
   329
 */
slouken@5244
   330
extern DECLSPEC SDL_DisplayMode * SDLCALL SDL_GetClosestDisplayMode(int displayIndex, const SDL_DisplayMode * mode, SDL_DisplayMode * closest);
slouken@1895
   331
slouken@1895
   332
/**
slouken@5246
   333
 *  \brief Get the display index associated with a window.
slouken@5246
   334
 *  
slouken@5246
   335
 *  \return the display index of the display containing the center of the
slouken@5246
   336
 *          window, or -1 on error.
slouken@5246
   337
 */
slouken@5246
   338
extern DECLSPEC int SDLCALL SDL_GetWindowDisplay(SDL_Window * window);
slouken@5246
   339
slouken@5246
   340
/**
slouken@5244
   341
 *  \brief Set the display mode used when a fullscreen window is visible.
slouken@5244
   342
 *
slouken@5244
   343
 *  By default the window's dimensions and the desktop format and refresh rate
slouken@5244
   344
 *  are used.
slouken@3407
   345
 *  
slouken@3500
   346
 *  \param mode The mode to use, or NULL for the default mode.
slouken@3407
   347
 *  
slouken@3407
   348
 *  \return 0 on success, or -1 if setting the display mode failed.
slouken@3407
   349
 *  
slouken@3522
   350
 *  \sa SDL_GetWindowDisplayMode()
slouken@3407
   351
 *  \sa SDL_SetWindowFullscreen()
slouken@0
   352
 */
slouken@3685
   353
extern DECLSPEC int SDLCALL SDL_SetWindowDisplayMode(SDL_Window * window,
slouken@3500
   354
                                                     const SDL_DisplayMode
slouken@1895
   355
                                                         * mode);
slouken@0
   356
slouken@1895
   357
/**
slouken@3407
   358
 *  \brief Fill in information about the display mode used when a fullscreen
slouken@5244
   359
 *         window is visible.
slouken@3522
   360
 *
slouken@3522
   361
 *  \sa SDL_SetWindowDisplayMode()
slouken@3522
   362
 *  \sa SDL_SetWindowFullscreen()
slouken@0
   363
 */
slouken@3685
   364
extern DECLSPEC int SDLCALL SDL_GetWindowDisplayMode(SDL_Window * window,
slouken@3500
   365
                                                     SDL_DisplayMode * mode);
slouken@0
   366
slouken@1895
   367
/**
slouken@5154
   368
 *  \brief Get the pixel format associated with the window.
slouken@5154
   369
 */
slouken@5154
   370
extern DECLSPEC Uint32 SDLCALL SDL_GetWindowPixelFormat(SDL_Window * window);
slouken@5154
   371
slouken@5154
   372
/**
slouken@3407
   373
 *  \brief Create a window with the specified position, dimensions, and flags.
slouken@3407
   374
 *  
slouken@3407
   375
 *  \param title The title of the window, in UTF-8 encoding.
slouken@3407
   376
 *  \param x     The x position of the window, ::SDL_WINDOWPOS_CENTERED, or 
slouken@3407
   377
 *               ::SDL_WINDOWPOS_UNDEFINED.
slouken@3407
   378
 *  \param y     The y position of the window, ::SDL_WINDOWPOS_CENTERED, or 
slouken@3407
   379
 *               ::SDL_WINDOWPOS_UNDEFINED.
slouken@3407
   380
 *  \param w     The width of the window.
slouken@3407
   381
 *  \param h     The height of the window.
slouken@3407
   382
 *  \param flags The flags for the window, a mask of any of the following: 
slouken@3407
   383
 *               ::SDL_WINDOW_FULLSCREEN, ::SDL_WINDOW_OPENGL, 
slouken@3407
   384
 *               ::SDL_WINDOW_SHOWN,      ::SDL_WINDOW_BORDERLESS, 
slouken@3407
   385
 *               ::SDL_WINDOW_RESIZABLE,  ::SDL_WINDOW_MAXIMIZED, 
slouken@3407
   386
 *               ::SDL_WINDOW_MINIMIZED,  ::SDL_WINDOW_INPUT_GRABBED.
slouken@3407
   387
 *  
slouken@3407
   388
 *  \return The id of the window created, or zero if window creation failed.
slouken@3407
   389
 *  
slouken@3407
   390
 *  \sa SDL_DestroyWindow()
slouken@0
   391
 */
slouken@3685
   392
extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindow(const char *title,
slouken@1895
   393
                                                      int x, int y, int w,
slouken@1895
   394
                                                      int h, Uint32 flags);
slouken@0
   395
slouken@1895
   396
/**
slouken@3493
   397
 *  \brief Create an SDL window from an existing native window.
slouken@3407
   398
 *  
slouken@3407
   399
 *  \param data A pointer to driver-dependent window creation data
slouken@3407
   400
 *  
slouken@3407
   401
 *  \return The id of the window created, or zero if window creation failed.
slouken@3407
   402
 *  
slouken@3407
   403
 *  \sa SDL_DestroyWindow()
slouken@0
   404
 */
slouken@3685
   405
extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindowFrom(const void *data);
slouken@3685
   406
slouken@3685
   407
/**
slouken@4883
   408
 *  \brief Get the numeric ID of a window, for logging purposes.
slouken@3685
   409
 */
slouken@3685
   410
extern DECLSPEC Uint32 SDLCALL SDL_GetWindowID(SDL_Window * window);
slouken@3685
   411
slouken@3685
   412
/**
slouken@3685
   413
 *  \brief Get a window from a stored ID, or NULL if it doesn't exist.
slouken@3685
   414
 */
slouken@3685
   415
extern DECLSPEC SDL_Window * SDLCALL SDL_GetWindowFromID(Uint32 id);
slouken@1895
   416
slouken@1895
   417
/**
slouken@3407
   418
 *  \brief Get the window flags.
slouken@1895
   419
 */
slouken@3685
   420
extern DECLSPEC Uint32 SDLCALL SDL_GetWindowFlags(SDL_Window * window);
slouken@1895
   421
slouken@1895
   422
/**
slouken@4883
   423
 *  \brief Set the title of a window, in UTF-8 format.
slouken@3407
   424
 *  
slouken@3407
   425
 *  \sa SDL_GetWindowTitle()
slouken@1895
   426
 */
slouken@3685
   427
extern DECLSPEC void SDLCALL SDL_SetWindowTitle(SDL_Window * window,
slouken@1895
   428
                                                const char *title);
slouken@1895
   429
slouken@1895
   430
/**
slouken@4883
   431
 *  \brief Get the title of a window, in UTF-8 format.
slouken@3407
   432
 *  
slouken@3407
   433
 *  \sa SDL_SetWindowTitle()
slouken@1895
   434
 */
slouken@3685
   435
extern DECLSPEC const char *SDLCALL SDL_GetWindowTitle(SDL_Window * window);
slouken@1895
   436
slouken@1895
   437
/**
slouken@4887
   438
 *  \brief Set the icon for a window.
slouken@3407
   439
 *  
slouken@4887
   440
 *  \param icon The icon for the window.
slouken@1895
   441
 */
slouken@3685
   442
extern DECLSPEC void SDLCALL SDL_SetWindowIcon(SDL_Window * window,
slouken@2990
   443
                                               SDL_Surface * icon);
slouken@1895
   444
slouken@1895
   445
/**
slouken@5165
   446
 *  \brief Associate an arbitrary named pointer with a window.
slouken@3407
   447
 *  
slouken@5165
   448
 *  \param window   The window to associate with the pointer.
slouken@5165
   449
 *  \param name     The name of the pointer.
slouken@5165
   450
 *  \param userdata The associated pointer.
slouken@5165
   451
 *
slouken@5165
   452
 *  \return The previous value associated with 'name'
slouken@5165
   453
 *
slouken@5165
   454
 *  \note The name is case-sensitive.
slouken@5165
   455
 *
slouken@3407
   456
 *  \sa SDL_GetWindowData()
slouken@1895
   457
 */
slouken@5165
   458
extern DECLSPEC void* SDLCALL SDL_SetWindowData(SDL_Window * window,
slouken@5165
   459
                                                const char *name,
slouken@5165
   460
                                                void *userdata);
slouken@1895
   461
slouken@1895
   462
/**
slouken@4883
   463
 *  \brief Retrieve the data pointer associated with a window.
slouken@3407
   464
 *  
slouken@5165
   465
 *  \param window   The window to query.
slouken@5165
   466
 *  \param name     The name of the pointer.
slouken@5165
   467
 *
slouken@5165
   468
 *  \return The value associated with 'name'
slouken@5165
   469
 *  
slouken@3407
   470
 *  \sa SDL_SetWindowData()
slouken@1895
   471
 */
slouken@5165
   472
extern DECLSPEC void *SDLCALL SDL_GetWindowData(SDL_Window * window,
slouken@5165
   473
                                                const char *name);
slouken@1895
   474
slouken@1895
   475
/**
slouken@4883
   476
 *  \brief Set the position of a window.
slouken@3407
   477
 *  
slouken@5165
   478
 *  \param window   The window to reposition.
slouken@3407
   479
 *  \param x        The x coordinate of the window, ::SDL_WINDOWPOS_CENTERED, or
slouken@3407
   480
                    ::SDL_WINDOWPOS_UNDEFINED.
slouken@3407
   481
 *  \param y        The y coordinate of the window, ::SDL_WINDOWPOS_CENTERED, or
slouken@3407
   482
                    ::SDL_WINDOWPOS_UNDEFINED.
slouken@3407
   483
 *  
slouken@3407
   484
 *  \note The window coordinate origin is the upper left of the display.
slouken@3407
   485
 *  
slouken@3407
   486
 *  \sa SDL_GetWindowPosition()
slouken@1895
   487
 */
slouken@3685
   488
extern DECLSPEC void SDLCALL SDL_SetWindowPosition(SDL_Window * window,
slouken@1895
   489
                                                   int x, int y);
slouken@1895
   490
slouken@1895
   491
/**
slouken@4883
   492
 *  \brief Get the position of a window.
slouken@3407
   493
 *  
slouken@3407
   494
 *  \sa SDL_SetWindowPosition()
slouken@1895
   495
 */
slouken@3685
   496
extern DECLSPEC void SDLCALL SDL_GetWindowPosition(SDL_Window * window,
slouken@1895
   497
                                                   int *x, int *y);
slouken@1895
   498
slouken@1895
   499
/**
slouken@4883
   500
 *  \brief Set the size of a window's client area.
slouken@3407
   501
 *  
slouken@3407
   502
 *  \note You can't change the size of a fullscreen window, it automatically
slouken@3407
   503
 *        matches the size of the display mode.
slouken@3407
   504
 *  
slouken@3407
   505
 *  \sa SDL_GetWindowSize()
slouken@1895
   506
 */
slouken@3685
   507
extern DECLSPEC void SDLCALL SDL_SetWindowSize(SDL_Window * window, int w,
slouken@1895
   508
                                               int h);
slouken@1895
   509
slouken@1895
   510
/**
slouken@4883
   511
 *  \brief Get the size of a window's client area.
slouken@3407
   512
 *  
slouken@3407
   513
 *  \sa SDL_SetWindowSize()
slouken@1895
   514
 */
slouken@3685
   515
extern DECLSPEC void SDLCALL SDL_GetWindowSize(SDL_Window * window, int *w,
slouken@1895
   516
                                               int *h);
slouken@1895
   517
slouken@1895
   518
/**
slouken@4883
   519
 *  \brief Show a window.
slouken@3407
   520
 *  
slouken@3407
   521
 *  \sa SDL_HideWindow()
slouken@1895
   522
 */
slouken@3685
   523
extern DECLSPEC void SDLCALL SDL_ShowWindow(SDL_Window * window);
slouken@1895
   524
slouken@1895
   525
/**
slouken@4883
   526
 *  \brief Hide a window.
slouken@3407
   527
 *  
slouken@3407
   528
 *  \sa SDL_ShowWindow()
slouken@1895
   529
 */
slouken@3685
   530
extern DECLSPEC void SDLCALL SDL_HideWindow(SDL_Window * window);
slouken@1895
   531
slouken@1895
   532
/**
slouken@4883
   533
 *  \brief Raise a window above other windows and set the input focus.
slouken@1895
   534
 */
slouken@3685
   535
extern DECLSPEC void SDLCALL SDL_RaiseWindow(SDL_Window * window);
slouken@1895
   536
slouken@1895
   537
/**
slouken@4883
   538
 *  \brief Make a window as large as possible.
slouken@3407
   539
 *  
slouken@3407
   540
 *  \sa SDL_RestoreWindow()
slouken@1895
   541
 */
slouken@3685
   542
extern DECLSPEC void SDLCALL SDL_MaximizeWindow(SDL_Window * window);
slouken@1895
   543
slouken@1895
   544
/**
slouken@4883
   545
 *  \brief Minimize a window to an iconic representation.
slouken@3407
   546
 *  
slouken@3407
   547
 *  \sa SDL_RestoreWindow()
slouken@1895
   548
 */
slouken@3685
   549
extern DECLSPEC void SDLCALL SDL_MinimizeWindow(SDL_Window * window);
slouken@1895
   550
slouken@1895
   551
/**
slouken@3407
   552
 *  \brief Restore the size and position of a minimized or maximized window.
slouken@3407
   553
 *  
slouken@3407
   554
 *  \sa SDL_MaximizeWindow()
slouken@3407
   555
 *  \sa SDL_MinimizeWindow()
slouken@1895
   556
 */
slouken@3685
   557
extern DECLSPEC void SDLCALL SDL_RestoreWindow(SDL_Window * window);
slouken@1895
   558
slouken@1895
   559
/**
slouken@4883
   560
 *  \brief Set a window's fullscreen state.
slouken@3407
   561
 *  
slouken@3407
   562
 *  \return 0 on success, or -1 if setting the display mode failed.
slouken@3407
   563
 *  
slouken@3522
   564
 *  \sa SDL_SetWindowDisplayMode()
slouken@3522
   565
 *  \sa SDL_GetWindowDisplayMode()
slouken@1895
   566
 */
slouken@3685
   567
extern DECLSPEC int SDLCALL SDL_SetWindowFullscreen(SDL_Window * window,
slouken@5246
   568
                                                    SDL_bool fullscreen);
slouken@1895
   569
slouken@1895
   570
/**
slouken@5546
   571
 *  \brief Get the SDL surface associated with the window.
slouken@5166
   572
 *
slouken@5546
   573
 *  \return The window's framebuffer surface, or NULL on error. 
slouken@5546
   574
 *
slouken@5546
   575
 *  A new surface will be created with the optimal format for the window,
slouken@5546
   576
 *  if necessary. This surface will be freed when the window is destroyed.
slouken@5166
   577
 *
slouken@5166
   578
 *  \note You may not combine this with 3D or the rendering API on this window.
slouken@5166
   579
 *
slouken@5166
   580
 *  \sa SDL_UpdateWindowSurface()
slouken@5166
   581
 *  \sa SDL_UpdateWindowSurfaceRects()
slouken@5166
   582
 */
slouken@5166
   583
extern DECLSPEC SDL_Surface * SDLCALL SDL_GetWindowSurface(SDL_Window * window);
slouken@5166
   584
slouken@5166
   585
/**
slouken@5166
   586
 *  \brief Copy the window surface to the screen.
slouken@5166
   587
 *
slouken@5166
   588
 *  \return 0 on success, or -1 on error.
slouken@5166
   589
 *
slouken@5166
   590
 *  \sa SDL_GetWindowSurface()
slouken@5166
   591
 *  \sa SDL_UpdateWindowSurfaceRects()
slouken@5166
   592
 */
slouken@5166
   593
extern DECLSPEC int SDLCALL SDL_UpdateWindowSurface(SDL_Window * window);
slouken@5166
   594
slouken@5166
   595
/**
slouken@5166
   596
 *  \brief Copy a number of rectangles on the window surface to the screen.
slouken@5166
   597
 *
slouken@5166
   598
 *  \return 0 on success, or -1 on error.
slouken@5166
   599
 *
slouken@5166
   600
 *  \sa SDL_GetWindowSurface()
slouken@5166
   601
 *  \sa SDL_UpdateWindowSurfaceRect()
slouken@5166
   602
 */
slouken@5166
   603
extern DECLSPEC int SDLCALL SDL_UpdateWindowSurfaceRects(SDL_Window * window,
slouken@5297
   604
                                                         SDL_Rect * rects,
slouken@5297
   605
                                                         int numrects);
slouken@5166
   606
slouken@5166
   607
/**
slouken@4883
   608
 *  \brief Set a window's input grab mode.
slouken@3407
   609
 *  
slouken@5403
   610
 *  \param grabbed This is SDL_TRUE to grab input, and SDL_FALSE to release input.
slouken@3407
   611
 *  
slouken@3407
   612
 *  \sa SDL_GetWindowGrab()
slouken@1895
   613
 */
slouken@3685
   614
extern DECLSPEC void SDLCALL SDL_SetWindowGrab(SDL_Window * window,
slouken@5403
   615
                                               SDL_bool grabbed);
slouken@1895
   616
slouken@1895
   617
/**
slouken@4883
   618
 *  \brief Get a window's input grab mode.
slouken@3407
   619
 *  
slouken@5403
   620
 *  \return This returns SDL_TRUE if input is grabbed, and SDL_FALSE otherwise.
slouken@3407
   621
 *  
slouken@3407
   622
 *  \sa SDL_SetWindowGrab()
slouken@1895
   623
 */
slouken@5403
   624
extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowGrab(SDL_Window * window);
slouken@1895
   625
slouken@1895
   626
/**
slouken@5466
   627
 *  \brief Set the brightness (gamma correction) for a window.
slouken@5466
   628
 *  
slouken@5466
   629
 *  \return 0 on success, or -1 if setting the brightness isn't supported.
slouken@5466
   630
 *  
slouken@5466
   631
 *  \sa SDL_GetWindowBrightness()
slouken@5466
   632
 *  \sa SDL_SetWindowGammaRamp()
slouken@5466
   633
 */
slouken@5466
   634
extern DECLSPEC int SDLCALL SDL_SetWindowBrightness(SDL_Window * window, float brightness);
slouken@5466
   635
slouken@5466
   636
/**
slouken@5466
   637
 *  \brief Get the brightness (gamma correction) for a window.
slouken@5466
   638
 *  
slouken@5466
   639
 *  \return The last brightness value passed to SDL_SetWindowBrightness()
slouken@5466
   640
 *  
slouken@5466
   641
 *  \sa SDL_SetWindowBrightness()
slouken@5466
   642
 */
slouken@5466
   643
extern DECLSPEC float SDLCALL SDL_GetWindowBrightness(SDL_Window * window);
slouken@5466
   644
slouken@5466
   645
/**
slouken@5466
   646
 *  \brief Set the gamma ramp for a window.
slouken@5466
   647
 *  
slouken@5466
   648
 *  \param red The translation table for the red channel, or NULL.
slouken@5466
   649
 *  \param green The translation table for the green channel, or NULL.
slouken@5466
   650
 *  \param blue The translation table for the blue channel, or NULL.
slouken@5466
   651
 *  
slouken@5466
   652
 *  \return 0 on success, or -1 if gamma ramps are unsupported.
slouken@5466
   653
 *  
slouken@5466
   654
 *  Set the gamma translation table for the red, green, and blue channels
slouken@5466
   655
 *  of the video hardware.  Each table is an array of 256 16-bit quantities,
slouken@5466
   656
 *  representing a mapping between the input and output for that channel.
slouken@5466
   657
 *  The input is the index into the array, and the output is the 16-bit
slouken@5466
   658
 *  gamma value at that index, scaled to the output color precision.
slouken@5466
   659
 *
slouken@5504
   660
 *  \sa SDL_GetWindowGammaRamp()
slouken@5466
   661
 */
slouken@5466
   662
extern DECLSPEC int SDLCALL SDL_SetWindowGammaRamp(SDL_Window * window,
slouken@5466
   663
                                                   const Uint16 * red,
slouken@5466
   664
                                                   const Uint16 * green,
slouken@5466
   665
                                                   const Uint16 * blue);
slouken@5466
   666
slouken@5466
   667
/**
slouken@5466
   668
 *  \brief Get the gamma ramp for a window.
slouken@5466
   669
 *  
slouken@5466
   670
 *  \param red   A pointer to a 256 element array of 16-bit quantities to hold 
slouken@5466
   671
 *               the translation table for the red channel, or NULL.
slouken@5466
   672
 *  \param green A pointer to a 256 element array of 16-bit quantities to hold 
slouken@5466
   673
 *               the translation table for the green channel, or NULL.
slouken@5466
   674
 *  \param blue  A pointer to a 256 element array of 16-bit quantities to hold 
slouken@5466
   675
 *               the translation table for the blue channel, or NULL.
slouken@5466
   676
 *   
slouken@5466
   677
 *  \return 0 on success, or -1 if gamma ramps are unsupported.
slouken@5466
   678
 *  
slouken@5466
   679
 *  \sa SDL_SetWindowGammaRamp()
slouken@5466
   680
 */
slouken@5466
   681
extern DECLSPEC int SDLCALL SDL_GetWindowGammaRamp(SDL_Window * window,
slouken@5466
   682
                                                   Uint16 * red,
slouken@5466
   683
                                                   Uint16 * green,
slouken@5466
   684
                                                   Uint16 * blue);
slouken@5466
   685
slouken@5466
   686
/**
slouken@3407
   687
 *  \brief Destroy a window.
slouken@1895
   688
 */
slouken@3685
   689
extern DECLSPEC void SDLCALL SDL_DestroyWindow(SDL_Window * window);
slouken@1895
   690
slouken@0
   691
slouken@3025
   692
/**
slouken@4875
   693
 *  \brief Returns whether the screensaver is currently enabled (default on).
slouken@3407
   694
 *  
slouken@3407
   695
 *  \sa SDL_EnableScreenSaver()
slouken@3407
   696
 *  \sa SDL_DisableScreenSaver()
slouken@3025
   697
 */
couriersud@3033
   698
extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenSaverEnabled(void);
slouken@3025
   699
slouken@3025
   700
/**
slouken@3407
   701
 *  \brief Allow the screen to be blanked by a screensaver
slouken@3407
   702
 *  
slouken@3407
   703
 *  \sa SDL_IsScreenSaverEnabled()
slouken@3407
   704
 *  \sa SDL_DisableScreenSaver()
slouken@3025
   705
 */
couriersud@3033
   706
extern DECLSPEC void SDLCALL SDL_EnableScreenSaver(void);
slouken@3025
   707
slouken@3025
   708
/**
slouken@3407
   709
 *  \brief Prevent the screen from being blanked by a screensaver
slouken@3407
   710
 *  
slouken@3407
   711
 *  \sa SDL_IsScreenSaverEnabled()
slouken@3407
   712
 *  \sa SDL_EnableScreenSaver()
slouken@3025
   713
 */
couriersud@3033
   714
extern DECLSPEC void SDLCALL SDL_DisableScreenSaver(void);
slouken@3025
   715
slouken@0
   716
slouken@3407
   717
/**
slouken@3407
   718
 *  \name OpenGL support functions
slouken@3407
   719
 */
slouken@3407
   720
/*@{*/
slouken@0
   721
slouken@1895
   722
/**
slouken@3407
   723
 *  \brief Dynamically load an OpenGL library.
slouken@3407
   724
 *  
slouken@3407
   725
 *  \param path The platform dependent OpenGL library name, or NULL to open the 
slouken@3407
   726
 *              default OpenGL library.
slouken@3407
   727
 *  
slouken@3407
   728
 *  \return 0 on success, or -1 if the library couldn't be loaded.
slouken@3407
   729
 *  
slouken@3407
   730
 *  This should be done after initializing the video driver, but before
slouken@3407
   731
 *  creating any OpenGL windows.  If no OpenGL library is loaded, the default
slouken@3407
   732
 *  library will be loaded upon creation of the first OpenGL window.
slouken@3407
   733
 *  
slouken@3407
   734
 *  \note If you do this, you need to retrieve all of the GL functions used in
slouken@3407
   735
 *        your program from the dynamic library using SDL_GL_GetProcAddress().
slouken@3407
   736
 *  
slouken@3407
   737
 *  \sa SDL_GL_GetProcAddress()
slouken@3407
   738
 *  \sa SDL_GL_UnloadLibrary()
slouken@0
   739
 */
slouken@337
   740
extern DECLSPEC int SDLCALL SDL_GL_LoadLibrary(const char *path);
slouken@0
   741
slouken@1895
   742
/**
slouken@3407
   743
 *  \brief Get the address of an OpenGL function.
slouken@0
   744
 */
slouken@1895
   745
extern DECLSPEC void *SDLCALL SDL_GL_GetProcAddress(const char *proc);
slouken@0
   746
slouken@1895
   747
/**
slouken@3407
   748
 *  \brief Unload the OpenGL library previously loaded by SDL_GL_LoadLibrary().
slouken@3407
   749
 *  
slouken@3407
   750
 *  \sa SDL_GL_LoadLibrary()
slouken@3057
   751
 */
slouken@3057
   752
extern DECLSPEC void SDLCALL SDL_GL_UnloadLibrary(void);
slouken@3057
   753
slouken@3057
   754
/**
slouken@3407
   755
 *  \brief Return true if an OpenGL extension is supported for the current 
slouken@3407
   756
 *         context.
slouken@1926
   757
 */
slouken@1926
   758
extern DECLSPEC SDL_bool SDLCALL SDL_GL_ExtensionSupported(const char
slouken@1926
   759
                                                           *extension);
slouken@1926
   760
slouken@1926
   761
/**
slouken@3407
   762
 *  \brief Set an OpenGL window attribute before window creation.
slouken@0
   763
 */
slouken@337
   764
extern DECLSPEC int SDLCALL SDL_GL_SetAttribute(SDL_GLattr attr, int value);
slouken@0
   765
slouken@1895
   766
/**
slouken@3407
   767
 *  \brief Get the actual value for an attribute from the current context.
slouken@0
   768
 */
slouken@1936
   769
extern DECLSPEC int SDLCALL SDL_GL_GetAttribute(SDL_GLattr attr, int *value);
slouken@0
   770
slouken@1895
   771
/**
slouken@3407
   772
 *  \brief Create an OpenGL context for use with an OpenGL window, and make it 
slouken@3407
   773
 *         current.
slouken@3407
   774
 *  
slouken@3407
   775
 *  \sa SDL_GL_DeleteContext()
slouken@1895
   776
 */
slouken@3685
   777
extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_CreateContext(SDL_Window *
slouken@3685
   778
                                                           window);
slouken@1895
   779
slouken@1895
   780
/**
slouken@3407
   781
 *  \brief Set up an OpenGL context for rendering into an OpenGL window.
slouken@3407
   782
 *  
slouken@3407
   783
 *  \note The context must have been created with a compatible window.
slouken@1895
   784
 */
slouken@3685
   785
extern DECLSPEC int SDLCALL SDL_GL_MakeCurrent(SDL_Window * window,
slouken@1895
   786
                                               SDL_GLContext context);
slouken@1895
   787
slouken@1895
   788
/**
slouken@3407
   789
 *  \brief Set the swap interval for the current OpenGL context.
slouken@3407
   790
 *  
slouken@3407
   791
 *  \param interval 0 for immediate updates, 1 for updates synchronized with the
slouken@3407
   792
 *                  vertical retrace.
slouken@3407
   793
 *  
slouken@3407
   794
 *  \return 0 on success, or -1 if setting the swap interval is not supported.
slouken@3407
   795
 *  
slouken@3407
   796
 *  \sa SDL_GL_GetSwapInterval()
slouken@1895
   797
 */
slouken@1895
   798
extern DECLSPEC int SDLCALL SDL_GL_SetSwapInterval(int interval);
slouken@1895
   799
slouken@1895
   800
/**
slouken@3407
   801
 *  \brief Get the swap interval for the current OpenGL context.
slouken@3407
   802
 *  
slouken@3407
   803
 *  \return 0 if there is no vertical retrace synchronization, 1 if the buffer 
slouken@3407
   804
 *          swap is synchronized with the vertical retrace, and -1 if getting 
slouken@3407
   805
 *          the swap interval is not supported.
slouken@3407
   806
 *  
slouken@3407
   807
 *  \sa SDL_GL_SetSwapInterval()
slouken@1895
   808
 */
slouken@1895
   809
extern DECLSPEC int SDLCALL SDL_GL_GetSwapInterval(void);
slouken@1895
   810
slouken@1895
   811
/**
slouken@4883
   812
 * \brief Swap the OpenGL buffers for a window, if double-buffering is 
slouken@3407
   813
 *        supported.
slouken@0
   814
 */
slouken@3685
   815
extern DECLSPEC void SDLCALL SDL_GL_SwapWindow(SDL_Window * window);
slouken@0
   816
slouken@1895
   817
/**
slouken@3407
   818
 *  \brief Delete an OpenGL context.
slouken@3407
   819
 *  
slouken@3407
   820
 *  \sa SDL_GL_CreateContext()
slouken@0
   821
 */
slouken@1895
   822
extern DECLSPEC void SDLCALL SDL_GL_DeleteContext(SDL_GLContext context);
slouken@0
   823
slouken@3407
   824
/*@}*//*OpenGL support functions*/
slouken@3407
   825
slouken@0
   826
slouken@0
   827
/* Ends C function definitions when using C++ */
slouken@0
   828
#ifdef __cplusplus
slouken@1895
   829
/* *INDENT-OFF* */
slouken@0
   830
}
slouken@1895
   831
/* *INDENT-ON* */
slouken@0
   832
#endif
slouken@0
   833
#include "close_code.h"
slouken@0
   834
slouken@0
   835
#endif /* _SDL_video_h */
slouken@1895
   836
slouken@1895
   837
/* vi: set ts=4 sw=4 expandtab: */