forked from GSoC/sdl-2.30.3-kolibri
add window resize and position change support
Signed-off-by: Arnav Bhatt <arnav@ghativega.in>
This commit is contained in:
@@ -29,12 +29,14 @@ int KOLIBRI_VideoInit(_THIS)
|
||||
{
|
||||
SDL_DisplayMode mode;
|
||||
SDL_VideoData *data = _this->driverdata;
|
||||
data->screen_size = _ksys_screen_size();
|
||||
ksys_pos_t screen_size;
|
||||
|
||||
screen_size = _ksys_screen_size();
|
||||
|
||||
/* Use 24-bpp desktop mode */
|
||||
mode.format = SDL_PIXELFORMAT_RGB24;
|
||||
mode.w = data->screen_size.x;
|
||||
mode.h = data->screen_size.y;
|
||||
mode.w = screen_size.x;
|
||||
mode.h = screen_size.y;
|
||||
mode.refresh_rate = 0;
|
||||
mode.driverdata = NULL;
|
||||
if (SDL_AddBasicVideoDisplay(&mode) < 0)
|
||||
|
@@ -5,7 +5,6 @@
|
||||
typedef struct SDL_VideoData
|
||||
{
|
||||
Uint32 window_id;
|
||||
ksys_pos_t screen_size;
|
||||
} SDL_VideoData;
|
||||
|
||||
#endif
|
||||
|
@@ -25,16 +25,22 @@ void KOLIBRI_RepaintWnd(_THIS)
|
||||
|
||||
win_size_w = window->w + WINDOW_BORDER_W;
|
||||
win_size_h = window->h + _ksys_get_skin_height() + WINDOW_BORDER_H;
|
||||
win_pos_x = data->screen_size.x / 2 - win_size_w / 2;
|
||||
win_pos_y = data->screen_size.y / 2 - win_size_h / 2;
|
||||
|
||||
_ksys_start_draw();
|
||||
_ksys_create_window(win_pos_x, win_pos_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, 0x34);
|
||||
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 += WINDOW_BORDER_W;
|
||||
h += _ksys_get_skin_height() + WINDOW_BORDER_H;
|
||||
|
||||
_ksys_change_window(x, y, w, h);
|
||||
}
|
||||
|
||||
int KOLIBRI_CreateWindow(_THIS, SDL_Window *window)
|
||||
{
|
||||
SDL_VideoData *data = (SDL_VideoData *)_this->driverdata;
|
||||
@@ -58,6 +64,16 @@ int KOLIBRI_CreateWindow(_THIS, SDL_Window *window)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void KOLIBRI_SetWindowPosition(_THIS, SDL_Window *window)
|
||||
{
|
||||
KOLIBRI_change_window_size_and_pos(window->w, window->h, window->x, window->y);
|
||||
}
|
||||
|
||||
void KOLIBRI_SetWindowSize(_THIS, SDL_Window *window)
|
||||
{
|
||||
KOLIBRI_change_window_size_and_pos(window->w, window->h, window->x, window->y);
|
||||
}
|
||||
|
||||
void KOLIBRI_SetWindowTitle(_THIS, SDL_Window *window)
|
||||
{
|
||||
_ksys_set_window_title(window->title);
|
||||
|
Reference in New Issue
Block a user