From f22ca477ab0775f285f3e6e73f9e02bd3617e135 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Mon, 11 Dec 2017 12:24:17 +0100 Subject: Added desktop fullscreen option --- src/sdl/graphics.c | 45 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 35 insertions(+), 10 deletions(-) (limited to 'src/sdl/graphics.c') diff --git a/src/sdl/graphics.c b/src/sdl/graphics.c index 166eb32..2488fae 100755 --- a/src/sdl/graphics.c +++ b/src/sdl/graphics.c @@ -11,6 +11,14 @@ SDL_Surface* backbuffer = NULL; int wantFullscreen = 0; int screenScale = 2; +int deltaX = 0; +int deltaY = 0; + +int screenW = 640; +int screenH = 480; + +int drawscreen = 0; + static uint32_t tframe; extern void Input_InitJoystick(); @@ -31,8 +39,9 @@ void PHL_GraphicsInit() uint32_t flags = SDL_HWSURFACE|SDL_DOUBLEBUF; if(wantFullscreen) flags |= SDL_FULLSCREEN; - screen = SDL_SetVideoMode(320*screenScale, 240*screenScale, 0, flags); - drawbuffer = screen; + screen = SDL_SetVideoMode(screenW, screenH, 0, flags); + drawbuffer = screen; + drawscreen = 1; backbuffer = PHL_NewSurface(320*screenScale, 240*screenScale); tframe = SDL_GetTicks(); } @@ -50,6 +59,20 @@ void PHL_StartDrawing() } void PHL_EndDrawing() { + // handle black borders + if(deltaX) { + SDL_Rect rect = {0, 0, deltaX, screenH}; + SDL_FillRect(screen, &rect, SDL_MapRGB(screen->format, 0, 0, 0)); + rect.x = screenW - deltaX -1; + SDL_FillRect(screen, &rect, SDL_MapRGB(screen->format, 0, 0, 0)); + } + if(deltaY) { + SDL_Rect rect = {0, 0, screenW, deltaY}; + SDL_FillRect(screen, &rect, SDL_MapRGB(screen->format, 0, 0, 0)); + rect.y = screenH - deltaY -1; + SDL_FillRect(screen, &rect, SDL_MapRGB(screen->format, 0, 0, 0)); + } + SDL_Flip(screen); uint32_t tnext = tframe + 1000/60; while((tframe = SDL_GetTicks())format, col.r, col.g, col.b)); } @@ -168,8 +193,8 @@ void PHL_DrawSurface(double x, double y, PHL_Surface surface) } SDL_Rect offset; - offset.x = x*screenScale/2; - offset.y = y*screenScale/2; + offset.x = x*screenScale/2 + (drawscreen?deltaX:0); + offset.y = y*screenScale/2 + (drawscreen?deltaY:0); SDL_BlitSurface(surface, NULL, drawbuffer, &offset); } @@ -190,15 +215,15 @@ void PHL_DrawSurfacePart(double x, double y, int cropx, int cropy, int cropw, in crop.w = cropw*screenScale/2; crop.h = croph*screenScale/2; - offset.x = x*screenScale/2; - offset.y = y*screenScale/2; + offset.x = x*screenScale/2 + (drawscreen?deltaX:0); + offset.y = y*screenScale/2 + (drawscreen?deltaY:0); SDL_BlitSurface(surface, &crop, drawbuffer, &offset); } void PHL_DrawBackground(PHL_Background back, PHL_Background fore) { - PHL_DrawSurface(0, 0, backbuffer); + PHL_DrawSurface(0, 0, backbuffer); } void PHL_UpdateBackground(PHL_Background back, PHL_Background fore) { -- cgit v1.2.3