|
|
@ -6,6 +6,8 @@ |
|
|
|
* - Windows (Win32, Win64) |
|
|
|
* - Linux (X11/Wayland desktop mode) |
|
|
|
* - MacOS (Cocoa) |
|
|
|
* - HTML5 (Emscripten) |
|
|
|
* - Others (untested) |
|
|
|
* |
|
|
|
* LIMITATIONS: |
|
|
|
* - TODO |
|
|
@ -46,7 +48,11 @@ |
|
|
|
* |
|
|
|
**********************************************************************************************/ |
|
|
|
|
|
|
|
#if defined(GRAPHICS_API_OPENGL_ES2)
|
|
|
|
#if defined(PLATFORM_WEB_RGFW)
|
|
|
|
#define RGFW_NO_GL_HEADER
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if defined(GRAPHICS_API_OPENGL_ES2) && !defined(PLATFORM_WEB_RGFW)
|
|
|
|
#define RGFW_OPENGL_ES2
|
|
|
|
#endif
|
|
|
|
|
|
|
@ -80,6 +86,10 @@ void CloseWindow(void); |
|
|
|
#define Size NSSIZE
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define RGFW_MALLOC RL_MALLOC
|
|
|
|
#define RGFW_FREE RL_FREE
|
|
|
|
#define RGFW_CALLOC RL_CALLOC
|
|
|
|
|
|
|
|
#include "../external/RGFW.h"
|
|
|
|
|
|
|
|
#if defined(_WIN32) || defined(_WIN64)
|
|
|
@ -118,6 +128,7 @@ static bool RGFW_disableCursor = false; |
|
|
|
|
|
|
|
static const unsigned short keyMappingRGFW[] = { |
|
|
|
[RGFW_KEY_NULL] = KEY_NULL, |
|
|
|
[RGFW_Return] = KEY_ENTER, |
|
|
|
[RGFW_Quote] = KEY_APOSTROPHE, |
|
|
|
[RGFW_Comma] = KEY_COMMA, |
|
|
|
[RGFW_Minus] = KEY_MINUS, |
|
|
@ -246,7 +257,7 @@ bool WindowShouldClose(void) |
|
|
|
|
|
|
|
// Toggle fullscreen mode
|
|
|
|
void ToggleFullscreen(void) |
|
|
|
{ |
|
|
|
{ |
|
|
|
RGFW_window_maximize(platform.window); |
|
|
|
ToggleBorderlessWindowed(); |
|
|
|
} |
|
|
@ -611,7 +622,7 @@ int GetMonitorPhysicalWidth(int monitor) |
|
|
|
{ |
|
|
|
RGFW_monitor *mons = RGFW_getMonitors(); |
|
|
|
|
|
|
|
return p">(int)mons[monitor].physW; |
|
|
|
return mons[monitor].physW; |
|
|
|
} |
|
|
|
|
|
|
|
// Get selected monitor physical height in millimetres
|
|
|
@ -664,39 +675,42 @@ const char *GetClipboardText(void) |
|
|
|
return RGFW_readClipboard(NULL); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
#if defined(SUPPORT_CLIPBOARD_IMAGE)
|
|
|
|
#if defined(_WIN32)
|
|
|
|
#define WIN32_CLIPBOARD_IMPLEMENTATION
|
|
|
|
#define WINUSER_ALREADY_INCLUDED
|
|
|
|
#define WINBASE_ALREADY_INCLUDED
|
|
|
|
#define WINGDI_ALREADY_INCLUDED
|
|
|
|
#include "../external/win32_clipboard.h"
|
|
|
|
|
|
|
|
#ifdef _WIN32
|
|
|
|
# define WIN32_CLIPBOARD_IMPLEMENTATION
|
|
|
|
# define WINUSER_ALREADY_INCLUDED
|
|
|
|
# define WINBASE_ALREADY_INCLUDED
|
|
|
|
# define WINGDI_ALREADY_INCLUDED
|
|
|
|
# include "../external/win32_clipboard.h"
|
|
|
|
#endif
|
|
|
|
#endif // SUPPORT_CLIPBOARD_IMAGE
|
|
|
|
|
|
|
|
// Get clipboard image
|
|
|
|
Image GetClipboardImage(void) |
|
|
|
{ |
|
|
|
Image image = { 0 }; |
|
|
|
|
|
|
|
#if defined(SUPPORT_CLIPBOARD_IMAGE)
|
|
|
|
#if defined(_WIN32)
|
|
|
|
Image image = {0}; |
|
|
|
unsigned long long int dataSize = 0; |
|
|
|
void *fileData = NULL; |
|
|
|
int width = 0; |
|
|
|
int height = 0; |
|
|
|
void* fileData = NULL; |
|
|
|
|
|
|
|
#ifdef _WIN32
|
|
|
|
int width, height; |
|
|
|
fileData = (void*)Win32GetClipboardImageData(&width, &height, &dataSize); |
|
|
|
|
|
|
|
if (fileData == NULL) TRACELOG(LOG_WARNING, "Clipboard image: Couldn't get clipboard data."); |
|
|
|
else image = LoadImageFromMemory(".bmp", fileData, (int)dataSize); |
|
|
|
#else
|
|
|
|
TRACELOG(LOG_WARNING, "GetClipboardImage() not implemented on target platform"); |
|
|
|
TRACELOG(LOG_WARNING, "Clipboard image: PLATFORM_DESKTOP_RGFW doesn't implement `GetClipboardImage` for this OS"); |
|
|
|
#endif
|
|
|
|
#endif // SUPPORT_CLIPBOARD_IMAGE
|
|
|
|
|
|
|
|
if (fileData == NULL) |
|
|
|
{ |
|
|
|
TRACELOG(LOG_WARNING, "Clipboard image: Couldn't get clipboard data."); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
image = LoadImageFromMemory(".bmp", fileData, dataSize); |
|
|
|
} |
|
|
|
return image; |
|
|
|
} |
|
|
|
#endif // SUPPORT_CLIPBOARD_IMAGE
|
|
|
|
|
|
|
|
// Show mouse cursor
|
|
|
|
void ShowCursor(void) |
|
|
@ -861,6 +875,28 @@ char RSGL_keystrToChar(const char *str) |
|
|
|
return '\0'; |
|
|
|
} |
|
|
|
|
|
|
|
int RGFW_gpConvTable[18] = { |
|
|
|
[RGFW_GP_Y] = GAMEPAD_BUTTON_RIGHT_FACE_UP, |
|
|
|
[RGFW_GP_B] = GAMEPAD_BUTTON_RIGHT_FACE_RIGHT, |
|
|
|
[RGFW_GP_A] = GAMEPAD_BUTTON_RIGHT_FACE_DOWN, |
|
|
|
[RGFW_GP_X] = GAMEPAD_BUTTON_RIGHT_FACE_LEFT, |
|
|
|
[RGFW_GP_L1] = GAMEPAD_BUTTON_LEFT_TRIGGER_1, |
|
|
|
[RGFW_GP_R1] = GAMEPAD_BUTTON_RIGHT_TRIGGER_1, |
|
|
|
[RGFW_GP_L2] = GAMEPAD_BUTTON_LEFT_TRIGGER_2, |
|
|
|
[RGFW_GP_R2] = GAMEPAD_BUTTON_RIGHT_TRIGGER_2, |
|
|
|
[RGFW_GP_SELECT] = GAMEPAD_BUTTON_MIDDLE_LEFT, |
|
|
|
[RGFW_GP_HOME] = GAMEPAD_BUTTON_MIDDLE, |
|
|
|
[RGFW_GP_START] = GAMEPAD_BUTTON_MIDDLE_RIGHT, |
|
|
|
[RGFW_GP_UP] = GAMEPAD_BUTTON_LEFT_FACE_UP, |
|
|
|
[RGFW_GP_RIGHT] = GAMEPAD_BUTTON_LEFT_FACE_RIGHT, |
|
|
|
[RGFW_GP_DOWN] = GAMEPAD_BUTTON_LEFT_FACE_DOWN, |
|
|
|
[RGFW_GP_LEFT] = GAMEPAD_BUTTON_LEFT_FACE_LEFT, |
|
|
|
[RGFW_GP_L3] = GAMEPAD_BUTTON_LEFT_THUMB, |
|
|
|
[RGFW_GP_R3] = GAMEPAD_BUTTON_RIGHT_THUMB, |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Register all input events
|
|
|
|
void PollInputEvents(void) |
|
|
|
{ |
|
|
@ -869,7 +905,7 @@ void PollInputEvents(void) |
|
|
|
// because ProcessGestureEvent() is just called on an event, not every frame
|
|
|
|
UpdateGestures(); |
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
// Reset keys/chars pressed registered
|
|
|
|
CORE.Input.Keyboard.keyPressedQueueCount = 0; |
|
|
|
CORE.Input.Keyboard.charPressedQueueCount = 0; |
|
|
@ -933,27 +969,27 @@ void PollInputEvents(void) |
|
|
|
|
|
|
|
while (RGFW_window_checkEvent(platform.window)) |
|
|
|
{ |
|
|
|
if ((platform.window->event.type >= RGFW_jsButtonPressed) && (platform.window->event.type <= RGFW_jsAxisMove)) |
|
|
|
if ((platform.window->event.type >= RGFW_gpButtonPressed) && (platform.window->event.type <= RGFW_gpAxisMove)) |
|
|
|
{ |
|
|
|
if (!CORE.Input.Gamepad.ready[platform.window->event.joystick]) |
|
|
|
if (!CORE.Input.Gamepad.ready[platform.window->event.gamepad]) |
|
|
|
{ |
|
|
|
CORE.Input.Gamepad.ready[platform.window->event.joystick] = true; |
|
|
|
CORE.Input.Gamepad.axisCount[platform.window->event.joystick] = platform.window->event.axisesCount; |
|
|
|
CORE.Input.Gamepad.name[platform.window->event.joystick][0] = '\0'; |
|
|
|
CORE.Input.Gamepad.axisState[platform.window->event.joystick][GAMEPAD_AXIS_LEFT_TRIGGER] = -1.0f; |
|
|
|
CORE.Input.Gamepad.axisState[platform.window->event.joystick][GAMEPAD_AXIS_RIGHT_TRIGGER] = -1.0f; |
|
|
|
CORE.Input.Gamepad.ready[platform.window->event.gamepad] = true; |
|
|
|
CORE.Input.Gamepad.axisCount[platform.window->event.gamepad] = platform.window->event.axisesCount; |
|
|
|
CORE.Input.Gamepad.name[platform.window->event.gamepad][0] = '\0'; |
|
|
|
CORE.Input.Gamepad.axisState[platform.window->event.gamepad][GAMEPAD_AXIS_LEFT_TRIGGER] = -1.0f; |
|
|
|
CORE.Input.Gamepad.axisState[platform.window->event.gamepad][GAMEPAD_AXIS_RIGHT_TRIGGER] = -1.0f; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
RGFW_Event *event = &platform.window->event; |
|
|
|
|
|
|
|
// All input events can be processed after polling
|
|
|
|
switch (event->type) |
|
|
|
|
|
|
|
switch (event->type) |
|
|
|
{ |
|
|
|
case RGFW_quit: CORE.Window.shouldClose = true; break; |
|
|
|
case RGFW_dnd: // Dropped file
|
|
|
|
{ |
|
|
|
for (n">u32 i = 0; i < event->droppedFilesCount; i++) |
|
|
|
for (kt">int i = 0; i < event->droppedFilesCount; i++) |
|
|
|
{ |
|
|
|
if (CORE.Window.dropFileCount == 0) |
|
|
|
{ |
|
|
@ -964,7 +1000,7 @@ void PollInputEvents(void) |
|
|
|
|
|
|
|
CORE.Window.dropFilepaths[CORE.Window.dropFileCount] = (char *)RL_CALLOC(MAX_FILEPATH_LENGTH, sizeof(char)); |
|
|
|
strcpy(CORE.Window.dropFilepaths[CORE.Window.dropFileCount], event->droppedFiles[i]); |
|
|
|
|
|
|
|
|
|
|
|
CORE.Window.dropFileCount++; |
|
|
|
} |
|
|
|
else if (CORE.Window.dropFileCount < 1024) |
|
|
@ -998,7 +1034,6 @@ void PollInputEvents(void) |
|
|
|
case RGFW_keyPressed: |
|
|
|
{ |
|
|
|
KeyboardKey key = ConvertScancodeToKey(event->keyCode); |
|
|
|
|
|
|
|
if (key != KEY_NULL) |
|
|
|
{ |
|
|
|
// If key was up, add it to the key pressed queue
|
|
|
@ -1037,7 +1072,7 @@ void PollInputEvents(void) |
|
|
|
{ |
|
|
|
if ((event->button == RGFW_mouseScrollUp) || (event->button == RGFW_mouseScrollDown)) |
|
|
|
{ |
|
|
|
CORE.Input.Mouse.currentWheelMove.y = p">(float)event->scroll; |
|
|
|
CORE.Input.Mouse.currentWheelMove.y = event->scroll; |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
@ -1053,10 +1088,9 @@ void PollInputEvents(void) |
|
|
|
} break; |
|
|
|
case RGFW_mouseButtonReleased: |
|
|
|
{ |
|
|
|
|
|
|
|
if ((event->button == RGFW_mouseScrollUp) || (event->button == RGFW_mouseScrollDown)) |
|
|
|
{ |
|
|
|
CORE.Input.Mouse.currentWheelMove.y = p">(float)event->scroll; |
|
|
|
CORE.Input.Mouse.currentWheelMove.y = event->scroll; |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
@ -1087,124 +1121,53 @@ void PollInputEvents(void) |
|
|
|
CORE.Input.Touch.position[0] = CORE.Input.Mouse.currentPosition; |
|
|
|
touchAction = 2; |
|
|
|
} break; |
|
|
|
case RGFW_jsButtonPressed: |
|
|
|
case RGFW_gpButtonPressed: |
|
|
|
{ |
|
|
|
int button = -1; |
|
|
|
|
|
|
|
switch (event->button) |
|
|
|
{ |
|
|
|
case RGFW_JS_Y: button = GAMEPAD_BUTTON_RIGHT_FACE_UP; break; |
|
|
|
case RGFW_JS_B: button = GAMEPAD_BUTTON_RIGHT_FACE_RIGHT; break; |
|
|
|
case RGFW_JS_A: button = GAMEPAD_BUTTON_RIGHT_FACE_DOWN; break; |
|
|
|
case RGFW_JS_X: button = GAMEPAD_BUTTON_RIGHT_FACE_LEFT; break; |
|
|
|
|
|
|
|
case RGFW_JS_L1: button = GAMEPAD_BUTTON_LEFT_TRIGGER_1; break; |
|
|
|
case RGFW_JS_R1: button = GAMEPAD_BUTTON_RIGHT_TRIGGER_1; break; |
|
|
|
|
|
|
|
case RGFW_JS_L2: button = GAMEPAD_BUTTON_LEFT_TRIGGER_2; break; |
|
|
|
case RGFW_JS_R2: button = GAMEPAD_BUTTON_RIGHT_TRIGGER_2; break; |
|
|
|
|
|
|
|
case RGFW_JS_SELECT: button = GAMEPAD_BUTTON_MIDDLE_LEFT; break; |
|
|
|
case RGFW_JS_HOME: button = GAMEPAD_BUTTON_MIDDLE; break; |
|
|
|
case RGFW_JS_START: button = GAMEPAD_BUTTON_MIDDLE_RIGHT; break; |
|
|
|
|
|
|
|
case RGFW_JS_UP: button = GAMEPAD_BUTTON_LEFT_FACE_UP; break; |
|
|
|
case RGFW_JS_RIGHT: button = GAMEPAD_BUTTON_LEFT_FACE_RIGHT; break; |
|
|
|
case RGFW_JS_DOWN: button = GAMEPAD_BUTTON_LEFT_FACE_DOWN; break; |
|
|
|
case RGFW_JS_LEFT: button = GAMEPAD_BUTTON_LEFT_FACE_LEFT; break; |
|
|
|
|
|
|
|
default: break; |
|
|
|
} |
|
|
|
int button = RGFW_gpConvTable[event->button]; |
|
|
|
|
|
|
|
if (button >= 0) |
|
|
|
{ |
|
|
|
CORE.Input.Gamepad.currentButtonState[event->joystick][button] = 1; |
|
|
|
CORE.Input.Gamepad.currentButtonState[event->gamepad][button] = 1; |
|
|
|
CORE.Input.Gamepad.lastButtonPressed = button; |
|
|
|
} |
|
|
|
} break; |
|
|
|
case RGFW_jsButtonReleased: |
|
|
|
case RGFW_gpButtonReleased: |
|
|
|
{ |
|
|
|
int button = -1; |
|
|
|
switch (event->button) |
|
|
|
{ |
|
|
|
case RGFW_JS_Y: button = GAMEPAD_BUTTON_RIGHT_FACE_UP; break; |
|
|
|
case RGFW_JS_B: button = GAMEPAD_BUTTON_RIGHT_FACE_RIGHT; break; |
|
|
|
case RGFW_JS_A: button = GAMEPAD_BUTTON_RIGHT_FACE_DOWN; break; |
|
|
|
case RGFW_JS_X: button = GAMEPAD_BUTTON_RIGHT_FACE_LEFT; break; |
|
|
|
|
|
|
|
case RGFW_JS_L1: button = GAMEPAD_BUTTON_LEFT_TRIGGER_1; break; |
|
|
|
case RGFW_JS_R1: button = GAMEPAD_BUTTON_RIGHT_TRIGGER_1; break; |
|
|
|
|
|
|
|
case RGFW_JS_L2: button = GAMEPAD_BUTTON_LEFT_TRIGGER_2; break; |
|
|
|
case RGFW_JS_R2: button = GAMEPAD_BUTTON_RIGHT_TRIGGER_2; break; |
|
|
|
|
|
|
|
case RGFW_JS_SELECT: button = GAMEPAD_BUTTON_MIDDLE_LEFT; break; |
|
|
|
case RGFW_JS_HOME: button = GAMEPAD_BUTTON_MIDDLE; break; |
|
|
|
case RGFW_JS_START: button = GAMEPAD_BUTTON_MIDDLE_RIGHT; break; |
|
|
|
|
|
|
|
case RGFW_JS_UP: button = GAMEPAD_BUTTON_LEFT_FACE_UP; break; |
|
|
|
case RGFW_JS_RIGHT: button = GAMEPAD_BUTTON_LEFT_FACE_RIGHT; break; |
|
|
|
case RGFW_JS_DOWN: button = GAMEPAD_BUTTON_LEFT_FACE_DOWN; break; |
|
|
|
case RGFW_JS_LEFT: button = GAMEPAD_BUTTON_LEFT_FACE_LEFT; break; |
|
|
|
default: break; |
|
|
|
} |
|
|
|
int button = RGFW_gpConvTable[event->button]; |
|
|
|
|
|
|
|
if (button >= 0) |
|
|
|
{ |
|
|
|
CORE.Input.Gamepad.currentButtonState[event->joystick][button] = 0; |
|
|
|
if (CORE.Input.Gamepad.lastButtonPressed == button) CORE.Input.Gamepad.lastButtonPressed = 0; |
|
|
|
} |
|
|
|
CORE.Input.Gamepad.currentButtonState[event->gamepad][button] = 0; |
|
|
|
if (CORE.Input.Gamepad.lastButtonPressed == button) CORE.Input.Gamepad.lastButtonPressed = 0; |
|
|
|
} break; |
|
|
|
case RGFW_jsAxisMove: |
|
|
|
case RGFW_gpAxisMove: |
|
|
|
{ |
|
|
|
int axis = -1; |
|
|
|
for (int i = 0; i < event->axisesCount; i++) |
|
|
|
{ |
|
|
|
switch(i) |
|
|
|
{ |
|
|
|
case 0: |
|
|
|
{ |
|
|
|
if (abs(event->axis[i].x) > abs(event->axis[i].y)) |
|
|
|
{ |
|
|
|
axis = GAMEPAD_AXIS_LEFT_X; |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
axis = GAMEPAD_AXIS_LEFT_Y; |
|
|
|
} break; |
|
|
|
case 1: |
|
|
|
{ |
|
|
|
if (abs(event->axis[i].x) > abs(event->axis[i].y)) |
|
|
|
{ |
|
|
|
axis = GAMEPAD_AXIS_RIGHT_X; |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
axis = GAMEPAD_AXIS_RIGHT_Y; |
|
|
|
} break; |
|
|
|
case 2: axis = GAMEPAD_AXIS_LEFT_TRIGGER; break; |
|
|
|
case 3: axis = GAMEPAD_AXIS_RIGHT_TRIGGER; break; |
|
|
|
default: break; |
|
|
|
} |
|
|
|
|
|
|
|
#ifdef __linux__
|
|
|
|
float value = (event->axis[i].x + event->axis[i].y)/(float)32767; |
|
|
|
#else
|
|
|
|
float value = (event->axis[i].x + -event->axis[i].y)/(float)32767; |
|
|
|
#endif
|
|
|
|
CORE.Input.Gamepad.axisState[event->joystick][axis] = value; |
|
|
|
|
|
|
|
// Register button state for triggers in addition to their axes
|
|
|
|
if ((axis == GAMEPAD_AXIS_LEFT_TRIGGER) || (axis == GAMEPAD_AXIS_RIGHT_TRIGGER)) |
|
|
|
{ |
|
|
|
int button = (axis == GAMEPAD_AXIS_LEFT_TRIGGER)? GAMEPAD_BUTTON_LEFT_TRIGGER_2 : GAMEPAD_BUTTON_RIGHT_TRIGGER_2; |
|
|
|
int pressed = (value > 0.1f); |
|
|
|
CORE.Input.Gamepad.currentButtonState[event->joystick][button] = pressed; |
|
|
|
|
|
|
|
if (pressed) CORE.Input.Gamepad.lastButtonPressed = button; |
|
|
|
else if (CORE.Input.Gamepad.lastButtonPressed == button) CORE.Input.Gamepad.lastButtonPressed = 0; |
|
|
|
} |
|
|
|
} |
|
|
|
float value = 0; |
|
|
|
switch(event->whichAxis) |
|
|
|
{ |
|
|
|
case 0: |
|
|
|
{ |
|
|
|
CORE.Input.Gamepad.axisState[event->gamepad][GAMEPAD_AXIS_LEFT_X] = event->axis[0].x / 100.0f; |
|
|
|
CORE.Input.Gamepad.axisState[event->gamepad][GAMEPAD_AXIS_LEFT_Y] = event->axis[0].y / 100.0f; |
|
|
|
} break; |
|
|
|
case 1: |
|
|
|
{ |
|
|
|
CORE.Input.Gamepad.axisState[event->gamepad][GAMEPAD_AXIS_RIGHT_X] = event->axis[1].x / 100.0f; |
|
|
|
CORE.Input.Gamepad.axisState[event->gamepad][GAMEPAD_AXIS_RIGHT_Y] = event->axis[1].y / 100.0f; |
|
|
|
} break; |
|
|
|
case 2: axis = GAMEPAD_AXIS_LEFT_TRIGGER; |
|
|
|
case 3: |
|
|
|
{ |
|
|
|
if (axis == -1) axis = GAMEPAD_AXIS_RIGHT_TRIGGER; |
|
|
|
int button = (axis == GAMEPAD_AXIS_LEFT_TRIGGER)? GAMEPAD_BUTTON_LEFT_TRIGGER_2 : GAMEPAD_BUTTON_RIGHT_TRIGGER_2; |
|
|
|
int pressed = (value > 0.1f); |
|
|
|
CORE.Input.Gamepad.currentButtonState[event->gamepad][button] = pressed; |
|
|
|
|
|
|
|
if (pressed) CORE.Input.Gamepad.lastButtonPressed = button; |
|
|
|
else if (CORE.Input.Gamepad.lastButtonPressed == button) CORE.Input.Gamepad.lastButtonPressed = 0; |
|
|
|
} |
|
|
|
default: break; |
|
|
|
} |
|
|
|
} break; |
|
|
|
default: break; |
|
|
|
} |
|
|
@ -1289,17 +1252,22 @@ int InitPlatform(void) |
|
|
|
|
|
|
|
platform.window = RGFW_createWindow(CORE.Window.title, RGFW_RECT(0, 0, CORE.Window.screen.width, CORE.Window.screen.height), flags); |
|
|
|
|
|
|
|
|
|
|
|
#ifndef PLATFORM_WEB_RGFW
|
|
|
|
RGFW_area screenSize = RGFW_getScreenSize(); |
|
|
|
CORE.Window.display.width = screenSize.w; |
|
|
|
CORE.Window.display.height = screenSize.h; |
|
|
|
/*
|
|
|
|
I think this is needed by Raylib now ? |
|
|
|
#else
|
|
|
|
CORE.Window.display.width = CORE.Window.screen.width; |
|
|
|
CORE.Window.display.height = CORE.Window.screen.height; |
|
|
|
#endif
|
|
|
|
/*
|
|
|
|
I think this is needed by Raylib now ? |
|
|
|
If so, rcore_destkop_sdl should be updated too |
|
|
|
*/ |
|
|
|
SetupFramebuffer(CORE.Window.display.width, CORE.Window.display.height); |
|
|
|
|
|
|
|
if (CORE.Window.flags & FLAG_VSYNC_HINT) RGFW_window_swapInterval(platform.window, 1); |
|
|
|
|
|
|
|
//SetupFramebuffer(CORE.Window.display.width, CORE.Window.display.height);
|
|
|
|
|
|
|
|
if (CORE.Window.flags & FLAG_VSYNC_HINT) RGFW_window_swapInterval(platform.window, 1); |
|
|
|
RGFW_window_makeCurrent(platform.window); |
|
|
|
|
|
|
|
// Check surface and context activation
|
|
|
@ -1311,12 +1279,6 @@ int InitPlatform(void) |
|
|
|
CORE.Window.render.height = CORE.Window.screen.height; |
|
|
|
CORE.Window.currentFbo.width = CORE.Window.render.width; |
|
|
|
CORE.Window.currentFbo.height = CORE.Window.render.height; |
|
|
|
|
|
|
|
TRACELOG(LOG_INFO, "DISPLAY: Device initialized successfully"); |
|
|
|
TRACELOG(LOG_INFO, " > Display size: %i x %i", CORE.Window.display.width, CORE.Window.display.height); |
|
|
|
TRACELOG(LOG_INFO, " > Screen size: %i x %i", CORE.Window.screen.width, CORE.Window.screen.height); |
|
|
|
TRACELOG(LOG_INFO, " > Render size: %i x %i", CORE.Window.render.width, CORE.Window.render.height); |
|
|
|
TRACELOG(LOG_INFO, " > Viewport offsets: %i, %i", CORE.Window.renderOffset.x, CORE.Window.renderOffset.y); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
@ -1366,12 +1328,11 @@ int InitPlatform(void) |
|
|
|
#ifdef RGFW_X11
|
|
|
|
for (int i = 0; (i < 4) && (i < MAX_GAMEPADS); i++) |
|
|
|
{ |
|
|
|
RGFW_registerJoystick(platform.window, i); |
|
|
|
RGFW_registergamepad(platform.window, i); |
|
|
|
} |
|
|
|
#endif
|
|
|
|
|
|
|
|
TRACELOG(LOG_INFO, "PLATFORM: CUSTOM: Initialized successfully"); |
|
|
|
|
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
@ -1385,6 +1346,6 @@ void ClosePlatform(void) |
|
|
|
static KeyboardKey ConvertScancodeToKey(u32 keycode) |
|
|
|
{ |
|
|
|
if (keycode > sizeof(keyMappingRGFW)/sizeof(unsigned short)) return 0; |
|
|
|
|
|
|
|
return keyMappingRGFW[keycode]; |
|
|
|
|
|
|
|
return keyMappingRGFW[keycode]; |
|
|
|
} |