Вход Регистрация
Файл: concrete5.7.5.6/concrete/vendor/primal/color/lib/Primal/Color/Parser.php
Строк: 244
<?php 

namespace PrimalColor;

class 
Parser {
    
    protected 
$chunks;
    protected 
$result;


    function 
__construct($input) {
        
        if (
$input instanceof Color) {
            
$this->result $input;
            return;
        }
        
        
//first see if it's a named color. if it is, set our result and end there.
        
if (($result = static::GetNamedColor($input)) !== false) {
            
$this->result $result;
            return;
        }
        
        
//see if we have a pattern to match the input, throw an exception
        
if (($type $this->findPattern($input)) === false) {
            throw new 
UnknownFormatException("Color did not match any available patterns.");
        }
        
        
$this->type $type;
        
        if (
is_callable(array($this$type))) {
            
$this->$type();
        } else {
            throw new 
ParserException("Input was matched to type $type, but no matching parser function was found.");
        }
        
    }
    
    function 
getResult() {
        return 
$this->result;
    }
    
    static function 
Parse($input) {
        
$self = new static($input);
        return 
$self->getResult();
    }
    
    protected function 
findPattern($input) {
        foreach (static::
$patterns as $type=>$pattern) {
            
$chunks = array();
            if (
preg_match($pattern$input$chunks)) {
                
$this->chunks $chunks;
                return 
$type;
            }
        }
        return 
false;
    }
    
    
    protected static function 
GetNamedColor($input) {
        
$input strtolower($input);
        if (!isset(static::
$named_colors[$input])) {
            return 
false;
        }
        
        
$chunks = array();
        if (
preg_match(static::$patterns['hex6'], static::$named_colors[$input], $chunks)) {
            return new 
RGBColor(hexdec($chunks[1]), hexdec($chunks[2]), hexdec($chunks[3]));
        }
        
        return 
false;
    }

    
    
//parser functions
    
function cmyk () {$this->result = new CMYKColor((float)$this->chunks[1] * 100, (float)$this->chunks[2] * 100, (float)$this->chunks[3] * 100, (float)$this->chunks[4] * 100);}
    function 
rgba () {$this->result = new RGBColor((int)$this->chunks[1], (int)$this->chunks[2], (int)$this->chunks[3], (float)$this->chunks[4]);}
    function 
rgb  () {$this->result = new RGBColor((int)$this->chunks[1], (int)$this->chunks[2], (int)$this->chunks[3]);}
    function 
hsla () {$this->result = new HSLColor((int)$this->chunks[1], (int)$this->chunks[2], (int)$this->chunks[3], (float)$this->chunks[4]);}
    function 
hsl  () {$this->result = new HSLColor((int)$this->chunks[1], (int)$this->chunks[2], (int)$this->chunks[3]);}
    function 
hsva () {$this->result = new HSVColor((int)$this->chunks[1], (int)$this->chunks[2], (int)$this->chunks[3], (float)$this->chunks[4]);}
    function 
hsv  () {$this->result = new HSVColor((int)$this->chunks[1], (int)$this->chunks[2], (int)$this->chunks[3]);}
    function 
hex6 () {$this->result = new RGBColor(hexdec($this->chunks[1]), hexdec($this->chunks[2]), hexdec($this->chunks[3]));}
    function 
hex3 () {$this->result = new RGBColor(hexdec($this->chunks[1])*16hexdec($this->chunks[2])*16hexdec($this->chunks[3])*16);}

    
    static 
$patterns = array(
        
'cmyk'  => '/^(?:device-)?cmyk((d{1,3}),s*(d{1,3}),s*(d{1,3}),s*(d+(?:.d+)?|.d+)s*)/',
        
'rgba'  => '/^rgba((d{1,3}),s*(d{1,3}),s*(d{1,3}),s*(d+(?:.d+)?|.d+)s*)/',
        
'rgb'   => '/^rgb((d{1,3}),s*(d{1,3}),s*(d{1,3}))$/',
        
'hsla'  => '/^hsla((d{1,3}),s*(d{1,3})%,s*(d{1,3})%,s*(d+(?:.d+)?|.d+)s*)/',
        
'hsl'   => '/^hsl((d{1,3}),s*(d{1,3})%,s*(d{1,3})%)$/',
        
'hsva'  => '/^hsva((d{1,3}),s*(d{1,3})%,s*(d{1,3})%,s*(d+(?:.d+)?|.d+)s*)$/',
        
'hsv'   => '/^hsv((d{1,3}),s*(d{1,3})%,s*(d{1,3})%)$/',
        
'hex6'  => '/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/',
        
'hex3'  => '/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/'
    
);

    static 
$named_colors = array(
        
"aliceblue"               => "f0f8ff",
        
"antiquewhite"           => "faebd7",
        
"aqua"                   => "00ffff",
        
"aquamarine"           => "7fffd4",
        
"azure"                   => "f0ffff",
        
"beige"                   => "f5f5dc",
        
"bisque"               => "ffe4c4",
        
"black"                   => "000000",
        
"blanchedalmond"       => "ffebcd",
        
"blue"                   => "0000ff",
        
"blueviolet"           => "8a2be2",
        
"brown"                   => "a52a2a",
        
"burlywood"               => "deb887",
        
"cadetblue"               => "5f9ea0",
        
"chartreuse"           => "7fff00",
        
"chocolate"               => "d2691e",
        
"coral"                   => "ff7f50",
        
"cornflowerblue"       => "6495ed",
        
"cornsilk"               => "fff8dc",
        
"crimson"               => "dc143c",
        
"cyan"                   => "00ffff",
        
"darkblue"               => "00008b",
        
"darkcyan"               => "008b8b",
        
"darkgoldenrod"           => "b8860b",
        
"darkgray"               => "a9a9a9",
        
"darkgreen"               => "006400",
        
"darkkhaki"               => "bdb76b",
        
"darkmagenta"           => "8b008b",
        
"darkolivegreen"       => "556b2f",
        
"darkorange"           => "ff8c00",
        
"darkorchid"           => "9932cc",
        
"darkred"               => "8b0000",
        
"darksalmon"           => "e9967a",
        
"darkseagreen"           => "8fbc8f",
        
"darkslateblue"           => "483d8b",
        
"darkslategray"           => "2f4f4f",
        
"darkturquoise"           => "00ced1",
        
"darkviolet"           => "9400d3",
        
"deeppink"               => "ff1493",
        
"deepskyblue"           => "00bfff",
        
"dimgray"               => "696969",
        
"dodgerblue"           => "1e90ff",
        
"feldspar"               => "d19275",
        
"firebrick"               => "b22222",
        
"floralwhite"           => "fffaf0",
        
"forestgreen"           => "228b22",
        
"fuchsia"               => "ff00ff",
        
"gainsboro"               => "dcdcdc",
        
"ghostwhite"           => "f8f8ff",
        
"gold"                   => "ffd700",
        
"goldenrod"               => "daa520",
        
"gray"                   => "808080",
        
"green"                   => "008000",
        
"greenyellow"           => "adff2f",
        
"honeydew"               => "f0fff0",
        
"hotpink"               => "ff69b4",
        
"indianred "           => "cd5c5c",
        
"indigo "               => "4b0082",
        
"ivory"                   => "fffff0",
        
"khaki"                   => "f0e68c",
        
"lavender"               => "e6e6fa",
        
"lavenderblush"           => "fff0f5",
        
"lawngreen"               => "7cfc00",
        
"lemonchiffon"           => "fffacd",
        
"lightblue"               => "add8e6",
        
"lightcoral"           => "f08080",
        
"lightcyan"               => "e0ffff",
        
"lightgoldenrodyellow" => "fafad2",
        
"lightgrey"               => "d3d3d3",
        
"lightgreen"           => "90ee90",
        
"lightpink"               => "ffb6c1",
        
"lightsalmon"           => "ffa07a",
        
"lightseagreen"           => "20b2aa",
        
"lightskyblue"           => "87cefa",
        
"lightslateblue"       => "8470ff",
        
"lightslategray"       => "778899",
        
"lightsteelblue"       => "b0c4de",
        
"lightyellow"           => "ffffe0",
        
"lime"                   => "00ff00",
        
"limegreen"               => "32cd32",
        
"linen"                   => "faf0e6",
        
"magenta"               => "ff00ff",
        
"maroon"               => "800000",
        
"mediumaquamarine"       => "66cdaa",
        
"mediumblue"           => "0000cd",
        
"mediumorchid"           => "ba55d3",
        
"mediumpurple"           => "9370d8",
        
"mediumseagreen"       => "3cb371",
        
"mediumslateblue"       => "7b68ee",
        
"mediumspringgreen"       => "00fa9a",
        
"mediumturquoise"       => "48d1cc",
        
"mediumvioletred"       => "c71585",
        
"midnightblue"           => "191970",
        
"mintcream"               => "f5fffa",
        
"mistyrose"               => "ffe4e1",
        
"moccasin"               => "ffe4b5",
        
"navajowhite"           => "ffdead",
        
"navy"                   => "000080",
        
"oldlace"               => "fdf5e6",
        
"olive"                   => "808000",
        
"olivedrab"               => "6b8e23",
        
"orange"               => "ffa500",
        
"orangered"               => "ff4500",
        
"orchid"               => "da70d6",
        
"palegoldenrod"           => "eee8aa",
        
"palegreen"               => "98fb98",
        
"paleturquoise"           => "afeeee",
        
"palevioletred"           => "d87093",
        
"papayawhip"           => "ffefd5",
        
"peachpuff"               => "ffdab9",
        
"peru"                   => "cd853f",
        
"pink"                   => "ffc0cb",
        
"plum"                   => "dda0dd",
        
"powderblue"           => "b0e0e6",
        
"purple"               => "800080",
        
"red"                   => "ff0000",
        
"rosybrown"               => "bc8f8f",
        
"royalblue"               => "4169e1",
        
"saddlebrown"           => "8b4513",
        
"salmon"               => "fa8072",
        
"sandybrown"           => "f4a460",
        
"seagreen"               => "2e8b57",
        
"seashell"               => "fff5ee",
        
"sienna"               => "a0522d",
        
"silver"               => "c0c0c0",
        
"skyblue"               => "87ceeb",
        
"slateblue"               => "6a5acd",
        
"slategray"               => "708090",
        
"snow"                   => "fffafa",
        
"springgreen"           => "00ff7f",
        
"steelblue"               => "4682b4",
        
"tan"                   => "d2b48c",
        
"teal"                   => "008080",
        
"thistle"               => "d8bfd8",
        
"tomato"               => "ff6347",
        
"turquoise"               => "40e0d0",
        
"violet"               => "ee82ee",
        
"violetred"               => "d02090",
        
"wheat"                   => "f5deb3",
        
"white"                   => "ffffff",
        
"whitesmoke"           => "f5f5f5",
        
"yellow"               => "ffff00",
        
"yellowgreen"           => "9acd32"
    
);
    
}


class 
ParserException extends Exception {}
class 
UnknownFormatException extends ParserException {}
Онлайн: 1
Реклама