class Color
Same name in this branch
- 9 core/modules/color/src/Plugin/migrate/destination/Color.php \Drupal\color\Plugin\migrate\destination\Color
- 9 core/modules/color/src/Plugin/migrate/source/d7/Color.php \Drupal\color\Plugin\migrate\source\d7\Color
- 9 core/lib/Drupal/Core/Render/Element/Color.php \Drupal\Core\Render\Element\Color
Same name in other branches
- 8.9.x core/modules/color/src/Plugin/migrate/destination/Color.php \Drupal\color\Plugin\migrate\destination\Color
- 8.9.x core/modules/color/src/Plugin/migrate/source/d7/Color.php \Drupal\color\Plugin\migrate\source\d7\Color
- 8.9.x core/lib/Drupal/Core/Render/Element/Color.php \Drupal\Core\Render\Element\Color
- 8.9.x core/lib/Drupal/Component/Utility/Color.php \Drupal\Component\Utility\Color
- 10 core/lib/Drupal/Core/Render/Element/Color.php \Drupal\Core\Render\Element\Color
- 10 core/lib/Drupal/Component/Utility/Color.php \Drupal\Component\Utility\Color
- 11.x core/lib/Drupal/Core/Render/Element/Color.php \Drupal\Core\Render\Element\Color
- 11.x core/lib/Drupal/Component/Utility/Color.php \Drupal\Component\Utility\Color
Performs color conversions.
Hierarchy
- class \Drupal\Component\Utility\Color
Expanded class hierarchy of Color
7 files declare their use of Color
- color.module in core/
modules/ color/ color.module - Allows users to change the color scheme of themes.
- Color.php in core/
lib/ Drupal/ Core/ Render/ Element/ Color.php - ColorTest.php in core/
tests/ Drupal/ Tests/ Component/ Utility/ ColorTest.php - CreateNew.php in core/
modules/ system/ src/ Plugin/ ImageToolkit/ Operation/ gd/ CreateNew.php - GDToolkit.php in core/
modules/ system/ src/ Plugin/ ImageToolkit/ GDToolkit.php
37 string references to 'Color'
- AjaxCssTest::testCkeditorAjaxAddCss in core/
modules/ ckeditor/ tests/ src/ FunctionalJavascript/ AjaxCssTest.php - Tests adding style sheets dynamically to CKEditor.
- AjaxFormsTestSimpleForm::buildForm in core/
modules/ system/ tests/ modules/ ajax_forms_test/ src/ Form/ AjaxFormsTestSimpleForm.php - Form constructor.
- claro_preprocess_input in core/
themes/ claro/ claro.theme - Implements template_preprocess_HOOK() for input.
- color.info.yml in core/
modules/ color/ color.info.yml - core/modules/color/color.info.yml
- color.migrate_drupal.yml in core/
modules/ color/ migrations/ state/ color.migrate_drupal.yml - core/modules/color/migrations/state/color.migrate_drupal.yml
File
-
core/
lib/ Drupal/ Component/ Utility/ Color.php, line 8
Namespace
Drupal\Component\UtilityView source
class Color {
/**
* Validates whether a hexadecimal color value is syntactically correct.
*
* @param $hex
* The hexadecimal string to validate. May contain a leading '#'. May use
* the shorthand notation (e.g., '123' for '112233').
*
* @return bool
* TRUE if $hex is valid or FALSE if it is not.
*/
public static function validateHex($hex) {
if (!is_string($hex)) {
return FALSE;
}
return preg_match('/^[#]?([0-9a-fA-F]{3}){1,2}$/', $hex) === 1;
}
/**
* Parses a hexadecimal color string like '#abc' or '#aabbcc'.
*
* @param string $hex
* The hexadecimal color string to parse.
*
* @return array
* An array containing the values for 'red', 'green', 'blue'.
*
* @throws \InvalidArgumentException
*/
public static function hexToRgb($hex) {
if (!self::validateHex($hex)) {
throw new \InvalidArgumentException("'{$hex}' is not a valid hex value.");
}
// Ignore '#' prefixes.
$hex = ltrim($hex, '#');
// Convert shorthands like '#abc' to '#aabbcc'.
if (strlen($hex) == 3) {
$hex = $hex[0] . $hex[0] . $hex[1] . $hex[1] . $hex[2] . $hex[2];
}
$c = hexdec($hex);
return [
'red' => $c >> 16 & 0xff,
'green' => $c >> 8 & 0xff,
'blue' => $c & 0xff,
];
}
/**
* Converts RGB color arrays or strings to lowercase CSS notation.
*
* @param array|string $input
* The value to convert. If the value is an array the first three elements
* will be used as the red, green and blue components. String values in CSS
* notation like '10, 20, 30' are also supported.
*
* @return string
* The lowercase simple color representation of the given color.
*/
public static function rgbToHex($input) {
// Remove named array keys if input comes from Color::hex2rgb().
if (is_array($input)) {
$rgb = array_values($input);
}
elseif (is_string($input)) {
preg_match('/(\\d+), ?(\\d+), ?(\\d+)/', $input, $rgb);
array_shift($rgb);
}
$out = 0;
foreach ($rgb as $k => $v) {
$out |= $v << 16 - $k * 8;
}
return '#' . str_pad(dechex($out), 6, 0, STR_PAD_LEFT);
}
/**
* Normalize the hex color length to 6 characters for comparison.
*
* @param string $hex
* The hex color to normalize.
*
* @return string
* The 6 character hex color.
*/
public static function normalizeHexLength($hex) {
// Ignore '#' prefixes.
$hex = ltrim($hex, '#');
if (strlen($hex) === 3) {
$hex[5] = $hex[2];
$hex[4] = $hex[2];
$hex[3] = $hex[1];
$hex[2] = $hex[1];
$hex[1] = $hex[0];
}
return '#' . $hex;
}
}
Members
Title Sort descending | Modifiers | Object type | Summary |
---|---|---|---|
Color::hexToRgb | public static | function | Parses a hexadecimal color string like '#abc' or '#aabbcc'. |
Color::normalizeHexLength | public static | function | Normalize the hex color length to 6 characters for comparison. |
Color::rgbToHex | public static | function | Converts RGB color arrays or strings to lowercase CSS notation. |
Color::validateHex | public static | function | Validates whether a hexadecimal color value is syntactically correct. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.