You are here

function canvasactions_aspect_dimensions in ImageCache Actions 8

Same name and namespace in other branches
  1. 7 canvasactions/canvasactions.inc \canvasactions_aspect_dimensions()

Image dimensions callback for the aspect switcher effect.

Parameters

array $dimensions: Dimensions to be modified - an associative array containing the items 'width' and 'height' (in pixels).

array $data: An associative array containing the effect data.

1 string reference to 'canvasactions_aspect_dimensions'
imagecache_canvasactions_image_effect_info in canvasactions/imagecache_canvasactions.module
Implements hook_image_effect_info().

File

canvasactions/canvasactions.inc, line 937

Code

function canvasactions_aspect_dimensions(array &$dimensions, array $data) {
  if (!isset($dimensions['width']) || !isset($dimensions['height'])) {

    // We cannot know which preset would be executed and thus cannot know the
    // resulting dimensions, unless both styles return the same dimensions:
    $landscape_dimensions = $portrait_dimensions = $dimensions;
    image_style_transform_dimensions($data['landscape'], $landscape_dimensions);
    image_style_transform_dimensions($data['portrait'], $portrait_dimensions);
    if ($landscape_dimensions == $portrait_dimensions) {
      $dimensions = $landscape_dimensions;
    }
    else {
      $dimensions['width'] = $dimensions['height'] = NULL;
    }
  }
  else {
    $ratio_adjustment = isset($data['ratio_adjustment']) ? floatval($data['ratio_adjustment']) : 1;
    $aspect = $dimensions['width'] / $dimensions['height'];
    $style_name = $aspect * $ratio_adjustment > 1 ? $data['landscape'] : $data['portrait'];
    image_style_transform_dimensions($style_name, $dimensions);
  }
}