Index: modules/imagecache/imagecache.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/imagecache/imagecache.module,v
retrieving revision 1.33
diff -U3 -r1.33 imagecache.module
--- modules/imagecache/imagecache.module	12 Dec 2007 21:50:35 -0000	1.33
+++ modules/imagecache/imagecache.module	13 Dec 2007 14:32:40 -0000
@@ -453,6 +453,10 @@
       'label' => $preset['presetname'] .' as link',
       'field types' => array('image'),
     );
+    $formatters[$preset['presetname'] .'_linked_source'] = array(
+      'label' => $preset['presetname'] .' as link source',
+      'field types' => array('image'),
+    );
   }
   return $formatters;
 }
@@ -474,6 +478,11 @@
   if ($preset = imagecache_preset_by_name($presetname)) {
     return theme('imagecache_formatter', $field, $item, $formatter);
   }
+
+  $presetname = preg_replace('/_linked_source$/', '', $formatter);
+  if ($preset = imagecache_preset_by_name($presetname)) {
+    return theme('imagecache_formatter', $field, $item, $formatter);
+  }
 }
 
 function _imagecache_file_load($fid = NULL) {
@@ -605,6 +614,11 @@
     $image = theme('imagecache', $formatter, $item['filepath'], $item['alt'], $item['title']);
     $output = l($image, 'node/'. $item['nid'], array(), NULL, NULL, FALSE, TRUE);
   }
+  elseif(preg_match('/_linked_source$/', $formatter)) {
+    $formatter = preg_replace('/_linked_source$/', '', $formatter);
+    $image = theme('imagecache', $formatter, $item['filepath'], $item['alt'], $item['title']);
+    $output = l($image, $item['filepath'], array(), NULL, NULL, FALSE, TRUE);
+  }
   else {
     $output = theme('imagecache', $formatter, $item['filepath'], $item['alt'], $item['title']);
   }
