cscg22-gearboy

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

SDL_winrtvideo_cpp.h (2886B)


      1/*
      2  Simple DirectMedia Layer
      3  Copyright (C) 1997-2014 Sam Lantinga <slouken@libsdl.org>
      4
      5  This software is provided 'as-is', without any express or implied
      6  warranty.  In no event will the authors be held liable for any damages
      7  arising from the use of this software.
      8
      9  Permission is granted to anyone to use this software for any purpose,
     10  including commercial applications, and to alter it and redistribute it
     11  freely, subject to the following restrictions:
     12
     13  1. The origin of this software must not be misrepresented; you must not
     14     claim that you wrote the original software. If you use this software
     15     in a product, an acknowledgment in the product documentation would be
     16     appreciated but is not required.
     17  2. Altered source versions must be plainly marked as such, and must not be
     18     misrepresented as being the original software.
     19  3. This notice may not be removed or altered from any source distribution.
     20*/
     21
     22/* Windows includes: */
     23#include <windows.h>
     24#ifdef __cplusplus_winrt
     25#include <agile.h>
     26#endif
     27
     28/* SDL includes: */
     29#include "SDL_video.h"
     30#include "SDL_events.h"
     31
     32extern "C" {
     33#include "../SDL_sysvideo.h"
     34#include "../SDL_egl_c.h"
     35}
     36
     37/* Private display data */
     38typedef struct SDL_VideoData {
     39    /* An object created by ANGLE/WinRT (OpenGL ES 2 for WinRT) that gets
     40     * passed to eglGetDisplay and eglCreateWindowSurface:
     41     */
     42    IUnknown *winrtEglWindow;
     43} SDL_VideoData;
     44
     45/* The global, WinRT, SDL Window.
     46   For now, SDL/WinRT only supports one window (due to platform limitations of
     47   WinRT.
     48*/
     49extern SDL_Window * WINRT_GlobalSDLWindow;
     50
     51/* Creates a display mode for Plain Direct3D (non-XAML) apps, using the lone, native window's settings.
     52
     53   Pass in an allocated SDL_DisplayMode field to store the data in.
     54
     55   This function will return 0 on success, -1 on failure.
     56
     57   If this function succeeds, be sure to call SDL_free on the
     58   SDL_DisplayMode's driverdata field.
     59*/
     60extern int WINRT_CalcDisplayModeUsingNativeWindow(SDL_DisplayMode * mode);
     61
     62/* Duplicates a display mode, copying over driverdata as necessary */
     63extern int WINRT_DuplicateDisplayMode(SDL_DisplayMode * dest, const SDL_DisplayMode * src);
     64
     65/* Display mode internals */
     66typedef struct
     67{
     68    Windows::Graphics::Display::DisplayOrientations currentOrientation;
     69} SDL_DisplayModeData;
     70
     71#ifdef __cplusplus_winrt
     72
     73/* A convenience macro to get a WinRT display property */
     74#if NTDDI_VERSION > NTDDI_WIN8
     75#define WINRT_DISPLAY_PROPERTY(NAME) (Windows::Graphics::Display::DisplayInformation::GetForCurrentView()->NAME)
     76#else
     77#define WINRT_DISPLAY_PROPERTY(NAME) (Windows::Graphics::Display::DisplayProperties::NAME)
     78#endif
     79
     80/* Internal window data */
     81struct SDL_WindowData
     82{
     83    SDL_Window *sdlWindow;
     84    Platform::Agile<Windows::UI::Core::CoreWindow> coreWindow;
     85#ifdef SDL_VIDEO_OPENGL_EGL
     86    EGLSurface egl_surface;
     87#endif
     88};
     89
     90#endif // ifdef __cplusplus_winrt