/* Copyright 2016-2019 Arisotura This file is part of melonDS. melonDS 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. melonDS 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 melonDS. If not, see http://www.gnu.org/licenses/. */ #include #include #include #include "libui/ui.h" #include "../types.h" #include "PlatformConfig.h" #include "DlgVideoSettings.h" // namespace DlgVideoSettings { bool opened; uiWindow* win; // int OnCloseWindow(uiWindow* window, void* blarg) { opened = false; return 1; } // void OnCancel(uiButton* btn, void* blarg) { // restore old settings here uiControlDestroy(uiControl(win)); opened = false; } void OnOk(uiButton* btn, void* blarg) { // set config entries here Config::Save(); uiControlDestroy(uiControl(win)); opened = false; } void Open() { if (opened) { uiControlSetFocus(uiControl(win)); return; } opened = true; win = uiNewWindow("Video settings - melonDS", 400, 100, 0, 0, 0); uiWindowSetMargined(win, 1); uiWindowOnClosing(win, OnCloseWindow, NULL); uiBox* top = uiNewVerticalBox(); uiWindowSetChild(win, uiControl(top)); uiBoxSetPadded(top, 1); uiBox* splitter = uiNewHorizontalBox(); uiBoxAppend(top, uiControl(splitter), 0); uiBoxSetPadded(splitter, 1); uiBox* left = uiNewVerticalBox(); uiBoxAppend(splitter, uiControl(left), 1); uiBoxSetPadded(left, 1); uiBox* right = uiNewVerticalBox(); uiBoxAppend(splitter, uiControl(right), 1); uiBoxSetPadded(right, 1); { uiGroup* grp = uiNewGroup("3D renderer"); uiBoxAppend(left, uiControl(grp), 0); uiGroupSetMargined(grp, 1); uiBox* in_ctrl = uiNewVerticalBox(); uiGroupSetChild(grp, uiControl(in_ctrl)); uiRadioButtons* rbRenderer = uiNewRadioButtons(); uiRadioButtonsAppend(rbRenderer, "Software"); uiRadioButtonsAppend(rbRenderer, "OpenGL"); uiBoxAppend(in_ctrl, uiControl(rbRenderer), 0); } { uiGroup* grp = uiNewGroup("Software renderer"); uiBoxAppend(left, uiControl(grp), 0); uiGroupSetMargined(grp, 1); uiBox* in_ctrl = uiNewVerticalBox(); uiGroupSetChild(grp, uiControl(in_ctrl)); uiCheckbox* cbThreaded3D = uiNewCheckbox("Threaded"); uiBoxAppend(in_ctrl, uiControl(cbThreaded3D), 0); } { uiGroup* grp = uiNewGroup("OpenGL renderer"); uiBoxAppend(left, uiControl(grp), 0); uiGroupSetMargined(grp, 1); uiBox* in_ctrl = uiNewVerticalBox(); uiGroupSetChild(grp, uiControl(in_ctrl)); uiCheckbox* cbAntialias = uiNewCheckbox("Antialiasing"); uiBoxAppend(in_ctrl, uiControl(cbAntialias), 0); } { uiGroup* grp = uiNewGroup("Display settings"); uiBoxAppend(right, uiControl(grp), 0); uiGroupSetMargined(grp, 1); uiBox* in_ctrl = uiNewVerticalBox(); uiGroupSetChild(grp, uiControl(in_ctrl)); uiLabel* lbl = uiNewLabel("Resolution:"); uiBoxAppend(in_ctrl, uiControl(lbl), 0); uiRadioButtons* rbResolution = uiNewRadioButtons(); uiRadioButtonsAppend(rbResolution, "1x"); uiRadioButtonsAppend(rbResolution, "2x"); uiRadioButtonsAppend(rbResolution, "4x"); uiBoxAppend(in_ctrl, uiControl(rbResolution), 0); uiCheckbox* cbWidescreen = uiNewCheckbox("Stretch to 16:9"); uiBoxAppend(in_ctrl, uiControl(cbWidescreen), 0); lbl = uiNewLabel(""); uiBoxAppend(in_ctrl, uiControl(lbl), 0); lbl = uiNewLabel("Apply upscaling to:"); uiBoxAppend(in_ctrl, uiControl(lbl), 0); uiRadioButtons* rbApplyScalingTo = uiNewRadioButtons(); uiRadioButtonsAppend(rbApplyScalingTo, "Both screens"); uiRadioButtonsAppend(rbApplyScalingTo, "Emphasized screen (see 'Screen sizing')"); uiRadioButtonsAppend(rbApplyScalingTo, "Top screen"); uiRadioButtonsAppend(rbApplyScalingTo, "Bottom screen"); uiBoxAppend(in_ctrl, uiControl(rbApplyScalingTo), 0); } { uiBox* in_ctrl = uiNewHorizontalBox(); uiBoxSetPadded(in_ctrl, 1); uiBoxAppend(top, uiControl(in_ctrl), 0); uiLabel* dummy = uiNewLabel(""); uiBoxAppend(in_ctrl, uiControl(dummy), 1); uiButton* btncancel = uiNewButton("Cancel"); uiButtonOnClicked(btncancel, OnCancel, NULL); uiBoxAppend(in_ctrl, uiControl(btncancel), 0); uiButton* btnok = uiNewButton("Ok"); uiButtonOnClicked(btnok, OnOk, NULL); uiBoxAppend(in_ctrl, uiControl(btnok), 0); } // uiControlShow(uiControl(win)); } }