GUI: add setting to make osc escape bounds
This commit is contained in:
parent
f8d851cbc2
commit
49943aba76
|
@ -922,6 +922,7 @@ class FurnaceGUI {
|
||||||
int oscRoundedCorners;
|
int oscRoundedCorners;
|
||||||
int oscTakesEntireWindow;
|
int oscTakesEntireWindow;
|
||||||
int oscBorder;
|
int oscBorder;
|
||||||
|
int oscEscapesBoundary;
|
||||||
int separateFMColors;
|
int separateFMColors;
|
||||||
int insEditColorize;
|
int insEditColorize;
|
||||||
int metroVol;
|
int metroVol;
|
||||||
|
@ -1012,6 +1013,7 @@ class FurnaceGUI {
|
||||||
oscRoundedCorners(1),
|
oscRoundedCorners(1),
|
||||||
oscTakesEntireWindow(0),
|
oscTakesEntireWindow(0),
|
||||||
oscBorder(1),
|
oscBorder(1),
|
||||||
|
oscEscapesBoundary(0),
|
||||||
separateFMColors(0),
|
separateFMColors(0),
|
||||||
insEditColorize(0),
|
insEditColorize(0),
|
||||||
metroVol(100),
|
metroVol(100),
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
|
|
||||||
#include "gui.h"
|
#include "gui.h"
|
||||||
#include "imgui_internal.h"
|
#include "imgui_internal.h"
|
||||||
|
#include <imgui.h>
|
||||||
|
|
||||||
// TODO:
|
// TODO:
|
||||||
// - potentially move oscilloscope seek position to the end, and read the last samples
|
// - potentially move oscilloscope seek position to the end, and read the last samples
|
||||||
|
@ -224,11 +225,18 @@ void FurnaceGUI::drawOsc() {
|
||||||
for (size_t i=0; i<512; i++) {
|
for (size_t i=0; i<512; i++) {
|
||||||
float x=(float)i/512.0f;
|
float x=(float)i/512.0f;
|
||||||
float y=oscValues[i]*oscZoom;
|
float y=oscValues[i]*oscZoom;
|
||||||
if (y<-0.5f) y=-0.5f;
|
if (!settings.oscEscapesBoundary) {
|
||||||
if (y>0.5f) y=0.5f;
|
if (y<-0.5f) y=-0.5f;
|
||||||
|
if (y>0.5f) y=0.5f;
|
||||||
|
}
|
||||||
waveform[i]=ImLerp(inRect.Min,inRect.Max,ImVec2(x,0.5f-y));
|
waveform[i]=ImLerp(inRect.Min,inRect.Max,ImVec2(x,0.5f-y));
|
||||||
}
|
}
|
||||||
dl->AddPolyline(waveform,512,color,ImDrawFlags_None,dpiScale);
|
if (settings.oscEscapesBoundary) {
|
||||||
|
ImDrawList* dlf=ImGui::GetForegroundDrawList();
|
||||||
|
dlf->AddPolyline(waveform,512,color,ImDrawFlags_None,dpiScale);
|
||||||
|
} else {
|
||||||
|
dl->AddPolyline(waveform,512,color,ImDrawFlags_None,dpiScale);
|
||||||
|
}
|
||||||
if (settings.oscBorder) {
|
if (settings.oscBorder) {
|
||||||
dl->AddRect(inRect.Min,inRect.Max,borderColor,settings.oscRoundedCorners?(8.0f*dpiScale):0.0f,0,1.5f*dpiScale);
|
dl->AddRect(inRect.Min,inRect.Max,borderColor,settings.oscRoundedCorners?(8.0f*dpiScale):0.0f,0,1.5f*dpiScale);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1219,6 +1219,11 @@ void FurnaceGUI::drawSettings() {
|
||||||
settings.oscTakesEntireWindow=oscTakesEntireWindowB;
|
settings.oscTakesEntireWindow=oscTakesEntireWindowB;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool oscEscapesBoundaryB=settings.oscEscapesBoundary;
|
||||||
|
if (ImGui::Checkbox("Waveform goes out of bounds",&oscEscapesBoundaryB)) {
|
||||||
|
settings.oscEscapesBoundary=oscEscapesBoundaryB;
|
||||||
|
}
|
||||||
|
|
||||||
bool oscBorderB=settings.oscBorder;
|
bool oscBorderB=settings.oscBorder;
|
||||||
if (ImGui::Checkbox("Border",&oscBorderB)) {
|
if (ImGui::Checkbox("Border",&oscBorderB)) {
|
||||||
settings.oscBorder=oscBorderB;
|
settings.oscBorder=oscBorderB;
|
||||||
|
@ -1933,6 +1938,7 @@ void FurnaceGUI::syncSettings() {
|
||||||
settings.oscRoundedCorners=e->getConfInt("oscRoundedCorners",1);
|
settings.oscRoundedCorners=e->getConfInt("oscRoundedCorners",1);
|
||||||
settings.oscTakesEntireWindow=e->getConfInt("oscTakesEntireWindow",0);
|
settings.oscTakesEntireWindow=e->getConfInt("oscTakesEntireWindow",0);
|
||||||
settings.oscBorder=e->getConfInt("oscBorder",1);
|
settings.oscBorder=e->getConfInt("oscBorder",1);
|
||||||
|
settings.oscEscapesBoundary=e->getConfInt("oscEscapesBoundary",0);
|
||||||
settings.separateFMColors=e->getConfInt("separateFMColors",0);
|
settings.separateFMColors=e->getConfInt("separateFMColors",0);
|
||||||
settings.insEditColorize=e->getConfInt("insEditColorize",0);
|
settings.insEditColorize=e->getConfInt("insEditColorize",0);
|
||||||
settings.metroVol=e->getConfInt("metroVol",100);
|
settings.metroVol=e->getConfInt("metroVol",100);
|
||||||
|
@ -2130,6 +2136,7 @@ void FurnaceGUI::commitSettings() {
|
||||||
e->setConf("oscRoundedCorners",settings.oscRoundedCorners);
|
e->setConf("oscRoundedCorners",settings.oscRoundedCorners);
|
||||||
e->setConf("oscTakesEntireWindow",settings.oscTakesEntireWindow);
|
e->setConf("oscTakesEntireWindow",settings.oscTakesEntireWindow);
|
||||||
e->setConf("oscBorder",settings.oscBorder);
|
e->setConf("oscBorder",settings.oscBorder);
|
||||||
|
e->setConf("oscEscapesBoundary",settings.oscEscapesBoundary);
|
||||||
e->setConf("separateFMColors",settings.separateFMColors);
|
e->setConf("separateFMColors",settings.separateFMColors);
|
||||||
e->setConf("insEditColorize",settings.insEditColorize);
|
e->setConf("insEditColorize",settings.insEditColorize);
|
||||||
e->setConf("metroVol",settings.metroVol);
|
e->setConf("metroVol",settings.metroVol);
|
||||||
|
|
Loading…
Reference in a new issue