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

namespace PrimalColor;

class 
Wheel implements IteratorCountable {
    
    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 >= && $this->position $this->total;
    }
    
    function 
count() {
        return 
$this->total;
    }
    
    
}
Онлайн: 1
Реклама