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

declare(strict_types=1);

namespace 
InterventionImage;

use 
Error;
use 
InterventionImageExceptionsInvalidArgumentException;

enum Alignmentstring
{
    case 
TOP 'top';
    case 
TOP_RIGHT 'top-right';
    case 
RIGHT 'right';
    case 
BOTTOM_RIGHT 'bottom-right';
    case 
BOTTOM 'bottom';
    case 
BOTTOM_LEFT 'bottom-left';
    case 
LEFT 'left';
    case 
TOP_LEFT 'top-left';
    case 
CENTER 'center';

    
/**
     * Create position from given identifier.
     *
     * @throws InvalidArgumentException
     */
    
public static function create(string|self $identifier): self
    
{
        if (
$identifier instanceof self) {
            return 
$identifier;
        }

        try {
            
$position self::from(strtolower($identifier));
        } catch (
Error) {
            
$position match (strtolower($identifier)) {
                
'top-center',
                
'top_center',
                
'topcenter',
                
'center-top',
                
'center_top',
                
'centertop',
                
'top-middle',
                
'top_middle',
                
'topmiddle',
                
'middle-top',
                
'middle_top',
                
'middletop' => self::TOP,

                
'top_right',
                
'topright',
                
'right-top',
                
'right_top',
                
'righttop' => self::TOP_RIGHT,

                
'right-center',
                
'right_center',
                
'rightcenter',
                
'center-right',
                
'center_right',
                
'centerright',
                
'right-middle',
                
'right_middle',
                
'rightmiddle',
                
'middle-right',
                
'middle_right',
                
'middleright' => self::RIGHT,

                
'bottom_right',
                
'bottomright',
                
'right-bottom',
                
'right_bottom',
                
'rightbottom' => self::BOTTOM_RIGHT,

                
'bottom-center',
                
'bottom_center',
                
'bottomcenter',
                
'center-bottom',
                
'center_bottom',
                
'centerbottom',
                
'bottom-middle',
                
'bottom_middle',
                
'bottommiddle',
                
'middle-bottom',
                
'middle_bottom',
                
'middlebottom' => self::BOTTOM,

                
'bottom_left',
                
'bottomleft',
                
'left-bottom',
                
'left_bottom',
                
'leftbottom' => self::BOTTOM_LEFT,

                
'left-center',
                
'left_center',
                
'leftcenter',
                
'center-left',
                
'center_left',
                
'centerleft',
                
'left-middle',
                
'left_middle',
                
'leftmiddle',
                
'middle-left',
                
'middle_left',
                
'middleleft' => self::LEFT,

                
'top_left',
                
'topleft',
                
'left-top',
                
'left_top',
                
'lefttop' => self::TOP_LEFT,

                
'middle',
                
'center-center',
                
'center_center',
                
'centercenter',
                
'center-middle',
                
'center_middle',
                
'centermiddle',
                
'middle-center',
                
'middle_center',
                
'middlecenter' => self::CENTER,

                default => throw new 
InvalidArgumentException(
                    
'Unable to create ' self::class . ' from "' $identifier '"',
                ),
            };
        }

        return 
$position;
    }

    
/**
     * Try to create position from given identifier or return null on failure.
     */
    
public static function tryCreate(string|self $identifier): ?self
    
{
        try {
            return 
self::create($identifier);
        } catch (
InvalidArgumentException) {
            return 
null;
        }
    }

    
/**
     * Change the current alignment by adjusting only the horizontal axis to the specified value.
     */
    
public function alignHorizontally(string|self $alignment): self
    
{
        
// handle "leftish" alignments
        
if (in_array($alignment, [self::LEFTself::BOTTOM_LEFTself::TOP_LEFT])) {
            return 
match ($this) {
                
self::TOPself::TOP_RIGHTself::TOP_LEFT => self::TOP_LEFT,
                
self::BOTTOMself::BOTTOM_RIGHTself::BOTTOM_LEFT => self::BOTTOM_LEFT,
                
self::CENTERself::LEFTself::RIGHT => self::LEFT,
            };
        }

        
// handle "rightish" alignments
        
if (in_array($alignment, [self::RIGHTself::TOP_RIGHTself::BOTTOM_RIGHT])) {
            return 
match ($this) {
                
self::TOPself::TOP_RIGHTself::TOP_LEFT => self::TOP_RIGHT,
                
self::BOTTOMself::BOTTOM_RIGHTself::BOTTOM_LEFT => self::BOTTOM_RIGHT,
                
self::CENTERself::LEFTself::RIGHT => self::RIGHT,
            };
        }

        
// handle centering
        
if (in_array($alignment, [self::CENTERself::TOPself::BOTTOM])) {
            return 
match ($this) {
                
self::TOPself::TOP_RIGHTself::TOP_LEFT => self::TOP,
                
self::BOTTOMself::BOTTOM_RIGHTself::BOTTOM_LEFT => self::BOTTOM,
                
self::CENTERself::LEFTself::RIGHT => self::CENTER,
            };
        }

        return 
$this;
    }

    
/**
     * Change the current alignment by adjusting only the vertical axis to the specified value.
     */
    
public function alignVertically(string|self $alignment): self
    
{
        
// handle "bottomish" alignments
        
if (in_array($alignment, [self::BOTTOMself::BOTTOM_RIGHTself::BOTTOM_LEFT])) {
            return 
match ($this) {
                
self::LEFTself::TOP_LEFTself::BOTTOM_LEFT => self::BOTTOM_LEFT,
                
self::RIGHTself::TOP_RIGHTself::BOTTOM_RIGHT => self::BOTTOM_RIGHT,
                
self::CENTERself::TOPself::BOTTOM => self::BOTTOM,
            };
        }

        
// handle "topish" alignments
        
if (in_array($alignment, [self::TOPself::TOP_RIGHTself::TOP_LEFT])) {
            return 
match ($this) {
                
self::LEFTself::TOP_LEFTself::BOTTOM_LEFT => self::TOP_LEFT,
                
self::RIGHTself::TOP_RIGHTself::BOTTOM_RIGHT => self::TOP_RIGHT,
                
self::CENTERself::TOPself::BOTTOM => self::TOP,
            };
        }

        
// handle centering
        
if (in_array($alignment, [self::CENTERself::RIGHTself::LEFT])) {
            return 
match ($this) {
                
self::LEFTself::TOP_LEFTself::BOTTOM_LEFT => self::LEFT,
                
self::RIGHTself::TOP_RIGHTself::BOTTOM_RIGHT => self::RIGHT,
                
self::CENTERself::TOPself::BOTTOM => self::CENTER,
            };
        }

        return 
$this;
    }

    
/**
     * Return only the horizontal alignment.
     */
    
public function horizontal(): self
    
{
        return 
match ($this) {
            
self::TOPself::CENTERself::BOTTOM => self::CENTER,
            
self::RIGHTself::TOP_RIGHTself::BOTTOM_RIGHT => self::RIGHT,
            
self::LEFTself::TOP_LEFTself::BOTTOM_LEFT => self::LEFT,
        };
    }

    
/**
     * Return only the vertical alignment.
     */
    
public function vertical(): self
    
{
        return 
match ($this) {
            
self::CENTERself::RIGHTself::LEFT => self::CENTER,
            
self::TOPself::TOP_RIGHTself::TOP_LEFT => self::TOP,
            
self::BOTTOMself::BOTTOM_RIGHTself::BOTTOM_LEFT => self::BOTTOM,
        };
    }
}
Онлайн: 2
Реклама