PageRenderTime 41ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/vendor/intervention/image/src/Intervention/Image/AbstractDriver.php

https://gitlab.com/alamgircsejnu/AMS-Project-Laravel
PHP | 132 lines | 49 code | 16 blank | 67 comment | 2 complexity | ad3610f102efda7fa5ba95ea0cab0af3 MD5 | raw file
  1. <?php
  2. namespace Intervention\Image;
  3. abstract class AbstractDriver
  4. {
  5. /**
  6. * Decoder instance to init images from
  7. *
  8. * @var \Intervention\Image\AbstractDecoder
  9. */
  10. public $decoder;
  11. /**
  12. * Image encoder instance
  13. *
  14. * @var \Intervention\Image\AbstractEncoder
  15. */
  16. public $encoder;
  17. /**
  18. * Creates new image instance
  19. *
  20. * @param integer $width
  21. * @param integer $height
  22. * @param string $background
  23. * @return \Intervention\Image\Image
  24. */
  25. abstract public function newImage($width, $height, $background);
  26. /**
  27. * Reads given string into color object
  28. *
  29. * @param string $value
  30. * @return AbstractColor
  31. */
  32. abstract public function parseColor($value);
  33. /**
  34. * Checks if core module installation is available
  35. *
  36. * @return boolean
  37. */
  38. abstract protected function coreAvailable();
  39. /**
  40. * Returns clone of given core
  41. *
  42. * @return mixed
  43. */
  44. public function cloneCore($core)
  45. {
  46. return clone $core;
  47. }
  48. /**
  49. * Initiates new image from given input
  50. *
  51. * @param mixed $data
  52. * @return \Intervention\Image\Image
  53. */
  54. public function init($data)
  55. {
  56. return $this->decoder->init($data);
  57. }
  58. /**
  59. * Encodes given image
  60. *
  61. * @param Image $image
  62. * @param string $format
  63. * @param integer $quality
  64. * @return \Intervention\Image\Image
  65. */
  66. public function encode($image, $format, $quality)
  67. {
  68. return $this->encoder->process($image, $format, $quality);
  69. }
  70. /**
  71. * Executes named command on given image
  72. *
  73. * @param Image $image
  74. * @param string $name
  75. * @param array $arguments
  76. * @return \Intervention\Image\Commands\AbstractCommand
  77. */
  78. public function executeCommand($image, $name, $arguments)
  79. {
  80. $commandName = $this->getCommandClassName($name);
  81. $command = new $commandName($arguments);
  82. $command->execute($image);
  83. return $command;
  84. }
  85. /**
  86. * Returns classname of given command name
  87. *
  88. * @param string $name
  89. * @return string
  90. */
  91. private function getCommandClassName($name)
  92. {
  93. $drivername = $this->getDriverName();
  94. $classnameLocal = sprintf('\Intervention\Image\%s\Commands\%sCommand', $drivername, ucfirst($name));
  95. $classnameGlobal = sprintf('\Intervention\Image\Commands\%sCommand', ucfirst($name));
  96. if (class_exists($classnameLocal)) {
  97. return $classnameLocal;
  98. } elseif (class_exists($classnameGlobal)) {
  99. return $classnameGlobal;
  100. }
  101. throw new \Intervention\Image\Exception\NotSupportedException(
  102. "Command ({$name}) is not available for driver ({$drivername})."
  103. );
  104. }
  105. /**
  106. * Returns name of current driver instance
  107. *
  108. * @return string
  109. */
  110. public function getDriverName()
  111. {
  112. $reflect = new \ReflectionClass($this);
  113. $namespace = $reflect->getNamespaceName();
  114. return substr(strrchr($namespace, "\\"), 1);
  115. }
  116. }