cyberpunkDisplayBackdrops function

List<int>? cyberpunkDisplayBackdrops(
  1. ThemeSpec spec,
  2. List<int> surfaces,
  3. List<int> bgs
)

Everything display text of spec may be drawn on: the HUD panel (surfaces) and the panel under its scanline ink (palette.shadow); dark themes add every scene sample (bgs; their display text passes on the bare scene too). Hazard's yellow display text sits only on its opaque black screen, never on the yellow body.

Implementation

List<int>? cyberpunkDisplayBackdrops(
  ThemeSpec spec,
  List<int> surfaces,
  List<int> bgs,
) {
  final scan = spec.palette.shadow;
  return [
    for (final s in surfaces) ...[s, compositeOver(scan, s)],
    if (spec.brightness == ThemeBrightness.dark) ...bgs,
  ];
}