src/video/winrt/SDL_winrtvideo_cpp.h
author Sam Lantinga
Sat, 02 Jan 2016 10:10:34 -0800
changeset 9998 f67cf37e9cd4
parent 9931 0bb3dd1c95f2
child 10222 29d7289e9055
permissions -rw-r--r--
Updated copyright to 2016
dludwig@8512
     1
/*
dludwig@8512
     2
  Simple DirectMedia Layer
slouken@9998
     3
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
dludwig@8512
     4
dludwig@8512
     5
  This software is provided 'as-is', without any express or implied
dludwig@8512
     6
  warranty.  In no event will the authors be held liable for any damages
dludwig@8512
     7
  arising from the use of this software.
dludwig@8512
     8
dludwig@8512
     9
  Permission is granted to anyone to use this software for any purpose,
dludwig@8512
    10
  including commercial applications, and to alter it and redistribute it
dludwig@8512
    11
  freely, subject to the following restrictions:
dludwig@8512
    12
dludwig@8512
    13
  1. The origin of this software must not be misrepresented; you must not
dludwig@8512
    14
     claim that you wrote the original software. If you use this software
dludwig@8512
    15
     in a product, an acknowledgment in the product documentation would be
dludwig@8512
    16
     appreciated but is not required.
dludwig@8512
    17
  2. Altered source versions must be plainly marked as such, and must not be
dludwig@8512
    18
     misrepresented as being the original software.
dludwig@8512
    19
  3. This notice may not be removed or altered from any source distribution.
dludwig@8512
    20
*/
dludwig@8512
    21
dludwig@8512
    22
/* Windows includes: */
dludwig@8512
    23
#include <windows.h>
dludwig@8512
    24
#ifdef __cplusplus_winrt
dludwig@8512
    25
#include <agile.h>
dludwig@8512
    26
#endif
dludwig@8512
    27
dludwig@8512
    28
/* SDL includes: */
dludwig@8541
    29
#include "SDL_video.h"
dludwig@8512
    30
#include "SDL_events.h"
dludwig@8512
    31
dludwig@9924
    32
#if NTDDI_VERSION >= NTDDI_WINBLUE  /* ApplicationView's functionality only becomes
dludwig@9924
    33
                                       useful for SDL in Win[Phone] 8.1 and up.
dludwig@9924
    34
                                       Plus, it is not available at all in WinPhone 8.0. */
dludwig@9924
    35
#define SDL_WINRT_USE_APPLICATIONVIEW 1
dludwig@9924
    36
#endif
dludwig@9924
    37
dludwig@8541
    38
extern "C" {
dludwig@8541
    39
#include "../SDL_sysvideo.h"
dludwig@8545
    40
#include "../SDL_egl_c.h"
dludwig@8541
    41
}
dludwig@8541
    42
dludwig@8663
    43
/* Private display data */
dludwig@8663
    44
typedef struct SDL_VideoData {
dludwig@8663
    45
    /* An object created by ANGLE/WinRT (OpenGL ES 2 for WinRT) that gets
dludwig@8663
    46
     * passed to eglGetDisplay and eglCreateWindowSurface:
dludwig@8663
    47
     */
dludwig@8663
    48
    IUnknown *winrtEglWindow;
dludwig@8663
    49
} SDL_VideoData;
dludwig@8512
    50
dludwig@8515
    51
/* The global, WinRT, SDL Window.
dludwig@8515
    52
   For now, SDL/WinRT only supports one window (due to platform limitations of
dludwig@8515
    53
   WinRT.
dludwig@8515
    54
*/
dludwig@8515
    55
extern SDL_Window * WINRT_GlobalSDLWindow;
dludwig@8515
    56
dludwig@9924
    57
/* Updates one or more SDL_Window flags, by querying the OS' native windowing APIs.
dludwig@9924
    58
   SDL_Window flags that can be updated should be specified in 'mask'.
slouken@8582
    59
*/
dludwig@9924
    60
extern void WINRT_UpdateWindowFlags(SDL_Window * window, Uint32 mask);
dludwig@9924
    61
extern "C" Uint32 WINRT_DetectWindowFlags(SDL_Window * window);  /* detects flags w/o applying them */
slouken@8582
    62
slouken@8582
    63
/* Display mode internals */
dludwig@9924
    64
//typedef struct
dludwig@9924
    65
//{
dludwig@9924
    66
//    Windows::Graphics::Display::DisplayOrientations currentOrientation;
dludwig@9924
    67
//} SDL_DisplayModeData;
dludwig@8515
    68
dludwig@8512
    69
#ifdef __cplusplus_winrt
dludwig@8512
    70
dludwig@8755
    71
/* A convenience macro to get a WinRT display property */
dludwig@8755
    72
#if NTDDI_VERSION > NTDDI_WIN8
dludwig@8755
    73
#define WINRT_DISPLAY_PROPERTY(NAME) (Windows::Graphics::Display::DisplayInformation::GetForCurrentView()->NAME)
dludwig@8755
    74
#else
dludwig@8755
    75
#define WINRT_DISPLAY_PROPERTY(NAME) (Windows::Graphics::Display::DisplayProperties::NAME)
dludwig@8755
    76
#endif
dludwig@8755
    77
dludwig@9931
    78
/* Converts DIPS to/from physical pixels */
dludwig@9931
    79
#define WINRT_DIPS_TO_PHYSICAL_PIXELS(DIPS)     ((int)(0.5f + (((float)(DIPS) * (float)WINRT_DISPLAY_PROPERTY(LogicalDpi)) / 96.f)))
dludwig@9931
    80
#define WINRT_PHYSICAL_PIXELS_TO_DIPS(PHYSPIX)  (((float)(PHYSPIX) * 96.f)/WINRT_DISPLAY_PROPERTY(LogicalDpi))
dludwig@9924
    81
dludwig@8512
    82
/* Internal window data */
slouken@8582
    83
struct SDL_WindowData
slouken@8582
    84
{
slouken@8582
    85
    SDL_Window *sdlWindow;
slouken@8582
    86
    Platform::Agile<Windows::UI::Core::CoreWindow> coreWindow;
slouken@8582
    87
#ifdef SDL_VIDEO_OPENGL_EGL
slouken@8582
    88
    EGLSurface egl_surface;
slouken@8582
    89
#endif
dludwig@9924
    90
#if SDL_WINRT_USE_APPLICATIONVIEW
dludwig@9924
    91
    Windows::UI::ViewManagement::ApplicationView ^ appView;
dludwig@9924
    92
#endif
dludwig@8512
    93
};
dludwig@8512
    94
dludwig@8512
    95
#endif // ifdef __cplusplus_winrt