You are here

public function BlazyManagerBase::setResponsiveImageDimensions in Blazy 8.2

Sets dimensions once to reduce method calls for Responsive image.

1 call to BlazyManagerBase::setResponsiveImageDimensions()
BlazyFormatter::preBuildElements in src/BlazyFormatter.php
Modifies the field formatter settings inherited by child elements.

File

src/BlazyManagerBase.php, line 427

Class

BlazyManagerBase
Implements BlazyManagerInterface.

Namespace

Drupal\blazy

Code

public function setResponsiveImageDimensions(array &$settings = [], $initial = TRUE) {
  $srcset = [];
  foreach ($this
    ->getResponsiveImageStyles($settings['resimage'])['styles'] as $style) {
    $styled = array_merge($settings, BlazyUtil::transformDimensions($style, $settings, $initial));

    // In order to avoid layout reflow, we get dimensions beforehand.
    $srcset[$styled['width']] = round($styled['height'] / $styled['width'] * 100, 2);
  }

  // Sort the srcset from small to large image width or multiplier.
  ksort($srcset);

  // Informs individual images that dimensions are already set once.
  $settings['blazy_data']['dimensions'] = $srcset;
  $settings['padding_bottom'] = end($srcset);
  $settings['_dimensions'] = TRUE;
}