You are here

private function BlazyManager::buildResponsiveImage in Blazy 8.2

Same name and namespace in other branches
  1. 7 src/BlazyManager.php \Drupal\blazy\BlazyManager::buildResponsiveImage()

Build out Responsive image.

1 call to BlazyManager::buildResponsiveImage()
BlazyManager::buildMedia in src/BlazyManager.php
Build out (Responsive) image.

File

src/BlazyManager.php, line 275

Class

BlazyManager
Implements a public facing blazy manager.

Namespace

Drupal\blazy

Code

private function buildResponsiveImage(array &$element, array &$attributes, array &$settings) {
  $settings['responsive_image_style_id'] = $settings['resimage']
    ->id();
  $responsive_image = $this
    ->getResponsiveImageStyles($settings['resimage']);
  $element['#cache']['tags'] = $responsive_image['caches'];

  // Makes Responsive image usable as CSS background image sources.
  if (!empty($settings['background'])) {
    $srcset = $dimensions = [];
    foreach ($responsive_image['styles'] as $style) {
      $styled = array_merge($settings, BlazyUtil::transformDimensions($style, $settings, FALSE));

      // Sort image URLs based on width.
      $data = $this
        ->backgroundImage($styled, $style);
      $srcset[$styled['width']] = $data;
      $dimensions[$styled['width']] = $data['ratio'];
    }

    // Sort the srcset from small to large image width or multiplier.
    ksort($srcset);
    ksort($dimensions);
    $settings['urls'] = $srcset;
    $settings['blazy_data']['dimensions'] = $dimensions;
    $settings['padding_bottom'] = end($dimensions);
    $settings['image_url'] = empty($settings['is_preview']) ? $settings['placeholder'] : $settings['image_url'];
    Blazy::lazyAttributes($attributes, $settings);
  }
}