Файл: concrete5.7.5.6/concrete/vendor/imagine/imagine/lib/Imagine/Filter/Advanced/OnPixelBased.php
Строк: 59
<?php
/*
* This file is part of the Imagine package.
*
* (c) Bulat Shakirzyanov <mallluhuct@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace ImagineFilterAdvanced;
use ImagineExceptionInvalidArgumentException;
use ImagineFilterFilterInterface;
use ImagineImageImageInterface;
use ImagineImagePoint;
/**
* The OnPixelBased takes a callable, and for each pixel, this callable is called with the
* image (ImagineImageImageInterface) and the current point (ImagineImagePoint)
*/
class OnPixelBased implements FilterInterface
{
protected $callback;
public function __construct($callback)
{
if (!is_callable($callback)) {
throw new InvalidArgumentException('$callback has to be callable');
}
$this->callback = $callback;
}
/**
* Applies scheduled transformation to ImageInterface instance
* Returns processed ImageInterface instance
*
* @param ImageInterface $image
*
* @return ImageInterface
*/
public function apply(ImageInterface $image)
{
$w = $image->getSize()->getWidth();
$h = $image->getSize()->getHeight();
for ($x = 0; $x < $w; $x++) {
for ($y = 0; $y < $h; $y++) {
call_user_func($this->callback, $image, new Point($x, $y));
}
}
return $image;
}
}