mirror of
https://github.com/encounter/SDL.git
synced 2025-12-19 18:05:38 +00:00
Fixed whitespace
This commit is contained in:
@@ -538,7 +538,7 @@ private:
|
||||
msg.AddInt32("key-state", keyState);
|
||||
msg.AddInt32("key-scancode", keyCode);
|
||||
if (keyUtf8 != NULL) {
|
||||
msg.AddData("key-utf8", B_INT8_TYPE, (const void*)keyUtf8, len);
|
||||
msg.AddData("key-utf8", B_INT8_TYPE, (const void*)keyUtf8, len);
|
||||
}
|
||||
be_app->PostMessage(&msg);
|
||||
}
|
||||
|
||||
@@ -36,54 +36,54 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
int HAIKU_SetClipboardText(_THIS, const char *text) {
|
||||
BMessage *clip = NULL;
|
||||
if(be_clipboard->Lock()) {
|
||||
be_clipboard->Clear();
|
||||
if((clip = be_clipboard->Data())) {
|
||||
/* Presumably the string of characters is ascii-format */
|
||||
ssize_t asciiLength = 0;
|
||||
for(; text[asciiLength] != 0; ++asciiLength) {}
|
||||
clip->AddData("text/plain", B_MIME_TYPE, text, asciiLength);
|
||||
be_clipboard->Commit();
|
||||
}
|
||||
be_clipboard->Unlock();
|
||||
}
|
||||
return 0;
|
||||
BMessage *clip = NULL;
|
||||
if(be_clipboard->Lock()) {
|
||||
be_clipboard->Clear();
|
||||
if((clip = be_clipboard->Data())) {
|
||||
/* Presumably the string of characters is ascii-format */
|
||||
ssize_t asciiLength = 0;
|
||||
for(; text[asciiLength] != 0; ++asciiLength) {}
|
||||
clip->AddData("text/plain", B_MIME_TYPE, text, asciiLength);
|
||||
be_clipboard->Commit();
|
||||
}
|
||||
be_clipboard->Unlock();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
char *HAIKU_GetClipboardText(_THIS) {
|
||||
BMessage *clip = NULL;
|
||||
const char *text = NULL;
|
||||
ssize_t length;
|
||||
char *result;
|
||||
if(be_clipboard->Lock()) {
|
||||
if((clip = be_clipboard->Data())) {
|
||||
/* Presumably the string of characters is ascii-format */
|
||||
clip->FindData("text/plain", B_MIME_TYPE, (const void**)&text,
|
||||
&length);
|
||||
}
|
||||
be_clipboard->Unlock();
|
||||
}
|
||||
|
||||
if (!text) {
|
||||
result = SDL_strdup("");
|
||||
} else {
|
||||
/* Copy the data and pass on to SDL */
|
||||
result = (char *)SDL_malloc((length + 1) * sizeof(char));
|
||||
SDL_strlcpy(result, text, length + 1);
|
||||
}
|
||||
|
||||
return result;
|
||||
BMessage *clip = NULL;
|
||||
const char *text = NULL;
|
||||
ssize_t length;
|
||||
char *result;
|
||||
if(be_clipboard->Lock()) {
|
||||
if((clip = be_clipboard->Data())) {
|
||||
/* Presumably the string of characters is ascii-format */
|
||||
clip->FindData("text/plain", B_MIME_TYPE, (const void**)&text,
|
||||
&length);
|
||||
}
|
||||
be_clipboard->Unlock();
|
||||
}
|
||||
|
||||
if (!text) {
|
||||
result = SDL_strdup("");
|
||||
} else {
|
||||
/* Copy the data and pass on to SDL */
|
||||
result = (char *)SDL_malloc((length + 1) * sizeof(char));
|
||||
SDL_strlcpy(result, text, length + 1);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
SDL_bool HAIKU_HasClipboardText(_THIS) {
|
||||
SDL_bool result = SDL_FALSE;
|
||||
char *text = HAIKU_GetClipboardText(_this);
|
||||
if (text) {
|
||||
result = text[0] != '\0' ? SDL_TRUE : SDL_FALSE;
|
||||
SDL_free(text);
|
||||
}
|
||||
return result;
|
||||
SDL_bool result = SDL_FALSE;
|
||||
char *text = HAIKU_GetClipboardText(_this);
|
||||
if (text) {
|
||||
result = text[0] != '\0' ? SDL_TRUE : SDL_FALSE;
|
||||
SDL_free(text);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -29,7 +29,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
void HAIKU_PumpEvents(_THIS) {
|
||||
/* Since the event thread is its own thread, this isn't really necessary */
|
||||
/* Since the event thread is its own thread, this isn't really necessary */
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -40,158 +40,158 @@ static int32 HAIKU_UpdateOnce(SDL_Window *window);
|
||||
#endif
|
||||
|
||||
static SDL_INLINE SDL_BWin *_ToBeWin(SDL_Window *window) {
|
||||
return ((SDL_BWin*)(window->driverdata));
|
||||
return ((SDL_BWin*)(window->driverdata));
|
||||
}
|
||||
|
||||
static SDL_INLINE SDL_BApp *_GetBeApp() {
|
||||
return ((SDL_BApp*)be_app);
|
||||
return ((SDL_BApp*)be_app);
|
||||
}
|
||||
|
||||
int HAIKU_CreateWindowFramebuffer(_THIS, SDL_Window * window,
|
||||
Uint32 * format,
|
||||
void ** pixels, int *pitch) {
|
||||
SDL_BWin *bwin = _ToBeWin(window);
|
||||
BScreen bscreen;
|
||||
if(!bscreen.IsValid()) {
|
||||
return -1;
|
||||
}
|
||||
SDL_BWin *bwin = _ToBeWin(window);
|
||||
BScreen bscreen;
|
||||
if(!bscreen.IsValid()) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
while(!bwin->Connected()) { snooze(100); }
|
||||
|
||||
/* Make sure we have exclusive access to frame buffer data */
|
||||
bwin->LockBuffer();
|
||||
while(!bwin->Connected()) { snooze(100); }
|
||||
|
||||
/* Make sure we have exclusive access to frame buffer data */
|
||||
bwin->LockBuffer();
|
||||
|
||||
/* format */
|
||||
display_mode bmode;
|
||||
bscreen.GetMode(&bmode);
|
||||
int32 bpp = HAIKU_ColorSpaceToBitsPerPixel(bmode.space);
|
||||
*format = HAIKU_BPPToSDLPxFormat(bpp);
|
||||
/* format */
|
||||
display_mode bmode;
|
||||
bscreen.GetMode(&bmode);
|
||||
int32 bpp = HAIKU_ColorSpaceToBitsPerPixel(bmode.space);
|
||||
*format = HAIKU_BPPToSDLPxFormat(bpp);
|
||||
|
||||
/* Create the new bitmap object */
|
||||
BBitmap *bitmap = bwin->GetBitmap();
|
||||
/* Create the new bitmap object */
|
||||
BBitmap *bitmap = bwin->GetBitmap();
|
||||
|
||||
if(bitmap) {
|
||||
delete bitmap;
|
||||
}
|
||||
bitmap = new BBitmap(bwin->Bounds(), (color_space)bmode.space,
|
||||
false, /* Views not accepted */
|
||||
true); /* Contiguous memory required */
|
||||
|
||||
if(bitmap->InitCheck() != B_OK) {
|
||||
delete bitmap;
|
||||
return SDL_SetError("Could not initialize back buffer!");
|
||||
}
|
||||
if(bitmap) {
|
||||
delete bitmap;
|
||||
}
|
||||
bitmap = new BBitmap(bwin->Bounds(), (color_space)bmode.space,
|
||||
false, /* Views not accepted */
|
||||
true); /* Contiguous memory required */
|
||||
|
||||
if(bitmap->InitCheck() != B_OK) {
|
||||
delete bitmap;
|
||||
return SDL_SetError("Could not initialize back buffer!");
|
||||
}
|
||||
|
||||
|
||||
bwin->SetBitmap(bitmap);
|
||||
|
||||
/* Set the pixel pointer */
|
||||
*pixels = bitmap->Bits();
|
||||
bwin->SetBitmap(bitmap);
|
||||
|
||||
/* Set the pixel pointer */
|
||||
*pixels = bitmap->Bits();
|
||||
|
||||
/* pitch = width of window, in bytes */
|
||||
*pitch = bitmap->BytesPerRow();
|
||||
/* pitch = width of window, in bytes */
|
||||
*pitch = bitmap->BytesPerRow();
|
||||
|
||||
bwin->SetBufferExists(true);
|
||||
bwin->SetTrashBuffer(false);
|
||||
bwin->UnlockBuffer();
|
||||
return 0;
|
||||
bwin->SetBufferExists(true);
|
||||
bwin->SetTrashBuffer(false);
|
||||
bwin->UnlockBuffer();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int HAIKU_UpdateWindowFramebuffer(_THIS, SDL_Window * window,
|
||||
const SDL_Rect * rects, int numrects) {
|
||||
if(!window)
|
||||
return 0;
|
||||
if(!window)
|
||||
return 0;
|
||||
|
||||
SDL_BWin *bwin = _ToBeWin(window);
|
||||
SDL_BWin *bwin = _ToBeWin(window);
|
||||
|
||||
#ifdef DRAWTHREAD
|
||||
bwin->LockBuffer();
|
||||
bwin->SetBufferDirty(true);
|
||||
bwin->UnlockBuffer();
|
||||
#ifdef DRAWTHREAD
|
||||
bwin->LockBuffer();
|
||||
bwin->SetBufferDirty(true);
|
||||
bwin->UnlockBuffer();
|
||||
#else
|
||||
bwin->SetBufferDirty(true);
|
||||
HAIKU_UpdateOnce(window);
|
||||
bwin->SetBufferDirty(true);
|
||||
HAIKU_UpdateOnce(window);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int32 HAIKU_DrawThread(void *data) {
|
||||
SDL_BWin *bwin = (SDL_BWin*)data;
|
||||
|
||||
BScreen bscreen;
|
||||
if(!bscreen.IsValid()) {
|
||||
return -1;
|
||||
}
|
||||
SDL_BWin *bwin = (SDL_BWin*)data;
|
||||
|
||||
BScreen bscreen;
|
||||
if(!bscreen.IsValid()) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
while(bwin->ConnectionEnabled()) {
|
||||
if( bwin->Connected() && bwin->BufferExists() && bwin->BufferIsDirty() ) {
|
||||
bwin->LockBuffer();
|
||||
BBitmap *bitmap = NULL;
|
||||
bitmap = bwin->GetBitmap();
|
||||
int32 windowPitch = bitmap->BytesPerRow();
|
||||
int32 bufferPitch = bwin->GetRowBytes();
|
||||
uint8 *windowpx;
|
||||
uint8 *bufferpx;
|
||||
while(bwin->ConnectionEnabled()) {
|
||||
if( bwin->Connected() && bwin->BufferExists() && bwin->BufferIsDirty() ) {
|
||||
bwin->LockBuffer();
|
||||
BBitmap *bitmap = NULL;
|
||||
bitmap = bwin->GetBitmap();
|
||||
int32 windowPitch = bitmap->BytesPerRow();
|
||||
int32 bufferPitch = bwin->GetRowBytes();
|
||||
uint8 *windowpx;
|
||||
uint8 *bufferpx;
|
||||
|
||||
int32 BPP = bwin->GetBytesPerPx();
|
||||
int32 windowSub = bwin->GetFbX() * BPP +
|
||||
bwin->GetFbY() * windowPitch;
|
||||
clipping_rect *clips = bwin->GetClips();
|
||||
int32 numClips = bwin->GetNumClips();
|
||||
int i, y;
|
||||
int32 BPP = bwin->GetBytesPerPx();
|
||||
int32 windowSub = bwin->GetFbX() * BPP +
|
||||
bwin->GetFbY() * windowPitch;
|
||||
clipping_rect *clips = bwin->GetClips();
|
||||
int32 numClips = bwin->GetNumClips();
|
||||
int i, y;
|
||||
|
||||
/* Blit each clipping rectangle */
|
||||
bscreen.WaitForRetrace();
|
||||
for(i = 0; i < numClips; ++i) {
|
||||
/* Get addresses of the start of each clipping rectangle */
|
||||
int32 width = clips[i].right - clips[i].left + 1;
|
||||
int32 height = clips[i].bottom - clips[i].top + 1;
|
||||
bufferpx = bwin->GetBufferPx() +
|
||||
clips[i].top * bufferPitch + clips[i].left * BPP;
|
||||
windowpx = (uint8*)bitmap->Bits() +
|
||||
clips[i].top * windowPitch + clips[i].left * BPP -
|
||||
windowSub;
|
||||
/* Blit each clipping rectangle */
|
||||
bscreen.WaitForRetrace();
|
||||
for(i = 0; i < numClips; ++i) {
|
||||
/* Get addresses of the start of each clipping rectangle */
|
||||
int32 width = clips[i].right - clips[i].left + 1;
|
||||
int32 height = clips[i].bottom - clips[i].top + 1;
|
||||
bufferpx = bwin->GetBufferPx() +
|
||||
clips[i].top * bufferPitch + clips[i].left * BPP;
|
||||
windowpx = (uint8*)bitmap->Bits() +
|
||||
clips[i].top * windowPitch + clips[i].left * BPP -
|
||||
windowSub;
|
||||
|
||||
/* Copy each row of pixels from the window buffer into the frame
|
||||
buffer */
|
||||
for(y = 0; y < height; ++y)
|
||||
{
|
||||
/* Copy each row of pixels from the window buffer into the frame
|
||||
buffer */
|
||||
for(y = 0; y < height; ++y)
|
||||
{
|
||||
|
||||
if(bwin->CanTrashWindowBuffer()) {
|
||||
goto escape; /* Break out before the buffer is killed */
|
||||
}
|
||||
if(bwin->CanTrashWindowBuffer()) {
|
||||
goto escape; /* Break out before the buffer is killed */
|
||||
}
|
||||
|
||||
memcpy(bufferpx, windowpx, width * BPP);
|
||||
bufferpx += bufferPitch;
|
||||
windowpx += windowPitch;
|
||||
}
|
||||
}
|
||||
memcpy(bufferpx, windowpx, width * BPP);
|
||||
bufferpx += bufferPitch;
|
||||
windowpx += windowPitch;
|
||||
}
|
||||
}
|
||||
|
||||
bwin->SetBufferDirty(false);
|
||||
bwin->SetBufferDirty(false);
|
||||
escape:
|
||||
bwin->UnlockBuffer();
|
||||
} else {
|
||||
snooze(16000);
|
||||
}
|
||||
}
|
||||
|
||||
return B_OK;
|
||||
bwin->UnlockBuffer();
|
||||
} else {
|
||||
snooze(16000);
|
||||
}
|
||||
}
|
||||
|
||||
return B_OK;
|
||||
}
|
||||
|
||||
void HAIKU_DestroyWindowFramebuffer(_THIS, SDL_Window * window) {
|
||||
SDL_BWin *bwin = _ToBeWin(window);
|
||||
|
||||
bwin->LockBuffer();
|
||||
|
||||
/* Free and clear the window buffer */
|
||||
BBitmap *bitmap = bwin->GetBitmap();
|
||||
delete bitmap;
|
||||
bwin->SetBitmap(NULL);
|
||||
bwin->SetBufferExists(false);
|
||||
bwin->UnlockBuffer();
|
||||
SDL_BWin *bwin = _ToBeWin(window);
|
||||
|
||||
bwin->LockBuffer();
|
||||
|
||||
/* Free and clear the window buffer */
|
||||
BBitmap *bitmap = bwin->GetBitmap();
|
||||
delete bitmap;
|
||||
bwin->SetBitmap(NULL);
|
||||
bwin->SetBufferExists(false);
|
||||
bwin->UnlockBuffer();
|
||||
}
|
||||
|
||||
|
||||
@@ -203,50 +203,50 @@ void HAIKU_DestroyWindowFramebuffer(_THIS, SDL_Window * window) {
|
||||
*/
|
||||
#ifndef DRAWTHREAD
|
||||
static int32 HAIKU_UpdateOnce(SDL_Window *window) {
|
||||
SDL_BWin *bwin = _ToBeWin(window);
|
||||
BScreen bscreen;
|
||||
if(!bscreen.IsValid()) {
|
||||
return -1;
|
||||
}
|
||||
SDL_BWin *bwin = _ToBeWin(window);
|
||||
BScreen bscreen;
|
||||
if(!bscreen.IsValid()) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if(bwin->ConnectionEnabled() && bwin->Connected()) {
|
||||
bwin->LockBuffer();
|
||||
int32 windowPitch = window->surface->pitch;
|
||||
int32 bufferPitch = bwin->GetRowBytes();
|
||||
uint8 *windowpx;
|
||||
uint8 *bufferpx;
|
||||
if(bwin->ConnectionEnabled() && bwin->Connected()) {
|
||||
bwin->LockBuffer();
|
||||
int32 windowPitch = window->surface->pitch;
|
||||
int32 bufferPitch = bwin->GetRowBytes();
|
||||
uint8 *windowpx;
|
||||
uint8 *bufferpx;
|
||||
|
||||
int32 BPP = bwin->GetBytesPerPx();
|
||||
uint8 *windowBaseAddress = (uint8*)window->surface->pixels;
|
||||
int32 windowSub = bwin->GetFbX() * BPP +
|
||||
bwin->GetFbY() * windowPitch;
|
||||
clipping_rect *clips = bwin->GetClips();
|
||||
int32 numClips = bwin->GetNumClips();
|
||||
int i, y;
|
||||
int32 BPP = bwin->GetBytesPerPx();
|
||||
uint8 *windowBaseAddress = (uint8*)window->surface->pixels;
|
||||
int32 windowSub = bwin->GetFbX() * BPP +
|
||||
bwin->GetFbY() * windowPitch;
|
||||
clipping_rect *clips = bwin->GetClips();
|
||||
int32 numClips = bwin->GetNumClips();
|
||||
int i, y;
|
||||
|
||||
/* Blit each clipping rectangle */
|
||||
bscreen.WaitForRetrace();
|
||||
for(i = 0; i < numClips; ++i) {
|
||||
/* Get addresses of the start of each clipping rectangle */
|
||||
int32 width = clips[i].right - clips[i].left + 1;
|
||||
int32 height = clips[i].bottom - clips[i].top + 1;
|
||||
bufferpx = bwin->GetBufferPx() +
|
||||
clips[i].top * bufferPitch + clips[i].left * BPP;
|
||||
windowpx = windowBaseAddress +
|
||||
clips[i].top * windowPitch + clips[i].left * BPP - windowSub;
|
||||
/* Blit each clipping rectangle */
|
||||
bscreen.WaitForRetrace();
|
||||
for(i = 0; i < numClips; ++i) {
|
||||
/* Get addresses of the start of each clipping rectangle */
|
||||
int32 width = clips[i].right - clips[i].left + 1;
|
||||
int32 height = clips[i].bottom - clips[i].top + 1;
|
||||
bufferpx = bwin->GetBufferPx() +
|
||||
clips[i].top * bufferPitch + clips[i].left * BPP;
|
||||
windowpx = windowBaseAddress +
|
||||
clips[i].top * windowPitch + clips[i].left * BPP - windowSub;
|
||||
|
||||
/* Copy each row of pixels from the window buffer into the frame
|
||||
buffer */
|
||||
for(y = 0; y < height; ++y)
|
||||
{
|
||||
memcpy(bufferpx, windowpx, width * BPP);
|
||||
bufferpx += bufferPitch;
|
||||
windowpx += windowPitch;
|
||||
}
|
||||
}
|
||||
bwin->UnlockBuffer();
|
||||
}
|
||||
return 0;
|
||||
/* Copy each row of pixels from the window buffer into the frame
|
||||
buffer */
|
||||
for(y = 0; y < height; ++y)
|
||||
{
|
||||
memcpy(bufferpx, windowpx, width * BPP);
|
||||
bufferpx += bufferPitch;
|
||||
windowpx += windowPitch;
|
||||
}
|
||||
}
|
||||
bwin->UnlockBuffer();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -42,143 +42,143 @@ static SDL_Scancode keymap[KEYMAP_SIZE];
|
||||
static int8 keystate[KEYMAP_SIZE];
|
||||
|
||||
void HAIKU_InitOSKeymap(void) {
|
||||
for( uint i = 0; i < SDL_TABLESIZE(keymap); ++i ) {
|
||||
keymap[i] = SDL_SCANCODE_UNKNOWN;
|
||||
}
|
||||
for( uint i = 0; i < SDL_TABLESIZE(keymap); ++i ) {
|
||||
keymap[i] = SDL_SCANCODE_UNKNOWN;
|
||||
}
|
||||
|
||||
for( uint i = 0; i < KEYMAP_SIZE; ++i ) {
|
||||
keystate[i] = SDL_RELEASED;
|
||||
}
|
||||
for( uint i = 0; i < KEYMAP_SIZE; ++i ) {
|
||||
keystate[i] = SDL_RELEASED;
|
||||
}
|
||||
|
||||
keymap[0x01] = SDL_GetScancodeFromKey(SDLK_ESCAPE);
|
||||
keymap[B_F1_KEY] = SDL_GetScancodeFromKey(SDLK_F1);
|
||||
keymap[B_F2_KEY] = SDL_GetScancodeFromKey(SDLK_F2);
|
||||
keymap[B_F3_KEY] = SDL_GetScancodeFromKey(SDLK_F3);
|
||||
keymap[B_F4_KEY] = SDL_GetScancodeFromKey(SDLK_F4);
|
||||
keymap[B_F5_KEY] = SDL_GetScancodeFromKey(SDLK_F5);
|
||||
keymap[B_F6_KEY] = SDL_GetScancodeFromKey(SDLK_F6);
|
||||
keymap[B_F7_KEY] = SDL_GetScancodeFromKey(SDLK_F7);
|
||||
keymap[B_F8_KEY] = SDL_GetScancodeFromKey(SDLK_F8);
|
||||
keymap[B_F9_KEY] = SDL_GetScancodeFromKey(SDLK_F9);
|
||||
keymap[B_F10_KEY] = SDL_GetScancodeFromKey(SDLK_F10);
|
||||
keymap[B_F11_KEY] = SDL_GetScancodeFromKey(SDLK_F11);
|
||||
keymap[B_F12_KEY] = SDL_GetScancodeFromKey(SDLK_F12);
|
||||
keymap[B_PRINT_KEY] = SDL_GetScancodeFromKey(SDLK_PRINTSCREEN);
|
||||
keymap[B_SCROLL_KEY] = SDL_GetScancodeFromKey(SDLK_SCROLLLOCK);
|
||||
keymap[B_PAUSE_KEY] = SDL_GetScancodeFromKey(SDLK_PAUSE);
|
||||
keymap[0x11] = SDL_GetScancodeFromKey(SDLK_BACKQUOTE);
|
||||
keymap[0x12] = SDL_GetScancodeFromKey(SDLK_1);
|
||||
keymap[0x13] = SDL_GetScancodeFromKey(SDLK_2);
|
||||
keymap[0x14] = SDL_GetScancodeFromKey(SDLK_3);
|
||||
keymap[0x15] = SDL_GetScancodeFromKey(SDLK_4);
|
||||
keymap[0x16] = SDL_GetScancodeFromKey(SDLK_5);
|
||||
keymap[0x17] = SDL_GetScancodeFromKey(SDLK_6);
|
||||
keymap[0x18] = SDL_GetScancodeFromKey(SDLK_7);
|
||||
keymap[0x19] = SDL_GetScancodeFromKey(SDLK_8);
|
||||
keymap[0x1a] = SDL_GetScancodeFromKey(SDLK_9);
|
||||
keymap[0x1b] = SDL_GetScancodeFromKey(SDLK_0);
|
||||
keymap[0x1c] = SDL_GetScancodeFromKey(SDLK_MINUS);
|
||||
keymap[0x1d] = SDL_GetScancodeFromKey(SDLK_EQUALS);
|
||||
keymap[0x1e] = SDL_GetScancodeFromKey(SDLK_BACKSPACE);
|
||||
keymap[0x1f] = SDL_GetScancodeFromKey(SDLK_INSERT);
|
||||
keymap[0x20] = SDL_GetScancodeFromKey(SDLK_HOME);
|
||||
keymap[0x21] = SDL_GetScancodeFromKey(SDLK_PAGEUP);
|
||||
keymap[0x22] = SDL_GetScancodeFromKey(SDLK_NUMLOCKCLEAR);
|
||||
keymap[0x23] = SDL_GetScancodeFromKey(SDLK_KP_DIVIDE);
|
||||
keymap[0x24] = SDL_GetScancodeFromKey(SDLK_KP_MULTIPLY);
|
||||
keymap[0x25] = SDL_GetScancodeFromKey(SDLK_KP_MINUS);
|
||||
keymap[0x26] = SDL_GetScancodeFromKey(SDLK_TAB);
|
||||
keymap[0x27] = SDL_GetScancodeFromKey(SDLK_q);
|
||||
keymap[0x28] = SDL_GetScancodeFromKey(SDLK_w);
|
||||
keymap[0x29] = SDL_GetScancodeFromKey(SDLK_e);
|
||||
keymap[0x2a] = SDL_GetScancodeFromKey(SDLK_r);
|
||||
keymap[0x2b] = SDL_GetScancodeFromKey(SDLK_t);
|
||||
keymap[0x2c] = SDL_GetScancodeFromKey(SDLK_y);
|
||||
keymap[0x2d] = SDL_GetScancodeFromKey(SDLK_u);
|
||||
keymap[0x2e] = SDL_GetScancodeFromKey(SDLK_i);
|
||||
keymap[0x2f] = SDL_GetScancodeFromKey(SDLK_o);
|
||||
keymap[0x30] = SDL_GetScancodeFromKey(SDLK_p);
|
||||
keymap[0x31] = SDL_GetScancodeFromKey(SDLK_LEFTBRACKET);
|
||||
keymap[0x32] = SDL_GetScancodeFromKey(SDLK_RIGHTBRACKET);
|
||||
keymap[0x33] = SDL_GetScancodeFromKey(SDLK_BACKSLASH);
|
||||
keymap[0x34] = SDL_GetScancodeFromKey(SDLK_DELETE);
|
||||
keymap[0x35] = SDL_GetScancodeFromKey(SDLK_END);
|
||||
keymap[0x36] = SDL_GetScancodeFromKey(SDLK_PAGEDOWN);
|
||||
keymap[0x37] = SDL_GetScancodeFromKey(SDLK_KP_7);
|
||||
keymap[0x38] = SDL_GetScancodeFromKey(SDLK_KP_8);
|
||||
keymap[0x39] = SDL_GetScancodeFromKey(SDLK_KP_9);
|
||||
keymap[0x3a] = SDL_GetScancodeFromKey(SDLK_KP_PLUS);
|
||||
keymap[0x3b] = SDL_GetScancodeFromKey(SDLK_CAPSLOCK);
|
||||
keymap[0x3c] = SDL_GetScancodeFromKey(SDLK_a);
|
||||
keymap[0x3d] = SDL_GetScancodeFromKey(SDLK_s);
|
||||
keymap[0x3e] = SDL_GetScancodeFromKey(SDLK_d);
|
||||
keymap[0x3f] = SDL_GetScancodeFromKey(SDLK_f);
|
||||
keymap[0x40] = SDL_GetScancodeFromKey(SDLK_g);
|
||||
keymap[0x41] = SDL_GetScancodeFromKey(SDLK_h);
|
||||
keymap[0x42] = SDL_GetScancodeFromKey(SDLK_j);
|
||||
keymap[0x43] = SDL_GetScancodeFromKey(SDLK_k);
|
||||
keymap[0x44] = SDL_GetScancodeFromKey(SDLK_l);
|
||||
keymap[0x45] = SDL_GetScancodeFromKey(SDLK_SEMICOLON);
|
||||
keymap[0x46] = SDL_GetScancodeFromKey(SDLK_QUOTE);
|
||||
keymap[0x47] = SDL_GetScancodeFromKey(SDLK_RETURN);
|
||||
keymap[0x48] = SDL_GetScancodeFromKey(SDLK_KP_4);
|
||||
keymap[0x49] = SDL_GetScancodeFromKey(SDLK_KP_5);
|
||||
keymap[0x4a] = SDL_GetScancodeFromKey(SDLK_KP_6);
|
||||
keymap[0x4b] = SDL_GetScancodeFromKey(SDLK_LSHIFT);
|
||||
keymap[0x4c] = SDL_GetScancodeFromKey(SDLK_z);
|
||||
keymap[0x4d] = SDL_GetScancodeFromKey(SDLK_x);
|
||||
keymap[0x4e] = SDL_GetScancodeFromKey(SDLK_c);
|
||||
keymap[0x4f] = SDL_GetScancodeFromKey(SDLK_v);
|
||||
keymap[0x50] = SDL_GetScancodeFromKey(SDLK_b);
|
||||
keymap[0x51] = SDL_GetScancodeFromKey(SDLK_n);
|
||||
keymap[0x52] = SDL_GetScancodeFromKey(SDLK_m);
|
||||
keymap[0x53] = SDL_GetScancodeFromKey(SDLK_COMMA);
|
||||
keymap[0x54] = SDL_GetScancodeFromKey(SDLK_PERIOD);
|
||||
keymap[0x55] = SDL_GetScancodeFromKey(SDLK_SLASH);
|
||||
keymap[0x56] = SDL_GetScancodeFromKey(SDLK_RSHIFT);
|
||||
keymap[0x57] = SDL_GetScancodeFromKey(SDLK_UP);
|
||||
keymap[0x58] = SDL_GetScancodeFromKey(SDLK_KP_1);
|
||||
keymap[0x59] = SDL_GetScancodeFromKey(SDLK_KP_2);
|
||||
keymap[0x5a] = SDL_GetScancodeFromKey(SDLK_KP_3);
|
||||
keymap[0x5b] = SDL_GetScancodeFromKey(SDLK_KP_ENTER);
|
||||
keymap[0x5c] = SDL_GetScancodeFromKey(SDLK_LCTRL);
|
||||
keymap[0x5d] = SDL_GetScancodeFromKey(SDLK_LALT);
|
||||
keymap[0x5e] = SDL_GetScancodeFromKey(SDLK_SPACE);
|
||||
keymap[0x5f] = SDL_GetScancodeFromKey(SDLK_RALT);
|
||||
keymap[0x60] = SDL_GetScancodeFromKey(SDLK_RCTRL);
|
||||
keymap[0x61] = SDL_GetScancodeFromKey(SDLK_LEFT);
|
||||
keymap[0x62] = SDL_GetScancodeFromKey(SDLK_DOWN);
|
||||
keymap[0x63] = SDL_GetScancodeFromKey(SDLK_RIGHT);
|
||||
keymap[0x64] = SDL_GetScancodeFromKey(SDLK_KP_0);
|
||||
keymap[0x65] = SDL_GetScancodeFromKey(SDLK_KP_PERIOD);
|
||||
keymap[0x66] = SDL_GetScancodeFromKey(SDLK_LGUI);
|
||||
keymap[0x67] = SDL_GetScancodeFromKey(SDLK_RGUI);
|
||||
keymap[0x68] = SDL_GetScancodeFromKey(SDLK_MENU);
|
||||
keymap[0x69] = SDL_GetScancodeFromKey(SDLK_2); /* SDLK_EURO */
|
||||
keymap[0x6a] = SDL_GetScancodeFromKey(SDLK_KP_EQUALS);
|
||||
keymap[0x6b] = SDL_GetScancodeFromKey(SDLK_POWER);
|
||||
keymap[0x01] = SDL_GetScancodeFromKey(SDLK_ESCAPE);
|
||||
keymap[B_F1_KEY] = SDL_GetScancodeFromKey(SDLK_F1);
|
||||
keymap[B_F2_KEY] = SDL_GetScancodeFromKey(SDLK_F2);
|
||||
keymap[B_F3_KEY] = SDL_GetScancodeFromKey(SDLK_F3);
|
||||
keymap[B_F4_KEY] = SDL_GetScancodeFromKey(SDLK_F4);
|
||||
keymap[B_F5_KEY] = SDL_GetScancodeFromKey(SDLK_F5);
|
||||
keymap[B_F6_KEY] = SDL_GetScancodeFromKey(SDLK_F6);
|
||||
keymap[B_F7_KEY] = SDL_GetScancodeFromKey(SDLK_F7);
|
||||
keymap[B_F8_KEY] = SDL_GetScancodeFromKey(SDLK_F8);
|
||||
keymap[B_F9_KEY] = SDL_GetScancodeFromKey(SDLK_F9);
|
||||
keymap[B_F10_KEY] = SDL_GetScancodeFromKey(SDLK_F10);
|
||||
keymap[B_F11_KEY] = SDL_GetScancodeFromKey(SDLK_F11);
|
||||
keymap[B_F12_KEY] = SDL_GetScancodeFromKey(SDLK_F12);
|
||||
keymap[B_PRINT_KEY] = SDL_GetScancodeFromKey(SDLK_PRINTSCREEN);
|
||||
keymap[B_SCROLL_KEY] = SDL_GetScancodeFromKey(SDLK_SCROLLLOCK);
|
||||
keymap[B_PAUSE_KEY] = SDL_GetScancodeFromKey(SDLK_PAUSE);
|
||||
keymap[0x11] = SDL_GetScancodeFromKey(SDLK_BACKQUOTE);
|
||||
keymap[0x12] = SDL_GetScancodeFromKey(SDLK_1);
|
||||
keymap[0x13] = SDL_GetScancodeFromKey(SDLK_2);
|
||||
keymap[0x14] = SDL_GetScancodeFromKey(SDLK_3);
|
||||
keymap[0x15] = SDL_GetScancodeFromKey(SDLK_4);
|
||||
keymap[0x16] = SDL_GetScancodeFromKey(SDLK_5);
|
||||
keymap[0x17] = SDL_GetScancodeFromKey(SDLK_6);
|
||||
keymap[0x18] = SDL_GetScancodeFromKey(SDLK_7);
|
||||
keymap[0x19] = SDL_GetScancodeFromKey(SDLK_8);
|
||||
keymap[0x1a] = SDL_GetScancodeFromKey(SDLK_9);
|
||||
keymap[0x1b] = SDL_GetScancodeFromKey(SDLK_0);
|
||||
keymap[0x1c] = SDL_GetScancodeFromKey(SDLK_MINUS);
|
||||
keymap[0x1d] = SDL_GetScancodeFromKey(SDLK_EQUALS);
|
||||
keymap[0x1e] = SDL_GetScancodeFromKey(SDLK_BACKSPACE);
|
||||
keymap[0x1f] = SDL_GetScancodeFromKey(SDLK_INSERT);
|
||||
keymap[0x20] = SDL_GetScancodeFromKey(SDLK_HOME);
|
||||
keymap[0x21] = SDL_GetScancodeFromKey(SDLK_PAGEUP);
|
||||
keymap[0x22] = SDL_GetScancodeFromKey(SDLK_NUMLOCKCLEAR);
|
||||
keymap[0x23] = SDL_GetScancodeFromKey(SDLK_KP_DIVIDE);
|
||||
keymap[0x24] = SDL_GetScancodeFromKey(SDLK_KP_MULTIPLY);
|
||||
keymap[0x25] = SDL_GetScancodeFromKey(SDLK_KP_MINUS);
|
||||
keymap[0x26] = SDL_GetScancodeFromKey(SDLK_TAB);
|
||||
keymap[0x27] = SDL_GetScancodeFromKey(SDLK_q);
|
||||
keymap[0x28] = SDL_GetScancodeFromKey(SDLK_w);
|
||||
keymap[0x29] = SDL_GetScancodeFromKey(SDLK_e);
|
||||
keymap[0x2a] = SDL_GetScancodeFromKey(SDLK_r);
|
||||
keymap[0x2b] = SDL_GetScancodeFromKey(SDLK_t);
|
||||
keymap[0x2c] = SDL_GetScancodeFromKey(SDLK_y);
|
||||
keymap[0x2d] = SDL_GetScancodeFromKey(SDLK_u);
|
||||
keymap[0x2e] = SDL_GetScancodeFromKey(SDLK_i);
|
||||
keymap[0x2f] = SDL_GetScancodeFromKey(SDLK_o);
|
||||
keymap[0x30] = SDL_GetScancodeFromKey(SDLK_p);
|
||||
keymap[0x31] = SDL_GetScancodeFromKey(SDLK_LEFTBRACKET);
|
||||
keymap[0x32] = SDL_GetScancodeFromKey(SDLK_RIGHTBRACKET);
|
||||
keymap[0x33] = SDL_GetScancodeFromKey(SDLK_BACKSLASH);
|
||||
keymap[0x34] = SDL_GetScancodeFromKey(SDLK_DELETE);
|
||||
keymap[0x35] = SDL_GetScancodeFromKey(SDLK_END);
|
||||
keymap[0x36] = SDL_GetScancodeFromKey(SDLK_PAGEDOWN);
|
||||
keymap[0x37] = SDL_GetScancodeFromKey(SDLK_KP_7);
|
||||
keymap[0x38] = SDL_GetScancodeFromKey(SDLK_KP_8);
|
||||
keymap[0x39] = SDL_GetScancodeFromKey(SDLK_KP_9);
|
||||
keymap[0x3a] = SDL_GetScancodeFromKey(SDLK_KP_PLUS);
|
||||
keymap[0x3b] = SDL_GetScancodeFromKey(SDLK_CAPSLOCK);
|
||||
keymap[0x3c] = SDL_GetScancodeFromKey(SDLK_a);
|
||||
keymap[0x3d] = SDL_GetScancodeFromKey(SDLK_s);
|
||||
keymap[0x3e] = SDL_GetScancodeFromKey(SDLK_d);
|
||||
keymap[0x3f] = SDL_GetScancodeFromKey(SDLK_f);
|
||||
keymap[0x40] = SDL_GetScancodeFromKey(SDLK_g);
|
||||
keymap[0x41] = SDL_GetScancodeFromKey(SDLK_h);
|
||||
keymap[0x42] = SDL_GetScancodeFromKey(SDLK_j);
|
||||
keymap[0x43] = SDL_GetScancodeFromKey(SDLK_k);
|
||||
keymap[0x44] = SDL_GetScancodeFromKey(SDLK_l);
|
||||
keymap[0x45] = SDL_GetScancodeFromKey(SDLK_SEMICOLON);
|
||||
keymap[0x46] = SDL_GetScancodeFromKey(SDLK_QUOTE);
|
||||
keymap[0x47] = SDL_GetScancodeFromKey(SDLK_RETURN);
|
||||
keymap[0x48] = SDL_GetScancodeFromKey(SDLK_KP_4);
|
||||
keymap[0x49] = SDL_GetScancodeFromKey(SDLK_KP_5);
|
||||
keymap[0x4a] = SDL_GetScancodeFromKey(SDLK_KP_6);
|
||||
keymap[0x4b] = SDL_GetScancodeFromKey(SDLK_LSHIFT);
|
||||
keymap[0x4c] = SDL_GetScancodeFromKey(SDLK_z);
|
||||
keymap[0x4d] = SDL_GetScancodeFromKey(SDLK_x);
|
||||
keymap[0x4e] = SDL_GetScancodeFromKey(SDLK_c);
|
||||
keymap[0x4f] = SDL_GetScancodeFromKey(SDLK_v);
|
||||
keymap[0x50] = SDL_GetScancodeFromKey(SDLK_b);
|
||||
keymap[0x51] = SDL_GetScancodeFromKey(SDLK_n);
|
||||
keymap[0x52] = SDL_GetScancodeFromKey(SDLK_m);
|
||||
keymap[0x53] = SDL_GetScancodeFromKey(SDLK_COMMA);
|
||||
keymap[0x54] = SDL_GetScancodeFromKey(SDLK_PERIOD);
|
||||
keymap[0x55] = SDL_GetScancodeFromKey(SDLK_SLASH);
|
||||
keymap[0x56] = SDL_GetScancodeFromKey(SDLK_RSHIFT);
|
||||
keymap[0x57] = SDL_GetScancodeFromKey(SDLK_UP);
|
||||
keymap[0x58] = SDL_GetScancodeFromKey(SDLK_KP_1);
|
||||
keymap[0x59] = SDL_GetScancodeFromKey(SDLK_KP_2);
|
||||
keymap[0x5a] = SDL_GetScancodeFromKey(SDLK_KP_3);
|
||||
keymap[0x5b] = SDL_GetScancodeFromKey(SDLK_KP_ENTER);
|
||||
keymap[0x5c] = SDL_GetScancodeFromKey(SDLK_LCTRL);
|
||||
keymap[0x5d] = SDL_GetScancodeFromKey(SDLK_LALT);
|
||||
keymap[0x5e] = SDL_GetScancodeFromKey(SDLK_SPACE);
|
||||
keymap[0x5f] = SDL_GetScancodeFromKey(SDLK_RALT);
|
||||
keymap[0x60] = SDL_GetScancodeFromKey(SDLK_RCTRL);
|
||||
keymap[0x61] = SDL_GetScancodeFromKey(SDLK_LEFT);
|
||||
keymap[0x62] = SDL_GetScancodeFromKey(SDLK_DOWN);
|
||||
keymap[0x63] = SDL_GetScancodeFromKey(SDLK_RIGHT);
|
||||
keymap[0x64] = SDL_GetScancodeFromKey(SDLK_KP_0);
|
||||
keymap[0x65] = SDL_GetScancodeFromKey(SDLK_KP_PERIOD);
|
||||
keymap[0x66] = SDL_GetScancodeFromKey(SDLK_LGUI);
|
||||
keymap[0x67] = SDL_GetScancodeFromKey(SDLK_RGUI);
|
||||
keymap[0x68] = SDL_GetScancodeFromKey(SDLK_MENU);
|
||||
keymap[0x69] = SDL_GetScancodeFromKey(SDLK_2); /* SDLK_EURO */
|
||||
keymap[0x6a] = SDL_GetScancodeFromKey(SDLK_KP_EQUALS);
|
||||
keymap[0x6b] = SDL_GetScancodeFromKey(SDLK_POWER);
|
||||
}
|
||||
|
||||
SDL_Scancode HAIKU_GetScancodeFromBeKey(int32 bkey) {
|
||||
if(bkey > 0 && bkey < (int32)SDL_TABLESIZE(keymap)) {
|
||||
return keymap[bkey];
|
||||
} else {
|
||||
return SDL_SCANCODE_UNKNOWN;
|
||||
}
|
||||
if(bkey > 0 && bkey < (int32)SDL_TABLESIZE(keymap)) {
|
||||
return keymap[bkey];
|
||||
} else {
|
||||
return SDL_SCANCODE_UNKNOWN;
|
||||
}
|
||||
}
|
||||
|
||||
int8 HAIKU_GetKeyState(int32 bkey) {
|
||||
if(bkey > 0 && bkey < KEYMAP_SIZE) {
|
||||
return keystate[bkey];
|
||||
} else {
|
||||
return SDL_RELEASED;
|
||||
}
|
||||
if(bkey > 0 && bkey < KEYMAP_SIZE) {
|
||||
return keystate[bkey];
|
||||
} else {
|
||||
return SDL_RELEASED;
|
||||
}
|
||||
}
|
||||
|
||||
void HAIKU_SetKeyState(int32 bkey, int8 state) {
|
||||
if(bkey > 0 && bkey < KEYMAP_SIZE) {
|
||||
keystate[bkey] = state;
|
||||
}
|
||||
if(bkey > 0 && bkey < KEYMAP_SIZE) {
|
||||
keystate[bkey] = state;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -44,30 +44,30 @@ extern "C" {
|
||||
/* This wrapper is here so that the driverdata can be freed without freeing
|
||||
the display_mode structure */
|
||||
struct SDL_DisplayModeData {
|
||||
display_mode *bmode;
|
||||
display_mode *bmode;
|
||||
};
|
||||
#endif
|
||||
|
||||
static SDL_INLINE SDL_BWin *_ToBeWin(SDL_Window *window) {
|
||||
return ((SDL_BWin*)(window->driverdata));
|
||||
return ((SDL_BWin*)(window->driverdata));
|
||||
}
|
||||
|
||||
static SDL_INLINE SDL_BApp *_GetBeApp() {
|
||||
return ((SDL_BApp*)be_app);
|
||||
return ((SDL_BApp*)be_app);
|
||||
}
|
||||
|
||||
static SDL_INLINE display_mode * _ExtractBMode(SDL_DisplayMode *mode) {
|
||||
#if WRAP_BMODE
|
||||
return ((SDL_DisplayModeData*)mode->driverdata)->bmode;
|
||||
return ((SDL_DisplayModeData*)mode->driverdata)->bmode;
|
||||
#else
|
||||
return (display_mode*)(mode->driverdata);
|
||||
return (display_mode*)(mode->driverdata);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Copied from haiku/trunk/src/preferences/screen/ScreenMode.cpp */
|
||||
static float get_refresh_rate(display_mode &mode) {
|
||||
return float(mode.timing.pixel_clock * 1000)
|
||||
/ float(mode.timing.h_total * mode.timing.v_total);
|
||||
return float(mode.timing.pixel_clock * 1000)
|
||||
/ float(mode.timing.h_total * mode.timing.v_total);
|
||||
}
|
||||
|
||||
|
||||
@@ -76,57 +76,57 @@ static float get_refresh_rate(display_mode &mode) {
|
||||
* This is a useful debugging tool. Uncomment and insert into code as needed.
|
||||
*/
|
||||
void _SpoutModeData(display_mode *bmode) {
|
||||
printf("BMode:\n");
|
||||
printf("\tw,h = (%i,%i)\n", bmode->virtual_width, bmode->virtual_height);
|
||||
printf("\th,v = (%i,%i)\n", bmode->h_display_start,
|
||||
bmode->v_display_start);
|
||||
if(bmode->flags) {
|
||||
printf("\tFlags:\n");
|
||||
if(bmode->flags & B_SCROLL) {
|
||||
printf("\t\tB_SCROLL\n");
|
||||
}
|
||||
if(bmode->flags & B_8_BIT_DAC) {
|
||||
printf("\t\tB_8_BIT_DAC\n");
|
||||
}
|
||||
if(bmode->flags & B_HARDWARE_CURSOR) {
|
||||
printf("\t\tB_HARDWARE_CURSOR\n");
|
||||
}
|
||||
if(bmode->flags & B_PARALLEL_ACCESS) {
|
||||
printf("\t\tB_PARALLEL_ACCESS\n");
|
||||
}
|
||||
if(bmode->flags & B_DPMS) {
|
||||
printf("\t\tB_DPMS\n");
|
||||
}
|
||||
if(bmode->flags & B_IO_FB_NA) {
|
||||
printf("\t\tB_IO_FB_NA\n");
|
||||
}
|
||||
}
|
||||
printf("\tTiming:\n");
|
||||
printf("\t\tpx clock: %i\n", bmode->timing.pixel_clock);
|
||||
printf("\t\th - display: %i sync start: %i sync end: %i total: %i\n",
|
||||
bmode->timing.h_display, bmode->timing.h_sync_start,
|
||||
bmode->timing.h_sync_end, bmode->timing.h_total);
|
||||
printf("\t\tv - display: %i sync start: %i sync end: %i total: %i\n",
|
||||
bmode->timing.v_display, bmode->timing.v_sync_start,
|
||||
bmode->timing.v_sync_end, bmode->timing.v_total);
|
||||
if(bmode->timing.flags) {
|
||||
printf("\t\tFlags:\n");
|
||||
if(bmode->timing.flags & B_BLANK_PEDESTAL) {
|
||||
printf("\t\t\tB_BLANK_PEDESTAL\n");
|
||||
}
|
||||
if(bmode->timing.flags & B_TIMING_INTERLACED) {
|
||||
printf("\t\t\tB_TIMING_INTERLACED\n");
|
||||
}
|
||||
if(bmode->timing.flags & B_POSITIVE_HSYNC) {
|
||||
printf("\t\t\tB_POSITIVE_HSYNC\n");
|
||||
}
|
||||
if(bmode->timing.flags & B_POSITIVE_VSYNC) {
|
||||
printf("\t\t\tB_POSITIVE_VSYNC\n");
|
||||
}
|
||||
if(bmode->timing.flags & B_SYNC_ON_GREEN) {
|
||||
printf("\t\t\tB_SYNC_ON_GREEN\n");
|
||||
}
|
||||
}
|
||||
printf("BMode:\n");
|
||||
printf("\tw,h = (%i,%i)\n", bmode->virtual_width, bmode->virtual_height);
|
||||
printf("\th,v = (%i,%i)\n", bmode->h_display_start,
|
||||
bmode->v_display_start);
|
||||
if(bmode->flags) {
|
||||
printf("\tFlags:\n");
|
||||
if(bmode->flags & B_SCROLL) {
|
||||
printf("\t\tB_SCROLL\n");
|
||||
}
|
||||
if(bmode->flags & B_8_BIT_DAC) {
|
||||
printf("\t\tB_8_BIT_DAC\n");
|
||||
}
|
||||
if(bmode->flags & B_HARDWARE_CURSOR) {
|
||||
printf("\t\tB_HARDWARE_CURSOR\n");
|
||||
}
|
||||
if(bmode->flags & B_PARALLEL_ACCESS) {
|
||||
printf("\t\tB_PARALLEL_ACCESS\n");
|
||||
}
|
||||
if(bmode->flags & B_DPMS) {
|
||||
printf("\t\tB_DPMS\n");
|
||||
}
|
||||
if(bmode->flags & B_IO_FB_NA) {
|
||||
printf("\t\tB_IO_FB_NA\n");
|
||||
}
|
||||
}
|
||||
printf("\tTiming:\n");
|
||||
printf("\t\tpx clock: %i\n", bmode->timing.pixel_clock);
|
||||
printf("\t\th - display: %i sync start: %i sync end: %i total: %i\n",
|
||||
bmode->timing.h_display, bmode->timing.h_sync_start,
|
||||
bmode->timing.h_sync_end, bmode->timing.h_total);
|
||||
printf("\t\tv - display: %i sync start: %i sync end: %i total: %i\n",
|
||||
bmode->timing.v_display, bmode->timing.v_sync_start,
|
||||
bmode->timing.v_sync_end, bmode->timing.v_total);
|
||||
if(bmode->timing.flags) {
|
||||
printf("\t\tFlags:\n");
|
||||
if(bmode->timing.flags & B_BLANK_PEDESTAL) {
|
||||
printf("\t\t\tB_BLANK_PEDESTAL\n");
|
||||
}
|
||||
if(bmode->timing.flags & B_TIMING_INTERLACED) {
|
||||
printf("\t\t\tB_TIMING_INTERLACED\n");
|
||||
}
|
||||
if(bmode->timing.flags & B_POSITIVE_HSYNC) {
|
||||
printf("\t\t\tB_POSITIVE_HSYNC\n");
|
||||
}
|
||||
if(bmode->timing.flags & B_POSITIVE_VSYNC) {
|
||||
printf("\t\t\tB_POSITIVE_VSYNC\n");
|
||||
}
|
||||
if(bmode->timing.flags & B_SYNC_ON_GREEN) {
|
||||
printf("\t\t\tB_SYNC_ON_GREEN\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -134,101 +134,101 @@ void _SpoutModeData(display_mode *bmode) {
|
||||
|
||||
int32 HAIKU_ColorSpaceToBitsPerPixel(uint32 colorspace)
|
||||
{
|
||||
int bitsperpixel;
|
||||
int bitsperpixel;
|
||||
|
||||
bitsperpixel = 0;
|
||||
switch (colorspace) {
|
||||
case B_CMAP8:
|
||||
bitsperpixel = 8;
|
||||
break;
|
||||
case B_RGB15:
|
||||
case B_RGBA15:
|
||||
case B_RGB15_BIG:
|
||||
case B_RGBA15_BIG:
|
||||
bitsperpixel = 15;
|
||||
break;
|
||||
case B_RGB16:
|
||||
case B_RGB16_BIG:
|
||||
bitsperpixel = 16;
|
||||
break;
|
||||
case B_RGB32:
|
||||
case B_RGBA32:
|
||||
case B_RGB32_BIG:
|
||||
case B_RGBA32_BIG:
|
||||
bitsperpixel = 32;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return(bitsperpixel);
|
||||
bitsperpixel = 0;
|
||||
switch (colorspace) {
|
||||
case B_CMAP8:
|
||||
bitsperpixel = 8;
|
||||
break;
|
||||
case B_RGB15:
|
||||
case B_RGBA15:
|
||||
case B_RGB15_BIG:
|
||||
case B_RGBA15_BIG:
|
||||
bitsperpixel = 15;
|
||||
break;
|
||||
case B_RGB16:
|
||||
case B_RGB16_BIG:
|
||||
bitsperpixel = 16;
|
||||
break;
|
||||
case B_RGB32:
|
||||
case B_RGBA32:
|
||||
case B_RGB32_BIG:
|
||||
case B_RGBA32_BIG:
|
||||
bitsperpixel = 32;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return(bitsperpixel);
|
||||
}
|
||||
|
||||
int32 HAIKU_BPPToSDLPxFormat(int32 bpp) {
|
||||
/* Translation taken from SDL_windowsmodes.c */
|
||||
switch (bpp) {
|
||||
case 32:
|
||||
return SDL_PIXELFORMAT_RGB888;
|
||||
break;
|
||||
case 24: /* May not be supported by Haiku */
|
||||
return SDL_PIXELFORMAT_RGB24;
|
||||
break;
|
||||
case 16:
|
||||
return SDL_PIXELFORMAT_RGB565;
|
||||
break;
|
||||
case 15:
|
||||
return SDL_PIXELFORMAT_RGB555;
|
||||
break;
|
||||
case 8:
|
||||
return SDL_PIXELFORMAT_INDEX8;
|
||||
break;
|
||||
case 4: /* May not be supported by Haiku */
|
||||
return SDL_PIXELFORMAT_INDEX4LSB;
|
||||
break;
|
||||
}
|
||||
/* Translation taken from SDL_windowsmodes.c */
|
||||
switch (bpp) {
|
||||
case 32:
|
||||
return SDL_PIXELFORMAT_RGB888;
|
||||
break;
|
||||
case 24: /* May not be supported by Haiku */
|
||||
return SDL_PIXELFORMAT_RGB24;
|
||||
break;
|
||||
case 16:
|
||||
return SDL_PIXELFORMAT_RGB565;
|
||||
break;
|
||||
case 15:
|
||||
return SDL_PIXELFORMAT_RGB555;
|
||||
break;
|
||||
case 8:
|
||||
return SDL_PIXELFORMAT_INDEX8;
|
||||
break;
|
||||
case 4: /* May not be supported by Haiku */
|
||||
return SDL_PIXELFORMAT_INDEX4LSB;
|
||||
break;
|
||||
}
|
||||
|
||||
/* May never get here, but safer and needed to shut up compiler */
|
||||
SDL_SetError("Invalid bpp value");
|
||||
return 0;
|
||||
/* May never get here, but safer and needed to shut up compiler */
|
||||
SDL_SetError("Invalid bpp value");
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void _BDisplayModeToSdlDisplayMode(display_mode *bmode,
|
||||
SDL_DisplayMode *mode) {
|
||||
mode->w = bmode->virtual_width;
|
||||
mode->h = bmode->virtual_height;
|
||||
mode->refresh_rate = (int)get_refresh_rate(*bmode);
|
||||
SDL_DisplayMode *mode) {
|
||||
mode->w = bmode->virtual_width;
|
||||
mode->h = bmode->virtual_height;
|
||||
mode->refresh_rate = (int)get_refresh_rate(*bmode);
|
||||
|
||||
#if WRAP_BMODE
|
||||
SDL_DisplayModeData *data = (SDL_DisplayModeData*)SDL_calloc(1,
|
||||
sizeof(SDL_DisplayModeData));
|
||||
data->bmode = bmode;
|
||||
|
||||
mode->driverdata = data;
|
||||
SDL_DisplayModeData *data = (SDL_DisplayModeData*)SDL_calloc(1,
|
||||
sizeof(SDL_DisplayModeData));
|
||||
data->bmode = bmode;
|
||||
|
||||
mode->driverdata = data;
|
||||
|
||||
#else
|
||||
|
||||
mode->driverdata = bmode;
|
||||
mode->driverdata = bmode;
|
||||
#endif
|
||||
|
||||
/* Set the format */
|
||||
int32 bpp = HAIKU_ColorSpaceToBitsPerPixel(bmode->space);
|
||||
mode->format = HAIKU_BPPToSDLPxFormat(bpp);
|
||||
/* Set the format */
|
||||
int32 bpp = HAIKU_ColorSpaceToBitsPerPixel(bmode->space);
|
||||
mode->format = HAIKU_BPPToSDLPxFormat(bpp);
|
||||
}
|
||||
|
||||
/* Later, there may be more than one monitor available */
|
||||
static void _AddDisplay(BScreen *screen) {
|
||||
SDL_VideoDisplay display;
|
||||
SDL_DisplayMode *mode = (SDL_DisplayMode*)SDL_calloc(1,
|
||||
sizeof(SDL_DisplayMode));
|
||||
display_mode *bmode = (display_mode*)SDL_calloc(1, sizeof(display_mode));
|
||||
screen->GetMode(bmode);
|
||||
SDL_VideoDisplay display;
|
||||
SDL_DisplayMode *mode = (SDL_DisplayMode*)SDL_calloc(1,
|
||||
sizeof(SDL_DisplayMode));
|
||||
display_mode *bmode = (display_mode*)SDL_calloc(1, sizeof(display_mode));
|
||||
screen->GetMode(bmode);
|
||||
|
||||
_BDisplayModeToSdlDisplayMode(bmode, mode);
|
||||
|
||||
SDL_zero(display);
|
||||
display.desktop_mode = *mode;
|
||||
display.current_mode = *mode;
|
||||
|
||||
SDL_AddVideoDisplay(&display);
|
||||
_BDisplayModeToSdlDisplayMode(bmode, mode);
|
||||
|
||||
SDL_zero(display);
|
||||
display.desktop_mode = *mode;
|
||||
display.current_mode = *mode;
|
||||
|
||||
SDL_AddVideoDisplay(&display);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -236,92 +236,92 @@ static void _AddDisplay(BScreen *screen) {
|
||||
*/
|
||||
|
||||
int HAIKU_InitModes(_THIS) {
|
||||
BScreen screen;
|
||||
BScreen screen;
|
||||
|
||||
/* TODO: When Haiku supports multiple display screens, call
|
||||
_AddDisplayScreen() for each of them. */
|
||||
_AddDisplay(&screen);
|
||||
return 0;
|
||||
/* TODO: When Haiku supports multiple display screens, call
|
||||
_AddDisplayScreen() for each of them. */
|
||||
_AddDisplay(&screen);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int HAIKU_QuitModes(_THIS) {
|
||||
/* FIXME: Nothing really needs to be done here at the moment? */
|
||||
return 0;
|
||||
/* FIXME: Nothing really needs to be done here at the moment? */
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int HAIKU_GetDisplayBounds(_THIS, SDL_VideoDisplay *display, SDL_Rect *rect) {
|
||||
BScreen bscreen;
|
||||
BRect rc = bscreen.Frame();
|
||||
rect->x = (int)rc.left;
|
||||
rect->y = (int)rc.top;
|
||||
rect->w = (int)rc.Width() + 1;
|
||||
rect->h = (int)rc.Height() + 1;
|
||||
return 0;
|
||||
BScreen bscreen;
|
||||
BRect rc = bscreen.Frame();
|
||||
rect->x = (int)rc.left;
|
||||
rect->y = (int)rc.top;
|
||||
rect->w = (int)rc.Width() + 1;
|
||||
rect->h = (int)rc.Height() + 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void HAIKU_GetDisplayModes(_THIS, SDL_VideoDisplay *display) {
|
||||
/* Get the current screen */
|
||||
BScreen bscreen;
|
||||
/* Get the current screen */
|
||||
BScreen bscreen;
|
||||
|
||||
/* Iterate through all of the modes */
|
||||
SDL_DisplayMode mode;
|
||||
display_mode this_bmode;
|
||||
display_mode *bmodes;
|
||||
uint32 count, i;
|
||||
|
||||
/* Get graphics-hardware supported modes */
|
||||
bscreen.GetModeList(&bmodes, &count);
|
||||
bscreen.GetMode(&this_bmode);
|
||||
|
||||
for(i = 0; i < count; ++i) {
|
||||
// FIXME: Apparently there are errors with colorspace changes
|
||||
if (bmodes[i].space == this_bmode.space) {
|
||||
_BDisplayModeToSdlDisplayMode(&bmodes[i], &mode);
|
||||
SDL_AddDisplayMode(display, &mode);
|
||||
}
|
||||
}
|
||||
free(bmodes);
|
||||
/* Iterate through all of the modes */
|
||||
SDL_DisplayMode mode;
|
||||
display_mode this_bmode;
|
||||
display_mode *bmodes;
|
||||
uint32 count, i;
|
||||
|
||||
/* Get graphics-hardware supported modes */
|
||||
bscreen.GetModeList(&bmodes, &count);
|
||||
bscreen.GetMode(&this_bmode);
|
||||
|
||||
for(i = 0; i < count; ++i) {
|
||||
// FIXME: Apparently there are errors with colorspace changes
|
||||
if (bmodes[i].space == this_bmode.space) {
|
||||
_BDisplayModeToSdlDisplayMode(&bmodes[i], &mode);
|
||||
SDL_AddDisplayMode(display, &mode);
|
||||
}
|
||||
}
|
||||
free(bmodes);
|
||||
}
|
||||
|
||||
|
||||
int HAIKU_SetDisplayMode(_THIS, SDL_VideoDisplay *display, SDL_DisplayMode *mode){
|
||||
/* Get the current screen */
|
||||
BScreen bscreen;
|
||||
if(!bscreen.IsValid()) {
|
||||
printf(__FILE__": %d - ERROR: BAD SCREEN\n", __LINE__);
|
||||
}
|
||||
/* Get the current screen */
|
||||
BScreen bscreen;
|
||||
if(!bscreen.IsValid()) {
|
||||
printf(__FILE__": %d - ERROR: BAD SCREEN\n", __LINE__);
|
||||
}
|
||||
|
||||
/* Set the mode using the driver data */
|
||||
display_mode *bmode = _ExtractBMode(mode);
|
||||
/* Set the mode using the driver data */
|
||||
display_mode *bmode = _ExtractBMode(mode);
|
||||
|
||||
|
||||
/* FIXME: Is the first option always going to be the right one? */
|
||||
uint32 c = 0, i;
|
||||
display_mode *bmode_list;
|
||||
bscreen.GetModeList(&bmode_list, &c);
|
||||
for(i = 0; i < c; ++i) {
|
||||
if( bmode_list[i].space == bmode->space &&
|
||||
bmode_list[i].virtual_width == bmode->virtual_width &&
|
||||
bmode_list[i].virtual_height == bmode->virtual_height ) {
|
||||
bmode = &bmode_list[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
/* FIXME: Is the first option always going to be the right one? */
|
||||
uint32 c = 0, i;
|
||||
display_mode *bmode_list;
|
||||
bscreen.GetModeList(&bmode_list, &c);
|
||||
for(i = 0; i < c; ++i) {
|
||||
if( bmode_list[i].space == bmode->space &&
|
||||
bmode_list[i].virtual_width == bmode->virtual_width &&
|
||||
bmode_list[i].virtual_height == bmode->virtual_height ) {
|
||||
bmode = &bmode_list[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(bscreen.SetMode(bmode) != B_OK) {
|
||||
return SDL_SetError("Bad video mode");
|
||||
}
|
||||
|
||||
free(bmode_list);
|
||||
|
||||
if(bscreen.SetMode(bmode) != B_OK) {
|
||||
return SDL_SetError("Bad video mode");
|
||||
}
|
||||
|
||||
free(bmode_list);
|
||||
|
||||
#if SDL_VIDEO_OPENGL
|
||||
/* FIXME: Is there some way to reboot the OpenGL context? This doesn't
|
||||
help */
|
||||
// HAIKU_GL_RebootContexts(_this);
|
||||
/* FIXME: Is there some way to reboot the OpenGL context? This doesn't
|
||||
help */
|
||||
// HAIKU_GL_RebootContexts(_this);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -56,7 +56,7 @@ HAIKU_CreateDevice(int devindex)
|
||||
device = (SDL_VideoDevice *) SDL_calloc(1, sizeof(SDL_VideoDevice));
|
||||
|
||||
device->driverdata = NULL; /* FIXME: Is this the cause of some of the
|
||||
SDL_Quit() errors? */
|
||||
SDL_Quit() errors? */
|
||||
|
||||
/* TODO: Figure out if any initialization needs to go here */
|
||||
|
||||
@@ -122,37 +122,36 @@ HAIKU_CreateDevice(int devindex)
|
||||
}
|
||||
|
||||
VideoBootStrap HAIKU_bootstrap = {
|
||||
"haiku", "Haiku graphics",
|
||||
HAIKU_Available, HAIKU_CreateDevice
|
||||
"haiku", "Haiku graphics",
|
||||
HAIKU_Available, HAIKU_CreateDevice
|
||||
};
|
||||
|
||||
void HAIKU_DeleteDevice(SDL_VideoDevice * device)
|
||||
{
|
||||
SDL_free(device->driverdata);
|
||||
SDL_free(device);
|
||||
SDL_free(device->driverdata);
|
||||
SDL_free(device);
|
||||
}
|
||||
|
||||
int HAIKU_VideoInit(_THIS)
|
||||
{
|
||||
/* Initialize the Be Application for appserver interaction */
|
||||
if (SDL_InitBeApp() < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Initialize video modes */
|
||||
HAIKU_InitModes(_this);
|
||||
/* Initialize the Be Application for appserver interaction */
|
||||
if (SDL_InitBeApp() < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Initialize video modes */
|
||||
HAIKU_InitModes(_this);
|
||||
|
||||
/* Init the keymap */
|
||||
HAIKU_InitOSKeymap();
|
||||
|
||||
/* Init the keymap */
|
||||
HAIKU_InitOSKeymap();
|
||||
|
||||
|
||||
#if SDL_VIDEO_OPENGL
|
||||
/* testgl application doesn't load library, just tries to load symbols */
|
||||
/* is it correct? if so we have to load library here */
|
||||
HAIKU_GL_LoadLibrary(_this, NULL);
|
||||
#endif
|
||||
|
||||
/* We're done! */
|
||||
/* We're done! */
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
@@ -32,36 +32,36 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
static SDL_INLINE SDL_BWin *_ToBeWin(SDL_Window *window) {
|
||||
return ((SDL_BWin*)(window->driverdata));
|
||||
return ((SDL_BWin*)(window->driverdata));
|
||||
}
|
||||
|
||||
static SDL_INLINE SDL_BApp *_GetBeApp() {
|
||||
return ((SDL_BApp*)be_app);
|
||||
return ((SDL_BApp*)be_app);
|
||||
}
|
||||
|
||||
static int _InitWindow(_THIS, SDL_Window *window) {
|
||||
uint32 flags = 0;
|
||||
window_look look = B_TITLED_WINDOW_LOOK;
|
||||
uint32 flags = 0;
|
||||
window_look look = B_TITLED_WINDOW_LOOK;
|
||||
|
||||
BRect bounds(
|
||||
BRect bounds(
|
||||
window->x,
|
||||
window->y,
|
||||
window->x + window->w - 1, //BeWindows have an off-by-one px w/h thing
|
||||
window->x + window->w - 1, //BeWindows have an off-by-one px w/h thing
|
||||
window->y + window->h - 1
|
||||
);
|
||||
|
||||
if(window->flags & SDL_WINDOW_FULLSCREEN) {
|
||||
/* TODO: Add support for this flag */
|
||||
printf(__FILE__": %d!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n",__LINE__);
|
||||
/* TODO: Add support for this flag */
|
||||
printf(__FILE__": %d!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n",__LINE__);
|
||||
}
|
||||
if(window->flags & SDL_WINDOW_OPENGL) {
|
||||
/* TODO: Add support for this flag */
|
||||
/* TODO: Add support for this flag */
|
||||
}
|
||||
if(!(window->flags & SDL_WINDOW_RESIZABLE)) {
|
||||
flags |= B_NOT_RESIZABLE | B_NOT_ZOOMABLE;
|
||||
flags |= B_NOT_RESIZABLE | B_NOT_ZOOMABLE;
|
||||
}
|
||||
if(window->flags & SDL_WINDOW_BORDERLESS) {
|
||||
look = B_NO_BORDER_WINDOW_LOOK;
|
||||
look = B_NO_BORDER_WINDOW_LOOK;
|
||||
}
|
||||
|
||||
SDL_BWin *bwin = new(std::nothrow) SDL_BWin(bounds, look, flags);
|
||||
@@ -79,35 +79,35 @@ int HAIKU_CreateWindow(_THIS, SDL_Window *window) {
|
||||
if (_InitWindow(_this, window) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Start window loop */
|
||||
|
||||
/* Start window loop */
|
||||
_ToBeWin(window)->Show();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int HAIKU_CreateWindowFrom(_THIS, SDL_Window * window, const void *data) {
|
||||
|
||||
SDL_BWin *otherBWin = (SDL_BWin*)data;
|
||||
if(!otherBWin->LockLooper())
|
||||
return -1;
|
||||
|
||||
/* Create the new window and initialize its members */
|
||||
window->x = (int)otherBWin->Frame().left;
|
||||
window->y = (int)otherBWin->Frame().top;
|
||||
window->w = (int)otherBWin->Frame().Width();
|
||||
window->h = (int)otherBWin->Frame().Height();
|
||||
|
||||
/* Set SDL flags */
|
||||
if(!(otherBWin->Flags() & B_NOT_RESIZABLE)) {
|
||||
window->flags |= SDL_WINDOW_RESIZABLE;
|
||||
}
|
||||
|
||||
/* If we are out of memory, return the error code */
|
||||
SDL_BWin *otherBWin = (SDL_BWin*)data;
|
||||
if(!otherBWin->LockLooper())
|
||||
return -1;
|
||||
|
||||
/* Create the new window and initialize its members */
|
||||
window->x = (int)otherBWin->Frame().left;
|
||||
window->y = (int)otherBWin->Frame().top;
|
||||
window->w = (int)otherBWin->Frame().Width();
|
||||
window->h = (int)otherBWin->Frame().Height();
|
||||
|
||||
/* Set SDL flags */
|
||||
if(!(otherBWin->Flags() & B_NOT_RESIZABLE)) {
|
||||
window->flags |= SDL_WINDOW_RESIZABLE;
|
||||
}
|
||||
|
||||
/* If we are out of memory, return the error code */
|
||||
if (_InitWindow(_this, window) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* TODO: Add any other SDL-supported window attributes here */
|
||||
|
||||
/* TODO: Add any other SDL-supported window attributes here */
|
||||
_ToBeWin(window)->SetTitle(otherBWin->Title());
|
||||
|
||||
/* Start window loop and unlock the other window */
|
||||
@@ -118,106 +118,106 @@ int HAIKU_CreateWindowFrom(_THIS, SDL_Window * window, const void *data) {
|
||||
}
|
||||
|
||||
void HAIKU_SetWindowTitle(_THIS, SDL_Window * window) {
|
||||
BMessage msg(BWIN_SET_TITLE);
|
||||
msg.AddString("window-title", window->title);
|
||||
_ToBeWin(window)->PostMessage(&msg);
|
||||
BMessage msg(BWIN_SET_TITLE);
|
||||
msg.AddString("window-title", window->title);
|
||||
_ToBeWin(window)->PostMessage(&msg);
|
||||
}
|
||||
|
||||
void HAIKU_SetWindowIcon(_THIS, SDL_Window * window, SDL_Surface * icon) {
|
||||
/* FIXME: Icons not supported by Haiku */
|
||||
/* FIXME: Icons not supported by Haiku */
|
||||
}
|
||||
|
||||
void HAIKU_SetWindowPosition(_THIS, SDL_Window * window) {
|
||||
BMessage msg(BWIN_MOVE_WINDOW);
|
||||
msg.AddInt32("window-x", window->x);
|
||||
msg.AddInt32("window-y", window->y);
|
||||
_ToBeWin(window)->PostMessage(&msg);
|
||||
BMessage msg(BWIN_MOVE_WINDOW);
|
||||
msg.AddInt32("window-x", window->x);
|
||||
msg.AddInt32("window-y", window->y);
|
||||
_ToBeWin(window)->PostMessage(&msg);
|
||||
}
|
||||
|
||||
void HAIKU_SetWindowSize(_THIS, SDL_Window * window) {
|
||||
BMessage msg(BWIN_RESIZE_WINDOW);
|
||||
msg.AddInt32("window-w", window->w - 1);
|
||||
msg.AddInt32("window-h", window->h - 1);
|
||||
_ToBeWin(window)->PostMessage(&msg);
|
||||
BMessage msg(BWIN_RESIZE_WINDOW);
|
||||
msg.AddInt32("window-w", window->w - 1);
|
||||
msg.AddInt32("window-h", window->h - 1);
|
||||
_ToBeWin(window)->PostMessage(&msg);
|
||||
}
|
||||
|
||||
void HAIKU_SetWindowBordered(_THIS, SDL_Window * window, SDL_bool bordered) {
|
||||
BMessage msg(BWIN_SET_BORDERED);
|
||||
msg.AddBool("window-border", bordered != SDL_FALSE);
|
||||
_ToBeWin(window)->PostMessage(&msg);
|
||||
BMessage msg(BWIN_SET_BORDERED);
|
||||
msg.AddBool("window-border", bordered != SDL_FALSE);
|
||||
_ToBeWin(window)->PostMessage(&msg);
|
||||
}
|
||||
|
||||
void HAIKU_SetWindowResizable(_THIS, SDL_Window * window, SDL_bool resizable) {
|
||||
BMessage msg(BWIN_SET_RESIZABLE);
|
||||
msg.AddBool("window-resizable", resizable != SDL_FALSE);
|
||||
_ToBeWin(window)->PostMessage(&msg);
|
||||
BMessage msg(BWIN_SET_RESIZABLE);
|
||||
msg.AddBool("window-resizable", resizable != SDL_FALSE);
|
||||
_ToBeWin(window)->PostMessage(&msg);
|
||||
}
|
||||
|
||||
void HAIKU_ShowWindow(_THIS, SDL_Window * window) {
|
||||
BMessage msg(BWIN_SHOW_WINDOW);
|
||||
_ToBeWin(window)->PostMessage(&msg);
|
||||
BMessage msg(BWIN_SHOW_WINDOW);
|
||||
_ToBeWin(window)->PostMessage(&msg);
|
||||
}
|
||||
|
||||
void HAIKU_HideWindow(_THIS, SDL_Window * window) {
|
||||
BMessage msg(BWIN_HIDE_WINDOW);
|
||||
_ToBeWin(window)->PostMessage(&msg);
|
||||
BMessage msg(BWIN_HIDE_WINDOW);
|
||||
_ToBeWin(window)->PostMessage(&msg);
|
||||
}
|
||||
|
||||
void HAIKU_RaiseWindow(_THIS, SDL_Window * window) {
|
||||
BMessage msg(BWIN_SHOW_WINDOW); /* Activate this window and move to front */
|
||||
_ToBeWin(window)->PostMessage(&msg);
|
||||
BMessage msg(BWIN_SHOW_WINDOW); /* Activate this window and move to front */
|
||||
_ToBeWin(window)->PostMessage(&msg);
|
||||
}
|
||||
|
||||
void HAIKU_MaximizeWindow(_THIS, SDL_Window * window) {
|
||||
BMessage msg(BWIN_MAXIMIZE_WINDOW);
|
||||
_ToBeWin(window)->PostMessage(&msg);
|
||||
BMessage msg(BWIN_MAXIMIZE_WINDOW);
|
||||
_ToBeWin(window)->PostMessage(&msg);
|
||||
}
|
||||
|
||||
void HAIKU_MinimizeWindow(_THIS, SDL_Window * window) {
|
||||
BMessage msg(BWIN_MINIMIZE_WINDOW);
|
||||
_ToBeWin(window)->PostMessage(&msg);
|
||||
BMessage msg(BWIN_MINIMIZE_WINDOW);
|
||||
_ToBeWin(window)->PostMessage(&msg);
|
||||
}
|
||||
|
||||
void HAIKU_RestoreWindow(_THIS, SDL_Window * window) {
|
||||
BMessage msg(BWIN_RESTORE_WINDOW);
|
||||
_ToBeWin(window)->PostMessage(&msg);
|
||||
BMessage msg(BWIN_RESTORE_WINDOW);
|
||||
_ToBeWin(window)->PostMessage(&msg);
|
||||
}
|
||||
|
||||
void HAIKU_SetWindowFullscreen(_THIS, SDL_Window * window,
|
||||
SDL_VideoDisplay * display, SDL_bool fullscreen) {
|
||||
/* Haiku tracks all video display information */
|
||||
BMessage msg(BWIN_FULLSCREEN);
|
||||
msg.AddBool("fullscreen", fullscreen);
|
||||
_ToBeWin(window)->PostMessage(&msg);
|
||||
|
||||
SDL_VideoDisplay * display, SDL_bool fullscreen) {
|
||||
/* Haiku tracks all video display information */
|
||||
BMessage msg(BWIN_FULLSCREEN);
|
||||
msg.AddBool("fullscreen", fullscreen);
|
||||
_ToBeWin(window)->PostMessage(&msg);
|
||||
|
||||
}
|
||||
|
||||
int HAIKU_SetWindowGammaRamp(_THIS, SDL_Window * window, const Uint16 * ramp) {
|
||||
/* FIXME: Not Haiku supported */
|
||||
return -1;
|
||||
/* FIXME: Not Haiku supported */
|
||||
return -1;
|
||||
}
|
||||
|
||||
int HAIKU_GetWindowGammaRamp(_THIS, SDL_Window * window, Uint16 * ramp) {
|
||||
/* FIXME: Not Haiku supported */
|
||||
return -1;
|
||||
/* FIXME: Not Haiku supported */
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
void HAIKU_SetWindowGrab(_THIS, SDL_Window * window, SDL_bool grabbed) {
|
||||
/* TODO: Implement this! */
|
||||
/* TODO: Implement this! */
|
||||
}
|
||||
|
||||
void HAIKU_DestroyWindow(_THIS, SDL_Window * window) {
|
||||
_ToBeWin(window)->LockLooper(); /* This MUST be locked */
|
||||
_GetBeApp()->ClearID(_ToBeWin(window));
|
||||
_ToBeWin(window)->Quit();
|
||||
window->driverdata = NULL;
|
||||
_ToBeWin(window)->LockLooper(); /* This MUST be locked */
|
||||
_GetBeApp()->ClearID(_ToBeWin(window));
|
||||
_ToBeWin(window)->Quit();
|
||||
window->driverdata = NULL;
|
||||
}
|
||||
|
||||
SDL_bool HAIKU_GetWindowWMInfo(_THIS, SDL_Window * window,
|
||||
struct SDL_SysWMinfo *info) {
|
||||
/* FIXME: What is the point of this? What information should be included? */
|
||||
return SDL_FALSE;
|
||||
/* FIXME: What is the point of this? What information should be included? */
|
||||
return SDL_FALSE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user