Implements \Drupal\field\Plugin\Type\Formatter\FormatterInterface::viewElements().
Overrides FormatterInterface::viewElements
public function viewElements(EntityInterface $entity, $langcode, array $items) {
  $elements = array();
  $image_link_setting = $this
    ->getSetting('image_link');
  // Check if the formatter involves a link.
  if ($image_link_setting == 'content') {
    $uri = $entity
      ->uri();
  }
  elseif ($image_link_setting == 'file') {
    $link_file = TRUE;
  }
  $image_style_setting = $this
    ->getSetting('image_style');
  foreach ($items as $delta => $item) {
    if (isset($link_file)) {
      $uri = array(
        'path' => file_create_url($item['uri']),
        'options' => array(),
      );
    }
    $elements[$delta] = array(
      '#theme' => 'image_formatter',
      '#item' => $item,
      '#image_style' => $image_style_setting,
      '#path' => isset($uri) ? $uri : '',
    );
  }
  return $elements;
}