* @link http://www.codeitnow.in * @package https://github.com/codeitnowin/barcode-generator */ namespace CodeItNow\BarcodeBundle\Generator; class CINColor { protected $r, $g, $b; // int Hexadecimal Value protected $transparent; /** * Save RGB value into the classes. * * There are 4 way to associate color with this classes : * 1. Gives 3 parameters int (R, G, B) * 2. Gives 1 parameter string hex value (#ff0000) (preceding with #) * 3. Gives 1 parameter int hex value (0xff0000) * 4. Gives 1 parameter string color code (white, black, orange...) * * @param mixed ... */ public function __construct() { $args = func_get_args(); $c = count($args); if ($c === 3) { $this->r = intval($args[0]); $this->g = intval($args[1]); $this->b = intval($args[2]); } elseif ($c === 1) { if (is_string($args[0]) && strlen($args[0]) === 7 && $args[0][0] === '#') { // Hex Value in String $this->r = intval(substr($args[0], 1, 2), 16); $this->g = intval(substr($args[0], 3, 2), 16); $this->b = intval(substr($args[0], 5, 2), 16); } else { if (is_string($args[0])) { $args[0] = self::getColor($args[0]); } $args[0] = intval($args[0]); $this->r = ($args[0] & 0xff0000) >> 16; $this->g = ($args[0] & 0x00ff00) >> 8; $this->b = ($args[0] & 0x0000ff); } } else { $this->r = $this->g = $this->b = 0; } } /** * Sets the color transparent. * * @param bool $transparent */ public function setTransparent($transparent) { $this->transparent = $transparent; } /** * Returns Red Color. * * @return int */ public function r() { return $this->r; } /** * Returns Green Color. * * @return int */ public function g() { return $this->g; } /** * Returns Blue Color. * * @return int */ public function b() { return $this->b; } /** * Returns the int value for PHP color. * * @param resource $im * @return int */ public function allocate(&$im) { $allocated = imagecolorallocate($im, $this->r, $this->g, $this->b); if ($this->transparent) { return imagecolortransparent($im, $allocated); } else { return $allocated; } } /** * Returns class of CINColor depending of the string color. * * If the color doens't exist, it takes the default one. * * @param string $code * @param string $default */ public static function getColor($code, $default = 'white') { switch(strtolower($code)) { case '': case 'white': return 0xffffff; case 'black': return 0x000000; case 'maroon': return 0x800000; case 'red': return 0xff0000; case 'orange': return 0xffa500; case 'yellow': return 0xffff00; case 'olive': return 0x808000; case 'purple': return 0x800080; case 'fuchsia': return 0xff00ff; case 'lime': return 0x00ff00; case 'green': return 0x008000; case 'navy': return 0x000080; case 'blue': return 0x0000ff; case 'aqua': return 0x00ffff; case 'teal': return 0x008080; case 'silver': return 0xc0c0c0; case 'gray': return 0x808080; default: return self::getColor($default, 'white'); } } } ?>