mirror of
https://github.com/melonDS-emu/melonDS.git
synced 2024-11-14 21:37:42 -07:00
parent
1d6cc3c6ef
commit
d529b650c0
@ -120,7 +120,8 @@ void EnableCheats(bool enable);
|
||||
// 2 = emphasize bottom screen
|
||||
// * screenGap: size of the gap between the two screens
|
||||
// * integerScale: force screens to be scaled up at integer scaling factors
|
||||
void SetupScreenLayout(int screenWidth, int screenHeight, int screenLayout, int rotation, int sizing, int screenGap, bool integerScale);
|
||||
// * screenSwap: whether to swap the position of both screens
|
||||
void SetupScreenLayout(int screenWidth, int screenHeight, int screenLayout, int rotation, int sizing, int screenGap, bool integerScale, int swapScreens);
|
||||
|
||||
// get a 2x3 transform matrix for each screen
|
||||
// note: the transform assumes an origin point at the top left of the display,
|
||||
|
@ -109,7 +109,7 @@ void M23_Transform(float* m, float& x, float& y)
|
||||
}
|
||||
|
||||
|
||||
void SetupScreenLayout(int screenWidth, int screenHeight, int screenLayout, int rotation, int sizing, int screenGap, bool integerScale)
|
||||
void SetupScreenLayout(int screenWidth, int screenHeight, int screenLayout, int rotation, int sizing, int screenGap, bool integerScale, int swapScreens)
|
||||
{
|
||||
float refpoints[4][2] =
|
||||
{
|
||||
@ -152,7 +152,7 @@ void SetupScreenLayout(int screenWidth, int screenHeight, int screenLayout, int
|
||||
(((layout == 0 && (rotation % 2 == 0)) || (layout == 1 && (rotation % 2 == 1))
|
||||
? 192.f : 256.f)
|
||||
+ screenGap) / 2.f;
|
||||
if (rotation == 1 || rotation == 2)
|
||||
if ((rotation == 1 || rotation == 2) ^ swapScreens)
|
||||
offset *= -1.f;
|
||||
|
||||
M23_Translate(TopScreenMtx, (idx==0)?-offset:0, (idx==1)?-offset:0);
|
||||
|
@ -39,6 +39,7 @@ int WindowMaximized;
|
||||
int ScreenRotation;
|
||||
int ScreenGap;
|
||||
int ScreenLayout;
|
||||
int ScreenSwap;
|
||||
int ScreenSizing;
|
||||
int IntegerScaling;
|
||||
int ScreenFilter;
|
||||
@ -135,6 +136,7 @@ ConfigEntry PlatformConfigFile[] =
|
||||
{"ScreenRotation", 0, &ScreenRotation, 0, NULL, 0},
|
||||
{"ScreenGap", 0, &ScreenGap, 0, NULL, 0},
|
||||
{"ScreenLayout", 0, &ScreenLayout, 0, NULL, 0},
|
||||
{"ScreenSwap", 0, &ScreenSwap, 0, NULL, 0},
|
||||
{"ScreenSizing", 0, &ScreenSizing, 0, NULL, 0},
|
||||
{"IntegerScaling", 0, &IntegerScaling, 0, NULL, 0},
|
||||
{"ScreenFilter", 0, &ScreenFilter, 1, NULL, 0},
|
||||
|
@ -53,6 +53,7 @@ extern int WindowMaximized;
|
||||
extern int ScreenRotation;
|
||||
extern int ScreenGap;
|
||||
extern int ScreenLayout;
|
||||
extern int ScreenSwap;
|
||||
extern int ScreenSizing;
|
||||
extern int IntegerScaling;
|
||||
extern int ScreenFilter;
|
||||
|
@ -647,7 +647,8 @@ void ScreenHandler::screenSetupLayout(int w, int h)
|
||||
Config::ScreenRotation,
|
||||
sizing,
|
||||
Config::ScreenGap,
|
||||
Config::IntegerScaling != 0);
|
||||
Config::IntegerScaling != 0,
|
||||
Config::ScreenSwap != 0);
|
||||
|
||||
Frontend::GetScreenTransforms(screenMatrix[0], screenMatrix[1]);
|
||||
}
|
||||
@ -1232,6 +1233,12 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent)
|
||||
}
|
||||
|
||||
connect(grpScreenLayout, &QActionGroup::triggered, this, &MainWindow::onChangeScreenLayout);
|
||||
|
||||
submenu->addSeparator();
|
||||
|
||||
actScreenSwap = submenu->addAction("Swap screens");
|
||||
actScreenSwap->setCheckable(true);
|
||||
connect(actScreenSwap, &QAction::triggered, this, &MainWindow::onChangeScreenSwap);
|
||||
}
|
||||
{
|
||||
QMenu* submenu = menu->addMenu("Screen sizing");
|
||||
@ -1315,6 +1322,8 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent)
|
||||
actScreenSizing[Config::ScreenSizing]->setChecked(true);
|
||||
actIntegerScaling->setChecked(Config::IntegerScaling != 0);
|
||||
|
||||
actScreenSwap->setChecked(Config::ScreenSwap != 0);
|
||||
|
||||
actScreenFiltering->setChecked(Config::ScreenFilter != 0);
|
||||
actShowOSD->setChecked(Config::ShowOSD != 0);
|
||||
|
||||
@ -2049,6 +2058,13 @@ void MainWindow::onChangeScreenLayout(QAction* act)
|
||||
emit screenLayoutChange();
|
||||
}
|
||||
|
||||
void MainWindow::onChangeScreenSwap(bool checked)
|
||||
{
|
||||
Config::ScreenSwap = checked?1:0;
|
||||
|
||||
emit screenLayoutChange();
|
||||
}
|
||||
|
||||
void MainWindow::onChangeScreenSizing(QAction* act)
|
||||
{
|
||||
int sizing = act->data().toInt();
|
||||
|
@ -222,6 +222,7 @@ private slots:
|
||||
void onChangeScreenRotation(QAction* act);
|
||||
void onChangeScreenGap(QAction* act);
|
||||
void onChangeScreenLayout(QAction* act);
|
||||
void onChangeScreenSwap(bool checked);
|
||||
void onChangeScreenSizing(QAction* act);
|
||||
void onChangeIntegerScaling(bool checked);
|
||||
void onChangeScreenFiltering(bool checked);
|
||||
@ -279,6 +280,7 @@ public:
|
||||
QAction* actScreenGap[6];
|
||||
QActionGroup* grpScreenLayout;
|
||||
QAction* actScreenLayout[3];
|
||||
QAction* actScreenSwap;
|
||||
QActionGroup* grpScreenSizing;
|
||||
QAction* actScreenSizing[4];
|
||||
QAction* actIntegerScaling;
|
||||
|
Loading…
Reference in New Issue
Block a user