Вход Регистрация
Файл: 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($widthrange(010))) {
            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;
    }
}
Онлайн: 1
Реклама