Example #1
0
 /**
  * Color blending
  *
  * @param callable $mode
  * @param Color $color1
  * @param Color $color2
  * @return ColorNode
  */
 protected function colorBlend(callable $mode, Color $color1, Color $color2)
 {
     $ab = $color1->getAlpha();
     // backdrop
     $as = $color2->getAlpha();
     // source
     $r = [];
     // result
     $ar = $as + $ab * (1 - $as);
     $rgb1 = $color1->rgb;
     $rgb2 = $color2->rgb;
     for ($i = 0; $i < 3; $i++) {
         $cb = $rgb1[$i] / 255;
         $cs = $rgb2[$i] / 255;
         $cr = call_user_func($mode, $cb, $cs);
         if ($ar) {
             $cr = ($as * $cs + $ab * ($cb - $as * ($cb + $cs - $cr))) / $ar;
         }
         $r[$i] = $cr * 255;
     }
     return new ColorNode($r, $ar);
 }
Example #2
0
 /**
  * @covers getAlpha
  */
 public function testAlpha()
 {
     $color = new Color();
     $this->assertEquals(1, $color->getAlpha());
 }