Seditio Source
Root |
./othercms/croogo-4.0.7/vendor/intervention/image/src/Intervention/Image/Commands/PolygonCommand.php
<?php

namespace Intervention\Image\Commands;

use
Closure;
use
Intervention\Image\Exception\InvalidArgumentException;

class
PolygonCommand extends AbstractCommand
{
   
/**
     * Draw a polygon on given image
     *
     * @param  \Intervention\Image\image $image
     * @return boolean
     */
   
public function execute($image)
    {
       
$points = $this->argument(0)->type('array')->required()->value();
       
$callback = $this->argument(1)->type('closure')->value();

       
$vertices_count = count($points);

       
// check if number if coordinates is even
       
if ($vertices_count % 2 !== 0) {
            throw new
InvalidArgumentException(
               
"The number of given polygon vertices must be even."
           
);
        }

        if (
$vertices_count < 6) {
            throw new
InvalidArgumentException(
               
"You must have at least 3 points in your array."
           
);
        }
       
       
$polygon_classname = sprintf('\Intervention\Image\%s\Shapes\PolygonShape',
           
$image->getDriver()->getDriverName());

       
$polygon = new $polygon_classname($points);
       
        if (
$callback instanceof Closure) {
           
$callback($polygon);
        }

       
$polygon->applyToImage($image);

        return
true;
    }
}