View source
<?php
namespace Drupal\color_field;
class ColorHex extends ColorBase {
private $color;
public function __construct($color, $opacity) {
$color = trim(strtolower($color));
if (substr($color, 0, 1) === '#') {
$color = substr($color, 1);
}
if (strlen($color) === 3) {
$color = str_repeat($color[0], 2) . str_repeat($color[1], 2) . str_repeat($color[2], 2);
}
if (!preg_match('/[0-9A-F]{6}/i', $color)) {
}
$this->color = hexdec($color);
$this
->setOpacity(floatval($opacity));
return $this;
}
public function toString($opacity = TRUE) {
$rgb = $this
->toRgb();
$hex = '#';
$hex .= str_pad(dechex($rgb
->getRed()), 2, "0", STR_PAD_LEFT);
$hex .= str_pad(dechex($rgb
->getGreen()), 2, "0", STR_PAD_LEFT);
$hex .= str_pad(dechex($rgb
->getBlue()), 2, "0", STR_PAD_LEFT);
if ($opacity) {
$hex .= ' ' . $this
->getOpacity();
}
return strtolower($hex);
}
public function toHex() {
return $this;
}
public function toRgb() {
$red = ($this->color & 0xff0000) >> 16;
$green = ($this->color & 0xff00) >> 8;
$blue = $this->color & 0xff;
$opacity = $this
->getOpacity();
return new ColorRGB($red, $green, $blue, $opacity);
}
public function toHsl() {
return $this
->toRGB()
->toHsl();
}
}