public function testInvalidColor() { $strColor = '-invalid-'; $color = new Color($strColor); $this->assertEquals($strColor, $color->getColor()); $this->assertEquals(255, $color->getRed()); $this->assertEquals(255, $color->getGreen()); $this->assertEquals(255, $color->getBlue()); $this->assertEquals(0, $color->getAlpha()); }
/** * @cover Imagine\Image\Color::__construct * @cover Imagine\Image\Color::getRed * @cover Imagine\Image\Color::getGreen * @cover Imagine\Image\Color::getAlpha * @cover Imagine\Image\Color::__toString */ public function testShouldSetColorToWhite() { $color = new Color('fff'); $this->assertEquals(255, $color->getRed()); $this->assertEquals(255, $color->getGreen()); $this->assertEquals(255, $color->getBlue()); $this->assertEquals(0, $color->getAlpha()); $this->assertEquals('#ffffff', (string) $color); $this->assertEquals('#00ff00', (string) new Color('00ff00')); }
/** * @param \DarkLuk42\Color $color * @param bool $forceAllocation * * @return int */ public function getColorIndex(Color $color, $forceAllocation = true) { if ($color->hasAlpha()) { $index = imagecolorexactalpha($this->image, $color->getRed(), $color->getGreen(), $color->getBlue(), intval($color->getAlpha() / 2)); } else { $index = imagecolorexact($this->image, $color->getRed(), $color->getGreen(), $color->getBlue()); } if ($index == -1 && $forceAllocation) { $index = $this->colorAllocate($color); } return $index; }
/** * The whole test. */ public function test() { $tests = ['#000000', '#000', '000000', 0, [0, 0, 0], new Color('#000000')]; foreach ($tests as $test) { $color = new Color($test); $this->assertEquals(0, $color->getRed()); $this->assertEquals(0, $color->getGreen()); $this->assertEquals(0, $color->getBlue()); $this->assertEquals('000000', $color->getHex()); $this->assertEquals([0, 0, 0], $color->getRgb()); $this->assertEquals(0, $color->getBinary()); ob_start(); echo $color; $output = ob_get_clean(); $this->assertEquals('#000000', $output); $this->assertEquals('000000', $color->toGrayScale()->getHex()); $this->assertEquals('ffffff', $color->toInverse()->getHex()); } $color = new Color(); $color->setRed('00')->setGreen('00')->setBlue('00'); $this->assertEquals('000000', $color->getHex()); $tests = ['#ffffff', '#FfFFffF', '#fff', 'ffffff', 0xffffff, [255, 255, 255], [260, 320, 1024], new Color('#ffffff')]; foreach ($tests as $test) { $color = new Color($test); $this->assertEquals(255, $color->getRed()); $this->assertEquals(255, $color->getGreen()); $this->assertEquals(255, $color->getBlue()); $this->assertEquals('ffffff', $color->getHex()); $this->assertEquals([255, 255, 255], $color->getRgb()); $this->assertEquals(1, $color->getBinary()); ob_start(); echo $color; $output = ob_get_clean(); $this->assertEquals('#ffffff', $output); $this->assertEquals('ffffff', $color->toGrayScale()->getHex()); $this->assertEquals('000000', $color->toInverse()->getHex()); } $color = new Color(); $color->setRed('FF')->setGreen('FF')->setBlue('FF'); $this->assertEquals('ffffff', $color->getHex()); $tests = ['#239416', '239416', 0x239416, [35, 148, 22], new Color('#239416')]; foreach ($tests as $test) { $color = new Color($test); $this->assertEquals(35, $color->getRed()); $this->assertEquals(148, $color->getGreen()); $this->assertEquals(22, $color->getBlue()); $this->assertEquals('239416', $color->getHex()); $this->assertEquals([35, 148, 22], $color->getRgb()); $this->assertEquals(0, $color->getBinary()); ob_start(); echo $color; $output = ob_get_clean(); $this->assertEquals('#239416', $output); $this->assertEquals('616161', $color->toGrayScale()->getHex()); $this->assertEquals('dc6be9', $color->toInverse()->getHex()); } $tests = ['#22FF66', '#22Ff66', '#2f6', '2F6', '22FF66', '22fF66', 0x22ff66, [34, 255, 102], new Color('#22FF66')]; foreach ($tests as $test) { $color = new Color($test); $this->assertEquals(34, $color->getRed()); $this->assertEquals(255, $color->getGreen()); $this->assertEquals(102, $color->getBlue()); $this->assertEquals('22ff66', $color->getHex()); $this->assertEquals([34, 255, 102], $color->getRgb()); $this->assertEquals(1, $color->getBinary()); ob_start(); echo $color; $output = ob_get_clean(); $this->assertEquals('#22ff66', $output); $this->assertEquals('b8b8b8', $color->toGrayScale()->getHex()); $this->assertEquals('dd0099', $color->toInverse()->getHex()); } $color = new Color(); $color->setRed('23')->setGreen('94')->setBlue('16'); $this->assertEquals('239416', $color->getHex()); $invalids = ['#FFBBC', '#FBCA', '0000', '0', 'AB']; foreach ($invalids as $invalid) { try { $color = new Color($invalid); $this->fail(sprintf('%s expected for value %s', \InvalidArgumentException::class, $invalid)); } catch (\PHPUnit_Framework_AssertionFailedError $e) { throw $e; } catch (\Exception $e) { // Correctly thrown exception $this->assertInstanceOf(\InvalidArgumentException::class, $e); } } }
/** * @param Color $color * @param float $position * * @return Color */ public function blendTo(Color $color, $position) { // 2. Calculate colour based on fractional position $red = (int) ($this->red - ($this->red - $color->getRed()) * $position); $green = (int) ($this->green - ($this->green - $color->getGreen()) * $position); $blue = (int) ($this->blue - ($this->blue - $color->getBlue()) * $position); return new self($red, $green, $blue); }
public function getColorIdentifier(Color $color) { $colorId = imagecolorexact($this->imageId, $color->getRed(), $color->getGreen(), $color->getBlue()); if ($colorId === -1) { $colorId = imagecolorallocate($this->imageId, $color->getRed(), $color->getGreen(), $color->getBlue()); } return $colorId; }