137
138
139
140
141
142
143
144
145
146
147
148
|
# File 'lib/psd/renderer/compose.rb', line 137
def linear_dodge(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(bg) + r(fg)) > 255 ? 255 : r(bg) + r(fg), mix_alpha)
new_g = blend_channel(g(bg), (g(bg) + g(fg)) > 255 ? 255 : g(bg) + g(fg), mix_alpha)
new_b = blend_channel(b(bg), (b(bg) + b(fg)) > 255 ? 255 : b(bg) + b(fg), mix_alpha)
rgba(new_r, new_g, new_b, dst_alpha)
end
|