summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/SDL2/src/main/haiku/SDL_BApp.h
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/SDL2/src/main/haiku/SDL_BApp.h')
-rw-r--r--3rdparty/SDL2/src/main/haiku/SDL_BApp.h392
1 files changed, 0 insertions, 392 deletions
diff --git a/3rdparty/SDL2/src/main/haiku/SDL_BApp.h b/3rdparty/SDL2/src/main/haiku/SDL_BApp.h
deleted file mode 100644
index 9672d462cba..00000000000
--- a/3rdparty/SDL2/src/main/haiku/SDL_BApp.h
+++ /dev/null
@@ -1,392 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2016 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.
-*/
-#ifndef SDL_BAPP_H
-#define SDL_BAPP_H
-
-#include <InterfaceKit.h>
-#include <OpenGLKit.h>
-
-#include "../../video/haiku/SDL_bkeyboard.h"
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "../../SDL_internal.h"
-
-#include "SDL_video.h"
-
-/* Local includes */
-#include "../../events/SDL_events_c.h"
-#include "../../video/haiku/SDL_bkeyboard.h"
-#include "../../video/haiku/SDL_bframebuffer.h"
-
-#ifdef __cplusplus
-}
-#endif
-
-#include <vector>
-
-
-
-
-/* Forward declarations */
-class SDL_BWin;
-
-/* Message constants */
-enum ToSDL {
- /* Intercepted by BWindow on its way to BView */
- BAPP_MOUSE_MOVED,
- BAPP_MOUSE_BUTTON,
- BAPP_MOUSE_WHEEL,
- BAPP_KEY,
- BAPP_REPAINT, /* from _UPDATE_ */
- /* From BWindow */
- BAPP_MAXIMIZE, /* from B_ZOOM */
- BAPP_MINIMIZE,
- BAPP_RESTORE, /* TODO: IMPLEMENT! */
- BAPP_SHOW,
- BAPP_HIDE,
- BAPP_MOUSE_FOCUS, /* caused by MOUSE_MOVE */
- BAPP_KEYBOARD_FOCUS, /* from WINDOW_ACTIVATED */
- BAPP_WINDOW_CLOSE_REQUESTED,
- BAPP_WINDOW_MOVED,
- BAPP_WINDOW_RESIZED,
- BAPP_SCREEN_CHANGED
-};
-
-
-
-/* Create a descendant of BApplication */
-class SDL_BApp : public BApplication {
-public:
- SDL_BApp(const char* signature) :
- BApplication(signature) {
- _current_context = NULL;
- }
-
-
- virtual ~SDL_BApp() {
- }
-
-
-
- /* Event-handling functions */
- virtual void MessageReceived(BMessage* message) {
- /* Sort out SDL-related messages */
- switch ( message->what ) {
- case BAPP_MOUSE_MOVED:
- _HandleMouseMove(message);
- break;
-
- case BAPP_MOUSE_BUTTON:
- _HandleMouseButton(message);
- break;
-
- case BAPP_MOUSE_WHEEL:
- _HandleMouseWheel(message);
- break;
-
- case BAPP_KEY:
- _HandleKey(message);
- break;
-
- case BAPP_REPAINT:
- _HandleBasicWindowEvent(message, SDL_WINDOWEVENT_EXPOSED);
- break;
-
- case BAPP_MAXIMIZE:
- _HandleBasicWindowEvent(message, SDL_WINDOWEVENT_MAXIMIZED);
- break;
-
- case BAPP_MINIMIZE:
- _HandleBasicWindowEvent(message, SDL_WINDOWEVENT_MINIMIZED);
- break;
-
- case BAPP_SHOW:
- _HandleBasicWindowEvent(message, SDL_WINDOWEVENT_SHOWN);
- break;
-
- case BAPP_HIDE:
- _HandleBasicWindowEvent(message, SDL_WINDOWEVENT_HIDDEN);
- break;
-
- case BAPP_MOUSE_FOCUS:
- _HandleMouseFocus(message);
- break;
-
- case BAPP_KEYBOARD_FOCUS:
- _HandleKeyboardFocus(message);
- break;
-
- case BAPP_WINDOW_CLOSE_REQUESTED:
- _HandleBasicWindowEvent(message, SDL_WINDOWEVENT_CLOSE);
- break;
-
- case BAPP_WINDOW_MOVED:
- _HandleWindowMoved(message);
- break;
-
- case BAPP_WINDOW_RESIZED:
- _HandleWindowResized(message);
- break;
-
- case BAPP_SCREEN_CHANGED:
- /* TODO: Handle screen resize or workspace change */
- break;
-
- default:
- BApplication::MessageReceived(message);
- break;
- }
- }
-
- /* Window creation/destruction methods */
- int32 GetID(SDL_Window *win) {
- int32 i;
- for(i = 0; i < _GetNumWindowSlots(); ++i) {
- if( GetSDLWindow(i) == NULL ) {
- _SetSDLWindow(win, i);
- return i;
- }
- }
-
- /* Expand the vector if all slots are full */
- if( i == _GetNumWindowSlots() ) {
- _PushBackWindow(win);
- return i;
- }
-
- /* TODO: error handling */
- return 0;
- }
-
- /* FIXME: Bad coding practice, but I can't include SDL_BWin.h here. Is
- there another way to do this? */
- void ClearID(SDL_BWin *bwin); /* Defined in SDL_BeApp.cc */
-
-
- SDL_Window *GetSDLWindow(int32 winID) {
- return _window_map[winID];
- }
-
- void SetCurrentContext(BGLView *newContext) {
- if(_current_context)
- _current_context->UnlockGL();
- _current_context = newContext;
- if (_current_context)
- _current_context->LockGL();
- }
-private:
- /* Event management */
- void _HandleBasicWindowEvent(BMessage *msg, int32 sdlEventType) {
- SDL_Window *win;
- int32 winID;
- if(
- !_GetWinID(msg, &winID)
- ) {
- return;
- }
- win = GetSDLWindow(winID);
- SDL_SendWindowEvent(win, sdlEventType, 0, 0);
- }
-
- void _HandleMouseMove(BMessage *msg) {
- SDL_Window *win;
- int32 winID;
- int32 x = 0, y = 0;
- if(
- !_GetWinID(msg, &winID) ||
- msg->FindInt32("x", &x) != B_OK || /* x movement */
- msg->FindInt32("y", &y) != B_OK /* y movement */
- ) {
- return;
- }
- win = GetSDLWindow(winID);
- SDL_SendMouseMotion(win, 0, 0, x, y);
-
- /* Tell the application that the mouse passed over, redraw needed */
- BE_UpdateWindowFramebuffer(NULL,win,NULL,-1);
- }
-
- void _HandleMouseButton(BMessage *msg) {
- SDL_Window *win;
- int32 winID;
- int32 button, state; /* left/middle/right, pressed/released */
- if(
- !_GetWinID(msg, &winID) ||
- msg->FindInt32("button-id", &button) != B_OK ||
- msg->FindInt32("button-state", &state) != B_OK
- ) {
- return;
- }
- win = GetSDLWindow(winID);
- SDL_SendMouseButton(win, 0, state, button);
- }
-
- void _HandleMouseWheel(BMessage *msg) {
- SDL_Window *win;
- int32 winID;
- int32 xTicks, yTicks;
- if(
- !_GetWinID(msg, &winID) ||
- msg->FindInt32("xticks", &xTicks) != B_OK ||
- msg->FindInt32("yticks", &yTicks) != B_OK
- ) {
- return;
- }
- win = GetSDLWindow(winID);
- SDL_SendMouseWheel(win, 0, xTicks, yTicks, SDL_MOUSEWHEEL_NORMAL);
- }
-
- void _HandleKey(BMessage *msg) {
- int32 scancode, state; /* scancode, pressed/released */
- if(
- msg->FindInt32("key-state", &state) != B_OK ||
- msg->FindInt32("key-scancode", &scancode) != B_OK
- ) {
- return;
- }
-
- /* Make sure this isn't a repeated event (key pressed and held) */
- if(state == SDL_PRESSED && BE_GetKeyState(scancode) == SDL_PRESSED) {
- return;
- }
- BE_SetKeyState(scancode, state);
- SDL_SendKeyboardKey(state, BE_GetScancodeFromBeKey(scancode));
-
- if (state == SDL_PRESSED && SDL_EventState(SDL_TEXTINPUT, SDL_QUERY)) {
- const int8 *keyUtf8;
- ssize_t count;
- if (msg->FindData("key-utf8", B_INT8_TYPE, (const void**)&keyUtf8, &count) == B_OK) {
- char text[SDL_TEXTINPUTEVENT_TEXT_SIZE];
- SDL_zero(text);
- SDL_memcpy(text, keyUtf8, count);
- SDL_SendKeyboardText(text);
- }
- }
- }
-
- void _HandleMouseFocus(BMessage *msg) {
- SDL_Window *win;
- int32 winID;
- bool bSetFocus; /* If false, lose focus */
- if(
- !_GetWinID(msg, &winID) ||
- msg->FindBool("focusGained", &bSetFocus) != B_OK
- ) {
- return;
- }
- win = GetSDLWindow(winID);
- if(bSetFocus) {
- SDL_SetMouseFocus(win);
- } else if(SDL_GetMouseFocus() == win) {
- /* Only lose all focus if this window was the current focus */
- SDL_SetMouseFocus(NULL);
- }
- }
-
- void _HandleKeyboardFocus(BMessage *msg) {
- SDL_Window *win;
- int32 winID;
- bool bSetFocus; /* If false, lose focus */
- if(
- !_GetWinID(msg, &winID) ||
- msg->FindBool("focusGained", &bSetFocus) != B_OK
- ) {
- return;
- }
- win = GetSDLWindow(winID);
- if(bSetFocus) {
- SDL_SetKeyboardFocus(win);
- } else if(SDL_GetKeyboardFocus() == win) {
- /* Only lose all focus if this window was the current focus */
- SDL_SetKeyboardFocus(NULL);
- }
- }
-
- void _HandleWindowMoved(BMessage *msg) {
- SDL_Window *win;
- int32 winID;
- int32 xPos, yPos;
- /* Get the window id and new x/y position of the window */
- if(
- !_GetWinID(msg, &winID) ||
- msg->FindInt32("window-x", &xPos) != B_OK ||
- msg->FindInt32("window-y", &yPos) != B_OK
- ) {
- return;
- }
- win = GetSDLWindow(winID);
- SDL_SendWindowEvent(win, SDL_WINDOWEVENT_MOVED, xPos, yPos);
- }
-
- void _HandleWindowResized(BMessage *msg) {
- SDL_Window *win;
- int32 winID;
- int32 w, h;
- /* Get the window id ]and new x/y position of the window */
- if(
- !_GetWinID(msg, &winID) ||
- msg->FindInt32("window-w", &w) != B_OK ||
- msg->FindInt32("window-h", &h) != B_OK
- ) {
- return;
- }
- win = GetSDLWindow(winID);
- SDL_SendWindowEvent(win, SDL_WINDOWEVENT_RESIZED, w, h);
- }
-
- bool _GetWinID(BMessage *msg, int32 *winID) {
- return msg->FindInt32("window-id", winID) == B_OK;
- }
-
-
-
- /* Vector functions: Wraps vector stuff in case we need to change
- implementation */
- void _SetSDLWindow(SDL_Window *win, int32 winID) {
- _window_map[winID] = win;
- }
-
- int32 _GetNumWindowSlots() {
- return _window_map.size();
- }
-
-
- void _PopBackWindow() {
- _window_map.pop_back();
- }
-
- void _PushBackWindow(SDL_Window *win) {
- _window_map.push_back(win);
- }
-
-
- /* Members */
- std::vector<SDL_Window*> _window_map; /* Keeps track of SDL_Windows by index-id */
-
- display_mode *_saved_mode;
- BGLView *_current_context;
-};
-
-#endif