Seditio Source
Root |
./othercms/croogo-4.0.7/vendor/intervention/image/src/Intervention/Image/AbstractDriver.php
<?php

namespace Intervention\Image;

use
Intervention\Image\Exception\NotSupportedException;

abstract class
AbstractDriver
{
   
/**
     * Decoder instance to init images from
     *
     * @var \Intervention\Image\AbstractDecoder
     */
   
public $decoder;

   
/**
     * Image encoder instance
     *
     * @var \Intervention\Image\AbstractEncoder
     */
   
public $encoder;

   
/**
     * Creates new image instance
     *
     * @param  int     $width
     * @param  int     $height
     * @param  string  $background
     * @return \Intervention\Image\Image
     */
   
abstract public function newImage($width, $height, $background);

   
/**
     * Reads given string into color object
     *
     * @param  string $value
     * @return AbstractColor
     */
   
abstract public function parseColor($value);

   
/**
     * Checks if core module installation is available
     *
     * @return boolean
     */
   
abstract protected function coreAvailable();

   
/**
     * Returns clone of given core
     *
     * @return mixed
     */
   
public function cloneCore($core)
    {
        return clone
$core;
    }

   
/**
     * Initiates new image from given input
     *
     * @param  mixed $data
     * @return \Intervention\Image\Image
     */
   
public function init($data)
    {
        return
$this->decoder->init($data);
    }

   
/**
     * Encodes given image
     *
     * @param  Image   $image
     * @param  string  $format
     * @param  int     $quality
     * @return \Intervention\Image\Image
     */
   
public function encode($image, $format, $quality)
    {
        return
$this->encoder->process($image, $format, $quality);
    }

   
/**
     * Executes named command on given image
     *
     * @param  Image  $image
     * @param  string $name
     * @param  array $arguments
     * @return \Intervention\Image\Commands\AbstractCommand
     */
   
public function executeCommand($image, $name, $arguments)
    {
       
$commandName = $this->getCommandClassName($name);
       
$command = new $commandName($arguments);
       
$command->execute($image);

        return
$command;
    }

   
/**
     * Returns classname of given command name
     *
     * @param  string $name
     * @return string
     */
   
private function getCommandClassName($name)
    {
       
$name = mb_convert_case($name[0], MB_CASE_UPPER, 'utf-8') . mb_substr($name, 1, mb_strlen($name));
       
       
$drivername = $this->getDriverName();
       
$classnameLocal = sprintf('\Intervention\Image\%s\Commands\%sCommand', $drivername, ucfirst($name));
       
$classnameGlobal = sprintf('\Intervention\Image\Commands\%sCommand', ucfirst($name));

        if (
class_exists($classnameLocal)) {
            return
$classnameLocal;
        } elseif (
class_exists($classnameGlobal)) {
            return
$classnameGlobal;
        }

        throw new
NotSupportedException(
           
"Command ({$name}) is not available for driver ({$drivername})."
       
);
    }

   
/**
     * Returns name of current driver instance
     *
     * @return string
     */
   
public function getDriverName()
    {
       
$reflect = new \ReflectionClass($this);
       
$namespace = $reflect->getNamespaceName();

        return
substr(strrchr($namespace, "\\"), 1);
    }
}