private function translateProductOfBroke(Container $productOfBroke, Container $originalContainer) { $columnableContainer = $originalContainer->getParent(); $numberOfContainers = count($columnableContainer->getChildren()); $numberOfColumns = $columnableContainer->getAttribute('number-of-columns'); $isInTheSameRowAsOriginalContainer = $numberOfContainers % $numberOfColumns != 1; if ($isInTheSameRowAsOriginalContainer) { $xCoordTranslate = $originalContainer->getWidth() + $columnableContainer->getAttribute('margin-between-columns'); $firstPoint = $originalContainer->getFirstPoint()->translate($xCoordTranslate, 0); } else { $xCoordTranslate = $numberOfColumns * $originalContainer->getWidth() + ($numberOfColumns - 1) * $columnableContainer->getAttribute('margin-between-columns'); $firstPoint = $originalContainer->getDiagonalPoint()->translate(-$xCoordTranslate, 0); } $xCoordTranslate = $firstPoint->getX() - $productOfBroke->getFirstPoint()->getX(); $yCoordTranslate = $productOfBroke->getFirstPoint()->getY() - $firstPoint->getY(); $productOfBroke->translate($xCoordTranslate, $yCoordTranslate); }