Ejemplo n.º 1
0
 /**
  * Вырезает произвольный квадрат из изображения.
  * Метод может принимать вырезаемый прямоугольник, обязанный быть квадратом,
  * либо параметры для создания такого прямоугольника.
  *
  * @throws IllegalArgumentException
  * @return AcImage
  */
 public function cropSquare()
 {
     $a = func_get_args();
     if (count($a) == 1 && $a[0] instanceof Rectangle && $a[0]->isSquare()) {
         $square = $a[0];
     } else {
         if (count($a) == 2 && $a[0] instanceof Point && is_int($a[1])) {
             $square = new Rectangle($a[0], new Size($a[1], $a[1]));
         } else {
             if (count($a) == 3) {
                 $square = new Rectangle(new Point($a[0], $a[1]), new Size($a[2], $a[2]));
             } else {
                 throw new IllegalArgumentException();
             }
         }
     }
     if (!$square->isInner(new Rectangle(new Point(0, 0), $this->getSize()))) {
         throw new IllegalArgumentException();
     }
     return $this->crop($square);
 }