tools/swf2lwf/lib/chunky_png/color.rb
# Composes two colors with an alpha channel using floating point math.
#
# This method uses more precise floating point math, but this precision is lost
# when the result is converted back to an integer. Because it is slower than
# the version based on integer math, that version is preferred.
#
# @param [Integer] fg The foreground color.
# @param [Integer] bg The foreground color.
# @return [Integer] The composited color.
# @see ChunkyPNG::Color#compose_quick
Composes two colors with an alpha channel using floating point math.
This method uses more precise floating point math, but this precision is lost
when the result is converted back to an integer. Because it is slower than
the version based on integer math, that version is preferred.
Composes two colors with an alpha channel using floating point math . This method uses more precise floating point math but this precision is lost when the result is converted back to an integer . Because it is slower than the version based on integer math that version is preferred .
def compose_precise(fg, bg)
      return fg if opaque?(fg) || fully_transparent?(bg)
      return bg if fully_transparent?(fg)
      fg_a  = a(fg).to_f / MAX
      bg_a  = a(bg).to_f / MAX
      a_com = (1.0 - fg_a) * bg_a
      new_r = (fg_a * r(fg) + a_com * r(bg)).round
      new_g = (fg_a * g(fg) + a_com * g(bg)).round
      new_b = (fg_a * b(fg) + a_com * b(bg)).round
      new_a = ((fg_a + a_com) * MAX).round
      rgba(new_r, new_g, new_b, new_a)
    end
def compose_precise ( fg , bg ) return fg if opaque? ( fg ) || fully_transparent? ( bg ) return bg if fully_transparent? ( fg ) fg_a = a ( fg ) . to_f / MAX bg_a = a ( bg ) . to_f / MAX a_com = ( 1.0 - fg_a ) * bg_a new_r = ( fg_a * r ( fg ) + a_com * r ( bg ) ) . round new_g = ( fg_a * g ( fg ) + a_com * g ( bg ) ) . round new_b = ( fg_a * b ( fg ) + a_com * b ( bg ) ) . round new_a = ( ( fg_a + a_com ) * MAX ) . round rgba ( new_r , new_g , new_b , new_a ) end
Composes two colors with an alpha channel using floating point math.
Composes two colors with an alpha channel using floating point math .
The composited color.
The composited color .
Integer
fg
<not_specific>
bg
<not_specific>
<not_specific>
bg The foreground color.
bg The foreground color .
see
None