2018-08-03 12:20:15 +02:00
|
|
|
/*
|
|
|
|
* This file is part of the planetblupi source code
|
|
|
|
* Copyright (C) 2018, Mathieu Schroeter
|
|
|
|
* http://epsitec.ch; http://www.blupi.org; http://github.com/blupi-games
|
|
|
|
*
|
|
|
|
* This program is free software: you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
|
|
* (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
* See the GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program. If not, see http://gnu.org/licenses
|
|
|
|
*/
|
2018-06-27 07:01:37 +02:00
|
|
|
|
2018-07-17 18:13:08 +02:00
|
|
|
#include <SDL_video.h>
|
2018-06-27 07:01:37 +02:00
|
|
|
|
|
|
|
#include "blupi.h"
|
|
|
|
#include "display.h"
|
|
|
|
|
|
|
|
Display::Display ()
|
|
|
|
{
|
2018-06-27 17:31:59 +02:00
|
|
|
this->width = this->getLogicWidth ();
|
|
|
|
this->height = this->getLogicHeight ();
|
2018-06-27 07:01:37 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
Display &
|
|
|
|
Display::getDisplay ()
|
|
|
|
{
|
|
|
|
static Display display;
|
|
|
|
return display;
|
|
|
|
}
|
|
|
|
|
2018-07-24 23:59:06 +02:00
|
|
|
bool
|
|
|
|
Display::isWide ()
|
|
|
|
{
|
|
|
|
return this->getWidth () > this->getLogicWidth ();
|
|
|
|
}
|
|
|
|
|
2018-06-27 17:31:59 +02:00
|
|
|
void
|
|
|
|
Display::readDisplaySize ()
|
2018-06-27 07:01:37 +02:00
|
|
|
{
|
2018-06-27 17:31:59 +02:00
|
|
|
SDL_DisplayMode displayMode;
|
|
|
|
int res;
|
|
|
|
|
|
|
|
if (g_window)
|
|
|
|
res = SDL_GetWindowDisplayMode (g_window, &displayMode);
|
|
|
|
else
|
|
|
|
res = SDL_GetCurrentDisplayMode (0, &displayMode);
|
|
|
|
|
|
|
|
if (res < 0)
|
|
|
|
return;
|
|
|
|
|
2018-06-28 23:54:30 +02:00
|
|
|
this->setDisplaySize (displayMode.w, displayMode.h);
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
Display::setDisplaySize (Sint32 w, Sint32 h)
|
|
|
|
{
|
|
|
|
this->width = w;
|
|
|
|
this->height = h;
|
2018-06-27 18:18:21 +02:00
|
|
|
|
|
|
|
if (this->width < this->getLogicWidth ())
|
|
|
|
this->width = this->getLogicWidth ();
|
|
|
|
if (this->height < this->getLogicHeight ())
|
|
|
|
this->height = this->getLogicHeight ();
|
2018-06-27 07:01:37 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
Sint32
|
|
|
|
Display::getWidth ()
|
|
|
|
{
|
|
|
|
return (
|
2018-06-27 17:31:59 +02:00
|
|
|
this->getLogicHeight () * this->width / this->height +
|
|
|
|
(this->getLogicHeight () * this->width / this->height) % 2);
|
2018-06-27 07:01:37 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
Sint32
|
|
|
|
Display::getHeight ()
|
|
|
|
{
|
|
|
|
return this->getLogicHeight ();
|
|
|
|
}
|
|
|
|
|
|
|
|
Sint32
|
|
|
|
Display::getLogicWidth ()
|
|
|
|
{
|
|
|
|
return 640;
|
|
|
|
}
|
|
|
|
|
|
|
|
Sint32
|
|
|
|
Display::getLogicHeight ()
|
|
|
|
{
|
|
|
|
return 480;
|
|
|
|
}
|