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

namespace PrimalColor;

class 
Wheel implements Iterator, Countable {
    
    protected 
$total = 20;
    protected 
$step = 18;
    protected 
$startHue = 0;
    protected 
$startSat = 100;
    protected 
$lum = 50;
    protected 
$position = 0;
    
    public 
$luminance_step = 360;
    public 
$luminance_pad_left = 0;
    public 
$luminance_pad_right = 0;
    public 
$luminance_delta = 1;

    public function 
__construct($count = null, $start = null) {
        if (
$count !== null) $this->setTotalColors($count);
        if (
$start !== null) $this->setStartColor($start);
    }
    
    public function 
setStartColor($input) {
        
$col = Parser::Parse($input)->toHSL();
        
$this->startHue = $col->hue;
        
$this->startSat = $col->saturation;
        
$this->lum = $col->luminance;
        
        return 
$this;
    }
    
    public function 
setTotalColors($count) {
        
$this->total = $count;

        
$this->step = ($this->total) 
            ? 
355 / min($count, $this->luminance_step) //355 instead of 360 so we don't run into the same color from the start
            
: 0;
            
        return 
$this;
    }
    
    public function 
setLuminanceThreshold($limit = 360, $delta = 1, $pad_left = 0, $pad_right = 0) {
        
$this->luminance_step = $limit;
        
$this->luminance_delta = $delta;
        
$this->luminance_pad_left  = $pad_left;
        
$this->luminance_pad_right = $pad_right;

        
$this->step = ($this->total) 
            ? 
355 / min($this->total, $this->luminance_step) //355 instead of 360 so we don't run into the same color from the start
            
: 0;

    }
    
    public function 
getArray() {
        
$results = array();
        foreach (
$this as $color) $results[] = $color;
        return 
$results;
    }
    
/**
    Iterator
*/
    
    
function rewind() {
        
$this->position = 0;
    }

    function 
current() {
        
$h = $this->startHue + ($this->step * ($this->position % $this->luminance_step));
        
$s = $this->startSat;
        
        
$l = (
            
$this->lum + 
            
$this->luminance_delta * (
                
floor(
                    
$this->position / 
                    
$this->luminance_step
                
) *
                
10
            
)
        );
        
        if (
$l < 0) $l = 100 + $l;
        
        
$l = (
            ((
$l - $this->luminance_pad_left) % (100 - ($this->luminance_pad_right + $this->luminance_pad_left))) + $this->luminance_pad_left
        
);
        
        
$col = new HSLColor($h, $s, $l);
        return 
$col->toRGB()->toHex();
    }

    function 
key() {
        return 
$this->position;
    }

    function 
next() {
        
$this->position++;
    }

    function 
valid() {
        return 
$this->position >= 0 && $this->position < $this->total;
    }
    
    function 
count() {
        return 
$this->total;
    }
    
    
}
Онлайн: 2
Реклама