refactor(source): move every implementation into its module directory
- 36 files move into the module whose AGENTS.md already claimed them: Engine/, Synth/, Modulation/, Params/, Plugin/, GUI/, EffectUnits/, Resources/ - Source/engine, modulation, params, plugin and synth become Engine, Modulation, Params, Plugin and Synth, matching the directories that already hold code - ExactCompare.h stays at the Source/ root as the one shared header - SERUMALT_INCLUDE_DIRS adds one include directory per module, so the 31 parent-relative includes become plain names with no path prefix - the module AGENTS.md files list owned files instead of describing a move that had not happened, and README.md and AGENTS.md describe the real tree Verified: the harness passes CTest, the Linux VST3 and Standalone link, the Windows cross-build passes its module checks, each configure exposes only its own targets, no first-party warning line appears, and the generated Windows manifest is unchanged.
This commit is contained in:
1 parent
facd5c5b5e
commit
4b0db50271
70 files changed
+115
-111
No files matched your search
@@ -2,7 +2,7 @@
|
||||
|
||||
## Owned files
|
||||
|
||||
- Related embedded assets and helpers: `../Resources.h`, `../Resources.cpp`
|
||||
- Resources.h, Resources.cpp
|
||||
- logo.svg
|
||||
- background.svg
|
||||
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
#include "Resources.h"
|
||||
#include "Params.h"
|
||||
|
||||
namespace serum
|
||||
{
|
||||
|
||||
juce::String getLogoSvg()
|
||||
{
|
||||
return R"svg(
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="180" height="40" viewBox="0 0 180 40">
|
||||
<defs>
|
||||
<linearGradient id="g" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0" stop-color="#4fc3f7"/>
|
||||
<stop offset="1" stop-color="#ff6e9c"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<path fill="url(#g)" d="M20 6 L34 6 L22 34 L8 34 Z"/>
|
||||
<text x="42" y="27" font-family="Verdana, sans-serif" font-size="22" font-weight="bold" fill="#e8eaf0">SerumAlt</text>
|
||||
</svg>
|
||||
)svg";
|
||||
}
|
||||
|
||||
juce::String getBackgroundSvg()
|
||||
{
|
||||
return R"svg(
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="720" viewBox="0 0 1200 720">
|
||||
<rect width="1200" height="720" fill="#101117"/>
|
||||
<radialGradient id="r" cx="0.5" cy="0" r="1.2">
|
||||
<stop offset="0" stop-color="#1a1c24" stop-opacity="1"/>
|
||||
<stop offset="1" stop-color="#101117" stop-opacity="0"/>
|
||||
</radialGradient>
|
||||
<rect width="1200" height="720" fill="url(#r)"/>
|
||||
</svg>
|
||||
)svg";
|
||||
}
|
||||
|
||||
std::unique_ptr<juce::Drawable> createLogoDrawable()
|
||||
{
|
||||
auto xml = juce::parseXML (getLogoSvg());
|
||||
return xml != nullptr ? juce::Drawable::createFromSVG (*xml) : nullptr;
|
||||
}
|
||||
|
||||
std::unique_ptr<juce::Drawable> createBackgroundDrawable()
|
||||
{
|
||||
auto xml = juce::parseXML (getBackgroundSvg());
|
||||
return xml != nullptr ? juce::Drawable::createFromSVG (*xml) : nullptr;
|
||||
}
|
||||
|
||||
juce::String formatPercent (float v)
|
||||
{
|
||||
return juce::String (juce::roundToInt (v * 100.0f)) + " %";
|
||||
}
|
||||
|
||||
juce::String formatHz (float v)
|
||||
{
|
||||
const float hz = maps::cutoffToHz (v);
|
||||
if (hz >= 1000.0f)
|
||||
return juce::String (hz / 1000.0f, 2) + " kHz";
|
||||
return juce::String (juce::roundToInt (hz)) + " Hz";
|
||||
}
|
||||
|
||||
juce::String formatSeconds (float v)
|
||||
{
|
||||
const float s = maps::toSeconds (v);
|
||||
if (s < 1.0f)
|
||||
return juce::String (juce::roundToInt (s * 1000.0f)) + " ms";
|
||||
return juce::String (s, 2) + " s";
|
||||
}
|
||||
|
||||
juce::String formatSemis (float v)
|
||||
{
|
||||
const int semi = (int) std::llround (v * 48.0f) - 24;
|
||||
return juce::String (semi > 0 ? "+" : "") + juce::String (semi) + " st";
|
||||
}
|
||||
|
||||
juce::String formatCents (float v)
|
||||
{
|
||||
const int ct = (int) std::llround (v * 200.0f) - 100;
|
||||
return juce::String (ct > 0 ? "+" : "") + juce::String (ct) + " ct";
|
||||
}
|
||||
|
||||
juce::String formatPan (float v)
|
||||
{
|
||||
const int p = (int) std::llround ((v - 0.5f) * 200.0f);
|
||||
if (p == 0) return "C";
|
||||
return (p < 0 ? "L" : "R") + juce::String (std::abs (p));
|
||||
}
|
||||
|
||||
juce::String formatInt (float v, int maxValue)
|
||||
{
|
||||
return juce::String (juce::jlimit (0, maxValue, (int) std::llround (v * maxValue)));
|
||||
}
|
||||
|
||||
} // namespace serum
|
||||
@@ -0,0 +1,42 @@
|
||||
#pragma once
|
||||
|
||||
#include <JuceHeader.h>
|
||||
|
||||
namespace serum
|
||||
{
|
||||
|
||||
// ===========================================================================
|
||||
// Central dark theme + static SVG assets (embedded as strings so they need no
|
||||
// binary-data build step; the same assets also ship under Source/Resources/).
|
||||
// ===========================================================================
|
||||
namespace theme
|
||||
{
|
||||
inline const juce::Colour bg { 0xff101117 };
|
||||
inline const juce::Colour panel { 0xff1a1c24 };
|
||||
inline const juce::Colour panelRaised { 0xff23262f };
|
||||
inline const juce::Colour outline { 0xff2c2f39 };
|
||||
inline const juce::Colour text { 0xffe8eaf0 };
|
||||
inline const juce::Colour textDim { 0xff9095a2 };
|
||||
inline const juce::Colour accent { 0xff4fc3f7 }; // cyan
|
||||
inline const juce::Colour accent2 { 0xffff6e9c }; // pink
|
||||
inline const juce::Colour amber { 0xffffb74d };
|
||||
inline const juce::Colour green { 0xff7ce38b };
|
||||
inline const juce::Colour raveGlow { 0xffff3d71 };
|
||||
}
|
||||
|
||||
// SVG assets (logo + subtle background).
|
||||
juce::String getLogoSvg();
|
||||
juce::String getBackgroundSvg();
|
||||
std::unique_ptr<juce::Drawable> createLogoDrawable();
|
||||
std::unique_ptr<juce::Drawable> createBackgroundDrawable();
|
||||
|
||||
// Small value-formatting helpers used by the GUI controls.
|
||||
juce::String formatPercent (float v); // 0..1 -> "42 %"
|
||||
juce::String formatHz (float v); // 0..1 (cutoff) -> "1.2 kHz"
|
||||
juce::String formatSeconds (float v); // 0..1 (env) -> "320 ms"
|
||||
juce::String formatSemis (float v); // 0..1 -> "-12 st"
|
||||
juce::String formatCents (float v); // 0..1 -> "+5 ct"
|
||||
juce::String formatPan (float v); // 0..1 -> "L50"
|
||||
juce::String formatInt (float v, int maxValue);
|
||||
|
||||
} // namespace serum
|
||||
Reference in new issue
Block a user