cyberGridSamples function
The 36 opaque colours a key edge, focus ring, toolbar icon or display
backdrop can sit over in a cyber grid with colors ([body, haze, grid, trace, scan]), in the renderer's paint order (⊕ =
compositeOver): for each stop s in {body, haze, their encoded-sRGB
half mix}, the bare stop, a grid line g⊕s and a major grid line g⊕g⊕s
(every fourth line is drawn twice), each with and without a trace over
it, and the scanline ink over each of those six.
Implementation
List<int> cyberGridSamples(List<int> colors) {
final c0 = colors[0] | 0xFF000000;
final c1 = colors[1] | 0xFF000000;
final g = colors[2];
final t = colors[3];
final k = colors[4];
final out = <int>[];
for (final s in [c0, c1, _mix(c0, c1)]) {
final gs = compositeOver(g, s);
final ggs = compositeOver(g, gs);
for (final base in [s, gs, ggs]) {
final ts = compositeOver(t, base);
out.addAll([base, ts, compositeOver(k, base), compositeOver(k, ts)]);
}
}
return out;
}