ability to change font size!

This commit is contained in:
tildearrow 2021-12-19 22:51:02 -05:00
parent 498fa99c5a
commit f24493efb6
2 changed files with 79 additions and 3 deletions

View file

@ -1226,6 +1226,63 @@ void FurnaceGUI::drawAbout() {
ImGui::End(); ImGui::End();
} }
void FurnaceGUI::drawSettings() {
if (!settingsOpen) return;
if (ImGui::Begin("Settings",NULL,ImGuiWindowFlags_NoDocking)) {
if (ImGui::BeginTabBar("settingsTab")) {
if (ImGui::BeginTabItem("General")) {
ImGui::Text("Hello world!");
ImGui::EndTabItem();
}
if (ImGui::BeginTabItem("Appearance")) {
ImGui::Text("Main font");
if (ImGui::InputInt("Size##MainFontSize",&mainFontSize)) {
if (mainFontSize<3) mainFontSize=3;
if (mainFontSize>96) mainFontSize=96;
}
ImGui::Text("Pattern font");
if (ImGui::InputInt("Size##PatFontSize",&patFontSize)) {
if (patFontSize<3) patFontSize=3;
if (patFontSize>96) patFontSize=96;
}
ImGui::EndTabItem();
}
ImGui::EndTabBar();
}
ImGui::Separator();
if (ImGui::Button("OK##SettingsOK")) {
settingsOpen=false;
willCommit=true;
}
ImGui::SameLine();
if (ImGui::Button("Cancel##SettingsCancel")) {
settingsOpen=false;
}
}
ImGui::End();
}
void FurnaceGUI::commitSettings() {
e->setConf("mainFontSize",mainFontSize);
e->setConf("patFontSize",patFontSize);
e->saveConf();
ImGui::GetIO().Fonts->Clear();
if ((mainFont=ImGui::GetIO().Fonts->AddFontFromMemoryCompressedTTF(defFont_main_compressed_data,defFont_main_compressed_size,e->getConfInt("mainFontSize",18)*dpiScale))==NULL) {
logE("could not load UI font!\n");
}
if ((patFont=ImGui::GetIO().Fonts->AddFontFromMemoryCompressedTTF(defFont_pat_compressed_data,defFont_pat_compressed_size,e->getConfInt("patFontSize",18)*dpiScale))==NULL) {
logE("could not load pattern font!\n");
}
if ((bigFont=ImGui::GetIO().Fonts->AddFontFromMemoryCompressedTTF(defFont_main_compressed_data,defFont_main_compressed_size,40*dpiScale))==NULL) {
logE("could not load big UI font!\n");
}
ImGui_ImplSDLRenderer_DestroyFontsTexture();
ImGui::GetIO().Fonts->Build();
}
void FurnaceGUI::startSelection(int xCoarse, int xFine, int y) { void FurnaceGUI::startSelection(int xCoarse, int xFine, int y) {
selStart.xCoarse=xCoarse; selStart.xCoarse=xCoarse;
selStart.xFine=xFine; selStart.xFine=xFine;
@ -1913,6 +1970,10 @@ bool FurnaceGUI::loop() {
ImGui::MenuItem("clear..."); ImGui::MenuItem("clear...");
ImGui::EndMenu(); ImGui::EndMenu();
} }
if (ImGui::BeginMenu("settings")) {
if (ImGui::MenuItem("settings...")) settingsOpen=true;
ImGui::EndMenu();
}
if (ImGui::BeginMenu("window")) { if (ImGui::BeginMenu("window")) {
if (ImGui::MenuItem("play/edit controls")) editControlsOpen=!editControlsOpen; if (ImGui::MenuItem("play/edit controls")) editControlsOpen=!editControlsOpen;
if (ImGui::MenuItem("song information")) songInfoOpen=!songInfoOpen; if (ImGui::MenuItem("song information")) songInfoOpen=!songInfoOpen;
@ -1947,6 +2008,7 @@ bool FurnaceGUI::loop() {
drawSampleList(); drawSampleList();
drawSampleEdit(); drawSampleEdit();
drawPattern(); drawPattern();
drawSettings();
if (ImGuiFileDialog::Instance()->Display("FileDialog")) { if (ImGuiFileDialog::Instance()->Display("FileDialog")) {
if (ImGuiFileDialog::Instance()->IsOk()) { if (ImGuiFileDialog::Instance()->IsOk()) {
@ -2002,6 +2064,11 @@ bool FurnaceGUI::loop() {
ImGui::Render(); ImGui::Render();
ImGui_ImplSDLRenderer_RenderDrawData(ImGui::GetDrawData()); ImGui_ImplSDLRenderer_RenderDrawData(ImGui::GetDrawData());
SDL_RenderPresent(sdlRend); SDL_RenderPresent(sdlRend);
if (willCommit) {
commitSettings();
willCommit=false;
}
} }
return false; return false;
} }
@ -2093,6 +2160,7 @@ bool FurnaceGUI::finish() {
FurnaceGUI::FurnaceGUI(): FurnaceGUI::FurnaceGUI():
e(NULL), e(NULL),
quit(false), quit(false),
willCommit(false),
curFileDialog(GUI_FILE_OPEN), curFileDialog(GUI_FILE_OPEN),
scrW(1280), scrW(1280),
scrH(800), scrH(800),
@ -2100,6 +2168,8 @@ FurnaceGUI::FurnaceGUI():
aboutScroll(0), aboutScroll(0),
aboutSin(0), aboutSin(0),
aboutHue(0.0f), aboutHue(0.0f),
mainFontSize(18),
patFontSize(18),
curIns(0), curIns(0),
curWave(0), curWave(0),
curSample(0), curSample(0),
@ -2117,6 +2187,7 @@ FurnaceGUI::FurnaceGUI():
sampleListOpen(true), sampleListOpen(true),
sampleEditOpen(false), sampleEditOpen(false),
aboutOpen(false), aboutOpen(false),
settingsOpen(false),
selecting(false), selecting(false),
curNibble(false), curNibble(false),
curWindow(GUI_WINDOW_NOTHING), curWindow(GUI_WINDOW_NOTHING),

View file

@ -69,7 +69,7 @@ class FurnaceGUI {
String workingDir, fileName, clipboard; String workingDir, fileName, clipboard;
bool quit; bool quit, willCommit;
FurnaceGUIFileDialogs curFileDialog; FurnaceGUIFileDialogs curFileDialog;
@ -86,11 +86,13 @@ class FurnaceGUI {
ImVec4 uiColors[GUI_COLOR_MAX]; ImVec4 uiColors[GUI_COLOR_MAX];
ImVec4 volColors[128]; ImVec4 volColors[128];
int mainFontSize, patFontSize;
char finalLayoutPath[4096]; char finalLayoutPath[4096];
int curIns, curWave, curSample, curOctave, oldRow, editStep; int curIns, curWave, curSample, curOctave, oldRow, editStep;
bool editControlsOpen, ordersOpen, insListOpen, songInfoOpen, patternOpen, insEditOpen; bool editControlsOpen, ordersOpen, insListOpen, songInfoOpen, patternOpen, insEditOpen;
bool waveListOpen, waveEditOpen, sampleListOpen, sampleEditOpen, aboutOpen; bool waveListOpen, waveEditOpen, sampleListOpen, sampleEditOpen, aboutOpen, settingsOpen;
SelectionPoint selStart, selEnd; SelectionPoint selStart, selEnd;
bool selecting, curNibble; bool selecting, curNibble;
FurnaceGUIWindows curWindow; FurnaceGUIWindows curWindow;
@ -136,6 +138,9 @@ class FurnaceGUI {
void drawSampleList(); void drawSampleList();
void drawSampleEdit(); void drawSampleEdit();
void drawAbout(); void drawAbout();
void drawSettings();
void commitSettings();
void startSelection(int xCoarse, int xFine, int y); void startSelection(int xCoarse, int xFine, int y);
void updateSelection(int xCoarse, int xFine, int y); void updateSelection(int xCoarse, int xFine, int y);
@ -160,7 +165,7 @@ class FurnaceGUI {
const char* noteName(short note, short octave); const char* noteName(short note, short octave);
bool decodeNote(const char* what, short& note, short& octave); bool decodeNote(const char* what, short& note, short& octave);
void bindEngine(DivEngine* eng); void bindEngine(DivEngine* eng);
void updateScroll(int amount); void updateScroll(int amount);
bool loop(); bool loop();
bool finish(); bool finish();
bool init(); bool init();