Вход Регистрация
Файл: vendor/intervention/image/src/Colors/Cmyk/Colorspace.php
Строк: 106
<?php

declare(strict_types=1);

namespace 
InterventionImageColorsCmyk;

use 
InterventionImageColorsRgbColor as RgbColor;
use 
InterventionImageColorsCmykColor as CmykColor;
use 
InterventionImageColorsHsvColor as HsvColor;
use 
InterventionImageColorsHslColor as HslColor;
use 
InterventionImageColorsRgbColorspace as RgbColorspace;
use 
InterventionImageExceptionsColorException;
use 
InterventionImageInterfacesColorInterface;
use 
InterventionImageInterfacesColorspaceInterface;

class 
Colorspace implements ColorspaceInterface
{
    
/**
     * Channel class names of colorspace
     *
     * @var array<string>
     */
    
public static array $channels = [
        
ChannelsCyan::class,
        
ChannelsMagenta::class,
        
ChannelsYellow::class,
        
ChannelsKey::class
    ];

    
/**
     * {@inheritdoc}
     *
     * @see ColorspaceInterface::createColor()
     */
    
public function colorFromNormalized(array $normalized): ColorInterface
    
{
        return new 
Color(...array_map(
            
fn(string $classnamefloat $value_normalized) => (new $classname(normalized$value_normalized))->value(),
            
self::$channels,
            
$normalized,
        ));
    }

    
/**
     * @param ColorInterface $color
     * @return ColorInterface
     * @throws ColorException
     */
    
public function importColor(ColorInterface $color): ColorInterface
    
{
        return 
match ($color::class) {
            
RgbColor::class => $this->importRgbColor($color),
            
HsvColor::class => $this->importRgbColor($color->convertTo(RgbColorspace::class)),
            
HslColor::class => $this->importRgbColor($color->convertTo(RgbColorspace::class)),
            default => 
$color,
        };
    }

    
/**
     * @param ColorInterface $color
     * @return Color
     * @throws ColorException
     */
    
protected function importRgbColor(ColorInterface $color): CmykColor
    
{
        if (!(
$color instanceof RgbColor)) {
            throw new 
ColorException('Unabled to import color of type ' $color::class . '.');
        }

        
$c = (255 $color->red()->value()) / 255.0 100;
        
$m = (255 $color->green()->value()) / 255.0 100;
        
$y = (255 $color->blue()->value()) / 255.0 100;
        
$k intval(round(min([$c$m$y])));

        
$c intval(round($c $k));
        
$m intval(round($m $k));
        
$y intval(round($y $k));

        return new 
CmykColor($c$m$y$k);
    }
}
Онлайн: 1
Реклама