#355230 by drewish: Correctly pass background color (or transparency) to ImageAPI.
[project/imagecache.git] / imagecache_actions.inc
index fa3e36b..30d79fb 100644 (file)
@@ -204,9 +204,9 @@ function imagecache_rotate_form($data) {
   );
   $form['bgcolor'] = array(
     '#type' => 'textfield',
-    '#default_value' => (isset($data['bgcolor'])) ? $data['bgcolor'] : '#FFFFFF',
+    '#default_value' => (isset($data['bgcolor'])) ? $data['bgcolor'] : '',
     '#title' => t('Background color'),
-    '#description' => t('The background color to use for exposed areas of the image. Use web-style hex colors (#FFFFFF for white, #000000 for black).'),
+    '#description' => t('The background color to use for exposed areas of the image. Use web-style hex colors (#FFFFFF for white, #000000 for black). An empty value will cause images that support transparency to have transparent backgrounds, otherwise it will be white.'),
   );
   return $form;
 }
@@ -214,20 +214,27 @@ function imagecache_rotate_form($data) {
 function theme_imagecache_rotate($element) {
   $output = t('degrees:') .' '. $element['#value']['degrees'] .', ';
   $output .= t('randomize:') .' '. (($element['#value']['random']) ? t('Yes') : t('No')) .', ';
-  $output .= t('background:') .' '. $element['#value']['bgcolor'];
+  $output .= t('background:') .' '. strlen(trim($element['#value']['bgcolor'])) ? $element['#value']['bgcolor'] : t('Transparent/white');
   return $output;
 }
 
 function imagecache_rotate_image(&$image, $data) {
+  // Merge in default values.
+  $data += array(
+    'degrees' => '0',
+    'random' => FALSE,
+    'bgcolor' => '',
+  );
   // Set sane default values.
-  $data['degrees'] = $data['degrees'] ? $data['degrees'] : 0;
-  $data['random'] = $data['random'] ? $data['random'] : FALSE;
-  $data['bgcolor'] = $data['bgcolor'] ? $data['bgcolor'] : '#FFFFFF';
-
-  // Manipulate the if we need to randomize, and convert to proper colors.
-  $data['bgcolor'] = '0x'. str_replace('#', '', $data['bgcolor']);
+  if (strlen(trim($data['bgcolor']))) {
+    $data['bgcolor'] = hexdec(str_replace('#', '', $data['bgcolor']));
+  }
+  else {
+    $data['bgcolor'] = NULL;
+  }
 
-  if (!empty($data['random'])) {
+  if ($data['random']) {
     $degrees = abs((float)$data['degrees']);
     $data['degrees'] = rand(-1 * $degrees, $degrees);
   }