Functions: Mods to support color manipulations for waveform generation.

This commit is contained in:
fusionate 2024-02-09 13:05:38 -07:00
parent 504d3a6bf2
commit 0be7204762
No known key found for this signature in database
1 changed files with 33 additions and 3 deletions

View File

@ -1135,29 +1135,59 @@
//function to convert hexidecimal color value to rgb string/array value
if (!function_exists('hex_to_rgb')) {
function hex_to_rgb($hex, $delim = '') {
function hex_to_rgb($hex, $delim = null, $include_alpha = false, $alpha = 1) {
$hex = str_replace("#", "", $hex);
if (strlen($hex) == 3) {
$r = hexdec(substr($hex, 0, 1) . substr($hex, 0, 1));
$g = hexdec(substr($hex, 1, 1) . substr($hex, 1, 1));
$b = hexdec(substr($hex, 2, 1) . substr($hex, 2, 1));
} else {
}
else {
$r = hexdec(substr($hex, 0, 2));
$g = hexdec(substr($hex, 2, 2));
$b = hexdec(substr($hex, 4, 2));
}
$rgb = array($r, $g, $b);
if ($include_alpha) { $rgb[] = $alpha; }
if (!empty($delim)) {
return implode($delim, $rgb); // return rgb delimited string
} else {
}
else {
return $rgb; // return array of rgb values
}
}
}
//function to convert a hex or rgb/a color to an rgba array
if (!function_exists('color_to_rgba_array')) {
function color_to_rgba_array($string, $alpha = null) {
if (!empty($string)) {
if (strpos($string, '#') === 0) { //is hex
return hex_to_rgb($string, null, true, $alpha);
}
else if (strpos($string, 'rgb') === 0) { //is rgb/a
$string = str_replace(['rgba(','rgb(',')'], '', $string); //values to csv
$array = explode(',', $string); //create array
if (!empty($array)) {
if (@sizeof($array) == 3) { //add alpha
$array[] = $alpha ?? 1;
}
else if (@sizeof($array) == 4 && !empty($alpha)) { //replace alpha
$array[3] = $alpha;
}
}
return !empty($array) && is_array($array) ? $array : false;
}
}
return false;
}
}
//function to get a color's luminence level -- dependencies: rgb_to_hsl()
if (!function_exists('get_color_luminence')) {