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_DisplayMode mode;
|
||||||
SDL_VideoData *data = _this->driverdata;
|
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 */
|
/* Use 24-bpp desktop mode */
|
||||||
mode.format = SDL_PIXELFORMAT_RGB24;
|
mode.format = SDL_PIXELFORMAT_RGB24;
|
||||||
mode.w = data->screen_size.x;
|
mode.w = screen_size.x;
|
||||||
mode.h = data->screen_size.y;
|
mode.h = screen_size.y;
|
||||||
mode.refresh_rate = 0;
|
mode.refresh_rate = 0;
|
||||||
mode.driverdata = NULL;
|
mode.driverdata = NULL;
|
||||||
if (SDL_AddBasicVideoDisplay(&mode) < 0)
|
if (SDL_AddBasicVideoDisplay(&mode) < 0)
|
||||||
|
@@ -5,7 +5,6 @@
|
|||||||
typedef struct SDL_VideoData
|
typedef struct SDL_VideoData
|
||||||
{
|
{
|
||||||
Uint32 window_id;
|
Uint32 window_id;
|
||||||
ksys_pos_t screen_size;
|
|
||||||
} SDL_VideoData;
|
} SDL_VideoData;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -25,16 +25,22 @@ void KOLIBRI_RepaintWnd(_THIS)
|
|||||||
|
|
||||||
win_size_w = window->w + WINDOW_BORDER_W;
|
win_size_w = window->w + WINDOW_BORDER_W;
|
||||||
win_size_h = window->h + _ksys_get_skin_height() + WINDOW_BORDER_H;
|
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_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)
|
if (wdata->surface->pixels)
|
||||||
_ksys_draw_bitmap(wdata->surface->pixels, 0, 0, wdata->surface->w, wdata->surface->h);
|
_ksys_draw_bitmap(wdata->surface->pixels, 0, 0, wdata->surface->w, wdata->surface->h);
|
||||||
_ksys_end_draw();
|
_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)
|
int KOLIBRI_CreateWindow(_THIS, SDL_Window *window)
|
||||||
{
|
{
|
||||||
SDL_VideoData *data = (SDL_VideoData *)_this->driverdata;
|
SDL_VideoData *data = (SDL_VideoData *)_this->driverdata;
|
||||||
@@ -58,6 +64,16 @@ int KOLIBRI_CreateWindow(_THIS, SDL_Window *window)
|
|||||||
return 0;
|
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)
|
void KOLIBRI_SetWindowTitle(_THIS, SDL_Window *window)
|
||||||
{
|
{
|
||||||
_ksys_set_window_title(window->title);
|
_ksys_set_window_title(window->title);
|
||||||
|
Reference in New Issue
Block a user