/** * Creates a picture configuration item. * * @param ImageSizeModel|ImageSizeItemModel|null $imageSize * * @return PictureConfigurationItem */ private function createConfigItem($imageSize) { $configItem = new PictureConfigurationItem(); $resizeConfig = new ResizeConfiguration(); if (null !== $imageSize) { $resizeConfig->setWidth($imageSize->width)->setHeight($imageSize->height)->setMode($imageSize->resizeMode)->setZoomLevel($imageSize->zoom); $configItem->setResizeConfig($resizeConfig)->setSizes($imageSize->sizes)->setDensities($imageSize->densities); if (isset($imageSize->media)) { $configItem->setMedia($imageSize->media); } } return $configItem; }
/** * Get the config for one picture source element * * @param Model|object $imageSize The image size or image size item model * * @return PictureConfigurationItem */ protected function getConfigurationItem($imageSize) { $configItem = new PictureConfigurationItem(); $resizeConfig = new ResizeConfiguration(); $mode = $imageSize->resizeMode; if (substr_count($mode, '_') === 1) { $importantPart = $this->image->setImportantPart(null)->getImportantPart(); $mode = explode('_', $mode); if ($mode[0] === 'left') { $importantPart['width'] = 1; } elseif ($mode[0] === 'right') { $importantPart['x'] = $importantPart['width'] - 1; $importantPart['width'] = 1; } if ($mode[1] === 'top') { $importantPart['height'] = 1; } elseif ($mode[1] === 'bottom') { $importantPart['y'] = $importantPart['height'] - 1; $importantPart['height'] = 1; } $this->image->setImportantPart($importantPart); $mode = ResizeConfiguration::MODE_CROP; } $resizeConfig->setWidth($imageSize->width)->setHeight($imageSize->height)->setZoomLevel($imageSize->zoom); if ($mode) { $resizeConfig->setMode($mode); } $configItem->setResizeConfig($resizeConfig); if (isset($imageSize->sizes)) { $configItem->setSizes($imageSize->sizes); } if (isset($imageSize->densities)) { $configItem->setDensities($imageSize->densities); } if (isset($imageSize->media)) { $configItem->setMedia($imageSize->media); } return $configItem; }