Same name in other branches
- 8.x-2.x src/ColorRGB.php \Drupal\color_field\ColorRGB
RGB represents the RGB color format.
Hierarchy
- class \Drupal\color_field\ColorBase implements \Drupal\color_field\ColorInterface
- class \Drupal\color_field\ColorRGB extends \Drupal\color_field\ColorBase
Expanded class hierarchy of ColorRGB
File
-
src/
ColorRGB.php, line 10
Namespace
Drupal\color_fieldView source
class ColorRGB extends ColorBase {
/**
* The red value (0-255).
*
* @var int
*/
protected int $red;
/**
* The green value (0-255).
*
* @var int
*/
protected int $green;
/**
* The blue value (0-255).
*
* @var int
*/
protected int $blue;
/**
* Create a new RGB color.
*
* @param int $red
* The red (0-255)
* @param int $green
* The green (0-255)
* @param int $blue
* The blue (0-255)
* @param float $opacity
* The opacity.
*/
public function __construct(int $red, int $green, int $blue, float $opacity) {
$this->red = max(0, min(255, $red));
$this->green = max(0, min(255, $green));
$this->blue = max(0, min(255, $blue));
$this->opacity = $opacity;
}
/**
* Get the red value (rounded).
*
* @return int
* The red value
*/
public function getRed() : int {
return $this->red;
}
/**
* Get the green value (rounded).
*
* @return int
* The green value
*/
public function getGreen() : int {
return $this->green;
}
/**
* Get the blue value (rounded).
*
* @return int
* The blue value
*/
public function getBlue() : int {
return $this->blue;
}
/**
* A string representation of this color in the current format.
*
* @param bool $opacity
* Whether to display the opacity.
*
* @return string
* The color in format: #RRGGBB
*/
public function toString(bool $opacity = TRUE) : string {
$output = $opacity ? 'rgba(' . $this->getRed() . ',' . $this->getGreen() . ',' . $this->getBlue() . ',' . $this->getOpacity() . ')' : 'rgb(' . $this->getRed() . ',' . $this->getGreen() . ',' . $this->getBlue() . ')';
return strtolower($output);
}
/**
* {@inheritdoc}
*/
public function toHex() : ColorHex {
return new ColorHex($this->intToColorHex($this->getRed()) . $this->intToColorHex($this->getGreen()) . $this->intToColorHex($this->getBlue()), $this->intToColorHex($this->getOpacity() * 255));
}
/**
* {@inheritdoc}
*/
public function toRgb() : ColorRGB {
return $this;
}
/**
* {@inheritdoc}
*/
public function toHsl() : ColorHSL {
$r = $this->getRed() / 255;
$g = $this->getGreen() / 255;
$b = $this->getBlue() / 255;
$max = max($r, $g, $b);
$min = min($r, $g, $b);
$l = ($max + $min) / 2;
if ($max === $min) {
// Achromatic.
$h = $s = 0;
}
else {
$d = $max - $min;
$s = $l > 0.5 ? $d / (2 - $max - $min) : $d / ($max + $min);
switch ($max) {
case $r:
$h = ($g - $b) / $d + ($g < $b ? 6 : 0);
break;
case $g:
$h = ($b - $r) / $d + 2;
break;
case $b:
$h = ($r - $g) / $d + 4;
break;
}
$h /= 6;
}
$h = floor($h * 360);
$s = floor($s * 100);
$l = floor($l * 100);
return new ColorHSL(intval($h), intval($s), intval($l), $this->getOpacity());
}
/**
* Get a padded color value in hex format (00 - FF) from an int (0-255)
*
* @param int $color
* The color value.
*
* @return string
* The color value in hex format.
*/
protected function intToColorHex(int $color) : string {
return str_pad(dechex($color), 2, '0', STR_PAD_LEFT);
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title |
---|---|---|---|---|
ColorBase::$namedColors | public static | property | Named HTML colors. | |
ColorBase::$opacity | protected | property | The opacity of the color. | |
ColorBase::$patterns | public static | property | Regexes to match various color formats. | |
ColorBase::getOpacity | public | function | Get the opacity. | |
ColorBase::setOpacity | public | function | Set the opacity. | |
ColorRGB::$blue | protected | property | The blue value (0-255). | |
ColorRGB::$green | protected | property | The green value (0-255). | |
ColorRGB::$red | protected | property | The red value (0-255). | |
ColorRGB::getBlue | public | function | Get the blue value (rounded). | |
ColorRGB::getGreen | public | function | Get the green value (rounded). | |
ColorRGB::getRed | public | function | Get the red value (rounded). | |
ColorRGB::intToColorHex | protected | function | Get a padded color value in hex format (00 - FF) from an int (0-255) | |
ColorRGB::toHex | public | function | Get the color as a hex instance. | Overrides ColorInterface::toHex |
ColorRGB::toHsl | public | function | Get the color as an HSL instance. | Overrides ColorInterface::toHsl |
ColorRGB::toRgb | public | function | Get the color as an RGB instance. | Overrides ColorInterface::toRgb |
ColorRGB::toString | public | function | A string representation of this color in the current format. | Overrides ColorInterface::toString |
ColorRGB::__construct | public | function | Create a new RGB color. |