Module Rubygame::Color::ColorBase
In: lib/rubygame/color/models/base.rb

A mix-in module defining color arithmetic operations.

Methods

*   +   -   /   average   over  

Public Instance methods

Perform color multiplication with another color of any type. The alpha of the new color will be equal to the alpha of the receiver.

[Source]

# File lib/rubygame/color/models/base.rb, line 43
        def *(other)
                wrap( simple_op(other)  { |a,b|  a * b } )
        end

Perform color addition with another color of any type. The alpha of the new color will be equal to the alpha of the receiver.

[Source]

# File lib/rubygame/color/models/base.rb, line 29
        def +(other)
                wrap( simple_op(other)  { |a,b| a + b } )
        end

Perform color subtraction with another color of any type. The alpha of the new color will be equal to the alpha of the receiver.

[Source]

# File lib/rubygame/color/models/base.rb, line 36
        def -(other)
                wrap( simple_op(other)  { |a,b|  a - b } )
        end

Perform color division with another color of any type. The alpha of the new color will be equal to the alpha of the receiver.

[Source]

# File lib/rubygame/color/models/base.rb, line 50
        def /(other)
                wrap( simple_op(other)  { |a,b|  a / b } )
        end

Average this color with another color. (Linear weighted average)

A weight of 0.0 means 0% of this color, 100% of the other. A weight of 1.0 means 100% of this color, 0% of the other. A weight of 0.5 means 50% of each color.

[Source]

# File lib/rubygame/color/models/base.rb, line 74
        def average(other, weight=0.5)
                c1, c2 = self.to_rgba_ary, other.to_rgba_ary

                rgba = [0,1,2,3].collect do |i| 
                        clamp( c1.at(i)*weight + c2.at(i)*(1-weight) )
                end
                
                wrap( rgba )
        end

Layer this color over another color.

[Source]

# File lib/rubygame/color/models/base.rb, line 55
        def over(other)
                c1, c2 = self.to_rgba_ary, other.to_rgba_ary
                a1, a2 = c1[3], c2[3]

                rgba = [0,1,2].collect do |i| 
                        clamp( a1*c1.at(i) + a2*c2.at(i)*(1-a1) )
                end
                
                rgba << ( a1 + a2*(1-a1) )
                
                wrap( rgba )
        end

[Validate]