*/ public static function calculateOffsets(ShapeContainerInterface $container): array { $offsets = [self::X => 0, self::Y => 0]; if (null !== $container && 0 != \count($container->getShapeCollection())) { $shapes = $container->getShapeCollection(); if (null !== $shapes[0]) { $offsets[self::X] = $shapes[0]->getOffsetX(); $offsets[self::Y] = $shapes[0]->getOffsetY(); } foreach ($shapes as $shape) { if (null !== $shape) { if ($shape->getOffsetX() < $offsets[self::X]) { $offsets[self::X] = $shape->getOffsetX(); } if ($shape->getOffsetY() < $offsets[self::Y]) { $offsets[self::Y] = $shape->getOffsetY(); } } } } return $offsets; } /** * Calculate X and Y extents for a set of shapes within a container such as a slide or group. * * @return array */ public static function calculateExtents(ShapeContainerInterface $container): array { /** @var array $extents */ $extents = [self::X => 0, self::Y => 0]; if (null !== $container && 0 != \count($container->getShapeCollection())) { $shapes = $container->getShapeCollection(); if (null !== $shapes[0]) { $extents[self::X] = (int) ($shapes[0]->getOffsetX() + $shapes[0]->getWidth()); $extents[self::Y] = (int) ($shapes[0]->getOffsetY() + $shapes[0]->getHeight()); } foreach ($shapes as $shape) { if (null !== $shape) { $extentX = (int) ($shape->getOffsetX() + $shape->getWidth()); $extentY = (int) ($shape->getOffsetY() + $shape->getHeight()); if ($extentX > $extents[self::X]) { $extents[self::X] = $extentX; } if ($extentY > $extents[self::Y]) { $extents[self::Y] = $extentY; } } } } return $extents; } }