From 0fd72c53efe13c0cc3fff3222e82e0169f3ff69a Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 8 Sep 2022 23:20:33 -0500 Subject: [PATCH] GUI: and more mobile UI progress --- src/gui/gui.cpp | 3 +++ src/gui/gui.h | 9 +++++++++ src/gui/pattern.cpp | 2 +- src/gui/piano.cpp | 4 ++++ 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index a353308e9..d9e8ffa0f 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -3349,6 +3349,8 @@ bool FurnaceGUI::loop() { if (mobileUI) { globalWinFlags=ImGuiWindowFlags_NoTitleBar|ImGuiWindowFlags_NoMove|ImGuiWindowFlags_NoResize|ImGuiWindowFlags_NoBringToFrontOnFocus; //globalWinFlags=ImGuiWindowFlags_NoTitleBar; + // scene handling goes here! + pianoOpen=true; drawMobileControls(); drawPattern(); drawPiano(); @@ -4882,6 +4884,7 @@ FurnaceGUI::FurnaceGUI(): curFileDialog(GUI_FILE_OPEN), warnAction(GUI_WARN_OPEN), postWarnAction(GUI_WARN_GENERIC), + mobScene(GUI_SCENE_PATTERN), fileDialog(NULL), scrW(1280), scrH(800), diff --git a/src/gui/gui.h b/src/gui/gui.h index 280ec76b7..797f9fd71 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -260,6 +260,14 @@ enum FurnaceGUIWindows { GUI_WINDOW_SPOILER }; +enum FurnaceGUIMobileScenes { + GUI_SCENE_PATTERN, + GUI_SCENE_ORDERS, + GUI_SCENE_INSTRUMENT, + GUI_SCENE_WAVETABLE, + GUI_SCENE_SAMPLE +}; + enum FurnaceGUIFileDialogs { GUI_FILE_OPEN, GUI_FILE_SAVE, @@ -1009,6 +1017,7 @@ class FurnaceGUI { FurnaceGUIFileDialogs curFileDialog; FurnaceGUIWarnings warnAction; FurnaceGUIWarnings postWarnAction; + FurnaceGUIMobileScenes mobScene; FurnaceGUIFileDialog* fileDialog; diff --git a/src/gui/pattern.cpp b/src/gui/pattern.cpp index 5081d6ef4..002cabd90 100644 --- a/src/gui/pattern.cpp +++ b/src/gui/pattern.cpp @@ -374,7 +374,7 @@ void FurnaceGUI::drawPattern() { ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding,ImVec2(0.0f,0.0f)); if (mobileUI) { patWindowPos=(portrait?ImVec2(0.0f,(mobileMenuPos*-0.65*scrH*dpiScale)):ImVec2((0.16*scrH*dpiScale)+0.5*scrW*dpiScale*mobileMenuPos,0.0f)); - patWindowSize=(portrait?ImVec2(scrW*dpiScale,scrH*dpiScale-(0.16*scrW*dpiScale)):ImVec2(scrW*dpiScale-(0.16*scrH*dpiScale),scrH*dpiScale)); + patWindowSize=(portrait?ImVec2(scrW*dpiScale,scrH*dpiScale-(0.16*scrW*dpiScale)-(pianoOpen?(0.3*scrW*dpiScale):0.0f)):ImVec2(scrW*dpiScale-(0.16*scrH*dpiScale),scrH*dpiScale-(pianoOpen?(0.3*scrH*dpiScale):0.0f))); ImGui::SetNextWindowPos(patWindowPos); ImGui::SetNextWindowSize(patWindowSize); } diff --git a/src/gui/piano.cpp b/src/gui/piano.cpp index 0e0063bb2..27d8bbeda 100644 --- a/src/gui/piano.cpp +++ b/src/gui/piano.cpp @@ -52,6 +52,10 @@ void FurnaceGUI::drawPiano() { nextWindow=GUI_WINDOW_NOTHING; } if (!pianoOpen) return; + if (mobileUI) { + ImGui::SetNextWindowPos(ImVec2(patWindowPos.x,patWindowPos.y+patWindowSize.y)); + ImGui::SetNextWindowSize(portrait?ImVec2(scrW*dpiScale,0.5*scrW*dpiScale):ImVec2(scrW*dpiScale-(0.16*scrH*dpiScale),0.3*scrH*dpiScale)); + } if (ImGui::Begin("Piano",&pianoOpen,((pianoOptions)?0:ImGuiWindowFlags_NoTitleBar)|ImGuiWindowFlags_NoScrollbar|ImGuiWindowFlags_NoScrollWithMouse|globalWinFlags)) { bool oldPianoKeyPressed[180]; memcpy(oldPianoKeyPressed,pianoKeyPressed,180*sizeof(bool));