Index: trunk/psLib/src/image/psImage.c
===================================================================
--- trunk/psLib/src/image/psImage.c	(revision 649)
+++ trunk/psLib/src/image/psImage.c	(revision 664)
@@ -7,6 +7,6 @@
  *  @author Ross Harman, MHPCC
  *   
- *  @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2004-05-12 19:46:52 $
+ *  @version $Revision: 1.5 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-05-13 20:03:35 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -18,5 +18,5 @@
 #include "psMemory.h"
 #include "psError.h"
-#include "psArray.h"
+#include "psVector.h"
 #include "psImage.h"
 
@@ -55,21 +55,23 @@
 /*****************************************************************************/
 
-psImage *psImageAlloc(int nCols, int nRows, psType type)
+psImage *psImageAlloc(unsigned int numCols, unsigned int numRows, psType type)
 {
     int area = 0;
     psElemType imageType = 0;
     psDimen imageDim = 0;
+    int elementSize = PSELEMTYPE_SIZEOF(type.type); // element size in bytes
+    int rowSize = numCols*elementSize;  // row size in bytes.
 
     imageType = type.type;
     imageDim =  type.dimen;
-    area = nCols*nRows;
+    area = numCols*numRows;
 
     if(imageDim != PS_DIMEN_IMAGE) {
-        psError(__func__, " : Line %d - Image dimensionality not PS_DIMEN_IMAGE=3 . Dimensionality: %d\n",
-                __LINE__, imageDim);
+        psError(__func__, " : Image dimensionality not PS_DIMEN_IMAGE (3). Dimensionality: %d\n",
+                imageDim);
         return NULL;
     } else if(area <= 0) {
-        psError(__func__, " : Line %d - Invalid value for number of rows or columns. nRows: %d nCols: %d \n",
-                __LINE__, nRows, nCols);
+        psError(__func__, " : Invalid value for number of rows or columns. numRows: %d numCols: %d\n",
+                numRows, numCols);
         return NULL;
     }
@@ -77,67 +79,14 @@
     psImage *image = (psImage *)psAlloc(sizeof(psImage));
 
-    switch (type.type) {
-    case PS_TYPE_CHAR:
-        image->rows.rows_c = (char **)psAlloc(ny*sizeof(char *));
-        image->rows.rows_c[0] = (char *)psAlloc(area*sizeof(char));
-        for(int i = 1; i < ny; i++) {
-            image->rows.rows_c[i] = &image->rows.rows_c[0][i*nx];
-        }
-        break;
-    case PS_TYPE_SHORT:
-        image->rows.rows_s = (short **)psAlloc(ny*sizeof(short *));
-        image->rows.rows_s[0] = (short *)psAlloc(area*sizeof(short));
-        for(int i = 1; i < ny; i++) {
-            image->rows.rows_s[i] = &image->rows.rows_s[0][i*nx];
-        }
-        break;
-    case PS_TYPE_INT:
-        image->rows.rows_i = (int **)psAlloc(ny*sizeof(int *));
-        image->rows.rows_i[0] = (int *)psAlloc(area*sizeof(int));
-        for(int i = 1; i < ny; i++) {
-            image->rows.rows_i[i] = &image->rows.rows_i[0][i*nx];
-        }
-        break;
-    case PS_TYPE_LONG:
-        image->rows.rows_l = (long **)psAlloc(ny*sizeof(long *));
-        image->rows.rows_l[0] = (long *)psAlloc(area*sizeof(long));
-        for(int i = 1; i < ny; i++) {
-            image->rows.rows_l[i] = &image->rows.rows_l[0][i*nx];
-        }
-        break;
-    case PS_TYPE_UCHAR:
-        image->rows.rows_uc = (unsigned char **)psAlloc(ny*sizeof(unsigned char *));
-        image->rows.rows_uc[0] = (unsigned char *)psAlloc(area*sizeof(unsigned char));
-        for(int i = 1; i < ny; i++) {
-            image->rows.rows_uc[i] = &image->rows.rows_uc[0][i*nx];
-        }
-        break;
-    case PS_TYPE_USHORT:
-        image->rows.rows_us = (unsigned short **)psAlloc(ny*sizeof(unsigned short *));
-        image->rows.rows_us[0] = (unsigned short *)psAlloc(area*sizeof(unsigned short));
-        for(int i = 1; i < ny; i++) {
-            image->rows.rows_us[i] = &image->rows.rows_us[0][i*nx];
-        }
-        break;
-    case PS_TYPE_UINT:
-        image->rows.rows_ui = (unsigned int **)psAlloc(ny*sizeof(unsigned int *));
-        image->rows.rows_ui[0] = (unsigned int *)psAlloc(area*sizeof(unsigned int));
-        for(int i = 1; i < ny; i++) {
-            image->rows.rows_ui[i] = &image->rows.rows_ui[0][i*nx];
-        }
-        break;
-    case PS_TYPE_ULONG:
-        image->rows.rows_ul = (unsigned long **)psAlloc(ny*sizeof(unsigned long *));
-        image->rows.rows_ul[0] = (unsigned long *)psAlloc(area*sizeof(unsigned long));
-        for(int i = 1; i < ny; i++) {
-            image->rows.rows_ul[i] = &image->rows.rows_ul[0][i*nx];
-        }
-        break;
+    image->data.v[0] = psAlloc(area*elementSize);
+
+    for(int i = 1; i < numRows; i++) {
+        image->data.v[i] = (void*)((int8_t*)image->data.v[i-1]+rowSize);
     }
 
-    image->cols0 = 0;
-    image->rows0 = 0;
-    image->nCols = nCols;
-    image->nRows = nRows;
+    image->col0 = 0;
+    image->row0 = 0;
+    image->numCols = numCols;
+    image->numRows = numRows;
     image->type = type;
     image->parent = NULL;
@@ -160,38 +109,6 @@
         children = image->children;
 
-        switch(imageType) {
-        case PS_TYPE_SHORT:
-            psFree(image->rows.rows_s);
-            break;
-        case PS_TYPE_INT:
-            psFree(image->rows.rows_i);
-            break;
-        case PS_TYPE_LONG:
-            psFree(image->rows.rows_l);
-            break;
-        case PS_TYPE_USHORT:
-            psFree(image->rows.rows_us);
-            break;
-        case PS_TYPE_UINT:
-            psFree(image->rows.rows_ui);
-            break;
-        case PS_TYPE_ULONG:
-            psFree(image->rows.rows_ul);
-            break;
-        case PS_TYPE_FLOAT:
-            psFree(image->rows.rows_f);
-            break;
-        case PS_TYPE_DOUBLE:
-            psFree(image->rows.rows_d);
-            break;
-        case PS_TYPE_COMPLEX:
-            psFree(image->rows.rows_cf);
-            break;
-        case PS_TYPE_OTHER:
-            psError(__func__, " : Line %d - Can't delete images of type PS_TYPE_OTHER\n", __LINE__);
-            break;
-        default:
-            psError(__func__, " : Line %d - Invalid psImage type: %d\n", __LINE__, imageType);
-        }
+        psFree(image->data.v[0]);
+        psFree(image->data.v);
 
         for(i=0; i<nChildren; i++) {
