mirror of https://github.com/libsdl-org/SDL
WinRT: more "Windows RT" to "WinRT" renaming
This commit is contained in:
parent
3070086431
commit
1e78c4a5d1
|
@ -40,7 +40,7 @@
|
|||
#define SDL_MAIN_AVAILABLE
|
||||
|
||||
#elif defined(__WINRT__)
|
||||
/* On Windows RT, SDL provides a main function that initializes CoreApplication,
|
||||
/* On WinRT, SDL provides a main function that initializes CoreApplication,
|
||||
creating an instance of IFrameworkView in the process.
|
||||
|
||||
Please note that #include'ing SDL_main.h is not enough to get a main()
|
||||
|
|
|
@ -73,7 +73,7 @@
|
|||
#ifdef HAVE_MATH_H
|
||||
# if defined(__WINRT__)
|
||||
/* Defining _USE_MATH_DEFINES is required to get M_PI to be defined on
|
||||
Windows RT. See http://msdn.microsoft.com/en-us/library/4hwaceh6.aspx
|
||||
WinRT. See http://msdn.microsoft.com/en-us/library/4hwaceh6.aspx
|
||||
for more information.
|
||||
*/
|
||||
# define _USE_MATH_DEFINES
|
||||
|
|
|
@ -94,11 +94,11 @@ extern DECLSPEC const char * SDLCALL SDL_AndroidGetExternalStoragePath();
|
|||
#endif /* __ANDROID__ */
|
||||
|
||||
|
||||
/* Platform specific functions for Windows RT */
|
||||
/* Platform specific functions for WinRT */
|
||||
#if defined(__WINRT__) && __WINRT__
|
||||
|
||||
/**
|
||||
* \brief Windows RT / Windows Phone path types
|
||||
* \brief WinRT / Windows Phone path types
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
|
@ -122,9 +122,9 @@ typedef enum
|
|||
|
||||
|
||||
/**
|
||||
* \brief Retrieves a Windows RT defined path on the local file system
|
||||
* \brief Retrieves a WinRT defined path on the local file system
|
||||
*
|
||||
* \note Documentation on most app-specific path types on Windows RT
|
||||
* \note Documentation on most app-specific path types on WinRT
|
||||
* can be found on MSDN, at the URL:
|
||||
* http://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx
|
||||
*
|
||||
|
@ -139,9 +139,9 @@ typedef enum
|
|||
extern DECLSPEC const wchar_t * SDLCALL SDL_WinRTGetFSPathUNICODE(SDL_WinRT_Path pathType);
|
||||
|
||||
/**
|
||||
* \brief Retrieves a Windows RT defined path on the local file system
|
||||
* \brief Retrieves a WinRT defined path on the local file system
|
||||
*
|
||||
* \note Documentation on most app-specific path types on Windows RT
|
||||
* \note Documentation on most app-specific path types on WinRT
|
||||
* can be found on MSDN, at the URL:
|
||||
* http://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx
|
||||
*
|
||||
|
|
|
@ -177,7 +177,7 @@ struct SDL_SysWMinfo
|
|||
#if defined(SDL_VIDEO_DRIVER_WINRT)
|
||||
struct
|
||||
{
|
||||
IUnknown * window; /**< The Windows RT CoreWindow */
|
||||
IUnknown * window; /**< The WinRT CoreWindow */
|
||||
} winrt;
|
||||
#endif
|
||||
#if defined(SDL_VIDEO_DRIVER_X11)
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
/* WinRT NOTICE:
|
||||
|
||||
A number of changes were warranted to SDL's XAudio2 backend in order to
|
||||
get it compiling for Windows RT.
|
||||
get it compiling for WinRT.
|
||||
|
||||
When compiling for WinRT, XAudio2.h requires that it be compiled in a C++
|
||||
file, and not a straight C file. Trying to compile it as C leads to lots
|
||||
|
@ -57,13 +57,13 @@
|
|||
http://blogs.msdn.com/b/chuckw/archive/2012/04/02/xaudio2-and-windows-8-consumer-preview.aspx
|
||||
|
||||
1. Windows' thread synchronization function, CreateSemaphore, was removed
|
||||
from Windows RT. SDL's semaphore API was substituted instead.
|
||||
from WinRT. SDL's semaphore API was substituted instead.
|
||||
2. The method calls, IXAudio2::GetDeviceCount and IXAudio2::GetDeviceDetails
|
||||
were removed from the XAudio2 API. Microsoft is telling developers to
|
||||
use APIs in Windows::Foundation instead.
|
||||
For SDL, the missing methods were reimplemented using the APIs Microsoft
|
||||
said to use.
|
||||
3. CoInitialize and CoUninitialize are not available in Windows RT.
|
||||
3. CoInitialize and CoUninitialize are not available in WinRT.
|
||||
These calls were removed, as COM will have been initialized earlier,
|
||||
at least by the call to the WinRT app's main function
|
||||
(aka 'int main(Platform::Array<Platform::String^>^)). (DLudwig:
|
||||
|
@ -71,7 +71,7 @@
|
|||
a tag of [MTAThread], which should initialize COM. My understanding
|
||||
of COM is somewhat limited, and I may be incorrect here.)
|
||||
4. IXAudio2::CreateMasteringVoice changed its integer-based 'DeviceIndex'
|
||||
argument to a string-based one, 'szDeviceId'. In Windows RT, the
|
||||
argument to a string-based one, 'szDeviceId'. In WinRT, the
|
||||
string-based argument will be used.
|
||||
*/
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#pragma once
|
||||
|
||||
//
|
||||
// Re-implementation of methods removed from XAudio2 (in Windows RT):
|
||||
// Re-implementation of methods removed from XAudio2 (in WinRT):
|
||||
//
|
||||
|
||||
typedef struct XAUDIO2_DEVICE_DETAILS
|
||||
|
@ -22,19 +22,19 @@ HRESULT IXAudio2_GetDeviceDetails(IXAudio2 * unused, UINT32 index, XAUDIO2_DEVIC
|
|||
// C-style macros to call XAudio2's methods in C++:
|
||||
//
|
||||
|
||||
#define IXAudio2_CreateMasteringVoice(A, B, C, D, E, F, G) (A)->CreateMasteringVoice((B), (C), (D), (E), (F), (G))
|
||||
#define IXAudio2_CreateSourceVoice(A, B, C, D, E, F, G, H) (A)->CreateSourceVoice((B), (C), (D), (E), (F), (G), (H))
|
||||
#define IXAudio2_QueryInterface(A, B, C) (A)->QueryInterface((B), (C))
|
||||
#define IXAudio2_Release(A) (A)->Release()
|
||||
#define IXAudio2_StartEngine(A) (A)->StartEngine()
|
||||
#define IXAudio2_StopEngine(A) (A)->StopEngine()
|
||||
|
||||
#define IXAudio2MasteringVoice_DestroyVoice(A) (A)->DestroyVoice()
|
||||
|
||||
#define IXAudio2SourceVoice_DestroyVoice(A) (A)->DestroyVoice()
|
||||
#define IXAudio2SourceVoice_Discontinuity(A) (A)->Discontinuity()
|
||||
#define IXAudio2SourceVoice_FlushSourceBuffers(A) (A)->FlushSourceBuffers()
|
||||
#define IXAudio2SourceVoice_GetState(A, B) (A)->GetState((B))
|
||||
#define IXAudio2SourceVoice_Start(A, B, C) (A)->Start((B), (C))
|
||||
#define IXAudio2SourceVoice_Stop(A, B, C) (A)->Stop((B), (C))
|
||||
#define IXAudio2SourceVoice_SubmitSourceBuffer(A, B, C) (A)->SubmitSourceBuffer((B), (C))
|
||||
#define IXAudio2_CreateMasteringVoice(A, B, C, D, E, F, G) (A)->CreateMasteringVoice((B), (C), (D), (E), (F), (G))
|
||||
#define IXAudio2_CreateSourceVoice(A, B, C, D, E, F, G, H) (A)->CreateSourceVoice((B), (C), (D), (E), (F), (G), (H))
|
||||
#define IXAudio2_QueryInterface(A, B, C) (A)->QueryInterface((B), (C))
|
||||
#define IXAudio2_Release(A) (A)->Release()
|
||||
#define IXAudio2_StartEngine(A) (A)->StartEngine()
|
||||
#define IXAudio2_StopEngine(A) (A)->StopEngine()
|
||||
|
||||
#define IXAudio2MasteringVoice_DestroyVoice(A) (A)->DestroyVoice()
|
||||
|
||||
#define IXAudio2SourceVoice_DestroyVoice(A) (A)->DestroyVoice()
|
||||
#define IXAudio2SourceVoice_Discontinuity(A) (A)->Discontinuity()
|
||||
#define IXAudio2SourceVoice_FlushSourceBuffers(A) (A)->FlushSourceBuffers()
|
||||
#define IXAudio2SourceVoice_GetState(A, B) (A)->GetState((B))
|
||||
#define IXAudio2SourceVoice_Start(A, B, C) (A)->Start((B), (C))
|
||||
#define IXAudio2SourceVoice_Stop(A, B, C) (A)->Stop((B), (C))
|
||||
#define IXAudio2SourceVoice_SubmitSourceBuffer(A, B, C) (A)->SubmitSourceBuffer((B), (C))
|
||||
|
|
|
@ -56,7 +56,7 @@ extern SDL_VideoDevice * WINRT_GlobalSDLVideoDevice;
|
|||
typedef int (*SDL_WinRT_MainFunction)(int, char **);
|
||||
static SDL_WinRT_MainFunction SDL_WinRT_main = nullptr;
|
||||
|
||||
// HACK, DLudwig: record a reference to the global, Windows RT 'app'/view.
|
||||
// HACK, DLudwig: record a reference to the global, WinRT 'app'/view.
|
||||
// SDL/WinRT will use this throughout its code.
|
||||
//
|
||||
// TODO, WinRT: consider replacing SDL_WinRTGlobalApp with something
|
||||
|
@ -129,7 +129,7 @@ static void WINRT_SetDisplayOrientationsPreference(void *userdata, const char *n
|
|||
|
||||
// Set the orientation/rotation preferences. Please note that this does
|
||||
// not constitute a 100%-certain lock of a given set of possible
|
||||
// orientations. According to Microsoft's documentation on Windows RT [1]
|
||||
// orientations. According to Microsoft's documentation on WinRT [1]
|
||||
// when a device is not capable of being rotated, Windows may ignore
|
||||
// the orientation preferences, and stick to what the device is capable of
|
||||
// displaying.
|
||||
|
|
|
@ -1,159 +1,159 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2012 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
*/
|
||||
|
||||
#include "SDL_config.h"
|
||||
|
||||
#if SDL_VIDEO_DRIVER_WINRT
|
||||
|
||||
/*
|
||||
* Windows includes:
|
||||
*/
|
||||
#include <Windows.h>
|
||||
using namespace Windows::UI::Core;
|
||||
using Windows::UI::Core::CoreCursor;
|
||||
|
||||
/*
|
||||
* SDL includes:
|
||||
*/
|
||||
extern "C" {
|
||||
#include "SDL_assert.h"
|
||||
#include "../../events/SDL_mouse_c.h"
|
||||
#include "../SDL_sysvideo.h"
|
||||
#include "SDL_events.h"
|
||||
#include "SDL_log.h"
|
||||
}
|
||||
|
||||
#include "../../core/winrt/SDL_winrtapp.h"
|
||||
#include "SDL_winrtmouse.h"
|
||||
|
||||
|
||||
static SDL_bool WINRT_UseRelativeMouseMode = SDL_FALSE;
|
||||
|
||||
|
||||
static SDL_Cursor *
|
||||
WINRT_CreateSystemCursor(SDL_SystemCursor id)
|
||||
{
|
||||
SDL_Cursor *cursor;
|
||||
CoreCursorType cursorType = CoreCursorType::Arrow;
|
||||
|
||||
switch(id)
|
||||
{
|
||||
default:
|
||||
SDL_assert(0);
|
||||
return NULL;
|
||||
case SDL_SYSTEM_CURSOR_ARROW: cursorType = CoreCursorType::Arrow; break;
|
||||
case SDL_SYSTEM_CURSOR_IBEAM: cursorType = CoreCursorType::IBeam; break;
|
||||
case SDL_SYSTEM_CURSOR_WAIT: cursorType = CoreCursorType::Wait; break;
|
||||
case SDL_SYSTEM_CURSOR_CROSSHAIR: cursorType = CoreCursorType::Cross; break;
|
||||
case SDL_SYSTEM_CURSOR_WAITARROW: cursorType = CoreCursorType::Wait; break;
|
||||
case SDL_SYSTEM_CURSOR_SIZENWSE: cursorType = CoreCursorType::SizeNorthwestSoutheast; break;
|
||||
case SDL_SYSTEM_CURSOR_SIZENESW: cursorType = CoreCursorType::SizeNortheastSouthwest; break;
|
||||
case SDL_SYSTEM_CURSOR_SIZEWE: cursorType = CoreCursorType::SizeWestEast; break;
|
||||
case SDL_SYSTEM_CURSOR_SIZENS: cursorType = CoreCursorType::SizeNorthSouth; break;
|
||||
case SDL_SYSTEM_CURSOR_SIZEALL: cursorType = CoreCursorType::SizeAll; break;
|
||||
case SDL_SYSTEM_CURSOR_NO: cursorType = CoreCursorType::UniversalNo; break;
|
||||
case SDL_SYSTEM_CURSOR_HAND: cursorType = CoreCursorType::Hand; break;
|
||||
}
|
||||
|
||||
cursor = (SDL_Cursor *) SDL_calloc(1, sizeof(*cursor));
|
||||
if (cursor) {
|
||||
/* Create a pointer to a COM reference to a cursor. The extra
|
||||
pointer is used (on top of the COM reference) to allow the cursor
|
||||
to be referenced by the SDL_cursor's driverdata field, which is
|
||||
a void pointer.
|
||||
*/
|
||||
CoreCursor ^* theCursor = new CoreCursor^(nullptr);
|
||||
*theCursor = ref new CoreCursor(cursorType, 0);
|
||||
cursor->driverdata = (void *) theCursor;
|
||||
} else {
|
||||
SDL_OutOfMemory();
|
||||
}
|
||||
|
||||
return cursor;
|
||||
}
|
||||
|
||||
static SDL_Cursor *
|
||||
WINRT_CreateDefaultCursor()
|
||||
{
|
||||
return WINRT_CreateSystemCursor(SDL_SYSTEM_CURSOR_ARROW);
|
||||
}
|
||||
|
||||
static void
|
||||
WINRT_FreeCursor(SDL_Cursor * cursor)
|
||||
{
|
||||
if (cursor->driverdata) {
|
||||
CoreCursor ^* theCursor = (CoreCursor ^*) cursor->driverdata;
|
||||
*theCursor = nullptr; // Release the COM reference to the CoreCursor
|
||||
delete theCursor; // Delete the pointer to the COM reference
|
||||
}
|
||||
SDL_free(cursor);
|
||||
}
|
||||
|
||||
static int
|
||||
WINRT_ShowCursor(SDL_Cursor * cursor)
|
||||
{
|
||||
if (cursor) {
|
||||
CoreCursor ^* theCursor = (CoreCursor ^*) cursor->driverdata;
|
||||
CoreWindow::GetForCurrentThread()->PointerCursor = *theCursor;
|
||||
} else {
|
||||
CoreWindow::GetForCurrentThread()->PointerCursor = nullptr;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
WINRT_SetRelativeMouseMode(SDL_bool enabled)
|
||||
{
|
||||
WINRT_UseRelativeMouseMode = enabled;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
WINRT_InitMouse(_THIS)
|
||||
{
|
||||
SDL_Mouse *mouse = SDL_GetMouse();
|
||||
|
||||
/* DLudwig, Dec 3, 2012: Windows RT does not currently provide APIs for
|
||||
the following features, AFAIK:
|
||||
- custom cursors (multiple system cursors are, however, available)
|
||||
- programmatically moveable cursors
|
||||
*/
|
||||
|
||||
#if WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP
|
||||
//mouse->CreateCursor = WINRT_CreateCursor;
|
||||
mouse->CreateSystemCursor = WINRT_CreateSystemCursor;
|
||||
mouse->ShowCursor = WINRT_ShowCursor;
|
||||
mouse->FreeCursor = WINRT_FreeCursor;
|
||||
//mouse->WarpMouse = WINRT_WarpMouse;
|
||||
mouse->SetRelativeMouseMode = WINRT_SetRelativeMouseMode;
|
||||
|
||||
SDL_SetDefaultCursor(WINRT_CreateDefaultCursor());
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
WINRT_QuitMouse(_THIS)
|
||||
{
|
||||
}
|
||||
|
||||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2012 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
*/
|
||||
|
||||
#include "SDL_config.h"
|
||||
|
||||
#if SDL_VIDEO_DRIVER_WINRT
|
||||
|
||||
/*
|
||||
* Windows includes:
|
||||
*/
|
||||
#include <Windows.h>
|
||||
using namespace Windows::UI::Core;
|
||||
using Windows::UI::Core::CoreCursor;
|
||||
|
||||
/*
|
||||
* SDL includes:
|
||||
*/
|
||||
extern "C" {
|
||||
#include "SDL_assert.h"
|
||||
#include "../../events/SDL_mouse_c.h"
|
||||
#include "../SDL_sysvideo.h"
|
||||
#include "SDL_events.h"
|
||||
#include "SDL_log.h"
|
||||
}
|
||||
|
||||
#include "../../core/winrt/SDL_winrtapp.h"
|
||||
#include "SDL_winrtmouse.h"
|
||||
|
||||
|
||||
static SDL_bool WINRT_UseRelativeMouseMode = SDL_FALSE;
|
||||
|
||||
|
||||
static SDL_Cursor *
|
||||
WINRT_CreateSystemCursor(SDL_SystemCursor id)
|
||||
{
|
||||
SDL_Cursor *cursor;
|
||||
CoreCursorType cursorType = CoreCursorType::Arrow;
|
||||
|
||||
switch(id)
|
||||
{
|
||||
default:
|
||||
SDL_assert(0);
|
||||
return NULL;
|
||||
case SDL_SYSTEM_CURSOR_ARROW: cursorType = CoreCursorType::Arrow; break;
|
||||
case SDL_SYSTEM_CURSOR_IBEAM: cursorType = CoreCursorType::IBeam; break;
|
||||
case SDL_SYSTEM_CURSOR_WAIT: cursorType = CoreCursorType::Wait; break;
|
||||
case SDL_SYSTEM_CURSOR_CROSSHAIR: cursorType = CoreCursorType::Cross; break;
|
||||
case SDL_SYSTEM_CURSOR_WAITARROW: cursorType = CoreCursorType::Wait; break;
|
||||
case SDL_SYSTEM_CURSOR_SIZENWSE: cursorType = CoreCursorType::SizeNorthwestSoutheast; break;
|
||||
case SDL_SYSTEM_CURSOR_SIZENESW: cursorType = CoreCursorType::SizeNortheastSouthwest; break;
|
||||
case SDL_SYSTEM_CURSOR_SIZEWE: cursorType = CoreCursorType::SizeWestEast; break;
|
||||
case SDL_SYSTEM_CURSOR_SIZENS: cursorType = CoreCursorType::SizeNorthSouth; break;
|
||||
case SDL_SYSTEM_CURSOR_SIZEALL: cursorType = CoreCursorType::SizeAll; break;
|
||||
case SDL_SYSTEM_CURSOR_NO: cursorType = CoreCursorType::UniversalNo; break;
|
||||
case SDL_SYSTEM_CURSOR_HAND: cursorType = CoreCursorType::Hand; break;
|
||||
}
|
||||
|
||||
cursor = (SDL_Cursor *) SDL_calloc(1, sizeof(*cursor));
|
||||
if (cursor) {
|
||||
/* Create a pointer to a COM reference to a cursor. The extra
|
||||
pointer is used (on top of the COM reference) to allow the cursor
|
||||
to be referenced by the SDL_cursor's driverdata field, which is
|
||||
a void pointer.
|
||||
*/
|
||||
CoreCursor ^* theCursor = new CoreCursor^(nullptr);
|
||||
*theCursor = ref new CoreCursor(cursorType, 0);
|
||||
cursor->driverdata = (void *) theCursor;
|
||||
} else {
|
||||
SDL_OutOfMemory();
|
||||
}
|
||||
|
||||
return cursor;
|
||||
}
|
||||
|
||||
static SDL_Cursor *
|
||||
WINRT_CreateDefaultCursor()
|
||||
{
|
||||
return WINRT_CreateSystemCursor(SDL_SYSTEM_CURSOR_ARROW);
|
||||
}
|
||||
|
||||
static void
|
||||
WINRT_FreeCursor(SDL_Cursor * cursor)
|
||||
{
|
||||
if (cursor->driverdata) {
|
||||
CoreCursor ^* theCursor = (CoreCursor ^*) cursor->driverdata;
|
||||
*theCursor = nullptr; // Release the COM reference to the CoreCursor
|
||||
delete theCursor; // Delete the pointer to the COM reference
|
||||
}
|
||||
SDL_free(cursor);
|
||||
}
|
||||
|
||||
static int
|
||||
WINRT_ShowCursor(SDL_Cursor * cursor)
|
||||
{
|
||||
if (cursor) {
|
||||
CoreCursor ^* theCursor = (CoreCursor ^*) cursor->driverdata;
|
||||
CoreWindow::GetForCurrentThread()->PointerCursor = *theCursor;
|
||||
} else {
|
||||
CoreWindow::GetForCurrentThread()->PointerCursor = nullptr;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
WINRT_SetRelativeMouseMode(SDL_bool enabled)
|
||||
{
|
||||
WINRT_UseRelativeMouseMode = enabled;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
WINRT_InitMouse(_THIS)
|
||||
{
|
||||
SDL_Mouse *mouse = SDL_GetMouse();
|
||||
|
||||
/* DLudwig, Dec 3, 2012: WinRT does not currently provide APIs for
|
||||
the following features, AFAIK:
|
||||
- custom cursors (multiple system cursors are, however, available)
|
||||
- programmatically moveable cursors
|
||||
*/
|
||||
|
||||
#if WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP
|
||||
//mouse->CreateCursor = WINRT_CreateCursor;
|
||||
mouse->CreateSystemCursor = WINRT_CreateSystemCursor;
|
||||
mouse->ShowCursor = WINRT_ShowCursor;
|
||||
mouse->FreeCursor = WINRT_FreeCursor;
|
||||
//mouse->WarpMouse = WINRT_WarpMouse;
|
||||
mouse->SetRelativeMouseMode = WINRT_SetRelativeMouseMode;
|
||||
|
||||
SDL_SetDefaultCursor(WINRT_CreateDefaultCursor());
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
WINRT_QuitMouse(_THIS)
|
||||
{
|
||||
}
|
||||
|
||||
// Applies necessary geometric transformations to raw cursor positions:
|
||||
static Windows::Foundation::Point
|
||||
TransformCursor(SDL_Window * window, Windows::Foundation::Point rawPosition)
|
||||
|
@ -166,8 +166,8 @@ TransformCursor(SDL_Window * window, Windows::Foundation::Point rawPosition)
|
|||
outputPosition.X = rawPosition.X * (((float32)window->w) / nativeWindow->Bounds.Width);
|
||||
outputPosition.Y = rawPosition.Y * (((float32)window->h) / nativeWindow->Bounds.Height);
|
||||
return outputPosition;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static inline int
|
||||
_lround(float arg)
|
||||
{
|
||||
|
@ -176,15 +176,15 @@ _lround(float arg)
|
|||
} else {
|
||||
return (int)ceil(arg - 0.5f);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
WINRT_ProcessMouseMovedEvent(SDL_Window * window, Windows::Devices::Input::MouseEventArgs ^args)
|
||||
{
|
||||
if (!window || !WINRT_UseRelativeMouseMode) {
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
WINRT_ProcessMouseMovedEvent(SDL_Window * window, Windows::Devices::Input::MouseEventArgs ^args)
|
||||
{
|
||||
if (!window || !WINRT_UseRelativeMouseMode) {
|
||||
return;
|
||||
}
|
||||
|
||||
// DLudwig, 2012-12-28: On some systems, namely Visual Studio's Windows
|
||||
// Simulator, as well as Windows 8 in a Parallels 8 VM, MouseEventArgs'
|
||||
// MouseDelta field often reports very large values. More information
|
||||
|
@ -228,7 +228,7 @@ WINRT_ProcessMouseMovedEvent(SDL_Window * window, Windows::Devices::Input::Mouse
|
|||
//
|
||||
// One possible workaround would be to programmatically set the cursor's
|
||||
// position to the screen's center (when SDL's relative mouse mode is enabled),
|
||||
// however Windows RT does not yet seem to have the ability to set the cursor's
|
||||
// however WinRT does not yet seem to have the ability to set the cursor's
|
||||
// position via a public API. Win32 did this via an API call, SetCursorPos,
|
||||
// however WinRT makes this function be private. Apps that use it won't get
|
||||
// approved for distribution in the Windows Store. I've yet to be able to find
|
||||
|
@ -249,8 +249,8 @@ WINRT_ProcessMouseMovedEvent(SDL_Window * window, Windows::Devices::Input::Mouse
|
|||
1,
|
||||
_lround(mouseDeltaInSDLWindowCoords.X),
|
||||
_lround(mouseDeltaInSDLWindowCoords.Y));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static Uint8
|
||||
WINRT_GetSDLButtonForPointerPoint(Windows::UI::Input::PointerPoint ^pt)
|
||||
{
|
||||
|
@ -331,10 +331,10 @@ WINRT_LogPointerEvent(const char * header, PointerEventArgs ^ args, Windows::Fou
|
|||
pt->FrameId,
|
||||
pt->PointerId,
|
||||
WINRT_ConvertPointerUpdateKindToString(args->CurrentPoint->Properties->PointerUpdateKind));
|
||||
}
|
||||
|
||||
void
|
||||
WINRT_ProcessPointerMovedEvent(SDL_Window *window, Windows::UI::Core::PointerEventArgs ^args)
|
||||
}
|
||||
|
||||
void
|
||||
WINRT_ProcessPointerMovedEvent(SDL_Window *window, Windows::UI::Core::PointerEventArgs ^args)
|
||||
{
|
||||
#if LOG_POINTER_EVENTS
|
||||
WINRT_LogPointerEvent("pointer moved", args, TransformCursor(args->CurrentPoint->Position));
|
||||
|
@ -346,9 +346,9 @@ WINRT_ProcessPointerMovedEvent(SDL_Window *window, Windows::UI::Core::PointerEve
|
|||
|
||||
Windows::Foundation::Point transformedPoint = TransformCursor(window, args->CurrentPoint->Position);
|
||||
SDL_SendMouseMotion(window, 0, 0, (int)transformedPoint.X, (int)transformedPoint.Y);
|
||||
}
|
||||
|
||||
void
|
||||
}
|
||||
|
||||
void
|
||||
WINRT_ProcessPointerWheelChangedEvent(SDL_Window *window, Windows::UI::Core::PointerEventArgs ^args)
|
||||
{
|
||||
#if LOG_POINTER_EVENTS
|
||||
|
@ -362,8 +362,8 @@ WINRT_ProcessPointerWheelChangedEvent(SDL_Window *window, Windows::UI::Core::Poi
|
|||
// FIXME: This may need to accumulate deltas up to WHEEL_DELTA
|
||||
short motion = args->CurrentPoint->Properties->MouseWheelDelta / WHEEL_DELTA;
|
||||
SDL_SendMouseWheel(window, 0, 0, motion);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void WINRT_ProcessPointerReleasedEvent(SDL_Window *window, Windows::UI::Core::PointerEventArgs ^args)
|
||||
{
|
||||
#if LOG_POINTER_EVENTS
|
||||
|
@ -378,8 +378,8 @@ void WINRT_ProcessPointerReleasedEvent(SDL_Window *window, Windows::UI::Core::Po
|
|||
if (button) {
|
||||
SDL_SendMouseButton(window, 0, SDL_RELEASED, button);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void WINRT_ProcessPointerPressedEvent(SDL_Window *window, Windows::UI::Core::PointerEventArgs ^args)
|
||||
{
|
||||
#if LOG_POINTER_EVENTS
|
||||
|
@ -394,8 +394,8 @@ void WINRT_ProcessPointerPressedEvent(SDL_Window *window, Windows::UI::Core::Poi
|
|||
if (button) {
|
||||
SDL_SendMouseButton(window, 0, SDL_PRESSED, button);
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* SDL_VIDEO_DRIVER_WINRT */
|
||||
|
||||
/* vi: set ts=4 sw=4 expandtab: */
|
||||
}
|
||||
|
||||
#endif /* SDL_VIDEO_DRIVER_WINRT */
|
||||
|
||||
/* vi: set ts=4 sw=4 expandtab: */
|
||||
|
|
|
@ -132,7 +132,7 @@ WINRT_CreateDevice(int devindex)
|
|||
|
||||
#define WINRTVID_DRIVER_NAME "winrt"
|
||||
VideoBootStrap WINRT_bootstrap = {
|
||||
WINRTVID_DRIVER_NAME, "SDL Windows RT video driver",
|
||||
WINRTVID_DRIVER_NAME, "SDL WinRT video driver",
|
||||
WINRT_Available, WINRT_CreateDevice
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue