? imagecache_actions.jquery.js Index: canvasactions.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/imagecache_actions/canvasactions.inc,v retrieving revision 1.1.4.8 diff -u -p -r1.1.4.8 canvasactions.inc --- canvasactions.inc 12 Mar 2009 22:46:37 -0000 1.1.4.8 +++ canvasactions.inc 14 Mar 2009 20:55:01 -0000 @@ -423,6 +423,7 @@ function canvasactions_file2canvas_image * @return a form definition */ function canvasactions_roundedcorners_form($action) { + drupal_add_js(drupal_get_path('module', 'imagecache_canvasactions') .'/imagecache_actions.jquery.js'); $defaults = array( 'radius' => '16', 'antialias' => TRUE, @@ -435,6 +436,41 @@ function canvasactions_roundedcorners_fo '#default_value' => $action['radius'], '#size' => 2, ); + $form['independent_corners_set'] = array( + '#type' => 'fieldset', + '#title' => t('Individual Corner Values'), + '#collapsible' => TRUE, + '#collapsed' => TRUE, + ); + $form['independent_corners_set']['independent_corners'] = array( + '#type' => 'checkbox', + '#title' => t('Set Corners Independently'), + '#default_value' => $action['independent_corners_set']['independent_corners'], + ); + $form['independent_corners_set']['radiustl'] = array( + '#type' => 'textfield', + '#title' => t('top left radius'), + '#default_value' => $action['independent_corners_set']['radiustl'], + '#size' => 2, + ); + $form['independent_corners_set']['radiustr'] = array( + '#type' => 'textfield', + '#title' => t('top right radius'), + '#default_value' => $action['independent_corners_set']['radiustr'], + '#size' => 2, + ); + $form['independent_corners_set']['radiusbl'] = array( + '#type' => 'textfield', + '#title' => t('bottom left radius'), + '#default_value' => $action['independent_corners_set']['radiusbl'], + '#size' => 2, + ); + $form['independent_corners_set']['radiusbr'] = array( + '#type' => 'textfield', + '#title' => t('bottom right radius'), + '#default_value' => $action['independent_corners_set']['radiusbr'], + '#size' => 2, + ); $form['antialias'] = array( '#type' => 'checkbox', @@ -471,15 +507,33 @@ function canvasactions_roundedcorners_fo * @param $action */ function canvasactions_roundedcorners_image(&$image, $action = array()) { - $width = $image->info['width']; $height = $image->info['height']; $radius = $action['radius']; + $independent_corners = $action['independent_corners_set']['independent_corners']; + $radiustl = $action['independent_corners_set']['radiustl']; + $radiustr = $action['independent_corners_set']['radiustr']; + $radiusbl = $action['independent_corners_set']['radiusbl']; + $radiusbr = $action['independent_corners_set']['radiusbr']; + if(!$independent_corners){ + $radiustl = $radiustr = $radiusbl = $radiusbr = $radius; + } if ($action['antialias']) { $width = $width * 3; $height = $height * 3; - $radius = $radius * 3; + //$radius = $radius * 3; + if($independent_corners){ + $radiustl = $radiustl * 3; + $radiustr = $radiustr * 3; + $radiusbl = $radiusbl * 3; + $radiusbr = $radiusbr * 3; + } else { + $radiustl = $radius * 3; + $radiustr = $radius * 3; + $radiusbl = $radius * 3; + $radiusbr = $radius * 3; + } } // Create a mask with rounded corners @@ -503,21 +557,38 @@ function canvasactions_roundedcorners_im // Blobs in the corners $diameter = $radius * 2; - ImageFilledEllipse($mask, $radius, $radius, $diameter, $diameter, $foreground); - ImageFilledEllipse($mask, $width-$radius, $radius, $diameter, $diameter, $foreground); - ImageFilledEllipse($mask, $radius, $height-$radius, $diameter, $diameter, $foreground); - ImageFilledEllipse($mask, $width-$radius, $height-$radius, $diameter, $diameter, $foreground); + if($independent_corners){ + $diametertl = $radiustl * 2; + $diametertr = $radiustr * 2; + $diameterbl = $radiusbl * 2; + $diameterbr = $radiusbr * 2; + } else { + $diametertl = $radiustl * 2; + $diametertr = $radiustr * 2; + $diameterbl = $radiusbl * 2; + $diameterbr = $radiusbr * 2; + } + ImageFilledEllipse($mask, $radiustl, $radiustl, $diametertl, $diametertl, $foreground); + ImageFilledEllipse($mask, $width-$radiustr, $radiustr, $diametertr, $diametertr, $foreground); + ImageFilledEllipse($mask, $radiusbl, $height-$radiusbl, $diameterbl, $diameterbl, $foreground); + ImageFilledEllipse($mask, $width-$radiusbr, $height-$radiusbr, $diameterbr, $diameterbr, $foreground); // Block out the middle - ImageFilledRectangle($mask, $radius, 0, $width-$radius, $height, $foreground); - ImageFilledRectangle($mask, 0, $radius, $width, $height-$radius, $foreground); + ImageFilledRectangle($mask, $radiustl, 0, $width*0.5, $height*0.5, $foreground); + ImageFilledRectangle($mask, 0, $radiustl, $width*0.5, $height*0.5, $foreground); + ImageFilledRectangle($mask, $width*0.5, 0, $width-$radiustr, $height*0.5, $foreground); + ImageFilledRectangle($mask, $width*0.5, $radiustr, $width, $height*0.5, $foreground); + ImageFilledRectangle($mask, 0, $height*0.5, $width*0.5, $height-$radiusbl, $foreground); + ImageFilledRectangle($mask, $radiusbl, $height*0.5, $width*0.5, $height, $foreground); + ImageFilledRectangle($mask, $width*0.5, $height*0.5, $width, $height-$radiusbr, $foreground); + ImageFilledRectangle($mask, $width*0.5, $height*0.5, $width-$radiusbr, $height, $foreground); if ($action['antialias']) { // Use toolkit so scale down again. imageapi_image_scale($mask_image, $width/3, $height/3); $mask = $mask_image->resource; } - // No we have a mask. Merge to get a result + // Now we have a mask. Merge to get a result #$image->res = $mask; canvasactions_mask($image, $mask_image); @@ -586,8 +657,12 @@ function canvasactions_mask(&$image, $ma */ function theme_canvasactions_roundedcorners($element) { $data = $element['#value']; + if($data['independent_corners_set']['independent_corners']){ + return "Radius: {$data['independent_corners_set']['radiustl']}px | {$data['independent_corners_set']['radiustr']}px | {$data['independent_corners_set']['radiusbl']}px | {$data['independent_corners_set']['radiusbr']}px | " . ($data['antialias'] ? "antialiased" : "") ; + } else { return "Radius: {$data['radius']}px " . ($data['antialias'] ? "antialiased" : "") ; } +} ///////////////////////////////////////////////////////////////////