#pragma once #include #include #include "PluginProcessor.h" class VectorScope : public juce::Component, private juce::Timer { public: explicit VectorScope(TerionProcessor& p); ~VectorScope() override; void paint(juce::Graphics& g) override; void resized() override; void timerCallback() override; float getRadius() const; void setScale(float s) { currentScale = s; } private: TerionProcessor& processor; float currentScale = 1.0f; juce::Image trail; void drawLegends(juce::Graphics& g, float cx, float cy, float radius); void drawHairCross(juce::Graphics& g, float cx, float cy); void drawMetricsOverlay(juce::Graphics& g, const juce::Rectangle& bounds); JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(VectorScope) };