/** * 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); }
/** * @covers getAlpha */ public function testAlpha() { $color = new Color(); $this->assertEquals(1, $color->getAlpha()); }