Файл: gapps/vendor/intervention/image/src/Intervention/Image/AbstractDriver.php
Строк: 171
<?php
namespace InterventionImage;
abstract class AbstractDriver
{
/**
* Decoder instance to init images from
*
* @var InterventionImageAbstractDecoder
*/
public $decoder;
/**
* Image encoder instance
*
* @var InterventionImageAbstractEncoder
*/
public $encoder;
/**
* Creates new image instance
*
* @param integer $width
* @param integer $height
* @param string $background
* @return InterventionImageImage
*/
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 InterventionImageImage
*/
public function init($data)
{
return $this->decoder->init($data);
}
/**
* Encodes given image
*
* @param Image $image
* @param string $format
* @param integer $quality
* @return InterventionImageImage
*/
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 InterventionImageCommandsAbstractCommand
*/
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)
{
$drivername = $this->getDriverName();
$classnameLocal = sprintf('InterventionImage%sCommands%sCommand', $drivername, ucfirst($name));
$classnameGlobal = sprintf('InterventionImageCommands%sCommand', ucfirst($name));
if (class_exists($classnameLocal)) {
return $classnameLocal;
} elseif (class_exists($classnameGlobal)) {
return $classnameGlobal;
}
throw new InterventionImageExceptionNotSupportedException(
"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);
}
}