alphaBlend function

int alphaBlend(
  1. int foreground,
  2. int background
)

Paints foreground over background and returns the opaque result, like Flutter's Color.alphaBlend. Both are ARGB integers. For renderers that can't blend, such as terminals.

Implementation

int alphaBlend(int foreground, int background) {
  final alpha = (foreground >> 24) & 0xFF;
  if (alpha == 0xFF) return foreground;
  int channel(int shift) {
    final f = (foreground >> shift) & 0xFF;
    final b = (background >> shift) & 0xFF;
    return (f * alpha + b * (0xFF - alpha) + 0x7F) ~/ 0xFF;
  }

  return 0xFF000000 | channel(16) << 16 | channel(8) << 8 | channel(0);
}