GUI: add "scale" option to find/replace

This commit is contained in:
tildearrow 2022-07-25 18:32:26 -05:00
parent 83386d082d
commit b0c2b10135
2 changed files with 62 additions and 1 deletions

View File

@ -39,6 +39,7 @@ const char* queryReplaceModes[GUI_QUERY_REPLACE_MAX]={
"set",
"add",
"add (overflow)",
"scale",
"clear"
};
@ -292,6 +293,8 @@ void FurnaceGUI::doReplace() {
}
}
break;
case GUI_QUERY_REPLACE_SCALE:
break;
case GUI_QUERY_REPLACE_CLEAR:
p->data[i.y][0]=0;
p->data[i.y][1]=0;
@ -314,6 +317,13 @@ void FurnaceGUI::doReplace() {
case GUI_QUERY_REPLACE_ADD_OVERFLOW:
if (p->data[i.y][2]>=0) p->data[i.y][2]=(p->data[i.y][2]+queryReplaceIns)&0xff;
break;
case GUI_QUERY_REPLACE_SCALE:
if (p->data[i.y][2]>=0) {
p->data[i.y][2]=(p->data[i.y][2]*queryReplaceIns)/100;
if (p->data[i.y][2]<0) p->data[i.y][2]=0;
if (p->data[i.y][2]>255) p->data[i.y][2]=255;
}
break;
case GUI_QUERY_REPLACE_CLEAR:
p->data[i.y][2]=-1;
break;
@ -335,6 +345,13 @@ void FurnaceGUI::doReplace() {
case GUI_QUERY_REPLACE_ADD_OVERFLOW:
if (p->data[i.y][3]>=0) p->data[i.y][3]=(p->data[i.y][3]+queryReplaceVol)&0xff;
break;
case GUI_QUERY_REPLACE_SCALE:
if (p->data[i.y][3]>=0) {
p->data[i.y][3]=(p->data[i.y][3]*queryReplaceVol)/100;
if (p->data[i.y][3]<0) p->data[i.y][3]=0;
if (p->data[i.y][3]>255) p->data[i.y][3]=255;
}
break;
case GUI_QUERY_REPLACE_CLEAR:
p->data[i.y][3]=-1;
break;
@ -402,6 +419,13 @@ void FurnaceGUI::doReplace() {
case GUI_QUERY_REPLACE_ADD_OVERFLOW:
if (p->data[i.y][4+pos*2]>=0) p->data[i.y][4+pos*2]=(p->data[i.y][4+pos*2]+queryReplaceEffect[j])&0xff;
break;
case GUI_QUERY_REPLACE_SCALE:
if (p->data[i.y][4+pos*2]>=0) {
p->data[i.y][4+pos*2]=(p->data[i.y][4+pos*2]*queryReplaceEffect[j])/100;
if (p->data[i.y][4+pos*2]<0) p->data[i.y][4+pos*2]=0;
if (p->data[i.y][4+pos*2]>255) p->data[i.y][4+pos*2]=255;
}
break;
case GUI_QUERY_REPLACE_CLEAR:
p->data[i.y][4+pos*2]=-1;
break;
@ -423,6 +447,13 @@ void FurnaceGUI::doReplace() {
case GUI_QUERY_REPLACE_ADD_OVERFLOW:
if (p->data[i.y][5+pos*2]>=0) p->data[i.y][5+pos*2]=(p->data[i.y][5+pos*2]+queryReplaceEffectVal[j])&0xff;
break;
case GUI_QUERY_REPLACE_SCALE:
if (p->data[i.y][5+pos*2]>=0) {
p->data[i.y][5+pos*2]=(p->data[i.y][5+pos*2]*queryReplaceEffectVal[j])/100;
if (p->data[i.y][5+pos*2]<0) p->data[i.y][5+pos*2]=0;
if (p->data[i.y][5+pos*2]>255) p->data[i.y][5+pos*2]=255;
}
break;
case GUI_QUERY_REPLACE_CLEAR:
p->data[i.y][5+pos*2]=-1;
break;
@ -919,6 +950,8 @@ void FurnaceGUI::drawFindReplace() {
if (queryReplaceNote<-180) queryReplaceNote=-180;
if (queryReplaceNote>180) queryReplaceNote=180;
}
} else if (queryReplaceNoteMode==GUI_QUERY_REPLACE_SCALE) {
ImGui::Text("INVALID");
}
ImGui::EndDisabled();
@ -941,6 +974,13 @@ void FurnaceGUI::drawFindReplace() {
if (queryReplaceIns<-255) queryReplaceIns=-255;
if (queryReplaceIns>255) queryReplaceIns=255;
}
} else if (queryReplaceInsMode==GUI_QUERY_REPLACE_SCALE) {
if (queryReplaceIns<0) queryReplaceIns=0;
if (queryReplaceIns>400) queryReplaceIns=400;
if (ImGui::InputInt("##IRValue",&queryReplaceIns,1,12)) {
if (queryReplaceIns<0) queryReplaceIns=0;
if (queryReplaceIns>400) queryReplaceIns=400;
}
}
ImGui::EndDisabled();
@ -963,6 +1003,13 @@ void FurnaceGUI::drawFindReplace() {
if (queryReplaceVol<-255) queryReplaceVol=-255;
if (queryReplaceVol>255) queryReplaceVol=255;
}
} else if (queryReplaceVolMode==GUI_QUERY_REPLACE_SCALE) {
if (queryReplaceVol<0) queryReplaceVol=0;
if (queryReplaceVol>400) queryReplaceVol=400;
if (ImGui::InputInt("##VRValue",&queryReplaceVol,1,12)) {
if (queryReplaceVol<0) queryReplaceVol=0;
if (queryReplaceVol>400) queryReplaceVol=400;
}
}
ImGui::EndDisabled();
@ -987,6 +1034,13 @@ void FurnaceGUI::drawFindReplace() {
if (queryReplaceEffect[i]<-255) queryReplaceEffect[i]=-255;
if (queryReplaceEffect[i]>255) queryReplaceEffect[i]=255;
}
} else if (queryReplaceEffectMode[i]==GUI_QUERY_REPLACE_SCALE) {
if (queryReplaceEffect[i]<0) queryReplaceEffect[i]=0;
if (queryReplaceEffect[i]>400) queryReplaceEffect[i]=400;
if (ImGui::InputInt("##ERValue",&queryReplaceEffect[i],1,12)) {
if (queryReplaceEffect[i]<0) queryReplaceEffect[i]=0;
if (queryReplaceEffect[i]>400) queryReplaceEffect[i]=400;
}
}
ImGui::EndDisabled();
@ -1009,10 +1063,16 @@ void FurnaceGUI::drawFindReplace() {
if (queryReplaceEffectVal[i]<-255) queryReplaceEffectVal[i]=-255;
if (queryReplaceEffectVal[i]>255) queryReplaceEffectVal[i]=255;
}
} else if (queryReplaceEffectValMode[i]==GUI_QUERY_REPLACE_SCALE) {
if (queryReplaceEffectVal[i]<0) queryReplaceEffectVal[i]=0;
if (queryReplaceEffectVal[i]>400) queryReplaceEffectVal[i]=400;
if (ImGui::InputInt("##ERValueV",&queryReplaceEffectVal[i],1,12)) {
if (queryReplaceEffectVal[i]<0) queryReplaceEffectVal[i]=0;
if (queryReplaceEffectVal[i]>400) queryReplaceEffectVal[i]=400;
}
}
ImGui::EndDisabled();
ImGui::PopID();
}

View File

@ -885,6 +885,7 @@ enum FurnaceGUIFindQueryReplaceModes {
GUI_QUERY_REPLACE_SET=0,
GUI_QUERY_REPLACE_ADD,
GUI_QUERY_REPLACE_ADD_OVERFLOW,
GUI_QUERY_REPLACE_SCALE,
GUI_QUERY_REPLACE_CLEAR,
GUI_QUERY_REPLACE_MAX