Method: PSD::Compose#multiply
- Defined in:
- lib/psd/renderer/compose.rb
#multiply(fg, bg, opacity) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/psd/renderer/compose.rb', line 43 def multiply(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 = blend_channel(r(bg), r(fg) * r(bg) >> 8, mix_alpha) new_g = blend_channel(g(bg), g(fg) * g(bg) >> 8, mix_alpha) new_b = blend_channel(b(bg), b(fg) * b(bg) >> 8, mix_alpha) rgba(new_r, new_g, new_b, dst_alpha) end |