From c62b6a9f90d852c74f3ad7a6531dd7bb1ec9ecd3 Mon Sep 17 00:00:00 2001 From: James Ball Date: Tue, 19 Dec 2023 12:11:12 +0000 Subject: [PATCH] Change envelope to show ADSR stats when ADSR mode is on --- Source/UGen/ugen_JuceEnvelopeComponent.cpp | 86 +++++++++++++--------- 1 file changed, 50 insertions(+), 36 deletions(-) diff --git a/Source/UGen/ugen_JuceEnvelopeComponent.cpp b/Source/UGen/ugen_JuceEnvelopeComponent.cpp index 5ab6128..0f56675 100644 --- a/Source/UGen/ugen_JuceEnvelopeComponent.cpp +++ b/Source/UGen/ugen_JuceEnvelopeComponent.cpp @@ -100,7 +100,7 @@ EnvelopeHandleComponent::EnvelopeHandleComponent() { if (shouldDraw) { - setMouseCursor(juce::MouseCursor::CrosshairCursor); + setMouseCursor(juce::MouseCursor::DraggingHandCursor); } resetOffsets(); } @@ -154,43 +154,57 @@ void EnvelopeHandleComponent::updateLegend() int width = getParentWidth(); int places; - - if(width >= 165) { - - if(env && env->isLoopNode(this)) - text << "(Loop) "; - else if(env && env->isReleaseNode(this)) - text << "(Release) "; - else - text << "Point "; - + + if (width >= 115) { places = 3; + } else if (width >= 100) { + places = 2; + } else { + places = 1; } - else if(width >= 140) { - text << "Point "; - places = 3; - } else if(width >= 115) { - text << "Pt "; - places = 3; - } else if(width >= 100) { - text << "Pt "; - places = 2; - } else if(width >= 85) { - text << "Pt "; - places = 1; - } else if(width >= 65) { - text << "P "; - places = 1; + + if (env->getAdsrMode()) { + int index = env->getHandleIndex(this); + Env envelope = env->getEnv(); + + double envTime = envelope.getTimes()[index - 1]; + + if (index == 1) { + text = "Attack time (s): " + juce::String(legend->mapTime(envTime), places); + text << ", Attack level: " << juce::String(legend->mapValue(value), places); + } else if (index == 2) { + text = "Decay time (s): " + juce::String(legend->mapTime(envTime), places); + text << ", Sustain level: " << juce::String(legend->mapValue(value), places); + } else { + text = "Release time (s): " + juce::String(legend->mapTime(envTime), places); + } } else { - places = 1; + if (width >= 165) { + if (env && env->isLoopNode(this)) + text << "(Loop) "; + else if (env && env->isReleaseNode(this)) + text << "(Release) "; + else + text << "Point "; + } else if (width >= 140) { + text << "Point "; + } else if (width >= 115) { + text << "Pt "; + } else if (width >= 100) { + text << "Pt "; + } else if (width >= 85) { + text << "Pt "; + } else if (width >= 65) { + text << "P "; + } + + text << (getHandleIndex()) + << ": " + << juce::String(legend->mapTime(time), places) << legend->getTimeUnits() + << ", " + << juce::String(legend->mapValue(value), places) << legend->getValueUnits(); } - text << (getHandleIndex()) - << ": " - << juce::String(legend->mapTime(time), places) << legend->getTimeUnits() - << ", " - << juce::String(legend->mapValue(value), places) << legend->getValueUnits(); - getParentComponent()->setLegendText(text); } @@ -246,7 +260,7 @@ void EnvelopeHandleComponent::mouseEnter(const juce::MouseEvent& e) #endif if (shouldDraw) { - setMouseCursor(juce::MouseCursor::CrosshairCursor); + setMouseCursor(juce::MouseCursor::DraggingHandCursor); updateLegend(); } else { setMouseCursor(juce::MouseCursor::NormalCursor); @@ -380,7 +394,7 @@ void EnvelopeHandleComponent::mouseUp(const juce::MouseEvent& e) env->quantiseHandle(this); // } - setMouseCursor(juce::MouseCursor::CrosshairCursor); + setMouseCursor(juce::MouseCursor::DraggingHandCursor); setMousePositionToThisHandle(); offsetX = 0; @@ -921,7 +935,7 @@ void EnvelopeComponent::mouseUp(const juce::MouseEvent& e) if(e.mods.isCtrlDown() == false) quantiseHandle(draggingHandle); - setMouseCursor(juce::MouseCursor::CrosshairCursor); + setMouseCursor(juce::MouseCursor::DraggingHandCursor); draggingHandle->setMousePositionToThisHandle(); draggingHandle->resetOffsets(); draggingHandle = 0;