Index: canvasactions.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/imagecache_actions/canvasactions.inc,v retrieving revision 1.1.4.21 diff -u -p -r1.1.4.21 canvasactions.inc --- canvasactions.inc 28 Dec 2009 03:26:53 -0000 1.1.4.21 +++ canvasactions.inc 6 Jul 2010 14:32:39 -0000 @@ -1003,6 +1003,23 @@ function canvasactions_aspect_image(&$im // Run the preset actions ourself. Cannot invoke a preset from the top as it handles filenames, not image objects. // ripped from imagecache_build_derivative() foreach ($preset['actions'] as $sub_action) { + if (!empty($sub_action['data'])) { + // Make sure the width and height are computed first so they can be used + // in relative x/yoffsets like 'center' or 'bottom'. + if (isset($sub_action['data']['width'])) { + $sub_action['data']['width'] = _imagecache_percent_filter($sub_action['data']['width'], $image->info['width']); + } + if (isset($sub_action['data']['height'])) { + $sub_action['data']['height'] = _imagecache_percent_filter($sub_action['data']['height'], $image->info['height']); + } + if (isset($sub_action['data']['xoffset'])) { + $sub_action['data']['xoffset'] = _imagecache_keyword_filter($sub_action['data']['xoffset'], $image->info['width'], $sub_action['data']['width']); + } + if (isset($sub_action['data']['yoffset'])) { + $sub_action['data']['yoffset'] = _imagecache_keyword_filter($sub_action['data']['yoffset'], $image->info['height'], $sub_action['data']['height']); + } + } + _imagecache_apply_action($sub_action, $image); } return TRUE;