/home/techb158/ileadtechnology.com/vendor/league/glide/src/Manipulators
Edit: /home/techb158/ileadtechnology.com/vendor/league/glide/src/Manipulators/Watermark.php (6369B)
setWatermarks($watermarks);
$this->setWatermarksPathPrefix($watermarksPathPrefix);
}
/**
* Set the watermarks file system.
*
* @param FilesystemInterface $watermarks The watermarks file system.
*/
public function setWatermarks(FilesystemInterface $watermarks = null)
{
$this->watermarks = $watermarks;
}
/**
* Get the watermarks file system.
*
* @return FilesystemInterface The watermarks file system.
*/
public function getWatermarks()
{
return $this->watermarks;
}
/**
* Set the watermarks path prefix.
*
* @param string $watermarksPathPrefix The watermarks path prefix.
*/
public function setWatermarksPathPrefix($watermarksPathPrefix = '')
{
$this->watermarksPathPrefix = trim($watermarksPathPrefix, '/');
}
/**
* Get the watermarks path prefix.
*
* @return string The watermarks path prefix.
*/
public function getWatermarksPathPrefix()
{
return $this->watermarksPathPrefix;
}
/**
* Perform watermark image manipulation.
*
* @param Image $image The source image.
*
* @return Image The manipulated image.
*/
public function run(Image $image)
{
if ($watermark = $this->getImage($image)) {
$markw = $this->getDimension($image, 'markw');
$markh = $this->getDimension($image, 'markh');
$markx = $this->getDimension($image, 'markx');
$marky = $this->getDimension($image, 'marky');
$markpad = $this->getDimension($image, 'markpad');
$markfit = $this->getFit();
$markpos = $this->getPosition();
$markalpha = $this->getAlpha();
if ($markpad) {
$markx = $marky = $markpad;
}
$size = new Size();
$size->setParams([
'w' => $markw,
'h' => $markh,
'fit' => $markfit,
]);
$watermark = $size->run($watermark);
if ($markalpha < 100) {
$watermark->opacity($markalpha);
}
$image->insert($watermark, $markpos, intval($markx), intval($marky));
}
return $image;
}
/**
* Get the watermark image.
*
* @param Image $image The source image.
*
* @return Image|null The watermark image.
*/
public function getImage(Image $image)
{
if (is_null($this->watermarks)) {
return;
}
if (!is_string($this->mark)) {
return;
}
if ('' === $this->mark) {
return;
}
$path = $this->mark;
if ($this->watermarksPathPrefix) {
$path = $this->watermarksPathPrefix.'/'.$path;
}
if ($this->watermarks->has($path)) {
$source = $this->watermarks->read($path);
if (false === $source) {
throw new FilesystemException('Could not read the image `'.$path.'`.');
}
return $image->getDriver()->init($source);
}
}
/**
* Get a dimension.
*
* @param Image $image The source image.
* @param string $field The requested field.
*
* @return float|null The dimension.
*/
public function getDimension(Image $image, $field)
{
if ($this->{$field}) {
return (new Dimension($image, $this->getDpr()))->get($this->{$field});
}
}
/**
* Resolve the device pixel ratio.
*
* @return float The device pixel ratio.
*/
public function getDpr()
{
if (!is_numeric($this->dpr)) {
return 1.0;
}
if ($this->dpr < 0 or $this->dpr > 8) {
return 1.0;
}
return (float) $this->dpr;
}
/**
* Get the fit.
*
* @return string The fit.
*/
public function getFit()
{
$fitMethods = [
'contain',
'max',
'stretch',
'crop',
'crop-top-left',
'crop-top',
'crop-top-right',
'crop-left',
'crop-center',
'crop-right',
'crop-bottom-left',
'crop-bottom',
'crop-bottom-right',
];
if (in_array($this->markfit, $fitMethods, true)) {
return $this->markfit;
}
}
/**
* Get the position.
*
* @return string The position.
*/
public function getPosition()
{
$positions = [
'top-left',
'top',
'top-right',
'left',
'center',
'right',
'bottom-left',
'bottom',
'bottom-right',
];
if (in_array($this->markpos, $positions, true)) {
return $this->markpos;
}
return 'bottom-right';
}
/**
* Get the alpha channel.
*
* @return int The alpha.
*/
public function getAlpha()
{
if (!is_numeric($this->markalpha)) {
return 100;
}
if ($this->markalpha < 0 or $this->markalpha > 100) {
return 100;
}
return (int) $this->markalpha;
}
}