mirror of
https://github.com/blawar/GLideN64.git
synced 2024-07-07 03:13:49 +00:00
GLideNUI-wtl: Fix windowed resolution handling
This commit is contained in:
parent
f326715bf8
commit
93659a2207
|
@ -383,18 +383,14 @@ void CVideoTab::SaveSettings()
|
||||||
getFullscreenRefreshRate(CComboBox(GetDlgItem(IDC_CMB_REFRESH_RATE)).GetCurSel(), config.video.fullscreenRefresh);
|
getFullscreenRefreshRate(CComboBox(GetDlgItem(IDC_CMB_REFRESH_RATE)).GetCurSel(), config.video.fullscreenRefresh);
|
||||||
|
|
||||||
CComboBox WindowResCB(GetDlgItem(IDC_CMB_WINDOWED_RESOLUTION));
|
CComboBox WindowResCB(GetDlgItem(IDC_CMB_WINDOWED_RESOLUTION));
|
||||||
int WindowResIndx = WindowResCB.GetItemData(WindowResCB.GetCurSel());
|
|
||||||
if (WindowResIndx >= 0 && WindowResIndx < numWindowedModes) {
|
|
||||||
config.video.windowedWidth = WindowedModes[WindowResIndx].width;
|
|
||||||
config.video.windowedHeight = WindowedModes[WindowResIndx].height;
|
|
||||||
} else { // custom resolution
|
|
||||||
CString WindowResStr;
|
CString WindowResStr;
|
||||||
WindowResCB.GetWindowText(WindowResStr);
|
WindowResCB.GetWindowText(WindowResStr);
|
||||||
std::string resolution(CW2A(WindowResStr.GetString()));
|
std::string resolution(CW2A(WindowResStr.GetString()));
|
||||||
// matches w x h where w is 300-7999 and h is 200-3999, spaces around x optional
|
std::regex parseRes("(\\d+) ?x ?(\\d+)");
|
||||||
std::regex parseRes("([3-9][0-9]{2}|[1-7][0-9]{3}) ?x ?([2-9][0-9]{2}|[1-3][0-9]{3})");
|
|
||||||
std::smatch tokens;
|
std::smatch tokens;
|
||||||
if (std::regex_search(resolution, tokens, parseRes) && tokens.size() > 1) {
|
if (std::regex_search(resolution, tokens, parseRes) && tokens.size() > 1) {
|
||||||
|
// matches w x h where w is 300-7999 and h is 200-3999
|
||||||
|
if (range<300, 8000>::contains(std::stoi(tokens[1])) && range<200, 4000>::contains(std::stoi(tokens[2]))) {
|
||||||
config.video.windowedWidth = std::stoi(tokens[1]);
|
config.video.windowedWidth = std::stoi(tokens[1]);
|
||||||
config.video.windowedHeight = std::stoi(tokens[2]);
|
config.video.windowedHeight = std::stoi(tokens[2]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,3 +4,8 @@
|
||||||
std::string FromUTF16(const wchar_t * UTF16Source);
|
std::string FromUTF16(const wchar_t * UTF16Source);
|
||||||
std::wstring ToUTF16(const char * Source);
|
std::wstring ToUTF16(const char * Source);
|
||||||
std::wstring FormatStrW(const wchar_t * Source, ...);
|
std::wstring FormatStrW(const wchar_t * Source, ...);
|
||||||
|
|
||||||
|
template <int min, int max> class range {
|
||||||
|
public:
|
||||||
|
static bool contains(int i) { return min <= i && i < max; }
|
||||||
|
};
|
Loading…
Reference in New Issue
Block a user