Round 1 findings and fixes, all previously uncommitted: - FXProcessor per-slot DSP history repair (HEAD does not compile without it) - SynthVoice::getModulationValue, editor control-lock guard - ExactCompare.h naming the deliberate exact float comparisons - KnobLookAndFeel replacing the never-installed SerumLookAndFeel - 55 first-party compiler warnings to 0 - AGENT.md renamed to AGENTS.md across Source/ - graft repository context graph and its hooks - JANITOR_TASKS.md and UI_UX_AUDIT.md records
35 lines
1.2 KiB
C++
35 lines
1.2 KiB
C++
#pragma once
|
|
|
|
#include <JuceHeader.h>
|
|
#include "../Resources.h"
|
|
|
|
namespace serum
|
|
{
|
|
|
|
// ===========================================================================
|
|
// Look-and-feel for Knob.
|
|
//
|
|
// Two jobs:
|
|
//
|
|
// 1. Draw the rotary with theme:: colours. The shared default look-and-feel
|
|
// paints it with its own palette, which ignores the rest of the editor.
|
|
//
|
|
// 2. Leave room for the knob's name. juce::LookAndFeel_V4 reduces the rotary
|
|
// bounds by a fixed ten pixels on each side, so a 76 pixel knob loses
|
|
// 20 pixels of dial and a smaller knob loses most of it. This version
|
|
// keeps the dial whole inside its footprint and reserves a text strip
|
|
// under it, which is the strip Knob paints its name into.
|
|
// ===========================================================================
|
|
class KnobLookAndFeel : public juce::LookAndFeel_V4
|
|
{
|
|
public:
|
|
// Height of the name strip reserved under the dial.
|
|
static constexpr int labelHeight = 16;
|
|
|
|
void drawRotarySlider (juce::Graphics& g, int x, int y, int width, int height,
|
|
float sliderPos, float rotaryStartAngle, float rotaryEndAngle,
|
|
juce::Slider& slider) override;
|
|
};
|
|
|
|
} // namespace serum
|