1
0
mirror of https://github.com/blupi-games/planetblupi synced 2024-12-30 10:15:36 +01:00

Move display stuff in a dedicated source file

The display ratio is computed with the user's screen. It's no longer a
static value.

It must be improved in order to fix the ratio according to screen
changes.
This commit is contained in:
Mathieu Schroeter 2018-06-27 07:01:37 +02:00
parent e70873a7b8
commit 9a7ffb887f
3 changed files with 104 additions and 9 deletions

View File

@ -22,18 +22,11 @@
#include <SDL2/SDL_stdinc.h>
#include "display.h"
// clang-format off
#define _INTRO true // true for init screen
#define SCRNUM 16
#define SCRDEN 9
#define SCRFACTOR SCRNUM / SCRDEN
#define LXLOGIC 640
#define LYLOGIC 480
#define LXIMAGE (LYLOGIC * SCRFACTOR + (LYLOGIC * SCRFACTOR) % 2) // window size
#define LYIMAGE LYLOGIC
#define LXOFFSET ((LXIMAGE - LXLOGIC) / 2)
#define POSDRAWX 144 // draw surface
#define POSDRAWY 15
#define DIMDRAWX (LXIMAGE - (LXLOGIC - LYLOGIC))

71
src/display.cxx Normal file
View File

@ -0,0 +1,71 @@
#include <SDL2/SDL_video.h>
#include "blupi.h"
#include "display.h"
#define SCRNUM 16
#define SCRDEN 9
#define SCRFACTOR SCRNUM / SCRDEN
Display::Display ()
{
this->width = 0;
this->height = 0;
}
void
Display::readDisplaySize ()
{
SDL_DisplayMode displayMode;
SDL_GetWindowDisplayMode (g_window, &displayMode);
this->width = displayMode.w;
this->height = displayMode.h;
}
Display &
Display::getDisplay ()
{
static bool init = false;
static Display display;
if (!init)
{
display.readDisplaySize ();
init = true;
}
return display;
}
double
Display::getRatio ()
{
return this->width / this->height;
}
Sint32
Display::getWidth ()
{
return (
this->getLogicHeight () * SCRFACTOR +
(this->getLogicHeight () * SCRFACTOR) % 2);
}
Sint32
Display::getHeight ()
{
return this->getLogicHeight ();
}
Sint32
Display::getLogicWidth ()
{
return 640;
}
Sint32
Display::getLogicHeight ()
{
return 480;
}

31
src/display.h Normal file
View File

@ -0,0 +1,31 @@
#pragma once
#include "SDL2/SDL_stdinc.h"
class Display
{
private:
Sint32 width;
Sint32 height;
private:
Display ();
void readDisplaySize ();
public:
static Display & getDisplay ();
double getRatio ();
Sint32 getWidth ();
Sint32 getHeight ();
Sint32 getLogicWidth ();
Sint32 getLogicHeight ();
};
#define LXLOGIC (Display::getDisplay ().getLogicWidth ())
#define LYLOGIC (Display::getDisplay ().getLogicHeight ())
#define LXIMAGE (Display::getDisplay ().getWidth ())
#define LYIMAGE (Display::getDisplay ().getHeight ())
#define LXOFFSET ((LXIMAGE - LXLOGIC) / 2)