Method: PSD::Compose#difference
- Defined in:
- lib/psd/compose.rb
#difference(fg, bg, opts = {}) ⇒ Object
Inversion blend modes
300 301 302 303 304 305 306 307 308 309 310 311 |
# File 'lib/psd/compose.rb', line 300 def difference(fg, bg, opts={}) return fg if fully_transparent?(bg) return bg if fully_transparent?(fg) mix_alpha, dst_alpha = calculate_alphas(fg, bg, DEFAULT_OPTS.merge(opts)) new_r = blend_channel(r(bg), (r(bg) - r(fg)).abs, mix_alpha) new_g = blend_channel(g(bg), (g(bg) - g(fg)).abs, mix_alpha) new_b = blend_channel(b(bg), (b(bg) - b(fg)).abs, mix_alpha) rgba(new_r, new_g, new_b, dst_alpha) end |