diff --git a/include/SDL_syswm.h b/include/SDL_syswm.h index 7b8bd6e..398b0f3 100644 --- a/include/SDL_syswm.h +++ b/include/SDL_syswm.h @@ -28,10 +28,10 @@ #ifndef SDL_syswm_h_ #define SDL_syswm_h_ -#include "SDL_stdinc.h" #include "SDL_error.h" -#include "SDL_video.h" +#include "SDL_stdinc.h" #include "SDL_version.h" +#include "SDL_video.h" /** * \brief SDL_syswm.h @@ -49,7 +49,7 @@ struct SDL_SysWMinfo; #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif -#ifndef NOMINMAX /* don't define min() and max(). */ +#ifndef NOMINMAX /* don't define min() and max(). */ #define NOMINMAX #endif #include @@ -66,8 +66,8 @@ struct SDL_SysWMinfo; #define Cursor X11Cursor #endif -#include #include +#include #if defined(__APPLE__) && defined(__MACH__) /* matches the re-define above */ @@ -121,7 +121,6 @@ typedef void *EGLSurface; struct gbm_device; #endif - #include "begin_code.h" /* Set up for C function definitions, even when using C++ */ #ifdef __cplusplus @@ -141,14 +140,15 @@ typedef enum SDL_SYSWM_COCOA, SDL_SYSWM_UIKIT, SDL_SYSWM_WAYLAND, - SDL_SYSWM_MIR, /* no longer available, left for API/ABI compatibility. Remove in 2.1! */ + SDL_SYSWM_MIR, /* no longer available, left for API/ABI compatibility. Remove in 2.1! */ SDL_SYSWM_WINRT, SDL_SYSWM_ANDROID, SDL_SYSWM_VIVANTE, SDL_SYSWM_OS2, SDL_SYSWM_HAIKU, SDL_SYSWM_KMSDRM, - SDL_SYSWM_RISCOS + SDL_SYSWM_RISCOS, + SDL_SYSWM_KOLIBRI } SDL_SYSWM_TYPE; /** @@ -161,20 +161,23 @@ struct SDL_SysWMmsg union { #if defined(SDL_VIDEO_DRIVER_WINDOWS) - struct { - HWND hwnd; /**< The window for the message */ - UINT msg; /**< The type of message */ - WPARAM wParam; /**< WORD message parameter */ - LPARAM lParam; /**< LONG message parameter */ + struct + { + HWND hwnd; /**< The window for the message */ + UINT msg; /**< The type of message */ + WPARAM wParam; /**< WORD message parameter */ + LPARAM lParam; /**< LONG message parameter */ } win; #endif #if defined(SDL_VIDEO_DRIVER_X11) - struct { + struct + { XEvent event; } x11; #endif #if defined(SDL_VIDEO_DRIVER_DIRECTFB) - struct { + struct + { DFBEvent event; } dfb; #endif @@ -205,11 +208,11 @@ struct SDL_SysWMmsg #if defined(SDL_VIDEO_DRIVER_OS2) struct { - BOOL fFrame; /**< TRUE if hwnd is a frame window */ - HWND hwnd; /**< The window receiving the message */ - ULONG msg; /**< The message identifier */ - MPARAM mp1; /**< The first first message parameter */ - MPARAM mp2; /**< The second first message parameter */ + BOOL fFrame; /**< TRUE if hwnd is a frame window */ + HWND hwnd; /**< The window receiving the message */ + ULONG msg; /**< The message identifier */ + MPARAM mp1; /**< The first first message parameter */ + MPARAM mp2; /**< The second first message parameter */ } os2; #endif /* Can't have an empty union */ @@ -232,43 +235,43 @@ struct SDL_SysWMinfo #if defined(SDL_VIDEO_DRIVER_WINDOWS) struct { - HWND window; /**< The window handle */ - HDC hdc; /**< The window device context */ - HINSTANCE hinstance; /**< The instance handle */ + HWND window; /**< The window handle */ + HDC hdc; /**< The window device context */ + HINSTANCE hinstance; /**< The instance handle */ } win; #endif #if defined(SDL_VIDEO_DRIVER_WINRT) struct { - IInspectable * window; /**< The WinRT CoreWindow */ + IInspectable *window; /**< The WinRT CoreWindow */ } winrt; #endif #if defined(SDL_VIDEO_DRIVER_X11) struct { - Display *display; /**< The X11 display */ - Window window; /**< The X11 window */ + Display *display; /**< The X11 display */ + Window window; /**< The X11 window */ } x11; #endif #if defined(SDL_VIDEO_DRIVER_DIRECTFB) struct { - IDirectFB *dfb; /**< The directfb main interface */ - IDirectFBWindow *window; /**< The directfb window handle */ - IDirectFBSurface *surface; /**< The directfb client surface */ + IDirectFB *dfb; /**< The directfb main interface */ + IDirectFBWindow *window; /**< The directfb window handle */ + IDirectFBSurface *surface; /**< The directfb client surface */ } dfb; #endif #if defined(SDL_VIDEO_DRIVER_COCOA) struct { #if defined(__OBJC__) && defined(__has_feature) - #if __has_feature(objc_arc) +#if __has_feature(objc_arc) NSWindow __unsafe_unretained *window; /**< The Cocoa window */ - #else - NSWindow *window; /**< The Cocoa window */ - #endif #else - NSWindow *window; /**< The Cocoa window */ + NSWindow *window; /**< The Cocoa window */ +#endif +#else + NSWindow *window; /**< The Cocoa window */ #endif } cocoa; #endif @@ -276,37 +279,37 @@ struct SDL_SysWMinfo struct { #if defined(__OBJC__) && defined(__has_feature) - #if __has_feature(objc_arc) +#if __has_feature(objc_arc) UIWindow __unsafe_unretained *window; /**< The UIKit window */ - #else - UIWindow *window; /**< The UIKit window */ - #endif #else - UIWindow *window; /**< The UIKit window */ + UIWindow *window; /**< The UIKit window */ #endif - GLuint framebuffer; /**< The GL view's Framebuffer Object. It must be bound when rendering to the screen using GL. */ - GLuint colorbuffer; /**< The GL view's color Renderbuffer Object. It must be bound when SDL_GL_SwapWindow is called. */ +#else + UIWindow *window; /**< The UIKit window */ +#endif + GLuint framebuffer; /**< The GL view's Framebuffer Object. It must be bound when rendering to the screen using GL. */ + GLuint colorbuffer; /**< The GL view's color Renderbuffer Object. It must be bound when SDL_GL_SwapWindow is called. */ GLuint resolveFramebuffer; /**< The Framebuffer Object which holds the resolve color Renderbuffer, when MSAA is used. */ } uikit; #endif #if defined(SDL_VIDEO_DRIVER_WAYLAND) struct { - struct wl_display *display; /**< Wayland display */ - struct wl_surface *surface; /**< Wayland surface */ - void *shell_surface; /**< DEPRECATED Wayland shell_surface (window manager handle) */ - struct wl_egl_window *egl_window; /**< Wayland EGL window (native window) */ - struct xdg_surface *xdg_surface; /**< Wayland xdg surface (window manager handle) */ - struct xdg_toplevel *xdg_toplevel; /**< Wayland xdg toplevel role */ - struct xdg_popup *xdg_popup; /**< Wayland xdg popup role */ - struct xdg_positioner *xdg_positioner; /**< Wayland xdg positioner, for popup */ + struct wl_display *display; /**< Wayland display */ + struct wl_surface *surface; /**< Wayland surface */ + void *shell_surface; /**< DEPRECATED Wayland shell_surface (window manager handle) */ + struct wl_egl_window *egl_window; /**< Wayland EGL window (native window) */ + struct xdg_surface *xdg_surface; /**< Wayland xdg surface (window manager handle) */ + struct xdg_toplevel *xdg_toplevel; /**< Wayland xdg toplevel role */ + struct xdg_popup *xdg_popup; /**< Wayland xdg popup role */ + struct xdg_positioner *xdg_positioner; /**< Wayland xdg positioner, for popup */ } wl; #endif -#if defined(SDL_VIDEO_DRIVER_MIR) /* no longer available, left for API/ABI compatibility. Remove in 2.1! */ +#if defined(SDL_VIDEO_DRIVER_MIR) /* no longer available, left for API/ABI compatibility. Remove in 2.1! */ struct { - void *connection; /**< Mir display server connection */ - void *surface; /**< Mir surface */ + void *connection; /**< Mir display server connection */ + void *surface; /**< Mir surface */ } mir; #endif @@ -321,8 +324,8 @@ struct SDL_SysWMinfo #if defined(SDL_VIDEO_DRIVER_OS2) struct { - HWND hwnd; /**< The window handle */ - HWND hwndFrame; /**< The frame window handle */ + HWND hwnd; /**< The window handle */ + HWND hwndFrame; /**< The frame window handle */ } os2; #endif @@ -337,9 +340,9 @@ struct SDL_SysWMinfo #if defined(SDL_VIDEO_DRIVER_KMSDRM) struct { - int dev_index; /**< Device index (ex: the X in /dev/dri/cardX) */ - int drm_fd; /**< DRM FD (unavailable on Vulkan windows) */ - struct gbm_device *gbm_dev; /**< GBM device (unavailable on Vulkan windows) */ + int dev_index; /**< Device index (ex: the X in /dev/dri/cardX) */ + int drm_fd; /**< DRM FD (unavailable on Vulkan windows) */ + struct gbm_device *gbm_dev; /**< GBM device (unavailable on Vulkan windows) */ } kmsdrm; #endif @@ -353,7 +356,6 @@ struct SDL_SysWMinfo typedef struct SDL_SysWMinfo SDL_SysWMinfo; - /** * Get driver-specific information about a window. * @@ -371,9 +373,8 @@ typedef struct SDL_SysWMinfo SDL_SysWMinfo; * * \since This function is available since SDL 2.0.0. */ -extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowWMInfo(SDL_Window * window, - SDL_SysWMinfo * info); - +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowWMInfo(SDL_Window *window, + SDL_SysWMinfo *info); /* Ends C function definitions when using C++ */ #ifdef __cplusplus diff --git a/src/video/kolibri/SDL_kolibriclipboard.h b/src/video/kolibri/SDL_kolibriclipboard.h index 33a7803..0195666 100644 --- a/src/video/kolibri/SDL_kolibriclipboard.h +++ b/src/video/kolibri/SDL_kolibriclipboard.h @@ -4,8 +4,8 @@ #ifndef SDL_kolibriclipboard_h_ #define SDL_kolibriclipboard_h_ -extern char *KOLIBRI_GetClipboardText(_THIS); -extern int KOLIBRI_SetClipboardText(_THIS, const char *text); -extern SDL_bool KOLIBRI_HasClipboardText(_THIS); +char *KOLIBRI_GetClipboardText(_THIS); +int KOLIBRI_SetClipboardText(_THIS, const char *text); +SDL_bool KOLIBRI_HasClipboardText(_THIS); #endif /* SDL_kolibriclipboard_h_ */ diff --git a/src/video/kolibri/SDL_kolibrievents.c b/src/video/kolibri/SDL_kolibrievents.c index 3e3bcc1..b6cf146 100644 --- a/src/video/kolibri/SDL_kolibrievents.c +++ b/src/video/kolibri/SDL_kolibrievents.c @@ -248,6 +248,7 @@ void KOLIBRI_PumpEvents(_THIS) int top = 0; int scancode = 0; int pressed = 0; + int win_size_w, win_size_h; SDL_Keycode keycode = SDLK_UNKNOWN; SDL_Keymod mod = 0; static int ext_code = 0; @@ -262,25 +263,20 @@ void KOLIBRI_PumpEvents(_THIS) return; case KSYS_EVENT_REDRAW: { - top = _ksys_thread_info(&thread_info, KSYS_THIS_SLOT); - if (top == thread_info.pos_in_window_stack) { - int win_size_w = thread_info.winx_size; - int win_size_h = thread_info.winy_size; + _ksys_thread_info(&thread_info, KSYS_THIS_SLOT); - if (wdata->skin == 0x01) { - win_size_w++; - win_size_h++; - } else { - win_size_w -= (TRUE_WIN_WIDTH + 1); - win_size_h -= (TRUE_WIN_HEIGHT + 1); - } - - if (thread_info.winx_start != window->x || thread_info.winy_start != window->y) - SDL_SendWindowEvent(window, SDL_WINDOWEVENT_MOVED, thread_info.winx_start, thread_info.winy_start); - if (win_size_w != window->w || win_size_h != window->h) - SDL_SendWindowEvent(window, SDL_WINDOWEVENT_RESIZED, win_size_w, win_size_h); + win_size_w = thread_info.winx_size + 1; + win_size_h = thread_info.winy_size + 1; + if (wdata->skin != 0x01) { + win_size_w -= TRUE_WIN_WIDTH; + win_size_h -= TRUE_WIN_HEIGHT; } + if (thread_info.winx_start != window->x || thread_info.winy_start != window->y) + SDL_SendWindowEvent(window, SDL_WINDOWEVENT_MOVED, thread_info.winx_start, thread_info.winy_start); + if (win_size_w != window->w || win_size_h != window->h) + SDL_SendWindowEvent(window, SDL_WINDOWEVENT_RESIZED, win_size_w, win_size_h); + if (thread_info.window_state & 0x01) { SDL_SendWindowEvent(window, SDL_WINDOWEVENT_MAXIMIZED, 0, 0); restored = SDL_FALSE; @@ -344,6 +340,7 @@ void KOLIBRI_PumpEvents(_THIS) { mouse_pos = _ksys_get_mouse_pos(KSYS_MOUSE_WINDOW_POS); if (mouse_pos.x >= 0 && mouse_pos.x < window->w && mouse_pos.y >= 0 && mouse_pos.y < window->h || SDL_GetMouse()->relative_mode) { + if (SDL_GetMouse()->relative_mode) { center_pos.x = mouse_pos.x - (window->w / 2); center_pos.y = mouse_pos.y - (window->h / 2); diff --git a/src/video/kolibri/SDL_kolibrievents.h b/src/video/kolibri/SDL_kolibrievents.h index 92dcc64..4487aba 100644 --- a/src/video/kolibri/SDL_kolibrievents.h +++ b/src/video/kolibri/SDL_kolibrievents.h @@ -4,7 +4,7 @@ #include "../../SDL_internal.h" -extern void KOLIBRI_InitOSKeymap(void); -extern void KOLIBRI_PumpEvents(_THIS); +void KOLIBRI_InitOSKeymap(void); +void KOLIBRI_PumpEvents(_THIS); #endif /* SDL_kolibrievents_h_ */ diff --git a/src/video/kolibri/SDL_kolibriframebuffer.c b/src/video/kolibri/SDL_kolibriframebuffer.c index cb1b5f2..ec68108 100644 --- a/src/video/kolibri/SDL_kolibriframebuffer.c +++ b/src/video/kolibri/SDL_kolibriframebuffer.c @@ -23,7 +23,7 @@ int KOLIBRI_CreateWindowFramebuffer(_THIS, SDL_Window *window, Uint32 *format, v { SDL_WindowData *data = (SDL_WindowData *)window->driverdata; SDL_Surface *surface; - const Uint32 surface_format = SDL_PIXELFORMAT_RGB24; + const Uint32 surface_format = SDL_PIXELFORMAT_BGR24; int w, h; /* Free the old framebuffer surface */ diff --git a/src/video/kolibri/SDL_kolibriframebuffer.h b/src/video/kolibri/SDL_kolibriframebuffer.h index f49a887..4cb84cb 100644 --- a/src/video/kolibri/SDL_kolibriframebuffer.h +++ b/src/video/kolibri/SDL_kolibriframebuffer.h @@ -4,8 +4,8 @@ #ifndef SDL_kolibriframebuffer_h_ #define SDL_kolibriframebuffer_h_ -extern int KOLIBRI_CreateWindowFramebuffer(_THIS, SDL_Window *window, Uint32 *format, void **pixels, int *pitch); -extern int KOLIBRI_UpdateWindowFramebuffer(_THIS, SDL_Window *window, const SDL_Rect *rects, int numrects); -extern void KOLIBRI_DestroyWindowFramebuffer(_THIS, SDL_Window *window); +int KOLIBRI_CreateWindowFramebuffer(_THIS, SDL_Window *window, Uint32 *format, void **pixels, int *pitch); +int KOLIBRI_UpdateWindowFramebuffer(_THIS, SDL_Window *window, const SDL_Rect *rects, int numrects); +void KOLIBRI_DestroyWindowFramebuffer(_THIS, SDL_Window *window); #endif /* SDL_kolibriframebuffer_h_ */ diff --git a/src/video/kolibri/SDL_kolibrimouse.h b/src/video/kolibri/SDL_kolibrimouse.h index 13748d5..4d8d94e 100644 --- a/src/video/kolibri/SDL_kolibrimouse.h +++ b/src/video/kolibri/SDL_kolibrimouse.h @@ -11,6 +11,6 @@ typedef struct _KOLIBRI_CursorData void *null_cursor; } KOLIBRI_CursorData; -extern void KOLIBRI_InitMouse(void); +void KOLIBRI_InitMouse(void); #endif /* SDL_kolibrimouse_h_ */ diff --git a/src/video/kolibri/SDL_kolibrivideo.c b/src/video/kolibri/SDL_kolibrivideo.c index b12bb5c..3709f6f 100644 --- a/src/video/kolibri/SDL_kolibrivideo.c +++ b/src/video/kolibri/SDL_kolibrivideo.c @@ -34,7 +34,7 @@ int KOLIBRI_VideoInit(_THIS) screen_size = _ksys_screen_size(); /* Use 24-bpp desktop mode */ - mode.format = SDL_PIXELFORMAT_RGB24; + mode.format = SDL_PIXELFORMAT_BGR24; mode.w = screen_size.x + 1; mode.h = screen_size.y + 1; mode.refresh_rate = 60; @@ -95,6 +95,13 @@ static SDL_VideoDevice *KOLIBRI_CreateDevice(void) /* "Window" */ device->CreateSDLWindow = KOLIBRI_CreateWindow; + device->MaximizeWindow = KOLIBRI_MaximizeWindow; + device->MinimizeWindow = KOLIBRI_MinimizeWindow; + device->RestoreWindow = KOLIBRI_RestoreWindow; + device->SetWindowFullscreen = KOLIBRI_SetWindowFullscreen; + device->SetWindowPosition = KOLIBRI_SetWindowPosition; + device->SetWindowResizable = KOLIBRI_SetWindowResizable; + device->SetWindowSize = KOLIBRI_SetWindowSize; device->SetWindowTitle = KOLIBRI_SetWindowTitle; device->DestroyWindow = KOLIBRI_DestroyWindow; diff --git a/src/video/kolibri/SDL_kolibriwindow.c b/src/video/kolibri/SDL_kolibriwindow.c index 7c4b1cb..7abc2c7 100644 --- a/src/video/kolibri/SDL_kolibriwindow.c +++ b/src/video/kolibri/SDL_kolibriwindow.c @@ -8,10 +8,13 @@ #include "../../events/SDL_keyboard_c.h" #include "../../events/SDL_mouse_c.h" #include "../SDL_sysvideo.h" +#include "SDL_syswm.h" #include "SDL_kolibrivideo.h" #include "SDL_kolibriwindow.h" +static int pid = 0; + void KOLIBRI_RepaintWnd(_THIS) { SDL_VideoData *data = (SDL_VideoData *)_this->driverdata; @@ -20,24 +23,20 @@ void KOLIBRI_RepaintWnd(_THIS) int win_pos_x, win_pos_y; int win_size_w, win_size_h; - win_size_w = window->w + TRUE_WIN_WIDTH; - win_size_h = window->h + TRUE_WIN_HEIGHT; + win_size_w = window->w; + win_size_h = window->h; + if (wdata->skin == 0x33 || wdata->skin == 0x34) { + win_size_w += TRUE_WIN_WIDTH; + win_size_h += TRUE_WIN_HEIGHT; + } _ksys_start_draw(); - _ksys_create_window(window->x, window->y, win_size_w, win_size_h, window->title, 0, 0x34); + _ksys_create_window(window->x, window->y, win_size_w, win_size_h, window->title, 0, wdata->skin); if (wdata->surface->pixels) _ksys_draw_bitmap(wdata->surface->pixels, 0, 0, wdata->surface->w, wdata->surface->h); _ksys_end_draw(); } -void KOLIBRI_change_window_size_and_pos(int w, int h, int x, int y) -{ - w += TRUE_WIN_WIDTH; - h += TRUE_WIN_HEIGHT; - - _ksys_change_window(x, y, w, h); -} - int KOLIBRI_CreateWindow(_THIS, SDL_Window *window) { SDL_VideoData *data = (SDL_VideoData *)_this->driverdata; @@ -52,6 +51,7 @@ int KOLIBRI_CreateWindow(_THIS, SDL_Window *window) window->driverdata = wdata; data->window_id = SDL_GetWindowID(window); + wdata->skin = 0x34; _ksys_set_event_mask(0x27); KOLIBRI_RepaintWnd(_this); @@ -61,14 +61,64 @@ int KOLIBRI_CreateWindow(_THIS, SDL_Window *window) return 0; } +void KOLIBRI_MaximizeWindow(_THIS, SDL_Window *window) +{ + // TODO +} + +void KOLIBRI_MinimizeWindow(_THIS, SDL_Window *window) +{ + ksys_thread_t thread_info; + + _ksys_thread_info(&thread_info, KSYS_THIS_SLOT); + pid = thread_info.pid; + asm_inline("int $0x40" ::"a"(18), "b"(22), "c"(1), "d"(pid)); +} + +void KOLIBRI_RestoreWindow(_THIS, SDL_Window *window) +{ + asm_inline("int $0x40" ::"a"(18), "b"(22), "c"(3), "d"(pid)); +} + +void KOLIBRI_SetWindowFullscreen(_THIS, SDL_Window *window, SDL_VideoDisplay *_display, SDL_bool fullscreen) +{ + SDL_WindowData *wdata = (SDL_WindowData *)window->driverdata; + static int old_w, old_h, old_x, old_y; + static unsigned char old_skin; + if (fullscreen) { + old_w = window->w + (TRUE_WIN_WIDTH - 1); + old_h = window->h + (TRUE_WIN_HEIGHT - 1); + old_x = window->x; + old_y = window->y; + old_skin = wdata->skin; + + wdata->skin = 0x01; + _ksys_change_window(0, 0, _ksys_screen_size().x + 1, _ksys_screen_size().y + 1); + } else { + wdata->skin = old_skin; + _ksys_change_window(old_x, old_y, old_w, old_h); + } +} + void KOLIBRI_SetWindowPosition(_THIS, SDL_Window *window) { - KOLIBRI_change_window_size_and_pos(window->w, window->h, window->x, window->y); + _ksys_change_window(window->x, window->y, window->w + (TRUE_WIN_WIDTH - 1), window->h + (TRUE_WIN_HEIGHT - 1)); +} + +void KOLIBRI_SetWindowResizable(_THIS, SDL_Window *window, SDL_bool resizable) +{ + SDL_WindowData *wdata = (SDL_WindowData *)window->driverdata; + + if (resizable) + wdata->skin = 0x33; + else + wdata->skin = 0x34; + KOLIBRI_RepaintWnd(_this); } void KOLIBRI_SetWindowSize(_THIS, SDL_Window *window) { - KOLIBRI_change_window_size_and_pos(window->w, window->h, window->x, window->y); + _ksys_change_window(window->x, window->y, window->w + (TRUE_WIN_WIDTH - 1), window->h + (TRUE_WIN_HEIGHT - 1)); } void KOLIBRI_SetWindowTitle(_THIS, SDL_Window *window) @@ -83,4 +133,16 @@ void KOLIBRI_DestroyWindow(_THIS, SDL_Window *window) SDL_free(window->driverdata); } +SDL_bool KOLIBRI_GetWindowWMInfo(_THIS, SDL_Window *window, struct SDL_SysWMinfo *info) +{ + /* What is the point of this? What information should be included? */ + if (info->version.major == SDL_MAJOR_VERSION) { + info->subsystem = SDL_SYSWM_KOLIBRI; + return SDL_TRUE; + } else { + SDL_SetError("Application not compiled with SDL %d", SDL_MAJOR_VERSION); + return SDL_FALSE; + } +} + #endif /* SDL_VIDEO_DRIVER_KOLIBRI */ diff --git a/src/video/kolibri/SDL_kolibriwindow.h b/src/video/kolibri/SDL_kolibriwindow.h index 6f9a228..39cf3b7 100644 --- a/src/video/kolibri/SDL_kolibriwindow.h +++ b/src/video/kolibri/SDL_kolibriwindow.h @@ -8,7 +8,7 @@ #define WINDOW_BORDER_H 4 #define WINDOW_BORDER_W 9 -#define TRUE_WIN_HEIGHT _ksys_get_skin_height() + WINDOW_BORDER_H; +#define TRUE_WIN_HEIGHT _ksys_get_skin_height() + WINDOW_BORDER_H #define TRUE_WIN_WIDTH WINDOW_BORDER_W typedef struct SDL_WindowData @@ -17,9 +17,17 @@ typedef struct SDL_WindowData unsigned char skin; } SDL_WindowData; -extern void KOLIBRI_RepaintWnd(_THIS); -extern int KOLIBRI_CreateWindow(_THIS, SDL_Window *window); -extern void KOLIBRI_SetWindowTitle(_THIS, SDL_Window *window); -extern void KOLIBRI_DestroyWindow(_THIS, SDL_Window *window); +void KOLIBRI_RepaintWnd(_THIS); +int KOLIBRI_CreateWindow(_THIS, SDL_Window *window); +void KOLIBRI_MaximizeWindow(_THIS, SDL_Window *window); +void KOLIBRI_MinimizeWindow(_THIS, SDL_Window *window); +void KOLIBRI_RestoreWindow(_THIS, SDL_Window *window); +void KOLIBRI_SetWindowFullscreen(_THIS, SDL_Window *window, SDL_VideoDisplay *_display, SDL_bool fullscreen); +void KOLIBRI_SetWindowPosition(_THIS, SDL_Window *window); +void KOLIBRI_SetWindowResizable(_THIS, SDL_Window *window, SDL_bool resizable); +void KOLIBRI_SetWindowSize(_THIS, SDL_Window *window); +void KOLIBRI_SetWindowTitle(_THIS, SDL_Window *window); +void KOLIBRI_DestroyWindow(_THIS, SDL_Window *window); +SDL_bool KOLIBRI_GetWindowWMInfo(_THIS, SDL_Window *window, struct SDL_SysWMinfo *info); #endif /* SDL_kolibriwindow_h_ */