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

declare(strict_types=1);

namespace 
InterventionImageTypography;

use 
InterventionImageAlignment;
use 
InterventionImageExceptionsDirectoryNotFoundException;
use 
InterventionImageExceptionsFileNotFoundException;
use 
InterventionImageExceptionsFileNotReadableException;
use 
InterventionImageExceptionsFilesystemException;
use 
InterventionImageExceptionsInvalidArgumentException;
use 
InterventionImageInterfacesColorInterface;
use 
InterventionImageInterfacesFontInterface;
use 
InterventionImageTraitsCanParseFilePath;
use 
TypeError;
use 
ValueError;

class 
Font implements FontInterface
{
    use 
CanParseFilePath;

    public function 
__construct(
        protected ?
string $filepath = null,
        protected 
float $size = 12,
        protected 
float $angle = 0,
        protected 
string|ColorInterface $color = '000000',
        protected 
string|ColorInterface $strokeColor = 'ffffff',
        protected 
int $strokeWidth = 0,
        protected 
Alignment $alignmentHorizontal = Alignment::LEFT,
        protected 
Alignment $alignmentVertical = Alignment::BOTTOM,
        protected 
float $lineHeight = 1.25,
        protected ?
int $wrapWidth = null,
    ) {
        
//
    
}

    
/**
     * {@inheritdoc}
     *
     * @see FontInterface::setSize()
     */
    
public function setSize(float $size): FontInterface
    
{
        
$this->size = $size;

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     *
     * @see FontInterface::size()
     */
    
public function size(): float
    
{
        return 
$this->size;
    }

    
/**
     * {@inheritdoc}
     *
     * @see FontInterface::setAngle()
     */
    
public function setAngle(float $angle): FontInterface
    
{
        
$this->angle = $angle;

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     *
     * @see FontInterface::angle()
     */
    
public function angle(): float
    
{
        return 
$this->angle;
    }

    
/**
     * {@inheritdoc}
     *
     * @see FontInterface::setFilepath()
     *
     * @throws InvalidArgumentException
     * @throws DirectoryNotFoundException
     * @throws FileNotFoundException
     * @throws FileNotReadableException
     */
    
public function setFilepath(string $path): FontInterface
    
{
        
$this->filepath = self::readableFilePathOrFail($path);

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     *
     * @see FontInterface::filepath()
     */
    
public function filepath(): ?string
    
{
        try {
            return 
self::readableFilePathOrFail($this->filepath);
        } catch (
FilesystemException | InvalidArgumentException) {
            return 
null;
        }
    }

    
/**
     * {@inheritdoc}
     *
     * @see FontInterface::hasFile()
     */
    
public function hasFile(): bool
    
{
        return 
$this->filepath() !== null;
    }

    
/**
     * {@inheritdoc}
     *
     * @see FontInterface::setColor()
     */
    
public function setColor(string|ColorInterface $color): FontInterface
    
{
        
$this->color = $color;

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     *
     * @see FontInterface::color()
     */
    
public function color(): null|string|ColorInterface
    
{
        return 
$this->color;
    }

    
/**
     * {@inheritdoc}
     *
     * @see FontInterface::setStrokeColor()
     */
    
public function setStrokeColor(string|ColorInterface $color): FontInterface
    
{
        
$this->strokeColor = $color;

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     *
     * @see FontInterface::strokeColor()
     */
    
public function strokeColor(): null|string|ColorInterface
    
{
        return 
$this->strokeColor;
    }

    
/**
     * {@inheritdoc}
     *
     * @see FontInterface::setStrokeWidth()
     *
     * @throws InvalidArgumentException
     */
    
public function setStrokeWidth(int $width): FontInterface
    
{
        if (!
in_array($width, range(0, 10))) {
            throw new 
InvalidArgumentException(
                
'The stroke width must be in the range from 0 to 10',
            );
        }

        
$this->strokeWidth = $width;

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     *
     * @see FontInterface::strokeWidth()
     */
    
public function strokeWidth(): int
    
{
        return 
$this->strokeWidth;
    }

    
/**
     * {@inheritdoc}
     *
     * @see FontInterface::hasStrokeEffect()
     */
    
public function hasStrokeEffect(): bool
    
{
        return 
$this->strokeWidth > 0;
    }

    
/**
     * {@inheritdoc}
     *
     * @see FontInterface::alignmentHorizontal()
     */
    
public function alignmentHorizontal(): Alignment
    
{
        return 
$this->alignmentHorizontal;
    }

    
/**
     * {@inheritdoc}
     *
     * @see FontInterface::setAlignmentHorizontal()
     *
     * @throws InvalidArgumentException
     */
    
public function setAlignmentHorizontal(string|Alignment $alignment): FontInterface
    
{
        try {
            
$this->alignmentHorizontal = is_string($alignment) ? Alignment::from($alignment) : $alignment;
        } catch (
ValueError | TypeError) {
            throw new 
InvalidArgumentException('Invalid value for alignment');
        }

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     *
     * @see FontInterface::alignmentVertical()
     */
    
public function alignmentVertical(): Alignment
    
{
        return 
$this->alignmentVertical;
    }

    
/**
     * {@inheritdoc}
     *
     * @see FontInterface::setAlignmentVertical()
     *
     * @throws InvalidArgumentException
     */
    
public function setAlignmentVertical(string|Alignment $alignment): FontInterface
    
{
        try {
            
$this->alignmentVertical = is_string($alignment) ? Alignment::from($alignment) : $alignment;
        } catch (
ValueError | TypeError) {
            throw new 
InvalidArgumentException('Invalid value for alignment');
        }

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     *
     * @see FontInterface::setLineHeight()
     */
    
public function setLineHeight(float $height): FontInterface
    
{
        
$this->lineHeight = $height;

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     *
     * @see FontInterface::lineHeight()
     */
    
public function lineHeight(): float
    
{
        return 
$this->lineHeight;
    }

    
/**
     * {@inheritdoc}
     *
     * @see FontInterface::setWrapWidth()
     */
    
public function setWrapWidth(?int $width): FontInterface
    
{
        
$this->wrapWidth = $width;

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     *
     * @see FontInterface::wrapWidth()
     */
    
public function wrapWidth(): ?int
    
{
        return 
$this->wrapWidth;
    }
}
Онлайн: 3
Реклама