Merge branch 'tildearrow:master' into tuner
This commit is contained in:
commit
33fcd57865
107 changed files with 54390 additions and 49527 deletions
|
|
@ -146,7 +146,7 @@ const char* aboutLine[]={
|
|||
_N("MAME µPD1771C-017 HLE core by David Viens"),
|
||||
_N("SAASound by Dave Hooper and Simon Owen"),
|
||||
_N("SameBoy by Lior Halphon"),
|
||||
_N("Mednafen PCE, WonderSwan, T6W28 and Virtual Boy audio cores"),
|
||||
_N("Mednafen PCE, WonderSwan, T6W28 (modified) and Virtual Boy audio cores"),
|
||||
_N("WonderSwan new core by asiekierka"),
|
||||
_N("SNES DSP core by Blargg"),
|
||||
_N("puNES (NES, MMC5 and FDS) by FHorse (modified version)"),
|
||||
|
|
|
|||
|
|
@ -7780,7 +7780,7 @@ bool FurnaceGUI::init() {
|
|||
ImGui::CreateContext();
|
||||
rend->initGUI(sdlWin);
|
||||
|
||||
ImGuiLocEntry guiLocalization[8];
|
||||
ImGuiLocEntry guiLocalization[12];
|
||||
|
||||
guiLocalization[0].Key=ImGuiLocKey_TableSizeOne;
|
||||
guiLocalization[0].Text=_("Size column to fit###SizeOne");
|
||||
|
|
@ -7796,10 +7796,18 @@ bool FurnaceGUI::init() {
|
|||
guiLocalization[5].Text=_("(Popup)");
|
||||
guiLocalization[6].Key=ImGuiLocKey_WindowingUntitled;
|
||||
guiLocalization[6].Text=_("(Untitled)");
|
||||
guiLocalization[7].Key=ImGuiLocKey_DockingHideTabBar;
|
||||
guiLocalization[7].Text=_("Hide tab bar###HideTabBar");
|
||||
guiLocalization[7].Key=ImGuiLocKey_OpenLink_s;
|
||||
guiLocalization[7].Text=_("Open '%s'");
|
||||
guiLocalization[8].Key=ImGuiLocKey_CopyLink;
|
||||
guiLocalization[8].Text=_("Copy Link###CopyLink");
|
||||
guiLocalization[9].Key=ImGuiLocKey_DockingHideTabBar;
|
||||
guiLocalization[9].Text=_("Hide tab bar###HideTabBar");
|
||||
guiLocalization[10].Key=ImGuiLocKey_DockingHoldShiftToDock;
|
||||
guiLocalization[10].Text=_("Hold SHIFT to enable Docking window.");
|
||||
guiLocalization[11].Key=ImGuiLocKey_DockingDragToUndockOrMoveNode,
|
||||
guiLocalization[11].Text=_("Click and drag to move or undock whole node.");
|
||||
|
||||
ImGui::LocalizeRegisterEntries(guiLocalization,8);
|
||||
ImGui::LocalizeRegisterEntries(guiLocalization,12);
|
||||
|
||||
const char* localeSettings=_("LocaleSettings: ccjk");
|
||||
if (strlen(localeSettings)<20) {
|
||||
|
|
|
|||
|
|
@ -215,6 +215,11 @@ enum FurnaceGUIColors {
|
|||
GUI_COLOR_TEXT_SELECTION,
|
||||
GUI_COLOR_TABLE_ROW_EVEN,
|
||||
GUI_COLOR_TABLE_ROW_ODD,
|
||||
GUI_COLOR_INPUT_TEXT_CURSOR,
|
||||
GUI_COLOR_TAB_SELECTED_OVERLINE,
|
||||
GUI_COLOR_TAB_DIMMED_SELECTED_OVERLINE,
|
||||
GUI_COLOR_TEXT_LINK,
|
||||
GUI_COLOR_TREE_LINES,
|
||||
|
||||
GUI_COLOR_TOGGLE_OFF,
|
||||
GUI_COLOR_TOGGLE_ON,
|
||||
|
|
@ -458,6 +463,7 @@ enum FurnaceGUIColors {
|
|||
GUI_COLOR_SAMPLE_CHIP_DISABLED,
|
||||
GUI_COLOR_SAMPLE_CHIP_ENABLED,
|
||||
GUI_COLOR_SAMPLE_CHIP_WARNING,
|
||||
GUI_COLOR_SAMPLE_LOOP_HINT,
|
||||
|
||||
GUI_COLOR_PAT_MANAGER_NULL,
|
||||
GUI_COLOR_PAT_MANAGER_USED,
|
||||
|
|
|
|||
|
|
@ -912,6 +912,11 @@ const FurnaceGUIColorDef guiColors[GUI_COLOR_MAX]={
|
|||
D(GUI_COLOR_TEXT_SELECTION,"",ImVec4(0.165f,0.313f,0.49f,1.0f)),
|
||||
D(GUI_COLOR_TABLE_ROW_EVEN,"",ImVec4(0.0f,0.0f,0.0f,0.0f)),
|
||||
D(GUI_COLOR_TABLE_ROW_ODD,"",ImVec4(1.0f,1.0f,1.0f,0.06f)),
|
||||
D(GUI_COLOR_INPUT_TEXT_CURSOR,"",ImVec4(1.0f,1.0f,1.0f,1.0f)),
|
||||
D(GUI_COLOR_TAB_SELECTED_OVERLINE,"",ImVec4(0.26f,0.59f,0.98f,1.0f)),
|
||||
D(GUI_COLOR_TAB_DIMMED_SELECTED_OVERLINE,"",ImVec4(0.5f,0.5f,0.5f,1.0f)),
|
||||
D(GUI_COLOR_TEXT_LINK,"",ImVec4(0.26f,0.59f,0.98f,1.0f)),
|
||||
D(GUI_COLOR_TREE_LINES,"",ImVec4(0.43f,0.43f,0.5f,0.5f)),
|
||||
|
||||
D(GUI_COLOR_TOGGLE_OFF,"",ImVec4(0.2f,0.2f,0.2f,1.0f)),
|
||||
D(GUI_COLOR_TOGGLE_ON,"",ImVec4(0.2f,0.6f,0.2f,1.0f)),
|
||||
|
|
@ -1156,6 +1161,7 @@ const FurnaceGUIColorDef guiColors[GUI_COLOR_MAX]={
|
|||
D(GUI_COLOR_SAMPLE_CHIP_DISABLED,"",ImVec4(0.6f,0.6f,0.6f,1.0f)),
|
||||
D(GUI_COLOR_SAMPLE_CHIP_ENABLED,"",ImVec4(0.3f,1.0f,0.3f,1.0f)),
|
||||
D(GUI_COLOR_SAMPLE_CHIP_WARNING,"",ImVec4(1.0f,0.75f,0.3f,1.0f)),
|
||||
D(GUI_COLOR_SAMPLE_LOOP_HINT,"",ImVec4(1.0f,0.7f,0.0f,0.8f)),
|
||||
|
||||
D(GUI_COLOR_PAT_MANAGER_NULL,"",ImVec4(0.15f,0.15f,0.15f,1.0f)),
|
||||
D(GUI_COLOR_PAT_MANAGER_USED,"",ImVec4(0.15f,1.0f,0.15f,1.0f)),
|
||||
|
|
|
|||
|
|
@ -1233,7 +1233,9 @@ void FurnaceGUI::drawPattern() {
|
|||
} else {
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_Alpha,ImGui::GetStyle().Alpha*ImGui::GetStyle().DisabledAlpha);
|
||||
}
|
||||
ImGui::PushID("prevPatterns");
|
||||
for (int i=0; i<dummyRows-1; i++) {
|
||||
ImGui::PushID(i);
|
||||
patternRow(viewRow,e->isPlaying(),lineHeight,chans,viewOrder,patCache,orderLock);
|
||||
if (++viewRow>=e->curSubSong->patLen) {
|
||||
viewRow=0;
|
||||
|
|
@ -1242,7 +1244,9 @@ void FurnaceGUI::drawPattern() {
|
|||
patCache[j]=e->curPat[j].getPattern(e->curOrders->ord[j][viewOrder],false);
|
||||
}
|
||||
}
|
||||
ImGui::PopID();
|
||||
}
|
||||
ImGui::PopID();
|
||||
if (orderLock) {
|
||||
ImGui::EndDisabled();
|
||||
} else {
|
||||
|
|
@ -1273,7 +1277,9 @@ void FurnaceGUI::drawPattern() {
|
|||
} else {
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_Alpha,ImGui::GetStyle().Alpha*ImGui::GetStyle().DisabledAlpha);
|
||||
}
|
||||
ImGui::PushID("nextPatterns");
|
||||
for (int i=0; i<=dummyRows; i++) {
|
||||
ImGui::PushID(i);
|
||||
patternRow(viewRow,e->isPlaying(),lineHeight,chans,viewOrder,patCache,orderLock);
|
||||
if (++viewRow>=e->curSubSong->patLen) {
|
||||
viewRow=0;
|
||||
|
|
@ -1282,7 +1288,9 @@ void FurnaceGUI::drawPattern() {
|
|||
patCache[j]=e->curPat[j].getPattern(e->curOrders->ord[j][viewOrder],false);
|
||||
}
|
||||
}
|
||||
ImGui::PopID();
|
||||
}
|
||||
ImGui::PopID();
|
||||
if (orderLock) {
|
||||
ImGui::EndDisabled();
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@
|
|||
#include "guiConst.h"
|
||||
#include "sampleUtil.h"
|
||||
#include "util.h"
|
||||
#include "intConst.h"
|
||||
|
||||
#define SWAP_COLOR_ARGB(x) \
|
||||
x=(x&0xff00ff00)|((x&0xff)<<16)|((x&0xff0000)>>16);
|
||||
|
|
@ -80,6 +81,13 @@ const double timeMultipliers[13]={
|
|||
} \
|
||||
}
|
||||
|
||||
#define EXACT_2RATES(_name,_x,_y) \
|
||||
if (e->isPreviewingSample()) { \
|
||||
if (((int)e->getSamplePreviewRate()!=(int)(_x)) || (int)e->getSamplePreviewRate()!=(int)(_y)) { \
|
||||
SAMPLE_WARN(warnRate,fmt::sprintf(_("%s: sample rate must be %d or %d"),_name,(int)(_x),(int)(_y))); \
|
||||
} \
|
||||
}
|
||||
|
||||
void FurnaceGUI::drawSampleEdit() {
|
||||
if (nextWindow==GUI_WINDOW_SAMPLE_EDIT) {
|
||||
sampleEditOpen=true;
|
||||
|
|
@ -216,6 +224,9 @@ void FurnaceGUI::drawSampleEdit() {
|
|||
memset(isMemVisible,0,DIV_MAX_CHIPS*DIV_MAX_SAMPLE_TYPE*sizeof(bool));
|
||||
memset(isMemWarning,0,DIV_MAX_CHIPS*DIV_MAX_SAMPLE_TYPE*sizeof(bool));
|
||||
|
||||
bool displayLoopStartHints=false;
|
||||
bool displayLoopEndHints=false;
|
||||
|
||||
for (int i=0; i<e->song.systemLen; i++) {
|
||||
DivDispatch* dispatch=e->getDispatch(i);
|
||||
|
||||
|
|
@ -279,7 +290,7 @@ void FurnaceGUI::drawSampleEdit() {
|
|||
SAMPLE_WARN(warnLoop,_("X1-010: samples can't loop"));
|
||||
}
|
||||
if (sample->samples>131072) {
|
||||
SAMPLE_WARN(warnLength,_("X1-010: maximum sample length is 131072"));
|
||||
SAMPLE_WARN(warnLength,_("X1-010: maximum bankswitched sample length is 131072"));
|
||||
}
|
||||
break;
|
||||
case DIV_SYSTEM_GA20:
|
||||
|
|
@ -301,6 +312,9 @@ void FurnaceGUI::drawSampleEdit() {
|
|||
SAMPLE_WARN(warnLength,_("YM2608: sample length will be padded to multiple of 512"));
|
||||
}
|
||||
}
|
||||
if (dispatch!=NULL) {
|
||||
MAX_RATE("YM2608",dispatch->chipClock/144);
|
||||
}
|
||||
break;
|
||||
case DIV_SYSTEM_YM2610_FULL:
|
||||
case DIV_SYSTEM_YM2610_FULL_EXT:
|
||||
|
|
@ -308,9 +322,12 @@ void FurnaceGUI::drawSampleEdit() {
|
|||
case DIV_SYSTEM_YM2610B:
|
||||
case DIV_SYSTEM_YM2610B_EXT:
|
||||
if (sample->loop) {
|
||||
SAMPLE_WARN(warnLoop,_("YM2610: ADPCM-A samples can't loop"));
|
||||
if (sample->loopStart!=0 || sample->loopEnd!=(int)(sample->samples)) {
|
||||
SAMPLE_WARN(warnLoopPos,_("YM2610: loop point ignored on ADPCM-B (may only loop entire sample)"));
|
||||
if (sample->depth==DIV_SAMPLE_DEPTH_ADPCM_A) {
|
||||
SAMPLE_WARN(warnLoop,_("YM2610: ADPCM-A samples can't loop"));
|
||||
} else {
|
||||
if (sample->loopStart!=0 || sample->loopEnd!=(int)(sample->samples)) {
|
||||
SAMPLE_WARN(warnLoopPos,_("YM2610: loop point ignored on ADPCM-B (may only loop entire sample)"));
|
||||
}
|
||||
}
|
||||
if (sample->samples&511) {
|
||||
SAMPLE_WARN(warnLength,_("YM2610: sample length will be padded to multiple of 512"));
|
||||
|
|
@ -320,7 +337,11 @@ void FurnaceGUI::drawSampleEdit() {
|
|||
SAMPLE_WARN(warnLength,_("YM2610: maximum ADPCM-A sample length is 2097152"));
|
||||
}
|
||||
if (dispatch!=NULL) {
|
||||
EXACT_RATE("YM2610 (ADPCM-A)",dispatch->chipClock/432);
|
||||
if (sample->depth==DIV_SAMPLE_DEPTH_ADPCM_A) {
|
||||
EXACT_RATE("YM2610 (ADPCM-A)",dispatch->chipClock/432);
|
||||
} else {
|
||||
MAX_RATE("YM2610 (ADPCM-B)",dispatch->chipClock/144);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DIV_SYSTEM_Y8950:
|
||||
|
|
@ -332,6 +353,9 @@ void FurnaceGUI::drawSampleEdit() {
|
|||
SAMPLE_WARN(warnLength,_("Y8950: sample length will be padded to multiple of 512"));
|
||||
}
|
||||
}
|
||||
if (dispatch!=NULL) {
|
||||
MAX_RATE("Y8950",dispatch->chipClock/72);
|
||||
}
|
||||
break;
|
||||
case DIV_SYSTEM_AMIGA:
|
||||
if (sample->loop) {
|
||||
|
|
@ -355,7 +379,12 @@ void FurnaceGUI::drawSampleEdit() {
|
|||
SAMPLE_WARN(warnLength,_("SegaPCM: maximum sample length is 65280"));
|
||||
}
|
||||
if (dispatch!=NULL) {
|
||||
MAX_RATE("SegaPCM",dispatch->chipClock/256);
|
||||
MAX_RATE("SegaPCM",dispatch->rate);
|
||||
}
|
||||
break;
|
||||
case DIV_SYSTEM_K007232:
|
||||
if (sample->samples>131071) {
|
||||
SAMPLE_WARN(warnLength,_("K007232: maximum sample length is 131071"));
|
||||
}
|
||||
break;
|
||||
case DIV_SYSTEM_K053260:
|
||||
|
|
@ -399,6 +428,9 @@ void FurnaceGUI::drawSampleEdit() {
|
|||
if (sample->samples>129024) {
|
||||
SAMPLE_WARN(warnLength,_("MSM6295: maximum bankswitched sample length is 129024"));
|
||||
}
|
||||
if (dispatch!=NULL) {
|
||||
EXACT_2RATES("MSM6295",dispatch->chipClock/165,dispatch->chipClock/132);
|
||||
}
|
||||
break;
|
||||
case DIV_SYSTEM_GBA_DMA:
|
||||
if (sample->loop) {
|
||||
|
|
@ -432,6 +464,96 @@ void FurnaceGUI::drawSampleEdit() {
|
|||
SAMPLE_WARN(warnLength,_("Supervision: maximum sample length is 8192"));
|
||||
}
|
||||
break;
|
||||
case DIV_SYSTEM_YMZ280B:
|
||||
if (sample->depth==DIV_SAMPLE_DEPTH_YMZ_ADPCM) {
|
||||
if (sample->loop) {
|
||||
if (sample->loopStart&1) {
|
||||
SAMPLE_WARN(warnLoopStart,_("YMZ280B: loop start on ADPCM must be a multiple of 2"));
|
||||
}
|
||||
if (sample->loopEnd&1) {
|
||||
SAMPLE_WARN(warnLoopEnd,_("YMZ280B: loop end on ADPCM must be a multiple of 2"));
|
||||
}
|
||||
}
|
||||
if (dispatch!=NULL) {
|
||||
MAX_RATE("YMZ280B (ADPCM)",dispatch->rate);
|
||||
}
|
||||
} else {
|
||||
if (dispatch!=NULL) {
|
||||
MAX_RATE("YMZ280B (PCM)",dispatch->chipClock/192);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DIV_SYSTEM_NDS:
|
||||
switch (sample->depth) {
|
||||
case DIV_SAMPLE_DEPTH_IMA_ADPCM:
|
||||
if (sample->loop) {
|
||||
if (sample->loopStart&7) {
|
||||
SAMPLE_WARN(warnLoopStart,_("NDS: loop start on ADPCM must be a multiple of 8"));
|
||||
}
|
||||
if (sample->loopEnd&7) {
|
||||
SAMPLE_WARN(warnLoopEnd,_("NDS: loop end on ADPCM must be a multiple of 8"));
|
||||
}
|
||||
if (sample->loopStart>524280) {
|
||||
SAMPLE_WARN(warnLoopPos,_("NDS: loop cannot be longer than 524280 samples on ADPCM"));
|
||||
}
|
||||
if ((sample->loopEnd-sample->loopStart)>33554424) {
|
||||
SAMPLE_WARN(warnLoopPos,_("NDS: maximum ADPCM loop length is 33554424"));
|
||||
}
|
||||
} else {
|
||||
if (sample->samples>33554424) {
|
||||
SAMPLE_WARN(warnLength,_("NDS: maximum ADPCM sample length is 33554424"));
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DIV_SAMPLE_DEPTH_8BIT:
|
||||
if (sample->loop) {
|
||||
if (sample->loopStart&3) {
|
||||
SAMPLE_WARN(warnLoopStart,_("NDS: loop start on 8 bit PCM must be a multiple of 4"));
|
||||
}
|
||||
if (sample->loopEnd&3) {
|
||||
SAMPLE_WARN(warnLoopEnd,_("NDS: loop end on 8 bit PCM must be a multiple of 4"));
|
||||
}
|
||||
if (sample->loopStart>262140) {
|
||||
SAMPLE_WARN(warnLoopPos,_("NDS: loop cannot be longer than 262140 samples on 8 bit PCM"));
|
||||
}
|
||||
if ((sample->loopEnd-sample->loopStart)>16777212) {
|
||||
SAMPLE_WARN(warnLoopPos,_("NDS: maximum 8 bit PCM loop length is 16777212"));
|
||||
}
|
||||
} else {
|
||||
if (sample->samples>16777212) {
|
||||
SAMPLE_WARN(warnLength,_("NDS: maximum 8 bit PCM sample length is 16777212"));
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DIV_SAMPLE_DEPTH_16BIT:
|
||||
if (sample->loop) {
|
||||
if (sample->loopStart&1) {
|
||||
SAMPLE_WARN(warnLoopStart,_("NDS: loop start on 16 bit PCM must be a multiple of 2"));
|
||||
}
|
||||
if (sample->loopEnd&1) {
|
||||
SAMPLE_WARN(warnLoopEnd,_("NDS: loop end on 16 bit PCM must be a multiple of 2"));
|
||||
}
|
||||
if (sample->loopStart>131070) {
|
||||
SAMPLE_WARN(warnLoopPos,_("NDS: loop cannot be longer than 131070 samples on 16 bit PCM"));
|
||||
}
|
||||
if ((sample->loopEnd-sample->loopStart)>8388606) {
|
||||
SAMPLE_WARN(warnLoopPos,_("NDS: maximum 16 bit PCM loop length is 8388606"));
|
||||
}
|
||||
} else {
|
||||
if (sample->samples>8388606) {
|
||||
SAMPLE_WARN(warnLength,_("NDS: maximum 16 bit PCM sample length is 8388606"));
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case DIV_SYSTEM_ES5506:
|
||||
if (sample->samples>2097024) {
|
||||
SAMPLE_WARN(warnLength,_("ES5506: maximum sample length is 2097024"));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
@ -461,7 +583,7 @@ void FurnaceGUI::drawSampleEdit() {
|
|||
for (int i=0; i<DIV_MAX_CHIPS; i++) {
|
||||
if (isChipVisible[i]) selColumns++;
|
||||
}
|
||||
|
||||
|
||||
int targetRate=sampleCompatRate?sample->rate:sample->centerRate;
|
||||
|
||||
if (ImGui::BeginTable("SampleProps",(selColumns>1)?4:3,ImGuiTableFlags_SizingStretchSame|ImGuiTableFlags_BordersV|ImGuiTableFlags_BordersOuterH)) {
|
||||
|
|
@ -753,9 +875,13 @@ void FurnaceGUI::drawSampleEdit() {
|
|||
if (ImGui::IsItemActive()) {
|
||||
keepLoopAlive=true;
|
||||
sampleCheckLoopStart=false;
|
||||
displayLoopStartHints=true;
|
||||
} else {
|
||||
sampleCheckLoopStart=true;
|
||||
}
|
||||
if (ImGui::IsItemHovered()) {
|
||||
displayLoopStartHints=true;
|
||||
}
|
||||
if (ImGui::IsItemHovered() && (!warnLoopPos.empty() || (!warnLoopStart.empty() && sampleCheckLoopStart) || sample->depth==DIV_SAMPLE_DEPTH_BRR)) {
|
||||
if (ImGui::BeginTooltip()) {
|
||||
if (sample->depth==DIV_SAMPLE_DEPTH_BRR) {
|
||||
|
|
@ -792,9 +918,13 @@ void FurnaceGUI::drawSampleEdit() {
|
|||
if (ImGui::IsItemActive()) {
|
||||
keepLoopAlive=true;
|
||||
sampleCheckLoopEnd=false;
|
||||
displayLoopEndHints=true;
|
||||
} else {
|
||||
sampleCheckLoopEnd=true;
|
||||
}
|
||||
if (ImGui::IsItemHovered()) {
|
||||
displayLoopEndHints=true;
|
||||
}
|
||||
if (ImGui::IsItemHovered() && (!warnLoopPos.empty() || (!warnLoopEnd.empty() && sampleCheckLoopEnd) || sample->depth==DIV_SAMPLE_DEPTH_BRR)) {
|
||||
if (ImGui::BeginTooltip()) {
|
||||
if (sample->depth==DIV_SAMPLE_DEPTH_BRR) {
|
||||
|
|
@ -979,14 +1109,27 @@ void FurnaceGUI::drawSampleEdit() {
|
|||
ImGui::OpenPopup("SResampleOpt");
|
||||
}
|
||||
if (ImGui::BeginPopupContextItem("SResampleOpt",ImGuiPopupFlags_MouseButtonLeft)) {
|
||||
ImGui::Text(_("Rate"));
|
||||
if (ImGui::InputDouble("##SRRate",&resampleTarget,1.0,50.0,"%g")) {
|
||||
if (resampleTarget<0) resampleTarget=0;
|
||||
if (resampleTarget>96000) resampleTarget=96000;
|
||||
if (ImGui::InputDouble("Rate##SRRate",&resampleTarget,1.0,50.0,"%g")) {
|
||||
if (resampleTarget<100) resampleTarget=100;
|
||||
if (resampleTarget>384000) resampleTarget=384000;
|
||||
}
|
||||
double factor=resampleTarget/(double)targetRate;
|
||||
unsigned int targetLength=sample->samples*factor;
|
||||
if (ImGui::InputScalar("Length##SRLen",ImGuiDataType_U32,&targetLength, &_ONE, &_SIXTEEN)) {
|
||||
if (targetLength<1) targetLength=1;
|
||||
resampleTarget=targetRate*targetLength/(double)sample->samples;
|
||||
if (resampleTarget<100) resampleTarget=100;
|
||||
if (resampleTarget>384000) resampleTarget=384000;
|
||||
}
|
||||
if (ImGui::InputDouble(_("Factor"),&factor,0.125,0.5,"%g")) {
|
||||
resampleTarget=(double)targetRate*factor;
|
||||
if (resampleTarget<100) resampleTarget=100;
|
||||
if (resampleTarget>384000) resampleTarget=384000;
|
||||
}
|
||||
ImGui::SameLine();
|
||||
if (ImGui::Button("0.5x")) {
|
||||
resampleTarget*=0.5;
|
||||
if (resampleTarget<100) resampleTarget=100;
|
||||
if (resampleTarget>384000) resampleTarget=384000;
|
||||
}
|
||||
ImGui::SameLine();
|
||||
if (ImGui::Button("==")) {
|
||||
|
|
@ -995,19 +1138,15 @@ void FurnaceGUI::drawSampleEdit() {
|
|||
ImGui::SameLine();
|
||||
if (ImGui::Button("2.0x")) {
|
||||
resampleTarget*=2.0;
|
||||
}
|
||||
double factor=resampleTarget/(double)targetRate;
|
||||
if (ImGui::InputDouble(_("Factor"),&factor,0.125,0.5,"%g")) {
|
||||
resampleTarget=(double)targetRate*factor;
|
||||
if (resampleTarget<0) resampleTarget=0;
|
||||
if (resampleTarget>96000) resampleTarget=96000;
|
||||
if (resampleTarget<100) resampleTarget=100;
|
||||
if (resampleTarget>384000) resampleTarget=384000;
|
||||
}
|
||||
ImGui::Combo(_("Filter"),&resampleStrat,LocalizedComboGetter,resampleStrats,6);
|
||||
if (ImGui::Button(_("Resample"))) {
|
||||
sample->prepareUndo(true);
|
||||
e->lockEngine([this,sample,targetRate]() {
|
||||
if (!sample->resample(targetRate,resampleTarget,resampleStrat)) {
|
||||
showError(_("couldn't resample! make sure your sample is 8 or 16-bit."));
|
||||
showError(_("couldn't resample! make sure your sample is 8 or 16-bit and that the target rate is at least 100Hz."));
|
||||
}
|
||||
e->renderSamples(curSample);
|
||||
});
|
||||
|
|
@ -1620,21 +1759,24 @@ void FurnaceGUI::drawSampleEdit() {
|
|||
}
|
||||
|
||||
int ij=0;
|
||||
for (int i=0; i<availY; i++) {
|
||||
if (availY>0) {
|
||||
for (int j=0; j<availX; j++) {
|
||||
int scaledPos=samplePos+(j*sampleZoom);
|
||||
if (sample->isLoopable() && (scaledPos>=sample->loopStart && scaledPos<=sample->loopEnd)) {
|
||||
if (sample->isLoopable() && (scaledPos>=sample->loopStart && scaledPos<sample->loopEnd)) {
|
||||
data[ij++]=bgColorLoop;
|
||||
} else {
|
||||
data[ij++]=bgColor;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (availY>0) {
|
||||
for (int i=1; i<availY; i++) {
|
||||
memcpy(&data[ij],data,availX*sizeof(unsigned int));
|
||||
ij+=availX;
|
||||
}
|
||||
for (int i=availX*(availY>>1); i<availX*(1+(availY>>1)); i++) {
|
||||
data[i]=centerLineColor;
|
||||
}
|
||||
}
|
||||
|
||||
unsigned int xCoarse=samplePos;
|
||||
unsigned int xFine=0;
|
||||
unsigned int xAdvanceCoarse=sampleZoom;
|
||||
|
|
@ -2028,6 +2170,173 @@ void FurnaceGUI::drawSampleEdit() {
|
|||
}
|
||||
dl->PopClipRect();
|
||||
|
||||
bool displayLoopHintsNES=false;
|
||||
bool displayLoopHintsSNES=false;
|
||||
bool displayLoopHintsNDSA=false;
|
||||
bool displayLoopHintsNDS8=false;
|
||||
bool displayLoopHintsAmiga=false;
|
||||
bool displayLoopHintsGBADMA=false;
|
||||
|
||||
for (int i=0; i<e->song.systemLen; i++) {
|
||||
if (e->song.system[i]==DIV_SYSTEM_NES) {
|
||||
displayLoopHintsNES=true;
|
||||
}
|
||||
if (e->song.system[i]==DIV_SYSTEM_SNES) {
|
||||
displayLoopHintsSNES=true;
|
||||
}
|
||||
if (((e->song.system[i]==DIV_SYSTEM_NDS) && (sample->depth==DIV_SAMPLE_DEPTH_IMA_ADPCM))) {
|
||||
displayLoopHintsNDSA=true;
|
||||
}
|
||||
if (((e->song.system[i]==DIV_SYSTEM_NDS) && (sample->depth==DIV_SAMPLE_DEPTH_8BIT))) {
|
||||
displayLoopHintsNDS8=true;
|
||||
}
|
||||
if (e->song.system[i]==DIV_SYSTEM_AMIGA ||
|
||||
e->song.system[i]==DIV_SYSTEM_C219 ||
|
||||
((e->song.system[i]==DIV_SYSTEM_YMZ280B) && (sample->depth==DIV_SAMPLE_DEPTH_YMZ_ADPCM)) ||
|
||||
((e->song.system[i]==DIV_SYSTEM_NDS) && (sample->depth==DIV_SAMPLE_DEPTH_16BIT))) {
|
||||
displayLoopHintsAmiga=true;
|
||||
}
|
||||
if (e->song.system[i]==DIV_SYSTEM_GBA_DMA) {
|
||||
displayLoopHintsGBADMA=true;
|
||||
}
|
||||
}
|
||||
|
||||
if (displayLoopStartHints) {
|
||||
if (displayLoopHintsNES) {
|
||||
if (sampleZoom<3.0) {
|
||||
for (int i=0; i<(int)(sampleZoom*avail.x); i++) {
|
||||
if (((i+samplePos)&511)==0) {
|
||||
ImVec2 p1=ImVec2(rectMin.x+((float)i/sampleZoom),rectMin.y);
|
||||
ImVec2 p2=p1;
|
||||
p2.y=rectMax.y;
|
||||
|
||||
dl->AddLine(p1,p2,ImGui::GetColorU32(uiColors[GUI_COLOR_SAMPLE_LOOP_HINT]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (displayLoopHintsSNES) {
|
||||
if (sampleZoom<0.75) {
|
||||
for (int i=0; i<(int)(sampleZoom*avail.x); i++) {
|
||||
if (((i+samplePos)&15)==0) {
|
||||
ImVec2 p1=ImVec2(rectMin.x+((float)i/sampleZoom),rectMin.y);
|
||||
ImVec2 p2=p1;
|
||||
p2.y=rectMax.y;
|
||||
|
||||
dl->AddLine(p1,p2,ImGui::GetColorU32(uiColors[GUI_COLOR_SAMPLE_LOOP_HINT]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (displayLoopHintsNDSA) {
|
||||
if (sampleZoom<0.5) {
|
||||
for (int i=0; i<(int)(sampleZoom*avail.x); i++) {
|
||||
if (((i+samplePos)&7)==0) {
|
||||
ImVec2 p1=ImVec2(rectMin.x+((float)i/sampleZoom),rectMin.y);
|
||||
ImVec2 p2=p1;
|
||||
p2.y=rectMax.y;
|
||||
|
||||
dl->AddLine(p1,p2,ImGui::GetColorU32(uiColors[GUI_COLOR_SAMPLE_LOOP_HINT]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (displayLoopHintsNDS8) {
|
||||
if (sampleZoom<0.375) {
|
||||
for (int i=0; i<(int)(sampleZoom*avail.x); i++) {
|
||||
if (((i+samplePos)&3)==0) {
|
||||
ImVec2 p1=ImVec2(rectMin.x+((float)i/sampleZoom),rectMin.y);
|
||||
ImVec2 p2=p1;
|
||||
p2.y=rectMax.y;
|
||||
|
||||
dl->AddLine(p1,p2,ImGui::GetColorU32(uiColors[GUI_COLOR_SAMPLE_LOOP_HINT]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (displayLoopHintsAmiga) {
|
||||
if (sampleZoom<0.25) {
|
||||
for (int i=0; i<(int)(sampleZoom*avail.x); i++) {
|
||||
if (((i+samplePos)&1)==0) {
|
||||
ImVec2 p1=ImVec2(rectMin.x+((float)i/sampleZoom),rectMin.y);
|
||||
ImVec2 p2=p1;
|
||||
p2.y=rectMax.y;
|
||||
|
||||
dl->AddLine(p1,p2,ImGui::GetColorU32(uiColors[GUI_COLOR_SAMPLE_LOOP_HINT]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (displayLoopHintsGBADMA) {
|
||||
if (sampleZoom<0.6) {
|
||||
for (int i=0; i<(int)(sampleZoom*avail.x); i++) {
|
||||
if (((i+samplePos)&3)==0) {
|
||||
ImVec2 p1=ImVec2(rectMin.x+((float)i/sampleZoom),rectMin.y);
|
||||
ImVec2 p2=p1;
|
||||
p2.y=rectMax.y;
|
||||
|
||||
dl->AddLine(p1,p2,ImGui::GetColorU32(uiColors[GUI_COLOR_SAMPLE_LOOP_HINT]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (displayLoopEndHints) {
|
||||
if (displayLoopHintsNES) {
|
||||
if (sampleZoom<3.0) {
|
||||
for (int i=0; i<(int)(sampleZoom*avail.x); i++) {
|
||||
if (((i+samplePos-8)&128)==0) {
|
||||
ImVec2 p1=ImVec2(rectMin.x+((float)i/sampleZoom),rectMin.y);
|
||||
ImVec2 p2=p1;
|
||||
p2.y=rectMax.y;
|
||||
|
||||
dl->AddLine(p1,p2,ImGui::GetColorU32(uiColors[GUI_COLOR_SAMPLE_LOOP_HINT]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (displayLoopHintsSNES) {
|
||||
if (sampleZoom<0.75) {
|
||||
for (int i=0; i<(int)(sampleZoom*avail.x); i++) {
|
||||
if (((i+samplePos)&15)==0) {
|
||||
ImVec2 p1=ImVec2(rectMin.x+((float)i/sampleZoom),rectMin.y);
|
||||
ImVec2 p2=p1;
|
||||
p2.y=rectMax.y;
|
||||
|
||||
dl->AddLine(p1,p2,ImGui::GetColorU32(uiColors[GUI_COLOR_SAMPLE_LOOP_HINT]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (displayLoopHintsAmiga) {
|
||||
if (sampleZoom<0.25) {
|
||||
for (int i=0; i<(int)(sampleZoom*avail.x); i++) {
|
||||
if (((i+samplePos)&1)==0) {
|
||||
ImVec2 p1=ImVec2(rectMin.x+((float)i/sampleZoom),rectMin.y);
|
||||
ImVec2 p2=p1;
|
||||
p2.y=rectMax.y;
|
||||
|
||||
dl->AddLine(p1,p2,ImGui::GetColorU32(uiColors[GUI_COLOR_SAMPLE_LOOP_HINT]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (displayLoopHintsGBADMA) {
|
||||
if (sampleZoom<0.6) {
|
||||
for (int i=0; i<(int)(sampleZoom*avail.x); i++) {
|
||||
if (((i+samplePos-sample->loopStart)&15)==0) {
|
||||
ImVec2 p1=ImVec2(rectMin.x+((float)i/sampleZoom),rectMin.y);
|
||||
ImVec2 p2=p1;
|
||||
p2.y=rectMax.y;
|
||||
|
||||
dl->AddLine(p1,p2,ImGui::GetColorU32(uiColors[GUI_COLOR_SAMPLE_LOOP_HINT]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (drawSelection) {
|
||||
int start=sampleSelStart;
|
||||
int end=sampleSelEnd;
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ const char* locales[][3]={
|
|||
{"한국어 (25%)", "ko", "이 설정을 적용하려면 Furnace를 다시 시작해야 합니다."},
|
||||
//{"Nederlands (4%)", "nl", "start Furnace opnieuw op om deze instelling effectief te maken."},
|
||||
{"Polski (95%)", "pl", "aby to ustawienie było skuteczne, należy ponownie uruchomić program."},
|
||||
{"Português (Brasil) (90%)", "pt_BR", "reinicie o Furnace para que essa configuração entre em vigor."},
|
||||
{"Português (Brasil) (70%)", "pt_BR", "reinicie o Furnace para que essa configuração entre em vigor."},
|
||||
{"Русский", "ru", "перезапустите программу, чтобы эта настройка вступила в силу."},
|
||||
{"Slovenčina (15%)", "sk", "???"},
|
||||
{"Svenska", "sv", "starta om programmet för att denna inställning ska träda i kraft."},
|
||||
|
|
@ -3953,8 +3953,10 @@ void FurnaceGUI::drawSettings() {
|
|||
UI_COLOR_CONFIG(GUI_COLOR_TAB,_("Tab"));
|
||||
UI_COLOR_CONFIG(GUI_COLOR_TAB_HOVER,_("Tab (hovered)"));
|
||||
UI_COLOR_CONFIG(GUI_COLOR_TAB_ACTIVE,_("Tab (active)"));
|
||||
UI_COLOR_CONFIG(GUI_COLOR_TAB_UNFOCUSED,_("Tab (unfocused)"));
|
||||
UI_COLOR_CONFIG(GUI_COLOR_TAB_UNFOCUSED_ACTIVE,_("Tab (unfocused and active)"));
|
||||
UI_COLOR_CONFIG(GUI_COLOR_TAB_SELECTED_OVERLINE,_("Tab (active overline)"));
|
||||
UI_COLOR_CONFIG(GUI_COLOR_TAB_UNFOCUSED,_("Tab (dimmed)"));
|
||||
UI_COLOR_CONFIG(GUI_COLOR_TAB_UNFOCUSED_ACTIVE,_("Tab (dimmed and active)"));
|
||||
UI_COLOR_CONFIG(GUI_COLOR_TAB_DIMMED_SELECTED_OVERLINE,_("Tab (dimmed and active overline)"));
|
||||
UI_COLOR_CONFIG(GUI_COLOR_IMGUI_HEADER,_("ImGui header"));
|
||||
UI_COLOR_CONFIG(GUI_COLOR_IMGUI_HEADER_HOVER,_("ImGui header (hovered)"));
|
||||
UI_COLOR_CONFIG(GUI_COLOR_IMGUI_HEADER_ACTIVE,_("ImGui header (active)"));
|
||||
|
|
@ -3968,7 +3970,9 @@ void FurnaceGUI::drawSettings() {
|
|||
UI_COLOR_CONFIG(GUI_COLOR_SLIDER_GRAB_ACTIVE,_("Slider grab (active)"));
|
||||
UI_COLOR_CONFIG(GUI_COLOR_TITLE_BACKGROUND_ACTIVE,_("Title background (active)"));
|
||||
UI_COLOR_CONFIG(GUI_COLOR_CHECK_MARK,_("Checkbox/radio button mark"));
|
||||
UI_COLOR_CONFIG(GUI_COLOR_TEXT_LINK,_("Text link"));
|
||||
UI_COLOR_CONFIG(GUI_COLOR_TEXT_SELECTION,_("Text selection"));
|
||||
UI_COLOR_CONFIG(GUI_COLOR_TREE_LINES,_("Tree lines"));
|
||||
UI_COLOR_CONFIG(GUI_COLOR_PLOT_LINES,_("Line plot"));
|
||||
UI_COLOR_CONFIG(GUI_COLOR_PLOT_LINES_HOVER,_("Line plot (hovered)"));
|
||||
UI_COLOR_CONFIG(GUI_COLOR_PLOT_HISTOGRAM,_("Histogram plot"));
|
||||
|
|
@ -4008,6 +4012,7 @@ void FurnaceGUI::drawSettings() {
|
|||
UI_COLOR_CONFIG(GUI_COLOR_DRAG_DROP_TARGET,_("Drag and drop target"));
|
||||
UI_COLOR_CONFIG(GUI_COLOR_NAV_WIN_HIGHLIGHT,_("Window switcher (highlight)"));
|
||||
UI_COLOR_CONFIG(GUI_COLOR_NAV_WIN_BACKDROP,_("Window switcher backdrop"));
|
||||
UI_COLOR_CONFIG(GUI_COLOR_INPUT_TEXT_CURSOR,_("Text input cursor"));
|
||||
ImGui::TreePop();
|
||||
}
|
||||
if (ImGui::TreeNode(_("Miscellaneous"))) {
|
||||
|
|
@ -4282,6 +4287,7 @@ void FurnaceGUI::drawSettings() {
|
|||
UI_COLOR_CONFIG(GUI_COLOR_SAMPLE_NEEDLE,_("Preview needle"));
|
||||
UI_COLOR_CONFIG(GUI_COLOR_SAMPLE_NEEDLE_PLAYING,_("Playing needles"));
|
||||
UI_COLOR_CONFIG(GUI_COLOR_SAMPLE_LOOP_POINT,_("Loop markers"));
|
||||
UI_COLOR_CONFIG(GUI_COLOR_SAMPLE_LOOP_HINT,_("Valid loop position hints"));
|
||||
UI_COLOR_CONFIG(GUI_COLOR_SAMPLE_CHIP_DISABLED,_("Chip select: disabled"));
|
||||
UI_COLOR_CONFIG(GUI_COLOR_SAMPLE_CHIP_ENABLED,_("Chip select: enabled"));
|
||||
UI_COLOR_CONFIG(GUI_COLOR_SAMPLE_CHIP_WARNING,_("Chip select: enabled (failure)"));
|
||||
|
|
@ -6367,15 +6373,20 @@ void FurnaceGUI::applyUISettings(bool updateFonts) {
|
|||
sty.Colors[ImGuiCol_Text]=uiColors[GUI_COLOR_TEXT];
|
||||
sty.Colors[ImGuiCol_TextDisabled]=uiColors[GUI_COLOR_TEXT_DISABLED];
|
||||
|
||||
// new stuff
|
||||
sty.Colors[ImGuiCol_InputTextCursor]=uiColors[GUI_COLOR_INPUT_TEXT_CURSOR];
|
||||
|
||||
if (settings.basicColors) {
|
||||
sty.Colors[ImGuiCol_Button]=primary;
|
||||
sty.Colors[ImGuiCol_ButtonHovered]=primaryHover;
|
||||
sty.Colors[ImGuiCol_ButtonActive]=primaryActive;
|
||||
sty.Colors[ImGuiCol_Tab]=primary;
|
||||
sty.Colors[ImGuiCol_TabHovered]=secondaryHover;
|
||||
sty.Colors[ImGuiCol_TabActive]=secondarySemiActive;
|
||||
sty.Colors[ImGuiCol_TabUnfocused]=primary;
|
||||
sty.Colors[ImGuiCol_TabUnfocusedActive]=primaryHover;
|
||||
sty.Colors[ImGuiCol_TabSelected]=secondarySemiActive;
|
||||
sty.Colors[ImGuiCol_TabSelectedOverline]=secondaryActive;
|
||||
sty.Colors[ImGuiCol_TabDimmed]=primary;
|
||||
sty.Colors[ImGuiCol_TabDimmedSelected]=primaryHover;
|
||||
sty.Colors[ImGuiCol_TabDimmedSelectedOverline]=primaryActive;
|
||||
sty.Colors[ImGuiCol_Header]=secondary;
|
||||
sty.Colors[ImGuiCol_HeaderHovered]=secondaryHover;
|
||||
sty.Colors[ImGuiCol_HeaderActive]=secondaryActive;
|
||||
|
|
@ -6389,7 +6400,9 @@ void FurnaceGUI::applyUISettings(bool updateFonts) {
|
|||
sty.Colors[ImGuiCol_SliderGrabActive]=primaryActive;
|
||||
sty.Colors[ImGuiCol_TitleBgActive]=primary;
|
||||
sty.Colors[ImGuiCol_CheckMark]=primaryActive;
|
||||
sty.Colors[ImGuiCol_TextLink]=secondaryActive;
|
||||
sty.Colors[ImGuiCol_TextSelectedBg]=secondaryHoverActual;
|
||||
sty.Colors[ImGuiCol_TreeLines]=uiColors[GUI_COLOR_BORDER];
|
||||
sty.Colors[ImGuiCol_PlotHistogram]=uiColors[GUI_COLOR_MACRO_OTHER];
|
||||
sty.Colors[ImGuiCol_PlotHistogramHovered]=uiColors[GUI_COLOR_MACRO_OTHER];
|
||||
} else {
|
||||
|
|
@ -6398,9 +6411,11 @@ void FurnaceGUI::applyUISettings(bool updateFonts) {
|
|||
sty.Colors[ImGuiCol_ButtonActive]=uiColors[GUI_COLOR_BUTTON_ACTIVE];
|
||||
sty.Colors[ImGuiCol_Tab]=uiColors[GUI_COLOR_TAB];
|
||||
sty.Colors[ImGuiCol_TabHovered]=uiColors[GUI_COLOR_TAB_HOVER];
|
||||
sty.Colors[ImGuiCol_TabActive]=uiColors[GUI_COLOR_TAB_ACTIVE];
|
||||
sty.Colors[ImGuiCol_TabUnfocused]=uiColors[GUI_COLOR_TAB_UNFOCUSED];
|
||||
sty.Colors[ImGuiCol_TabUnfocusedActive]=uiColors[GUI_COLOR_TAB_UNFOCUSED_ACTIVE];
|
||||
sty.Colors[ImGuiCol_TabSelected]=uiColors[GUI_COLOR_TAB_ACTIVE];
|
||||
sty.Colors[ImGuiCol_TabSelectedOverline]=uiColors[GUI_COLOR_TAB_SELECTED_OVERLINE];
|
||||
sty.Colors[ImGuiCol_TabDimmed]=uiColors[GUI_COLOR_TAB_UNFOCUSED];
|
||||
sty.Colors[ImGuiCol_TabDimmedSelected]=uiColors[GUI_COLOR_TAB_UNFOCUSED_ACTIVE];
|
||||
sty.Colors[ImGuiCol_TabDimmedSelectedOverline]=uiColors[GUI_COLOR_TAB_DIMMED_SELECTED_OVERLINE];
|
||||
sty.Colors[ImGuiCol_Header]=uiColors[GUI_COLOR_IMGUI_HEADER];
|
||||
sty.Colors[ImGuiCol_HeaderHovered]=uiColors[GUI_COLOR_IMGUI_HEADER_HOVER];
|
||||
sty.Colors[ImGuiCol_HeaderActive]=uiColors[GUI_COLOR_IMGUI_HEADER_ACTIVE];
|
||||
|
|
@ -6414,7 +6429,9 @@ void FurnaceGUI::applyUISettings(bool updateFonts) {
|
|||
sty.Colors[ImGuiCol_SliderGrabActive]=uiColors[GUI_COLOR_SLIDER_GRAB_ACTIVE];
|
||||
sty.Colors[ImGuiCol_TitleBgActive]=uiColors[GUI_COLOR_TITLE_BACKGROUND_ACTIVE];
|
||||
sty.Colors[ImGuiCol_CheckMark]=uiColors[GUI_COLOR_CHECK_MARK];
|
||||
sty.Colors[ImGuiCol_TextLink]=uiColors[GUI_COLOR_TEXT_LINK];
|
||||
sty.Colors[ImGuiCol_TextSelectedBg]=uiColors[GUI_COLOR_TEXT_SELECTION];
|
||||
sty.Colors[ImGuiCol_TreeLines]=uiColors[GUI_COLOR_TREE_LINES];
|
||||
sty.Colors[ImGuiCol_PlotLines]=uiColors[GUI_COLOR_PLOT_LINES];
|
||||
sty.Colors[ImGuiCol_PlotLinesHovered]=uiColors[GUI_COLOR_PLOT_LINES_HOVER];
|
||||
sty.Colors[ImGuiCol_PlotHistogram]=uiColors[GUI_COLOR_PLOT_HISTOGRAM];
|
||||
|
|
@ -6516,7 +6533,7 @@ void FurnaceGUI::applyUISettings(bool updateFonts) {
|
|||
// prepare
|
||||
#ifdef HAVE_FREETYPE
|
||||
if (settings.fontBackend==1) {
|
||||
ImGui::GetIO().Fonts->FontLoader=ImGuiFreeType::GetFontLoader();
|
||||
ImGui::GetIO().Fonts->SetFontLoader(ImGuiFreeType::GetFontLoader());
|
||||
ImGui::GetIO().Fonts->FontLoaderFlags&=~(
|
||||
ImGuiFreeTypeLoaderFlags_NoHinting|
|
||||
ImGuiFreeTypeLoaderFlags_NoAutoHint|
|
||||
|
|
@ -6558,7 +6575,7 @@ void FurnaceGUI::applyUISettings(bool updateFonts) {
|
|||
break;
|
||||
}
|
||||
} else {
|
||||
ImGui::GetIO().Fonts->FontLoader=ImFontAtlasGetFontLoaderForStbTruetype();
|
||||
ImGui::GetIO().Fonts->SetFontLoader(ImFontAtlasGetFontLoaderForStbTruetype());
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue