Index: trunk/psLib/src/image/psImageExtraction.c
===================================================================
--- trunk/psLib/src/image/psImageExtraction.c	(revision 1385)
+++ trunk/psLib/src/image/psImageExtraction.c	(revision 1404)
@@ -9,6 +9,6 @@
 *  @author Robert DeSonia, MHPCC
 *
-*  @version $Revision: 1.5 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2004-08-04 23:37:39 $
+*  @version $Revision: 1.6 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2004-08-06 21:50:13 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -230,4 +230,5 @@
 
 psVector* psImageSlice( psVector* out,
+                        psVector* slicePositions,
                         const psImage* restrict in,
                         const psImage* restrict mask,
@@ -321,8 +322,13 @@
         psVector* maskVec = NULL;
         psMaskType* maskData = NULL;
+        psU32* outPosition = NULL;
 
         // recycle output to make a proper sized/type output structure
         // n.b. type is double as that is the type given for all stats in psStats.
-        out = psVectorRecycle( out, PS_TYPE_F64, numCols );
+        out = psVectorRecycle( out, numCols, PS_TYPE_F64);
+        if (slicePositions != NULL) {
+            slicePositions = psVectorRecycle(slicePositions,numCols,PS_TYPE_U32);
+            outPosition = slicePositions->data.U32;
+        }
         outData = out->data.F64;
         if ( delta < 0 ) {
@@ -355,4 +361,7 @@
                 (void)p_psGetStatValue(myStats,&statVal); \
                 *outData = statVal; \
+                if (outPosition != NULL) { \
+                    *(outPosition++) = col+c; \
+                } \
                 outData += delta; \
             } \
@@ -385,4 +394,5 @@
             psVector* maskVec = NULL;
             int elementSize = PSELEMTYPE_SIZEOF( type );
+            psU32* outPosition = NULL;
 
             // fill in psVectors to fake out the statistics functions.
@@ -398,5 +408,9 @@
             // recycle output to make a proper sized/type output structure
             // n.b. type is double as that is the type given for all stats in psStats.
-            out = psVectorRecycle( out, PS_TYPE_F64, numRows );
+            out = psVectorRecycle( out, numRows, PS_TYPE_F64 );
+            if (slicePositions != NULL) {
+                slicePositions = psVectorRecycle(slicePositions,numRows,PS_TYPE_U32);
+                outPosition = slicePositions->data.U32;
+            }
             outData = out->data.F64;
             if ( delta < 0 ) {
@@ -413,4 +427,7 @@
                 ( void ) p_psGetStatValue( myStats, &statVal ); // we know it works cause we tested it above
                 *outData = statVal;
+                if (outPosition != NULL) {
+                    *(outPosition++) = row+r;
+                }
                 outData += delta;
             }
