/** * Вырезает произвольный квадрат из изображения. * Метод может принимать вырезаемый прямоугольник, обязанный быть квадратом, * либо параметры для создания такого прямоугольника. * * @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); }