mirror of
https://github.com/tildearrow/furnace.git
synced 2024-11-23 21:15:11 +00:00
GUI: sample/macro zoom with ctrl-wheel
This commit is contained in:
parent
aeea8a4912
commit
635bd72904
4 changed files with 19 additions and 1 deletions
|
@ -3788,6 +3788,7 @@ FurnaceGUI::FurnaceGUI():
|
|||
preserveChanPos(false),
|
||||
vgmExportVersion(0x171),
|
||||
drawHalt(10),
|
||||
macroPointSize(16),
|
||||
curFileDialog(GUI_FILE_OPEN),
|
||||
warnAction(GUI_WARN_OPEN),
|
||||
postWarnAction(GUI_WARN_GENERIC),
|
||||
|
|
|
@ -739,6 +739,7 @@ class FurnaceGUI {
|
|||
bool willExport[32];
|
||||
int vgmExportVersion;
|
||||
int drawHalt;
|
||||
int macroPointSize;
|
||||
|
||||
FurnaceGUIFileDialogs curFileDialog;
|
||||
FurnaceGUIWarnings warnAction;
|
||||
|
|
|
@ -1128,6 +1128,11 @@ void FurnaceGUI::drawGBEnv(unsigned char vol, unsigned char len, unsigned char s
|
|||
processDrags(ImGui::GetMousePos().x,ImGui::GetMousePos().y); \
|
||||
} \
|
||||
if (displayLoop) { \
|
||||
if (ImGui::IsItemHovered() && ctrlWheeling) { \
|
||||
macroPointSize+=wheelY; \
|
||||
if (macroPointSize<1) macroPointSize=1; \
|
||||
if (macroPointSize>256) macroPointSize=256; \
|
||||
} \
|
||||
if (drawSlider) { \
|
||||
ImGui::SameLine(); \
|
||||
CWVSliderInt("##IMacroPos_" macroName,ImVec2(20.0f*dpiScale,displayHeight*dpiScale),sliderVal,sliderLow,sliderHigh); \
|
||||
|
@ -1262,7 +1267,7 @@ if (ImGui::BeginTable("MacroSpace",2)) { \
|
|||
ImGui::Dummy(ImVec2(120.0f*dpiScale,dpiScale)); \
|
||||
ImGui::TableNextColumn(); \
|
||||
float availableWidth=ImGui::GetContentRegionAvail().x-reservedSpace; \
|
||||
int totalFit=MIN(127,availableWidth/(16*dpiScale)); \
|
||||
int totalFit=MIN(127,availableWidth/MAX(1,macroPointSize*dpiScale)); \
|
||||
if (macroDragScroll>127-totalFit) { \
|
||||
macroDragScroll=127-totalFit; \
|
||||
} \
|
||||
|
|
|
@ -1268,6 +1268,17 @@ void FurnaceGUI::drawSampleEdit() {
|
|||
}
|
||||
|
||||
if (ImGui::IsItemHovered()) {
|
||||
if (ctrlWheeling) {
|
||||
double zoomPercent=100.0/sampleZoom;
|
||||
zoomPercent+=wheelY*10.0;
|
||||
if (zoomPercent>10000.0) zoomPercent=10000.0;
|
||||
if (zoomPercent<1.0) zoomPercent=1.0;
|
||||
sampleZoom=100.0/zoomPercent;
|
||||
if (sampleZoom<0.01) sampleZoom=0.01;
|
||||
sampleZoomAuto=false;
|
||||
updateSampleTex=true;
|
||||
}
|
||||
|
||||
int posX=-1;
|
||||
int posY=0;
|
||||
ImVec2 pos=ImGui::GetMousePos();
|
||||
|
|
Loading…
Reference in a new issue