X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;ds=sidebyside;f=include%2Fimagefile.h;h=4660a92139c91c0fdb9995ee3ff193d685fb7d88;hb=3873067b47875ba7b09d511cb5cdfeaa35e8c27d;hp=a6988d8e76b909c77f395909894203901f257a5b;hpb=59ff52843f44bec1ecd1ad36625cdda305cc7ef8;p=ctsim.git diff --git a/include/imagefile.h b/include/imagefile.h index a6988d8..4660a92 100644 --- a/include/imagefile.h +++ b/include/imagefile.h @@ -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::setAxisExtent (double minX, double maxX, double minY, double max template void -Array2dFile::getPixelValueRange (T& pvmin, T& pvmax) +Array2dFile::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 @@ -562,8 +572,33 @@ Array2dFile::labelAdd (const Array2dFileLabel& label) fsync(file_id); } +template +void +Array2dFile::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 +void +Array2dFile::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 @@ -589,6 +624,15 @@ public: adf.setPixelType (Array2dFile::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::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 +