File "colorpicker.class.php"
Full Path: /home/vantageo/public_html/cache/cache/cache/cache/cache/cache/cache/.wp-cli/wp-content/plugins/revslider/includes/framework/colorpicker.class.php
File size: 9.03 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* @author ThemePunch <info@themepunch.com>
* @link http://www.themepunch.com/
* @version: 1.0.5 (13.6.2018)
* @copyright 2017 ThemePunch
*/
if( !defined( 'ABSPATH') ) exit();
if(!class_exists('TPColorpicker')){
class TPColorpicker {
/**
* @since 5.3.1.6
*/
public function __construct(){
add_filter(AJAX_ACTION, array($this, 'init_ajax'), 10, 6);
}
/**
* @since 5.3.1.6
*/
public static $isColor = '/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i';
/**
* best option for frontend
* @since 5.3.1.6
*/
public static function get($val) {
if(!$val || empty($val)) return 'transparent';
$process = TPColorpicker::process($val, true);
return $process[0];
}
/**
* return usable CSS value from stored color data value
* @since 5.3.1.6
*/
public static function parse($val, $prop, $returnColorType){
$val = TPColorpicker::process($val, true);
$ar = array();
if(!$prop) $ar[0] = $val[0];
else $ar[0] = $prop + ': ' + $val[0] + ';';
if($returnColorType) $ar[1] = $val[1];
return $ar;
}
/**
* convert hex and opacity to rgba
* @since 5.3.1.6
*/
public static function convert($color, $opacity){
if( $opacity == "transparent" ){
return 'rgba(0,0,0,0)';
}
if($color=="" ) return '';
if(strpos($color, "[{") !== false || strpos($color,'gradient') !== false ) return TPColorpicker::get($color);
if(!is_bool($opacity) && "".$opacity === "0"){
return 'transparent';
}
if($opacity==-1 || !$opacity || empty($opacity) || !is_numeric($opacity) || $color == "transparent" || $opacity === 1 || $opacity == 100 ) {
if(strpos($color,'rgba') === false && strpos($color,'#') !== false) {
return TPColorpicker::processRgba(TPColorpicker::sanitizeHex($color), $opacity);
}
else {
$color = TPColorpicker::process($color, true);
return $color[0];
}
}
$opacity = floatval($opacity);
if($opacity < 1) $opacity = $opacity * 100;
$opacity = round($opacity);
$opacity = $opacity > 100 ? 100 : $opacity;
$opacity = $opacity < -1 ? 0 : $opacity;
if($opacity === 0) return 'transparent';
if(strpos($color,'#') !== false ) {
return TPColorpicker::processRgba(TPColorpicker::sanitizeHex($color), $opacity);
}
else if(strpos($color, 'rgb') !== false) {
$color = TPColorpicker::rgbValues($color, 3);
return TPColorpicker::rgbaString($color[0], $color[1], $color[2], $opacity);
}
return 'transparent';
}
/**
* core function for converting ColorPicker input values
* @since 5.3.1.6
*/
public static function process($clr, $processColor = false){
if(empty($clr)) return array('transparent', 'transparent');
if(!is_string($clr) ) {
if($processColor) $clr = TPColorpicker::sanatizeGradient($clr);
return array( TPColorpicker::processGradient($clr), 'gradient', $clr );
}
else if( trim($clr) == 'transparent' ) {
return array('transparent', 'transparent');
}
else if( strpos( $clr, "[{" ) !== false ) {
try {
$clr = json_decode( str_replace("amp;", '',str_replace("&", '"', $clr)) );
if($processColor) $clr = TPColorpicker::sanatizeGradient($clr);
return array(TPColorpicker::processGradient($clr), 'gradient', $clr);
}
catch (Exception $e) {
return '{"type":"linear","angle":"0","colors":[{"r":"255","g":"255","b":"255","a":"1","position":"0","align":"bottom"},{"r":"0","g":"0","b":"0","a":"1","position":"100","align":"bottom"}]}';
}
}
else if( strpos($clr,'#') !== false ) {
return array(TPColorpicker::sanitizeHex($clr), 'hex');
}
else if( strpos($clr,'rgba') !== false ) {
$clr = preg_replace( '/\s+/', '', $clr ) ;
return array($clr, 'rgba');
}
else if( strpos($clr,'rgb') !== false ) {
$clr = preg_replace('/\s+/', '', $clr);
return array($clr, 'rgb');
}
else if(preg_match(TPColorpicker::$isColor, $clr) !== false) {
$clr = preg_replace('/\s+/', '', $clr);
return array($clr, 'hex');
}
return array('transparent', 'transparent');
}
/**
* clean up duplicate values in gradient
* @since 5.3.1.6
*/
public static function sanatizeGradient($obj) {
$colors = $obj->colors;
$len = sizeof($colors);
$ar = array();
for($i = 0; $i < $len; $i++) {
$cur = $colors[$i];
unset($cur->align);
if( isset($prev) ) {
if(json_encode($cur) !== json_encode($prev)) {
$ar[sizeof($ar)] = $cur;
}
}
else {
$ar[sizeof($ar)] = $cur;
}
$prev = $cur;
}
$obj->colors = $ar;
return $obj;
}
/**
* convert gradient object to CSS background gradient value
* @since 5.3.1.6
*/
public static function processGradient($obj){
$tpe = $obj->type;
$begin = $tpe . '-gradient(';
$middle = $tpe === 'linear' ? $obj->angle . 'deg, ' : 'ellipse at center, ';
$colors = $obj->colors;
$len = sizeof($colors);
$end = '';
for($i = 0; $i < $len; $i++) {
if($i > 0) $end .= ', ';
$clr = $colors[$i];
$end .= 'rgba(' . $clr->r . ',' . $clr->g . ',' . $clr->b . ',' . $clr->a . ') ' . $clr->position . '%';
}
return $begin . $middle . $end . ')';
}
/**
* convert rgb values to CSS value
* @since 5.3.1.6
*/
public static function rgbValues($values, $num) {
$values = substr( $values, strpos($values, '(') + 1 , strpos($values, ')')-strpos($values, '(') - 1 );
$values = explode(",", $values);
if(sizeof($values) == 3 && $num == 4) $values[3] = '1';
for($i = 0; $i < $num; $i++) {
if(isset($values[$i])) $values[$i] = trim($values[$i]);
}
return $values;
}
/**
* convert rgba data values to CSS value
* @since 5.3.1.6
*/
public static function rgbaString($r, $g, $b, $a) {
if($a > 1){
$a = "".number_format($a * 0.01 , 2);
$a = str_replace(".00", "", $a);
}
return 'rgba(' . $r . ',' . $g . ',' . $b . ',' . $a . ')';
}
/**
* convert rgb to hex
* @since 5.3.1.6
*/
public static function rgbToHex($clr) {
$values = TPColorpicker::rgbValues($clr, 3);
return TPColorpicker::getRgbToHex($values[0], $values[1], $values[2]);
}
/**
* convert rgba to hex
* @since 5.3.1.6
*/
public static function rgbaToHex($clr) {
$values = TPColorpicker::rgbValues($clr, 4);
return array(TPColorpicker::getRgbToHex($values[0], $values[1], $values[2]), $values[3]);
}
/**
* get opacity value from rgba
* @since 5.3.1.6
*/
public static function getOpacity($val){
$rgb = TPColorpicker::rgbValues($val, 4);
return intval($rgb[3] * 100, 10) + '%';
}
/**
* convert rgb to hex
* @since 5.3.1.6
*/
public static function getRgbToHex($r, $g, $b){
$rgb = array($r, $g, $b);
$hex = "#";
$hex .= str_pad(dechex($rgb[0]), 2, "0", STR_PAD_LEFT);
$hex .= str_pad(dechex($rgb[1]), 2, "0", STR_PAD_LEFT);
$hex .= str_pad(dechex($rgb[2]), 2, "0", STR_PAD_LEFT);
return $hex;
}
/**
* convert hex and opacity values to rgba
* @since 5.3.1.6
*/
public static function joinToRgba($val){
$val = explode('||', $val);
return TPColorpicker::convert($val[0], $val[1]);
}
/**
* convert hex to rgba
* @since 5.3.1.6
*/
public static function processRgba($hex, $opacity=false){
$hex = trim(str_replace('#', '' , $hex));
$rgb = $opacity!==false ? 'rgba' : 'rgb';
$r = hexdec(substr($hex,0,2));
$g = hexdec(substr($hex,2,2));
$b = hexdec(substr($hex,4,2));
$color = $rgb . "(" . $r . "," . $g . "," . $b ;
if($opacity!==false){
if($opacity > 1)
$opacity = "".number_format($opacity * 0.01 , 2);
$opacity = str_replace(".00", "", $opacity);
$color .= ',' . $opacity;
}
$color .= ')';
return $color;
}
/**
* sanitize hex color values
* @since 5.3.1.6
*/
public static function sanitizeHex($hex){
$hex = trim(str_replace('#', '' , $hex));
if (strlen($hex) == 3) {
$hex[5] = $hex[2]; // f60##0
$hex[4] = $hex[2]; // f60#00
$hex[3] = $hex[1]; // f60600
$hex[2] = $hex[1]; // f66600
$hex[1] = $hex[0]; // ff6600
}
return '#'.$hex;
}
/**
* Save presets
* @since 5.3.2
*/
public static function save_color_presets($presets){
update_option('tp_colorpicker_presets', $presets);
return self::get_color_presets();
}
/**
* Load presets
* @since 5.3.2
*/
public static function get_color_presets(){
return get_option('tp_colorpicker_presets', array());
}
}
}
?>