Merge branch 'master' of https://github.com/tildearrow/furnace into sample_macro
# Conflicts: # src/engine/fileOps.cpp # src/engine/platform/lynx.cpp # src/engine/platform/rf5c68.cpp # src/engine/platform/su.cpp # src/engine/platform/x1_010.h # src/engine/platform/ym2610.cpp # src/engine/platform/ym2610.h # src/engine/platform/ym2610b.cpp # src/engine/platform/ym2610b.h # src/engine/sysDef.cpp # src/gui/insEdit.cpp Add effect command for ADPCM-A global volume, X1-010 Sample bank slot
This commit is contained in:
commit
54dbd0690c
148 changed files with 4114 additions and 3610 deletions
|
|
@ -21,6 +21,7 @@
|
|||
#include "fonts.h"
|
||||
#include "../ta-log.h"
|
||||
#include "../fileutils.h"
|
||||
#include "../utfutils.h"
|
||||
#include "util.h"
|
||||
#include "guiConst.h"
|
||||
#include "intConst.h"
|
||||
|
|
@ -513,6 +514,11 @@ void FurnaceGUI::drawSettings() {
|
|||
settings.blankIns=blankInsB;
|
||||
}
|
||||
|
||||
bool saveUnusedPatternsB=settings.saveUnusedPatterns;
|
||||
if (ImGui::Checkbox("Save unused patterns",&saveUnusedPatternsB)) {
|
||||
settings.saveUnusedPatterns=saveUnusedPatternsB;
|
||||
}
|
||||
|
||||
ImGui::Text("Note preview behavior:");
|
||||
if (ImGui::RadioButton("Never##npb0",settings.notePreviewBehavior==0)) {
|
||||
settings.notePreviewBehavior=0;
|
||||
|
|
@ -1079,6 +1085,41 @@ void FurnaceGUI::drawSettings() {
|
|||
);
|
||||
}
|
||||
|
||||
bool loadChineseTraditionalB=settings.loadChineseTraditional;
|
||||
if (ImGui::Checkbox("Display Chinese (Traditional) characters",&loadChineseTraditionalB)) {
|
||||
settings.loadChineseTraditional=loadChineseTraditionalB;
|
||||
}
|
||||
if (ImGui::IsItemHovered()) {
|
||||
ImGui::SetTooltip(
|
||||
"Only toggle this option if you have enough graphics memory.\n"
|
||||
"This is a temporary solution until dynamic font atlas is implemented in Dear ImGui.\n\n"
|
||||
"請在確保你有足夠的顯存后再啟動此設定\n"
|
||||
"這是一個在ImGui實現動態字體加載之前的臨時解決方案"
|
||||
);
|
||||
}
|
||||
|
||||
bool loadKoreanB=settings.loadKorean;
|
||||
if (ImGui::Checkbox("Display Korean characters",&loadKoreanB)) {
|
||||
settings.loadKorean=loadKoreanB;
|
||||
}
|
||||
if (ImGui::IsItemHovered()) {
|
||||
ImGui::SetTooltip(
|
||||
"Only toggle this option if you have enough graphics memory.\n"
|
||||
"This is a temporary solution until dynamic font atlas is implemented in Dear ImGui.\n\n"
|
||||
"그래픽 메모리가 충분한 경우에만 이 옵션을 선택하십시오.\n"
|
||||
"이 옵션은 Dear ImGui에 동적 글꼴 아틀라스가 구현될 때까지 임시 솔루션입니다."
|
||||
);
|
||||
}
|
||||
|
||||
ImGui::Separator();
|
||||
|
||||
ImGui::Text("Pattern view labels:");
|
||||
ImGui::InputTextWithHint("Note off (3-char)","OFF",&settings.noteOffLabel);
|
||||
ImGui::InputTextWithHint("Note release (3-char)","===",&settings.noteRelLabel);
|
||||
ImGui::InputTextWithHint("Macro release (3-char)","REL",&settings.macroRelLabel);
|
||||
ImGui::InputTextWithHint("Empty field (3-char)","...",&settings.emptyLabel);
|
||||
ImGui::InputTextWithHint("Empty field (2-char)","..",&settings.emptyLabel2);
|
||||
|
||||
ImGui::Separator();
|
||||
|
||||
ImGui::Text("Orders row number format:");
|
||||
|
|
@ -1207,6 +1248,79 @@ void FurnaceGUI::drawSettings() {
|
|||
|
||||
ImGui::Separator();
|
||||
|
||||
ImGui::Text("Channel colors:");
|
||||
if (ImGui::RadioButton("Single##CHC0",settings.channelColors==0)) {
|
||||
settings.channelColors=0;
|
||||
}
|
||||
if (ImGui::RadioButton("Channel type##CHC1",settings.channelColors==1)) {
|
||||
settings.channelColors=1;
|
||||
}
|
||||
if (ImGui::RadioButton("Instrument type##CHC2",settings.channelColors==2)) {
|
||||
settings.channelColors=2;
|
||||
}
|
||||
|
||||
ImGui::Text("Channel name colors:");
|
||||
if (ImGui::RadioButton("Single##CTC0",settings.channelColors==0)) {
|
||||
settings.channelColors=0;
|
||||
}
|
||||
if (ImGui::RadioButton("Channel type##CTC1",settings.channelColors==1)) {
|
||||
settings.channelColors=1;
|
||||
}
|
||||
if (ImGui::RadioButton("Instrument type##CTC2",settings.channelColors==2)) {
|
||||
settings.channelColors=2;
|
||||
}
|
||||
|
||||
ImGui::Text("Channel style:");
|
||||
if (ImGui::RadioButton("Classic##CHS0",settings.channelStyle==0)) {
|
||||
settings.channelStyle=0;
|
||||
}
|
||||
if (ImGui::RadioButton("Line##CHS1",settings.channelStyle==1)) {
|
||||
settings.channelStyle=1;
|
||||
}
|
||||
if (ImGui::RadioButton("Round##CHS2",settings.channelStyle==2)) {
|
||||
settings.channelStyle=2;
|
||||
}
|
||||
if (ImGui::RadioButton("Split button##CHS3",settings.channelStyle==3)) {
|
||||
settings.channelStyle=3;
|
||||
}
|
||||
if (ImGui::RadioButton("Square border##CH42",settings.channelStyle==4)) {
|
||||
settings.channelStyle=4;
|
||||
}
|
||||
if (ImGui::RadioButton("Round border##CHS5",settings.channelStyle==5)) {
|
||||
settings.channelStyle=5;
|
||||
}
|
||||
|
||||
ImGui::Text("Channel volume bar:");
|
||||
if (ImGui::RadioButton("None##CHV0",settings.channelVolStyle==0)) {
|
||||
settings.channelVolStyle=0;
|
||||
}
|
||||
if (ImGui::RadioButton("Simple##CHV1",settings.channelVolStyle==1)) {
|
||||
settings.channelVolStyle=1;
|
||||
}
|
||||
if (ImGui::RadioButton("Stereo##CHV2",settings.channelVolStyle==2)) {
|
||||
settings.channelVolStyle=2;
|
||||
}
|
||||
if (ImGui::RadioButton("Real##CHV3",settings.channelVolStyle==3)) {
|
||||
settings.channelVolStyle=3;
|
||||
}
|
||||
|
||||
ImGui::Text("Channel feedback style:");
|
||||
|
||||
if (ImGui::RadioButton("Off##CHF0",settings.channelFeedbackStyle==0)) {
|
||||
settings.channelFeedbackStyle=0;
|
||||
}
|
||||
if (ImGui::RadioButton("Note##CHF1",settings.channelFeedbackStyle==1)) {
|
||||
settings.channelFeedbackStyle=1;
|
||||
}
|
||||
if (ImGui::RadioButton("Volume##CHF2",settings.channelFeedbackStyle==2)) {
|
||||
settings.channelFeedbackStyle=2;
|
||||
}
|
||||
if (ImGui::RadioButton("Active##CHF3",settings.channelFeedbackStyle==3)) {
|
||||
settings.channelFeedbackStyle=3;
|
||||
}
|
||||
|
||||
ImGui::Separator();
|
||||
|
||||
bool insEditColorizeB=settings.insEditColorize;
|
||||
if (ImGui::Checkbox("Colorize instrument editor using instrument type",&insEditColorizeB)) {
|
||||
settings.insEditColorize=insEditColorizeB;
|
||||
|
|
@ -1577,6 +1691,15 @@ void FurnaceGUI::drawSettings() {
|
|||
UI_COLOR_CONFIG(GUI_COLOR_EE_VALUE,"External command output");
|
||||
ImGui::TreePop();
|
||||
}
|
||||
if (ImGui::TreeNode("Pattern Manager")) {
|
||||
UI_COLOR_CONFIG(GUI_COLOR_PAT_MANAGER_NULL,"Unallocated");
|
||||
UI_COLOR_CONFIG(GUI_COLOR_PAT_MANAGER_UNUSED,"Unused");
|
||||
UI_COLOR_CONFIG(GUI_COLOR_PAT_MANAGER_USED,"Used");
|
||||
UI_COLOR_CONFIG(GUI_COLOR_PAT_MANAGER_OVERUSED,"Overused");
|
||||
UI_COLOR_CONFIG(GUI_COLOR_PAT_MANAGER_EXTREMELY_OVERUSED,"Really overused");
|
||||
UI_COLOR_CONFIG(GUI_COLOR_PAT_MANAGER_COMBO_BREAKER,"Combo Breaker");
|
||||
ImGui::TreePop();
|
||||
}
|
||||
if (ImGui::TreeNode("Piano")) {
|
||||
UI_COLOR_CONFIG(GUI_COLOR_PIANO_BACKGROUND,"Background");
|
||||
UI_COLOR_CONFIG(GUI_COLOR_PIANO_KEY_TOP,"Upper key");
|
||||
|
|
@ -2083,6 +2206,8 @@ void FurnaceGUI::syncSettings() {
|
|||
settings.roundedMenus=e->getConfInt("roundedMenus",0);
|
||||
settings.loadJapanese=e->getConfInt("loadJapanese",0);
|
||||
settings.loadChinese=e->getConfInt("loadChinese",0);
|
||||
settings.loadChineseTraditional=e->getConfInt("loadChineseTraditional",0);
|
||||
settings.loadKorean=e->getConfInt("loadKorean",0);
|
||||
settings.fmLayout=e->getConfInt("fmLayout",0);
|
||||
settings.sampleLayout=e->getConfInt("sampleLayout",0);
|
||||
settings.waveLayout=e->getConfInt("waveLayout",0);
|
||||
|
|
@ -2127,6 +2252,17 @@ void FurnaceGUI::syncSettings() {
|
|||
settings.noThreadedInput=e->getConfInt("noThreadedInput",0);
|
||||
settings.initialSysName=e->getConfString("initialSysName","");
|
||||
settings.clampSamples=e->getConfInt("clampSamples",0);
|
||||
settings.noteOffLabel=e->getConfString("noteOffLabel","OFF");
|
||||
settings.noteRelLabel=e->getConfString("noteRelLabel","===");
|
||||
settings.macroRelLabel=e->getConfString("macroRelLabel","REL");
|
||||
settings.emptyLabel=e->getConfString("emptyLabel","...");
|
||||
settings.emptyLabel2=e->getConfString("emptyLabel2","..");
|
||||
settings.saveUnusedPatterns=e->getConfInt("saveUnusedPatterns",0);
|
||||
settings.channelColors=e->getConfInt("channelColors",1);
|
||||
settings.channelTextColors=e->getConfInt("channelTextColors",0);
|
||||
settings.channelStyle=e->getConfInt("channelStyle",0);
|
||||
settings.channelVolStyle=e->getConfInt("channelVolStyle",0);
|
||||
settings.channelFeedbackStyle=e->getConfInt("channelFeedbackStyle",1);
|
||||
|
||||
clampSetting(settings.mainFontSize,2,96);
|
||||
clampSetting(settings.patFontSize,2,96);
|
||||
|
|
@ -2176,6 +2312,8 @@ void FurnaceGUI::syncSettings() {
|
|||
clampSetting(settings.roundedMenus,0,1);
|
||||
clampSetting(settings.loadJapanese,0,1);
|
||||
clampSetting(settings.loadChinese,0,1);
|
||||
clampSetting(settings.loadChineseTraditional,0,1);
|
||||
clampSetting(settings.loadKorean,0,1);
|
||||
clampSetting(settings.fmLayout,0,6);
|
||||
clampSetting(settings.susPosition,0,1);
|
||||
clampSetting(settings.effectCursorDir,0,2);
|
||||
|
|
@ -2215,6 +2353,12 @@ void FurnaceGUI::syncSettings() {
|
|||
clampSetting(settings.unsignedDetune,0,1);
|
||||
clampSetting(settings.noThreadedInput,0,1);
|
||||
clampSetting(settings.clampSamples,0,1);
|
||||
clampSetting(settings.saveUnusedPatterns,0,1);
|
||||
clampSetting(settings.channelColors,0,2);
|
||||
clampSetting(settings.channelTextColors,0,2);
|
||||
clampSetting(settings.channelStyle,0,5);
|
||||
clampSetting(settings.channelVolStyle,0,3);
|
||||
clampSetting(settings.channelFeedbackStyle,0,3);
|
||||
|
||||
settings.initialSys=e->decodeSysDesc(e->getConfString("initialSys",""));
|
||||
if (settings.initialSys.size()<4) {
|
||||
|
|
@ -2309,6 +2453,8 @@ void FurnaceGUI::commitSettings() {
|
|||
e->setConf("roundedMenus",settings.roundedMenus);
|
||||
e->setConf("loadJapanese",settings.loadJapanese);
|
||||
e->setConf("loadChinese",settings.loadChinese);
|
||||
e->setConf("loadChineseTraditional",settings.loadChineseTraditional);
|
||||
e->setConf("loadKorean",settings.loadKorean);
|
||||
e->setConf("fmLayout",settings.fmLayout);
|
||||
e->setConf("sampleLayout",settings.sampleLayout);
|
||||
e->setConf("waveLayout",settings.waveLayout);
|
||||
|
|
@ -2354,6 +2500,17 @@ void FurnaceGUI::commitSettings() {
|
|||
e->setConf("unsignedDetune",settings.unsignedDetune);
|
||||
e->setConf("noThreadedInput",settings.noThreadedInput);
|
||||
e->setConf("clampSamples",settings.clampSamples);
|
||||
e->setConf("noteOffLabel",settings.noteOffLabel);
|
||||
e->setConf("noteRelLabel",settings.noteRelLabel);
|
||||
e->setConf("macroRelLabel",settings.macroRelLabel);
|
||||
e->setConf("emptyLabel",settings.emptyLabel);
|
||||
e->setConf("emptyLabel2",settings.emptyLabel2);
|
||||
e->setConf("saveUnusedPatterns",settings.saveUnusedPatterns);
|
||||
e->setConf("channelColors",settings.channelColors);
|
||||
e->setConf("channelTextColors",settings.channelTextColors);
|
||||
e->setConf("channelStyle",settings.channelStyle);
|
||||
e->setConf("channelVolStyle",settings.channelVolStyle);
|
||||
e->setConf("channelFeedbackStyle",settings.channelFeedbackStyle);
|
||||
|
||||
// colors
|
||||
for (int i=0; i<GUI_COLOR_MAX; i++) {
|
||||
|
|
@ -2766,6 +2923,20 @@ void FurnaceGUI::popAccentColors() {
|
|||
#define SYSTEM_PAT_FONT_PATH_3 "/usr/share/fonts/ubuntu/UbuntuMono-R.ttf"
|
||||
#endif
|
||||
|
||||
void setupLabel(const char* lStr, char* label, int len) {
|
||||
memset(label,0,32);
|
||||
for (int i=0, p=0; i<len; i++) {
|
||||
signed char cl;
|
||||
if (lStr[p]==0) {
|
||||
strncat(label," ",32);
|
||||
} else {
|
||||
decodeUTF8((const unsigned char*)&lStr[p],cl);
|
||||
memcpy(label+p,lStr+p,cl);
|
||||
p+=cl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void FurnaceGUI::applyUISettings(bool updateFonts) {
|
||||
ImGuiStyle sty;
|
||||
if (settings.guiColorsBase) {
|
||||
|
|
@ -2774,6 +2945,12 @@ void FurnaceGUI::applyUISettings(bool updateFonts) {
|
|||
ImGui::StyleColorsDark(&sty);
|
||||
}
|
||||
|
||||
setupLabel(settings.noteOffLabel.c_str(),noteOffLabel,3);
|
||||
setupLabel(settings.noteRelLabel.c_str(),noteRelLabel,3);
|
||||
setupLabel(settings.macroRelLabel.c_str(),macroRelLabel,3);
|
||||
setupLabel(settings.emptyLabel.c_str(),emptyLabel,3);
|
||||
setupLabel(settings.emptyLabel2.c_str(),emptyLabel2,2);
|
||||
|
||||
if (settings.dpiScale>=0.5f) dpiScale=settings.dpiScale;
|
||||
|
||||
// colors
|
||||
|
|
@ -2928,6 +3105,12 @@ void FurnaceGUI::applyUISettings(bool updateFonts) {
|
|||
if (settings.loadChinese) {
|
||||
range.AddRanges(ImGui::GetIO().Fonts->GetGlyphRangesChineseSimplifiedCommon());
|
||||
}
|
||||
if (settings.loadChineseTraditional) {
|
||||
range.AddRanges(ImGui::GetIO().Fonts->GetGlyphRangesChineseFull());
|
||||
}
|
||||
if (settings.loadKorean) {
|
||||
range.AddRanges(ImGui::GetIO().Fonts->GetGlyphRangesKorean());
|
||||
}
|
||||
// I'm terribly sorry
|
||||
range.UsedChars[0x80>>5]=0;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue