mirror of
https://github.com/tildearrow/furnace.git
synced 2024-11-15 17:25:06 +00:00
GUI: remove classic macro view
after this, some changes to the macro view code will arrive hopefully these will make the code much cleaner (NORMAL_MACRO has too many arguments!)
This commit is contained in:
parent
05af3c147a
commit
81a77a633b
2 changed files with 97 additions and 354 deletions
|
@ -2891,7 +2891,6 @@ void FurnaceGUI::drawInsEdit() {
|
|||
if (ins->type==DIV_INS_SU) {
|
||||
dutyMax=127;
|
||||
}
|
||||
bool dutyIsRel=(ins->type==DIV_INS_C64 && !ins->c64.dutyIsAbs);
|
||||
|
||||
const char* waveLabel="Waveform";
|
||||
int waveMax=(ins->type==DIV_INS_AY || ins->type==DIV_INS_AY8930 || ins->type==DIV_INS_VERA)?3:63;
|
||||
|
@ -2977,7 +2976,6 @@ void FurnaceGUI::drawInsEdit() {
|
|||
panSingleNoBit=true;
|
||||
}
|
||||
|
||||
if (settings.macroView==0) { // modern view
|
||||
MACRO_BEGIN(28*dpiScale);
|
||||
if (volMax>0) {
|
||||
NORMAL_MACRO(ins->std.volMacro,volMin,volMax,"vol",volumeLabel,160,ins->std.volMacro.open,false,NULL,false,NULL,0,0,0,0,false,0,macroDummyMode,uiColors[GUI_COLOR_MACRO_VOLUME],mmlString[0],volMin,volMax,NULL,false);
|
||||
|
@ -3084,256 +3082,6 @@ void FurnaceGUI::drawInsEdit() {
|
|||
}
|
||||
|
||||
MACRO_END;
|
||||
} else { // classic view (TODO: possibly remove)
|
||||
// volume macro
|
||||
ImGui::Separator();
|
||||
if (ins->type==DIV_INS_C64 && ins->c64.volIsCutoff) {
|
||||
if (ins->c64.filterIsAbs) {
|
||||
ImGui::Text("Cutoff Macro");
|
||||
} else {
|
||||
ImGui::Text("Relative Cutoff Macro");
|
||||
}
|
||||
} else {
|
||||
ImGui::Text("Volume Macro");
|
||||
}
|
||||
for (int i=0; i<ins->std.volMacro.len; i++) {
|
||||
if (ins->type==DIV_INS_C64 && ins->c64.volIsCutoff && !ins->c64.filterIsAbs) {
|
||||
asFloat[i]=ins->std.volMacro.val[i]-18;
|
||||
} else {
|
||||
asFloat[i]=ins->std.volMacro.val[i];
|
||||
}
|
||||
loopIndicator[i]=(ins->std.volMacro.loop!=-1 && i>=ins->std.volMacro.loop);
|
||||
}
|
||||
macroDragScroll=0;
|
||||
if (volMax>0) {
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding,ImVec2(0.0f,0.0f));
|
||||
ImGui::PlotHistogram("##IVolMacro",asFloat,ins->std.volMacro.len,0,NULL,volMin,volMax,ImVec2(400.0f*dpiScale,200.0f*dpiScale));
|
||||
if (ImGui::IsItemClicked(ImGuiMouseButton_Left)) {
|
||||
macroDragStart=ImGui::GetItemRectMin();
|
||||
macroDragAreaSize=ImVec2(400.0f*dpiScale,200.0f*dpiScale);
|
||||
macroDragMin=volMin;
|
||||
macroDragMax=volMax;
|
||||
macroDragLen=ins->std.volMacro.len;
|
||||
macroDragActive=true;
|
||||
macroDragTarget=ins->std.volMacro.val;
|
||||
macroDragChar=false;
|
||||
processDrags(ImGui::GetMousePos().x,ImGui::GetMousePos().y);
|
||||
}
|
||||
ImGui::PlotHistogram("##IVolMacro.loop",loopIndicator,ins->std.volMacro.len,0,NULL,0,1,ImVec2(400.0f*dpiScale,16.0f*dpiScale));
|
||||
if (ImGui::IsItemClicked(ImGuiMouseButton_Left)) {
|
||||
macroLoopDragStart=ImGui::GetItemRectMin();
|
||||
macroLoopDragAreaSize=ImVec2(400.0f*dpiScale,16.0f*dpiScale);
|
||||
macroLoopDragLen=ins->std.volMacro.len;
|
||||
macroLoopDragTarget=&ins->std.volMacro.loop;
|
||||
macroLoopDragActive=true;
|
||||
processDrags(ImGui::GetMousePos().x,ImGui::GetMousePos().y);
|
||||
}
|
||||
if (ImGui::IsItemClicked(ImGuiMouseButton_Right)) {
|
||||
ins->std.volMacro.loop=-1;
|
||||
}
|
||||
ImGui::PopStyleVar();
|
||||
if (ImGui::InputScalar("Length##IVolMacroL",ImGuiDataType_U8,&ins->std.volMacro.len,&_ONE,&_THREE)) {
|
||||
if (ins->std.volMacro.len>127) ins->std.volMacro.len=127;
|
||||
}
|
||||
}
|
||||
|
||||
// arp macro
|
||||
ImGui::Separator();
|
||||
ImGui::Text("Arpeggio Macro");
|
||||
for (int i=0; i<ins->std.arpMacro.len; i++) {
|
||||
asFloat[i]=ins->std.arpMacro.val[i];
|
||||
loopIndicator[i]=(ins->std.arpMacro.loop!=-1 && i>=ins->std.arpMacro.loop);
|
||||
}
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding,ImVec2(0.0f,0.0f));
|
||||
ImGui::PlotHistogram("##IArpMacro",asFloat,ins->std.arpMacro.len,0,NULL,arpMode?arpMacroScroll:(arpMacroScroll-12),arpMacroScroll+(arpMode?24:12),ImVec2(400.0f*dpiScale,200.0f*dpiScale));
|
||||
if (ImGui::IsItemClicked(ImGuiMouseButton_Left)) {
|
||||
macroDragStart=ImGui::GetItemRectMin();
|
||||
macroDragAreaSize=ImVec2(400.0f*dpiScale,200.0f*dpiScale);
|
||||
macroDragMin=arpMacroScroll;
|
||||
macroDragMax=arpMacroScroll+24;
|
||||
macroDragLen=ins->std.arpMacro.len;
|
||||
macroDragActive=true;
|
||||
macroDragTarget=ins->std.arpMacro.val;
|
||||
macroDragChar=false;
|
||||
processDrags(ImGui::GetMousePos().x,ImGui::GetMousePos().y);
|
||||
}
|
||||
ImGui::SameLine();
|
||||
CWVSliderInt("##IArpMacroPos",ImVec2(20.0f*dpiScale,200.0f*dpiScale),&arpMacroScroll,arpMode?0:-80,70);
|
||||
ImGui::PlotHistogram("##IArpMacro.loop",loopIndicator,ins->std.arpMacro.len,0,NULL,0,1,ImVec2(400.0f*dpiScale,16.0f*dpiScale));
|
||||
if (ImGui::IsItemClicked(ImGuiMouseButton_Left)) {
|
||||
macroLoopDragStart=ImGui::GetItemRectMin();
|
||||
macroLoopDragAreaSize=ImVec2(400.0f*dpiScale,16.0f*dpiScale);
|
||||
macroLoopDragLen=ins->std.arpMacro.len;
|
||||
macroLoopDragTarget=&ins->std.arpMacro.loop;
|
||||
macroLoopDragActive=true;
|
||||
processDrags(ImGui::GetMousePos().x,ImGui::GetMousePos().y);
|
||||
}
|
||||
if (ImGui::IsItemClicked(ImGuiMouseButton_Right)) {
|
||||
ins->std.arpMacro.loop=-1;
|
||||
}
|
||||
ImGui::PopStyleVar();
|
||||
if (ImGui::InputScalar("Length##IArpMacroL",ImGuiDataType_U8,&ins->std.arpMacro.len,&_ONE,&_THREE)) {
|
||||
if (ins->std.arpMacro.len>127) ins->std.arpMacro.len=127;
|
||||
}
|
||||
if (ImGui::Checkbox("Fixed",&arpMode)) {
|
||||
ins->std.arpMacro.mode=arpMode;
|
||||
if (arpMode) {
|
||||
if (arpMacroScroll<0) arpMacroScroll=0;
|
||||
}
|
||||
}
|
||||
|
||||
// duty macro
|
||||
if (dutyMax>0) {
|
||||
ImGui::Separator();
|
||||
if (ins->type==DIV_INS_C64) {
|
||||
if (ins->c64.dutyIsAbs) {
|
||||
ImGui::Text("Duty Macro");
|
||||
} else {
|
||||
ImGui::Text("Relative Duty Macro");
|
||||
}
|
||||
} else {
|
||||
if (ins->type==DIV_INS_AY || ins->type==DIV_INS_AY8930 || ins->type==DIV_INS_SAA1099) {
|
||||
ImGui::Text("Noise Frequency Macro");
|
||||
} else {
|
||||
ImGui::Text("Duty/Noise Mode Macro");
|
||||
}
|
||||
}
|
||||
for (int i=0; i<ins->std.dutyMacro.len; i++) {
|
||||
asFloat[i]=ins->std.dutyMacro.val[i]-(dutyIsRel?12:0);
|
||||
loopIndicator[i]=(ins->std.dutyMacro.loop!=-1 && i>=ins->std.dutyMacro.loop);
|
||||
}
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding,ImVec2(0.0f,0.0f));
|
||||
|
||||
ImGui::PlotHistogram("##IDutyMacro",asFloat,ins->std.dutyMacro.len,0,NULL,dutyIsRel?-12:0,dutyMax-(dutyIsRel?12:0),ImVec2(400.0f*dpiScale,200.0f*dpiScale));
|
||||
if (ImGui::IsItemClicked(ImGuiMouseButton_Left)) {
|
||||
macroDragStart=ImGui::GetItemRectMin();
|
||||
macroDragAreaSize=ImVec2(400.0f*dpiScale,200.0f*dpiScale);
|
||||
macroDragMin=0;
|
||||
macroDragMax=dutyMax;
|
||||
macroDragLen=ins->std.dutyMacro.len;
|
||||
macroDragActive=true;
|
||||
macroDragTarget=ins->std.dutyMacro.val;
|
||||
macroDragChar=false;
|
||||
processDrags(ImGui::GetMousePos().x,ImGui::GetMousePos().y);
|
||||
}
|
||||
ImGui::PlotHistogram("##IDutyMacro.loop",loopIndicator,ins->std.dutyMacro.len,0,NULL,0,1,ImVec2(400.0f*dpiScale,16.0f*dpiScale));
|
||||
if (ImGui::IsItemClicked(ImGuiMouseButton_Left)) {
|
||||
macroLoopDragStart=ImGui::GetItemRectMin();
|
||||
macroLoopDragAreaSize=ImVec2(400.0f*dpiScale,16.0f*dpiScale);
|
||||
macroLoopDragLen=ins->std.dutyMacro.len;
|
||||
macroLoopDragTarget=&ins->std.dutyMacro.loop;
|
||||
macroLoopDragActive=true;
|
||||
processDrags(ImGui::GetMousePos().x,ImGui::GetMousePos().y);
|
||||
}
|
||||
if (ImGui::IsItemClicked(ImGuiMouseButton_Right)) {
|
||||
ins->std.dutyMacro.loop=-1;
|
||||
}
|
||||
ImGui::PopStyleVar();
|
||||
if (ImGui::InputScalar("Length##IDutyMacroL",ImGuiDataType_U8,&ins->std.dutyMacro.len,&_ONE,&_THREE)) {
|
||||
if (ins->std.dutyMacro.len>127) ins->std.dutyMacro.len=127;
|
||||
}
|
||||
}
|
||||
|
||||
// wave macro
|
||||
if (waveMax>0) {
|
||||
ImGui::Separator();
|
||||
ImGui::Text("Waveform Macro");
|
||||
for (int i=0; i<ins->std.waveMacro.len; i++) {
|
||||
asFloat[i]=ins->std.waveMacro.val[i];
|
||||
if (ins->type==DIV_INS_AY || ins->type==DIV_INS_AY8930) {
|
||||
asInt[i]=ins->std.waveMacro.val[i]+1;
|
||||
} else {
|
||||
asInt[i]=ins->std.waveMacro.val[i];
|
||||
}
|
||||
loopIndicator[i]=(ins->std.waveMacro.loop!=-1 && i>=ins->std.waveMacro.loop);
|
||||
}
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding,ImVec2(0.0f,0.0f));
|
||||
|
||||
ImVec2 areaSize=ImVec2(400.0f*dpiScale,200.0f*dpiScale);
|
||||
if (ins->type==DIV_INS_C64 || ins->type==DIV_INS_AY || ins->type==DIV_INS_AY8930 || ins->type==DIV_INS_SAA1099) {
|
||||
areaSize=ImVec2(400.0f*dpiScale,waveMax*32.0f*dpiScale);
|
||||
PlotBitfield("##IWaveMacro",asInt,ins->std.waveMacro.len,0,(ins->type==DIV_INS_C64)?c64ShapeBits:ayShapeBits,waveMax,areaSize);
|
||||
bitMode=true;
|
||||
} else {
|
||||
ImGui::PlotHistogram("##IWaveMacro",asFloat,ins->std.waveMacro.len,0,NULL,0,waveMax,areaSize);
|
||||
}
|
||||
if (ImGui::IsItemClicked(ImGuiMouseButton_Left)) {
|
||||
macroDragStart=ImGui::GetItemRectMin();
|
||||
macroDragAreaSize=areaSize;
|
||||
macroDragMin=0;
|
||||
macroDragMax=waveMax;
|
||||
macroDragBitOff=(ins->type==DIV_INS_AY || ins->type==DIV_INS_AY8930)?1:0;
|
||||
macroDragBitMode=bitMode;
|
||||
macroDragInitialValueSet=false;
|
||||
macroDragInitialValue=false;
|
||||
macroDragLen=ins->std.waveMacro.len;
|
||||
macroDragActive=true;
|
||||
macroDragTarget=ins->std.waveMacro.val;
|
||||
macroDragChar=false;
|
||||
processDrags(ImGui::GetMousePos().x,ImGui::GetMousePos().y);
|
||||
}
|
||||
ImGui::PlotHistogram("##IWaveMacro.loop",loopIndicator,ins->std.waveMacro.len,0,NULL,0,1,ImVec2(400.0f*dpiScale,16.0f*dpiScale));
|
||||
if (ImGui::IsItemClicked(ImGuiMouseButton_Left)) {
|
||||
macroLoopDragStart=ImGui::GetItemRectMin();
|
||||
macroLoopDragAreaSize=ImVec2(400.0f*dpiScale,16.0f*dpiScale);
|
||||
macroLoopDragLen=ins->std.waveMacro.len;
|
||||
macroLoopDragTarget=&ins->std.waveMacro.loop;
|
||||
macroLoopDragActive=true;
|
||||
processDrags(ImGui::GetMousePos().x,ImGui::GetMousePos().y);
|
||||
}
|
||||
if (ImGui::IsItemClicked(ImGuiMouseButton_Right)) {
|
||||
ins->std.waveMacro.loop=-1;
|
||||
}
|
||||
ImGui::PopStyleVar();
|
||||
if (ImGui::InputScalar("Length##IWaveMacroL",ImGuiDataType_U8,&ins->std.waveMacro.len,&_ONE,&_THREE)) {
|
||||
if (ins->std.waveMacro.len>127) ins->std.waveMacro.len=127;
|
||||
}
|
||||
}
|
||||
|
||||
// extra 1 macro
|
||||
if (ex1Max>0) {
|
||||
ImGui::Separator();
|
||||
if (ins->type==DIV_INS_AY8930) {
|
||||
ImGui::Text("Duty Macro");
|
||||
} else {
|
||||
ImGui::Text("Extra 1 Macro");
|
||||
}
|
||||
for (int i=0; i<ins->std.ex1Macro.len; i++) {
|
||||
asFloat[i]=ins->std.ex1Macro.val[i];
|
||||
loopIndicator[i]=(ins->std.ex1Macro.loop!=-1 && i>=ins->std.ex1Macro.loop);
|
||||
}
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding,ImVec2(0.0f,0.0f));
|
||||
|
||||
ImGui::PlotHistogram("##IEx1Macro",asFloat,ins->std.ex1Macro.len,0,NULL,0,ex1Max,ImVec2(400.0f*dpiScale,200.0f*dpiScale));
|
||||
if (ImGui::IsItemClicked(ImGuiMouseButton_Left)) {
|
||||
macroDragStart=ImGui::GetItemRectMin();
|
||||
macroDragAreaSize=ImVec2(400.0f*dpiScale,200.0f*dpiScale);
|
||||
macroDragMin=0;
|
||||
macroDragMax=ex1Max;
|
||||
macroDragLen=ins->std.ex1Macro.len;
|
||||
macroDragActive=true;
|
||||
macroDragTarget=ins->std.ex1Macro.val;
|
||||
macroDragChar=false;
|
||||
processDrags(ImGui::GetMousePos().x,ImGui::GetMousePos().y);
|
||||
}
|
||||
ImGui::PlotHistogram("##IEx1Macro.loop",loopIndicator,ins->std.ex1Macro.len,0,NULL,0,1,ImVec2(400.0f*dpiScale,16.0f*dpiScale));
|
||||
if (ImGui::IsItemClicked(ImGuiMouseButton_Left)) {
|
||||
macroLoopDragStart=ImGui::GetItemRectMin();
|
||||
macroLoopDragAreaSize=ImVec2(400.0f*dpiScale,16.0f*dpiScale);
|
||||
macroLoopDragLen=ins->std.ex1Macro.len;
|
||||
macroLoopDragTarget=&ins->std.ex1Macro.loop;
|
||||
macroLoopDragActive=true;
|
||||
processDrags(ImGui::GetMousePos().x,ImGui::GetMousePos().y);
|
||||
}
|
||||
if (ImGui::IsItemClicked(ImGuiMouseButton_Right)) {
|
||||
ins->std.ex1Macro.loop=-1;
|
||||
}
|
||||
ImGui::PopStyleVar();
|
||||
if (ImGui::InputScalar("Length##IEx1MacroL",ImGuiDataType_U8,&ins->std.ex1Macro.len,&_ONE,&_THREE)) {
|
||||
if (ins->std.ex1Macro.len>127) ins->std.ex1Macro.len=127;
|
||||
}
|
||||
}
|
||||
}
|
||||
ImGui::EndTabItem();
|
||||
}
|
||||
ImGui::EndTabBar();
|
||||
|
|
|
@ -1074,11 +1074,6 @@ void FurnaceGUI::drawSettings() {
|
|||
settings.separateFMColors=separateFMColorsB;
|
||||
}
|
||||
|
||||
bool macroViewB=settings.macroView;
|
||||
if (ImGui::Checkbox("Classic macro view (standard macros only; deprecated!)",¯oViewB)) {
|
||||
settings.macroView=macroViewB;
|
||||
}
|
||||
|
||||
bool unifiedDataViewB=settings.unifiedDataView;
|
||||
if (ImGui::Checkbox("Unified instrument/wavetable/sample list",&unifiedDataViewB)) {
|
||||
settings.unifiedDataView=unifiedDataViewB;
|
||||
|
|
Loading…
Reference in a new issue