mirror of
https://github.com/tildearrow/furnace.git
synced 2025-04-16 07:17:06 +00:00
GUI: OPL 4-op algorithm images
This commit is contained in:
parent
bfae208a24
commit
8355aa0175
1 changed files with 124 additions and 1 deletions
|
@ -470,6 +470,129 @@ void FurnaceGUI::drawAlgorithm(unsigned char alg, FurnaceGUIFMAlgs algType, cons
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case FM_ALGS_4OP_OPL:
|
||||||
|
switch (alg) {
|
||||||
|
case 0: { // 1 > 2 > 3 > 4
|
||||||
|
ImVec2 pos1=ImLerp(rect.Min,rect.Max,ImVec2(0.2,0.5));
|
||||||
|
ImVec2 pos2=ImLerp(rect.Min,rect.Max,ImVec2(0.4,0.5));
|
||||||
|
ImVec2 pos3=ImLerp(rect.Min,rect.Max,ImVec2(0.6,0.5));
|
||||||
|
ImVec2 pos4=ImLerp(rect.Min,rect.Max,ImVec2(0.8,0.5));
|
||||||
|
dl->AddCircleFilled(pos1,4.0f*dpiScale+1.0f,color);
|
||||||
|
dl->AddCircle(pos1,6.0f*dpiScale+1.0f,color);
|
||||||
|
addAALine(dl,pos1,pos2,colorL);
|
||||||
|
dl->AddCircleFilled(pos2,4.0f*dpiScale+1.0f,color);
|
||||||
|
addAALine(dl,pos2,pos3,colorL);
|
||||||
|
dl->AddCircleFilled(pos3,4.0f*dpiScale+1.0f,color);
|
||||||
|
addAALine(dl,pos3,pos4,colorL);
|
||||||
|
dl->AddCircleFilled(pos4,4.0f*dpiScale+1.0f,color);
|
||||||
|
|
||||||
|
pos1.x-=ImGui::CalcTextSize("1").x*0.5;
|
||||||
|
pos2.x-=ImGui::CalcTextSize("2").x*0.5;
|
||||||
|
pos3.x-=ImGui::CalcTextSize("3").x*0.5;
|
||||||
|
pos4.x-=ImGui::CalcTextSize("4").x*0.5;
|
||||||
|
pos1.y-=ImGui::CalcTextSize("1").y+circleRadius;
|
||||||
|
pos2.y-=ImGui::CalcTextSize("2").y+circleRadius;
|
||||||
|
pos3.y-=ImGui::CalcTextSize("3").y+circleRadius;
|
||||||
|
pos4.y-=ImGui::CalcTextSize("4").y+circleRadius;
|
||||||
|
dl->AddText(pos1,color,"1");
|
||||||
|
dl->AddText(pos2,color,"2");
|
||||||
|
dl->AddText(pos3,color,"3");
|
||||||
|
dl->AddText(pos4,color,"4");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 1: { // 1 + (2 > 3 > 4)
|
||||||
|
ImVec2 pos1=ImLerp(rect.Min,rect.Max,ImVec2(0.4,0.3));
|
||||||
|
ImVec2 pos2=ImLerp(rect.Min,rect.Max,ImVec2(0.2,0.7));
|
||||||
|
ImVec2 pos3=ImLerp(rect.Min,rect.Max,ImVec2(0.4,0.7));
|
||||||
|
ImVec2 pos4=ImLerp(rect.Min,rect.Max,ImVec2(0.6,0.7));
|
||||||
|
ImVec2 pos5=ImLerp(rect.Min,rect.Max,ImVec2(0.8,0.7));
|
||||||
|
dl->AddCircleFilled(pos1,4.0f*dpiScale+1.0f,color);
|
||||||
|
dl->AddCircle(pos1,6.0f*dpiScale+1.0f,color);
|
||||||
|
addAALine(dl,pos1,pos5,colorL);
|
||||||
|
dl->AddCircleFilled(pos2,4.0f*dpiScale+1.0f,color);
|
||||||
|
addAALine(dl,pos2,pos3,colorL);
|
||||||
|
dl->AddCircleFilled(pos3,4.0f*dpiScale+1.0f,color);
|
||||||
|
addAALine(dl,pos3,pos4,colorL);
|
||||||
|
dl->AddCircleFilled(pos4,4.0f*dpiScale+1.0f,color);
|
||||||
|
|
||||||
|
addAALine(dl,pos4,pos5,colorL);
|
||||||
|
|
||||||
|
pos1.x-=ImGui::CalcTextSize("2").x+circleRadius+3.0*dpiScale;
|
||||||
|
pos2.x-=ImGui::CalcTextSize("2").x+circleRadius+3.0*dpiScale;
|
||||||
|
pos3.x-=ImGui::CalcTextSize("3").x+circleRadius+3.0*dpiScale;
|
||||||
|
pos4.x-=ImGui::CalcTextSize("4").x*0.5;
|
||||||
|
pos1.y-=ImGui::CalcTextSize("1").y*0.5;
|
||||||
|
pos2.y-=ImGui::CalcTextSize("2").y*0.5;
|
||||||
|
pos3.y-=ImGui::CalcTextSize("3").y*0.5;
|
||||||
|
pos4.y-=ImGui::CalcTextSize("4").y+circleRadius;
|
||||||
|
dl->AddText(pos1,color,"1");
|
||||||
|
dl->AddText(pos2,color,"2");
|
||||||
|
dl->AddText(pos3,color,"3");
|
||||||
|
dl->AddText(pos4,color,"4");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 2: { // (1>2) + (3>4)
|
||||||
|
ImVec2 pos1=ImLerp(rect.Min,rect.Max,ImVec2(0.25,0.3));
|
||||||
|
ImVec2 pos2=ImLerp(rect.Min,rect.Max,ImVec2(0.5,0.3));
|
||||||
|
ImVec2 pos3=ImLerp(rect.Min,rect.Max,ImVec2(0.25,0.7));
|
||||||
|
ImVec2 pos4=ImLerp(rect.Min,rect.Max,ImVec2(0.5,0.7));
|
||||||
|
ImVec2 pos5=ImLerp(rect.Min,rect.Max,ImVec2(0.75,0.5));
|
||||||
|
dl->AddCircleFilled(pos1,4.0f*dpiScale+1.0f,color);
|
||||||
|
dl->AddCircle(pos1,6.0f*dpiScale+1.0f,color);
|
||||||
|
addAALine(dl,pos1,pos2,colorL);
|
||||||
|
dl->AddCircleFilled(pos2,4.0f*dpiScale+1.0f,color);
|
||||||
|
dl->AddCircleFilled(pos3,4.0f*dpiScale+1.0f,color);
|
||||||
|
addAALine(dl,pos3,pos4,colorL);
|
||||||
|
dl->AddCircleFilled(pos4,4.0f*dpiScale+1.0f,color);
|
||||||
|
addAALine(dl,pos2,pos5,colorL);
|
||||||
|
addAALine(dl,pos4,pos5,colorL);
|
||||||
|
|
||||||
|
pos1.x-=ImGui::CalcTextSize("2").x+circleRadius+3.0*dpiScale;
|
||||||
|
pos2.x-=ImGui::CalcTextSize("2").x+circleRadius+3.0*dpiScale;
|
||||||
|
pos3.x-=ImGui::CalcTextSize("3").x+circleRadius+3.0*dpiScale;
|
||||||
|
pos4.x-=ImGui::CalcTextSize("4").x+circleRadius+3.0*dpiScale;
|
||||||
|
pos1.y-=ImGui::CalcTextSize("1").y*0.5;
|
||||||
|
pos2.y-=ImGui::CalcTextSize("2").y*0.5;
|
||||||
|
pos3.y-=ImGui::CalcTextSize("3").y*0.5;
|
||||||
|
pos4.y-=ImGui::CalcTextSize("4").y*0.5;
|
||||||
|
dl->AddText(pos1,color,"1");
|
||||||
|
dl->AddText(pos2,color,"2");
|
||||||
|
dl->AddText(pos3,color,"3");
|
||||||
|
dl->AddText(pos4,color,"4");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 3: { // 1 + (2 > 3) + 4
|
||||||
|
ImVec2 pos1=ImLerp(rect.Min,rect.Max,ImVec2(0.5,0.25));
|
||||||
|
ImVec2 pos2=ImLerp(rect.Min,rect.Max,ImVec2(0.25,0.5));
|
||||||
|
ImVec2 pos3=ImLerp(rect.Min,rect.Max,ImVec2(0.5,0.5));
|
||||||
|
ImVec2 pos4=ImLerp(rect.Min,rect.Max,ImVec2(0.5,0.75));
|
||||||
|
ImVec2 pos5=ImLerp(rect.Min,rect.Max,ImVec2(0.75,0.5));
|
||||||
|
dl->AddCircleFilled(pos1,4.0f*dpiScale+1.0f,color);
|
||||||
|
dl->AddCircle(pos1,6.0f*dpiScale+1.0f,color);
|
||||||
|
addAALine(dl,pos2,pos3,colorL);
|
||||||
|
dl->AddCircleFilled(pos2,4.0f*dpiScale+1.0f,color);
|
||||||
|
dl->AddCircleFilled(pos3,4.0f*dpiScale+1.0f,color);
|
||||||
|
dl->AddCircleFilled(pos4,4.0f*dpiScale+1.0f,color);
|
||||||
|
addAALine(dl,pos1,pos5,colorL);
|
||||||
|
addAALine(dl,pos3,pos5,colorL);
|
||||||
|
addAALine(dl,pos4,pos5,colorL);
|
||||||
|
|
||||||
|
pos1.x-=ImGui::CalcTextSize("2").x+circleRadius+3.0*dpiScale;
|
||||||
|
pos2.x-=ImGui::CalcTextSize("2").x+circleRadius+3.0*dpiScale;
|
||||||
|
pos3.x-=ImGui::CalcTextSize("3").x+circleRadius+3.0*dpiScale;
|
||||||
|
pos4.x-=ImGui::CalcTextSize("4").x+circleRadius+3.0*dpiScale;
|
||||||
|
pos1.y-=ImGui::CalcTextSize("1").y*0.5;
|
||||||
|
pos2.y-=ImGui::CalcTextSize("2").y*0.5;
|
||||||
|
pos3.y-=ImGui::CalcTextSize("3").y*0.5;
|
||||||
|
pos4.y-=ImGui::CalcTextSize("4").y*0.5;
|
||||||
|
dl->AddText(pos1,color,"1");
|
||||||
|
dl->AddText(pos2,color,"2");
|
||||||
|
dl->AddText(pos3,color,"3");
|
||||||
|
dl->AddText(pos4,color,"4");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -818,7 +941,7 @@ void FurnaceGUI::drawInsEdit() {
|
||||||
ins->fm.opllPreset=drums?16:0;
|
ins->fm.opllPreset=drums?16:0;
|
||||||
}
|
}
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
drawAlgorithm(ins->fm.alg&1,FM_ALGS_2OP_OPL,ImVec2(ImGui::GetContentRegionAvail().x,48.0*dpiScale));
|
drawAlgorithm(ins->fm.alg&algMax,fourOp?FM_ALGS_4OP_OPL:FM_ALGS_2OP_OPL,ImVec2(ImGui::GetContentRegionAvail().x,48.0*dpiScale));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case DIV_INS_OPLL: {
|
case DIV_INS_OPLL: {
|
||||||
|
|
Loading…
Reference in a new issue