Method: PSD::Compose#lighten

Defined in:
lib/psd/renderer/compose.rb

#lighten(fg, bg, opacity) ⇒ Object

Additive blend modes



94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/psd/renderer/compose.rb', line 94

def lighten(fg, bg, opacity)
  return apply_opacity(fg, opacity) if fully_transparent?(bg)
  return bg if fully_transparent?(fg)

  mix_alpha, dst_alpha = calculate_alphas(fg, bg, opacity)

  new_r = r(fg) >= r(bg) ? blend_channel(r(bg), r(fg), mix_alpha) : r(bg)
  new_g = g(fg) >= g(bg) ? blend_channel(g(bg), g(fg), mix_alpha) : g(bg)
  new_b = b(fg) >= b(bg) ? blend_channel(b(bg), b(fg), mix_alpha) : b(bg)
  
  rgba(new_r, new_g, new_b, dst_alpha)
end