82 lines
2.2 KiB
C++
82 lines
2.2 KiB
C++
#pragma once
|
|
// Step 516: Signature Visual Identity Pack
|
|
// Encodes black-surface gradient treatment, blade-edge accents, and
|
|
// electric-blue logic link styling.
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
#include <algorithm>
|
|
|
|
struct GradientStop {
|
|
float t = 0.0f;
|
|
float r = 0.0f;
|
|
float g = 0.0f;
|
|
float b = 0.0f;
|
|
float a = 1.0f;
|
|
};
|
|
|
|
struct EdgeAccent {
|
|
std::string edge; // left/right/top/bottom
|
|
float thickness = 1.0f;
|
|
float intensity = 0.0f;
|
|
bool active = false;
|
|
};
|
|
|
|
struct LogicLinkStyle {
|
|
float width = 1.0f;
|
|
float glow = 0.0f;
|
|
float r = 0.15f;
|
|
float g = 0.56f;
|
|
float b = 0.95f;
|
|
float alpha = 1.0f;
|
|
};
|
|
|
|
class SignatureVisualIdentity {
|
|
public:
|
|
static std::vector<GradientStop> blackSurfaceGradient(bool elevated) {
|
|
if (elevated) {
|
|
return {
|
|
{0.0f, 0.02f, 0.02f, 0.02f, 1.0f},
|
|
{0.45f, 0.08f, 0.08f, 0.08f, 1.0f},
|
|
{1.0f, 0.14f, 0.14f, 0.14f, 1.0f}
|
|
};
|
|
}
|
|
return {
|
|
{0.0f, 0.01f, 0.01f, 0.01f, 1.0f},
|
|
{0.60f, 0.05f, 0.05f, 0.05f, 1.0f},
|
|
{1.0f, 0.09f, 0.09f, 0.09f, 1.0f}
|
|
};
|
|
}
|
|
|
|
static EdgeAccent bladeEdge(const std::string& edge, bool active, float emphasis) {
|
|
EdgeAccent a;
|
|
a.edge = edge;
|
|
a.active = active;
|
|
a.thickness = active ? 2.0f : 1.0f;
|
|
a.intensity = active ? std::max(0.2f, std::min(1.0f, emphasis)) : 0.12f;
|
|
return a;
|
|
}
|
|
|
|
static LogicLinkStyle electricBlueLink(bool highlighted, float distanceNorm) {
|
|
LogicLinkStyle s;
|
|
s.width = highlighted ? 2.4f : 1.4f;
|
|
s.glow = highlighted ? 0.80f : 0.35f;
|
|
float fade = std::max(0.35f, 1.0f - std::max(0.0f, std::min(1.0f, distanceNorm)) * 0.45f);
|
|
s.alpha = fade;
|
|
return s;
|
|
}
|
|
|
|
static bool isElectricBlue(const LogicLinkStyle& s) {
|
|
return s.b > s.r && s.b > s.g && s.g > s.r;
|
|
}
|
|
|
|
static float revealDurationMs(bool reducedMotion) {
|
|
return reducedMotion ? 80.0f : 220.0f;
|
|
}
|
|
|
|
static float staggerDelayMs(int index, bool reducedMotion) {
|
|
if (reducedMotion) return 0.0f;
|
|
return std::max(0, index) * 24.0f;
|
|
}
|
|
};
|