%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/vendor/imagine/imagine/src/Gd/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/vendor/imagine/imagine/src/Gd/DriverInfo.php |
<?php namespace Imagine\Gd; use Imagine\Driver\AbstractInfo; use Imagine\Exception\NotSupportedException; use Imagine\Image\Format; use Imagine\Image\FormatList; use Imagine\Image\Palette\PaletteInterface; use Imagine\Image\Palette\RGB; /** * Provide information and features supported by the GD graphics driver. * * @since 1.3.0 */ class DriverInfo extends AbstractInfo { /** * @var static|\Imagine\Exception\NotSupportedException|null */ private static $instance; /** * @throws \Imagine\Exception\NotSupportedException */ protected function __construct() { if (!function_exists('gd_info') || !defined('GD_VERSION')) { throw new NotSupportedException('Gd driver not installed'); } $m = null; $driverRawVersion = PHP_VERSION; $driverSemverVersion = defined('PHP_MAJOR_VERSION') ? implode('.', array(PHP_MAJOR_VERSION, PHP_MINOR_VERSION, PHP_RELEASE_VERSION)) : ''; $engineRawVersion = is_string(GD_VERSION) ? GD_VERSION : ''; $engineSemverVersion = preg_match('/^.*?(\d+\.\d+\.\d+)/', $engineRawVersion, $m) ? $m[1] : ''; parent::__construct($driverRawVersion, $driverSemverVersion, $engineRawVersion, $engineSemverVersion); } /** * {@inheritdoc} * * @see \Imagine\Driver\Info::get() */ public static function get($required = true) { if (self::$instance === null) { try { self::$instance = new static(); } catch (NotSupportedException $x) { self::$instance = $x; } } if (self::$instance instanceof self) { return self::$instance; } if ($required) { throw self::$instance; } return null; } /** * {@inheritdoc} * * @see \Imagine\Driver\Info::checkVersionIsSupported() * @see \Imagine\Driver\AbstractInfo::checkVersionIsSupported() */ public function checkVersionIsSupported() { parent::checkVersionIsSupported(); if ($this->getEngineVersion() === '' || version_compare($this->getEngineVersion(), '2.0.1') < 0) { throw new NotSupportedException(sprintf('GD2 version %s or higher is required, %s provided', '2.0.1', GD_VERSION)); } } /** * {@inheritdoc} * * @see \Imagine\Driver\AbstractInfo::checkFeature() */ protected function checkFeature($feature) { switch ($feature) { case static::FEATURE_COLORPROFILES: throw new NotSupportedException('GD driver does not support color profiles'); case static::FEATURE_TEXTFUNCTIONS: if (!function_exists('imageftbbox')) { throw new NotSupportedException('GD is not compiled with FreeType support'); } break; case static::FEATURE_MULTIPLELAYERS: throw new NotSupportedException('GD does not support layer sets'); case static::FEATURE_CUSTOMRESOLUTION: throw new NotSupportedException('GD does not support setting custom resolutions'); case static::FEATURE_EXPORTWITHCUSTOMRESOLUTION: throw new NotSupportedException('GD driver does not support exporting images with custom resolutions'); case static::FEATURE_DRAWFILLEDCHORDSCORRECTLY: throw new NotSupportedException('The GD Drawer can NOT draw correctly filled chords'); case static::FEATURE_DRAWUNFILLEDCIRCLESWITHTICHKESSCORRECTLY: throw new NotSupportedException('The GD Drawer can NOT draw correctly not filled circles with a thickness greater than 1'); case static::FEATURE_DRAWUNFILLEDELLIPSESWITHTICHKESSCORRECTLY: throw new NotSupportedException('The GD Drawer can NOT draw correctly not filled ellipses with a thickness greater than 1'); case static::FEATURE_ROTATEIMAGEWITHCORRECTSIZE: $vFrom = '5.5'; $vTo = '7.1.11'; if (version_compare($this->getDriverVersion(), $vFrom) >= 0 && version_compare($this->getDriverVersion(), $vTo) < 0) { // see https://bugs.php.net/bug.php?id=65148 throw new NotSupportedException("The GD driver is affected by bug https://bugs.php.net/bug.php?id=65148 from PHP version {$vFrom} to PHP version {$vTo}."); } break; case static::FEATURE_EXPORTWITHCUSTOMJPEGSAMPLINGFACTORS: throw new NotSupportedException('The GD driver does not support JPEG sampling factors'); } } /** * {@inheritdoc} * * @see \Imagine\Driver\AbstractInfo::buildSupportedFormats() */ protected function buildSupportedFormats() { $supportedFormats = array(); foreach (array( 'gif' => Format::ID_GIF, 'jpeg' => Format::ID_JPEG, 'png' => Format::ID_PNG, 'wbmp' => Format::ID_WBMP, 'xbm' => Format::ID_XBM, 'bmp' => Format::ID_BMP, 'webp' => Format::ID_WEBP, 'avif' => Format::ID_AVIF, ) as $suffix => $formatID) { if (function_exists("image{$suffix}") && function_exists("imagecreatefrom{$suffix}")) { $supportedFormats[] = Format::get($formatID); } } return new FormatList($supportedFormats); } /** * {@inheritdoc} * * @see \Imagine\Driver\Info::requirePaletteSupport() * @see \Imagine\Driver\AbstractInfo::requirePaletteSupport() */ public function requirePaletteSupport(PaletteInterface $palette) { if (!($palette instanceof RGB)) { throw new NotSupportedException('GD driver only supports RGB colors'); } } }