mirror of
https://github.com/tildearrow/furnace.git
synced 2024-11-27 06:53:01 +00:00
Bug testing for glitched value input pad, also loop point step sizes
This commit is contained in:
parent
aa6a9223ac
commit
6649d7ffe5
2 changed files with 35 additions and 5 deletions
|
@ -158,7 +158,7 @@ void FurnaceGUI::drawPiano() {
|
|||
}
|
||||
|
||||
ImGui::TableNextColumn();
|
||||
if (pianoInputPadMode==1 && cursor.xFine>0 && curWindow==GUI_WINDOW_PATTERN) {
|
||||
if (pianoInputPadMode==1 && cursor.xFine>0) {
|
||||
ImVec2 buttonSize=ImGui::GetContentRegionAvail();
|
||||
if (ImGui::BeginTable("InputPadP",8,ImGuiTableFlags_SizingFixedSame)) {
|
||||
ImGui::TableNextRow();
|
||||
|
@ -431,7 +431,7 @@ void FurnaceGUI::drawPiano() {
|
|||
ImGui::End();
|
||||
|
||||
// draw input pad if necessary
|
||||
if (curWindow==GUI_WINDOW_PATTERN && ((pianoInputPadMode==2 && cursor.xFine>0) || pianoInputPadMode==3)) {
|
||||
if ((pianoInputPadMode==2 && cursor.xFine>0) || pianoInputPadMode==3) {
|
||||
if (ImGui::Begin("Input Pad",NULL,ImGuiWindowFlags_NoTitleBar)) {
|
||||
ImGui::BeginDisabled(cursor.xFine==0);
|
||||
if (ImGui::BeginTable("InputPad",3,ImGuiTableFlags_Borders)) {
|
||||
|
|
|
@ -44,6 +44,8 @@ void FurnaceGUI::drawSampleEdit() {
|
|||
ImGui::SetNextWindowPos(patWindowPos);
|
||||
ImGui::SetNextWindowSize(patWindowSize);
|
||||
}
|
||||
|
||||
|
||||
if (ImGui::Begin("Sample Editor",&sampleEditOpen,globalWinFlags|(settings.allowEditDocking?0:ImGuiWindowFlags_NoDocking))) {
|
||||
if (curSample<0 || curSample>=(int)e->song.sample.size()) {
|
||||
ImGui::SetCursorPosY(ImGui::GetCursorPosY()+(ImGui::GetContentRegionAvail().y-ImGui::GetFrameHeightWithSpacing()*2.0f)*0.5f);
|
||||
|
@ -184,11 +186,13 @@ void FurnaceGUI::drawSampleEdit() {
|
|||
popToggleColors();
|
||||
ImGui::TableNextColumn();
|
||||
bool doLoop=(sample->isLoopable());
|
||||
static int stepSize = 1;
|
||||
if (ImGui::Checkbox("Loop",&doLoop)) { MARK_MODIFIED
|
||||
if (doLoop) {
|
||||
sample->loop=true;
|
||||
sample->loopStart=0;
|
||||
sample->loopEnd=sample->samples;
|
||||
stepSize = 1;
|
||||
} else {
|
||||
sample->loop=false;
|
||||
sample->loopStart=-1;
|
||||
|
@ -199,6 +203,20 @@ void FurnaceGUI::drawSampleEdit() {
|
|||
e->renderSamplesP();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
static bool snesLoopCheckbox = false;
|
||||
ImGui::Checkbox("SNES", &snesLoopCheckbox);
|
||||
{
|
||||
if (snesLoopCheckbox) {
|
||||
snesLoopCheckbox = true;
|
||||
stepSize = 16;
|
||||
} else {
|
||||
snesLoopCheckbox = false;
|
||||
stepSize = 1;
|
||||
}
|
||||
}
|
||||
*/
|
||||
if (ImGui::IsItemHovered() && sample->depth==DIV_SAMPLE_DEPTH_BRR) {
|
||||
ImGui::SetTooltip("changing the loop in a BRR sample may result in glitches!");
|
||||
}
|
||||
|
@ -367,7 +385,7 @@ void FurnaceGUI::drawSampleEdit() {
|
|||
keepLoopAlive=false;
|
||||
ImGui::Text("Mode");
|
||||
ImGui::SameLine();
|
||||
ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x);
|
||||
ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x / 2);
|
||||
if (ImGui::BeginCombo("##SampleLoopMode",loopType.c_str())) {
|
||||
for (int i=0; i<DIV_SAMPLE_LOOP_MAX; i++) {
|
||||
if (sampleLoopModes[i]==NULL) continue;
|
||||
|
@ -381,11 +399,23 @@ void FurnaceGUI::drawSampleEdit() {
|
|||
}
|
||||
ImGui::EndCombo();
|
||||
}
|
||||
ImGui::SameLine();
|
||||
ImGui::Text("Step");
|
||||
ImGui::SameLine();
|
||||
//ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x);
|
||||
|
||||
if (ImGui::InputInt("##LoopStepSize",&stepSize,1,16)) {
|
||||
if (stepSize<0) {
|
||||
stepSize = 0;
|
||||
}
|
||||
if (stepSize>1024) {
|
||||
stepSize = 1024;
|
||||
}
|
||||
}
|
||||
ImGui::Text("Start");
|
||||
ImGui::SameLine();
|
||||
ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x);
|
||||
if (ImGui::InputInt("##LoopStartPosition",&sample->loopStart,1,16)) { MARK_MODIFIED
|
||||
if (ImGui::InputInt("##LoopStartPosition",&sample->loopStart,stepSize,16)) { MARK_MODIFIED
|
||||
if (sample->loopStart<0) {
|
||||
sample->loopStart=0;
|
||||
}
|
||||
|
@ -407,7 +437,7 @@ void FurnaceGUI::drawSampleEdit() {
|
|||
ImGui::Text("End");
|
||||
ImGui::SameLine();
|
||||
ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x);
|
||||
if (ImGui::InputInt("##LoopEndPosition",&sample->loopEnd,1,16)) { MARK_MODIFIED
|
||||
if (ImGui::InputInt("##LoopEndPosition",&sample->loopEnd,stepSize,16)) { MARK_MODIFIED
|
||||
if (sample->loopEnd<sample->loopStart) {
|
||||
sample->loopEnd=sample->loopStart;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue