HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers95/rentman.io/app/Komma/Kms/Core/Attributes/Models/ImageProperty.php
<?php
/**
 * Created by PhpStorm.
 * User: julesgraus
 * Date: 14/12/17
 * Time: 09:27
 */

namespace App\Komma\Kms\Core\Attributes\Models;

class ImageProperty extends AbstractImageProperty
{
    /**
     * @const int CropFit Fits the image in width and height
     */
    const Fit = 1;

    const Crop = 2;

    const Resize = 3;

    /** @var string */
    private $name;

    /** @var int */
    private $width;

    /** @var int */
    private $height;

    /** @var int */
    private $cropMethod;

    /**
     * ImageProperty constructor.
     */
    public function __construct()
    {
        $this->width = $this->height = 0;
    }

    /**
     * @return string Gets the name of this ImagePropertyInterface instance
     */
    public function getName(): string
    {
        return $this->name;
    }

    /**
     * Sets the name of this ImagePropertyInterface instance and returns itself
     *
     * @param string $name
     * @return AbstractImageProperty
     */
    public function setName(string $name): AbstractImageProperty
    {
        $this->name = $name;

        return $this;
    }

    /**
     * Sets the width of this ImagePropertyInterface and returns itself
     *
     * @param float $width
     * @return AbstractImageProperty
     */
    public function setWidth(float $width): AbstractImageProperty
    {
        $this->width = $width;

        return $this;
    }

    /**
     * Returns the width of this ImagePropertyInterface instance
     *
     * @return float
     */
    public function getWidth(): float
    {
        return $this->width;
    }

    /**
     * Sets the height of this ImagePropertyInterface and returns itself
     *
     * @param float $height
     * @return AbstractImageProperty
     */
    public function setHeight(float $height): AbstractImageProperty
    {
        $this->height = $height;

        return $this;
    }

    /**
     * Returns the height of this ImagePropertyInterface instance
     *
     * @return float
     */
    public function getHeight(): float
    {
        return $this->height;
    }

    /**
     * Sets the crop method of this ImagePropertyInterface and returns itself.
     * Use one of the internal crop constants for the correct value
     *
     * @param int $method
     * @return AbstractImageProperty
     */
    public function setCropMethod(int $method): AbstractImageProperty
    {
        $this->cropMethod = $method;

        return $this;
    }

    /**
     * Returns the crop method of this ImagePropertyInterface instance
     *
     * @return int
     */
    public function getCropMethod(): int
    {
        return $this->cropMethod;
    }

    /**
     * Return an instance of the image property from an array
     *
     * @param $imagePropertyAsArray
     * @return static
     */
    public static function fromArray($imagePropertyAsArray)
    {
        if (
            (! isset($imagePropertyAsArray['name']) || ! is_string($imagePropertyAsArray['name'])) ||
            (! isset($imagePropertyAsArray['cropMethod']) || ! in_array($imagePropertyAsArray['cropMethod'], [self::Fit, self::Crop, self::Resize])) ||
            (! isset($imagePropertyAsArray['width']) || is_int($imagePropertyAsArray['width'])) ||
            (! isset($imagePropertyAsArray['height']) || is_int($imagePropertyAsArray['height']))
        ) {
            $instance = new self();
        }
        $instance->setName($imagePropertyAsArray['name']);
        $instance->setCropMethod($imagePropertyAsArray['cropMethod']);
        $instance->setHeight($imagePropertyAsArray['height']);
        $instance->setWidth($imagePropertyAsArray['width']);

        return $instance;
    }
}