r84: *** empty log message ***
[ctsim.git] / include / imagefile.h
index a6988d8e76b909c77f395909894203901f257a5b..4660a92139c91c0fdb9995ee3ff193d685fb7d88 100644 (file)
@@ -35,7 +35,7 @@ public:
 
     ~Array2dFileLabel();
 
-    const string& getLabelString (void) const
+    string getLabelString (void) const
        { return label_str; }
 
     kfloat64 getCalcTime (void) const
@@ -44,6 +44,12 @@ public:
     kfloat64 getLabelType (void) const
        { return label_type; }
 
+    string& setLabelString (const char* const str)
+       { label_str = str; return (label_str); }
+
+    string& setLabelString (const string& str)
+       { label_str = str; return (label_str); }
+
     void getDateString (string& str) const;
 };
 
@@ -109,6 +115,8 @@ public:
 
   void labelAdd (int type, const char* const label_str, double calc_time=0.);
 
+  void labelsCopy (Array2dFile& file, const char* const idStr = NULL);
+
   void fileClose (void);
 
   void setPixelType (int type)
@@ -124,7 +132,7 @@ public:
 
   void setAxisExtent (double mMinX, double mMaxX, double mMinY, double mMaxY);
 
-  void getPixelValueRange (T& pvmin, T& pvmax);
+  void getPixelValueRange (T& pvmin, T& pvmax) const;
       
   void doPixelOffsetScale (double offset, double scale);
 
@@ -133,6 +141,8 @@ public:
 
   bool arrayDataWrite (void);
 
+  void arrayDataClear (void);
+
   bool fileRead (void);
 
   bool fileCreate (void);
@@ -292,18 +302,18 @@ Array2dFile<T>::setAxisExtent (double minX, double maxX, double minY, double max
 
 template<class T>
 void 
-Array2dFile<T>::getPixelValueRange (T& pvmin, T& pvmax)
+Array2dFile<T>::getPixelValueRange (T& pvmin, T& pvmax) const
 {
-      if (array != NULL) {
-       T** da = array.GetArray();
+    if (array != NULL) {
+       T** da = array->getArray();
        pvmax = pvmin = da[0][0];
-         for (int ix = 0; ix < mNX; ix++)
-             for (int iy = 0; iy < mNY; iy++)
-                 if (pvmax < da[ix][iy])
-                     pvmax = da[ix][iy];
-                 else if (pvmin > da[ix][iy])
+       for (int ix = 0; ix < mNX; ix++)
+           for (int iy = 0; iy < mNY; iy++)
+               if (pvmax < da[ix][iy])
+                   pvmax = da[ix][iy];
+               else if (pvmin > da[ix][iy])
                    pvmin = da[ix][iy];
-      }
+    }
 }
 
 template<class T>
@@ -562,8 +572,33 @@ Array2dFile<T>::labelAdd (const Array2dFileLabel& label)
   fsync(file_id);
 }
 
+template<class T>
+void
+Array2dFile<T>::labelsCopy (Array2dFile& copyFile, const char* const idStr)
+{
+    string id = idStr;
+    for (int i = 0; i < copyFile.getNumLabels(); i++) {
+      Array2dFileLabel l;
+      copyFile.labelRead (l, i);
+      string lstr = l.getLabelString();
+      lstr = idStr + lstr;
+      l.setLabelString (lstr);
+      labelAdd (l);
+    }
+}
+
+template<class T>
+void 
+Array2dFile<T>::arrayDataClear (void)
+{
+    if (array != NULL) {
+       T** v = array->getArray();
+       for (unsigned int ix = 0; ix < mNX; ix++)
+           for (unsigned int iy = 0; iy < mNY; iy++)
+               v[ix][iy] = 0;
+    }
+}
 
-#endif
 
 #ifdef MPI_CT
 #include <mpi.h>
@@ -589,6 +624,15 @@ public:
       adf.setPixelType (Array2dFile<kfloat64>::FLOAT32);
   }
 
+  kfloat32** getArray(void) const
+      { return adf.getArray(); }
+
+  kuint32 nx(void) const
+      { return adf.nx(); }
+
+  kuint32 ny(void) const
+      { return adf.ny(); }
+
 #ifdef MPI_CT
   MPI_Datatype getMPIDataType (void) const
       { return MPI_FLOAT; }
@@ -619,6 +663,15 @@ public:
   {
       adf.setPixelType (Array2dFile<kfloat64>::FLOAT64);
   }
+
+  kfloat64** getArray(void) const
+      { return adf.getArray(); }
+
+  kuint32 nx(void) const
+      { return adf.nx(); }
+
+  kuint32 ny(void) const
+      { return adf.ny(); }
 };
 
 typedef F64Image   ImageFile;
@@ -626,5 +679,7 @@ typedef kfloat64   ImageFileValue;
 typedef kfloat64*  ImageFileColumn;
 typedef kfloat64** ImageFileArray;
 
+#endif
+