X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=include%2Fimagefile.h;h=098d0c7272c585291cbe9998c148786f06c067ad;hp=0c2f8b5c990c0ce8c88d6a35c1ee290520fe42e2;hb=44988be2820a83554d63ba264383c9e87807abc8;hpb=f173363bba9997045e5ec825e64d6253ec4da235 diff --git a/include/imagefile.h b/include/imagefile.h index 0c2f8b5..098d0c7 100644 --- a/include/imagefile.h +++ b/include/imagefile.h @@ -98,14 +98,16 @@ public: Array2dFile (const char* const filename, unsigned int nx, unsigned int ny); ~Array2dFile (); - virtual unsigned int getNumLabels (void) const - { return num_labels; } + unsigned int getNumLabels (void) const + { return num_labels; } bool labelRead (Array2dFileLabel& label, unsigned int label_num); - bool labelAdd (const char* const label_str, double calc_time=0.); + void labelAdd (const Array2dFileLabel& label); - bool labelAdd (int type, const char* const label_str, double calc_time=0.); + void labelAdd (const char* const label_str, double calc_time=0.); + + void labelAdd (int type, const char* const label_str, double calc_time=0.); void fileClose (void); @@ -382,7 +384,7 @@ Array2dFile::arrayDataWrite (void) } lseek (file_id, headersize, SEEK_SET); - for (int ix = 0; ix < nx; ix++) + for (unsigned int ix = 0; ix < nx; ix++) { write (file_id, array->array_data[ix], ny * pixel_size); } @@ -500,18 +502,25 @@ Array2dFile::labelRead (Array2dFileLabel& label, unsigned int label_num) template -bool +void Array2dFile::labelAdd (const char* const lstr, double calc_time=0.) { labelAdd (Array2dFileLabel::L_HISTORY, lstr, calc_time); } template -bool +void Array2dFile::labelAdd (int type, const char* const lstr, double calc_time=0.) { Array2dFileLabel label (type, lstr, calc_time); + labelAdd (label); +} + +template +void +Array2dFile::labelAdd (const Array2dFileLabel& label) +{ labelSeek (num_labels); write_nint16 (&label.label_type, file_id); @@ -535,49 +544,66 @@ Array2dFile::labelAdd (int type, const char* const lstr, double calc_time=0.) #endif +#ifdef MPI_CT +#include +#endif class F32Image { public: - Array2dFile idf; + Array2dFile adf; - F32Image (const char* const fname, unsigned int nx, unsigned int ny) : idf (fname, nx, ny) + F32Image (const char* const fname, unsigned int nx, unsigned int ny) : adf (fname, nx, ny) { - idf.pixel_type = Array2dFile::FLOAT32; + adf.pixel_type = Array2dFile::FLOAT32; } - F32Image (unsigned int nx, unsigned int ny) : idf (nx, ny) + F32Image (unsigned int nx, unsigned int ny) : adf (nx, ny) { - idf.pixel_type = Array2dFile::FLOAT32; + adf.pixel_type = Array2dFile::FLOAT32; } - F32Image (const char* const fname) : idf (fname) + F32Image (const char* const fname) : adf (fname) { - idf.pixel_type = Array2dFile::FLOAT32; + adf.pixel_type = Array2dFile::FLOAT32; } + +#ifdef MPI_CT + MPI_Datatype getMPIDataType (void) const + { return MPI_FLOAT; } +#endif }; class F64Image { public: - Array2dFile idf; + Array2dFile adf; + +#ifdef MPI_CT + MPI_Datatype getMPIDataType (void) const + { return MPI_DOUBLE; } +#endif - F64Image (const char* const fname, unsigned int nx, unsigned int ny) : idf (fname, nx, ny) + F64Image (const char* const fname, unsigned int nx, unsigned int ny) : adf (fname, nx, ny) { - idf.pixel_type = Array2dFile::FLOAT64; + adf.pixel_type = Array2dFile::FLOAT64; } - F64Image (unsigned int nx, unsigned int ny) : idf (nx, ny) + F64Image (unsigned int nx, unsigned int ny) : adf (nx, ny) { - idf.pixel_type = Array2dFile::FLOAT64; + adf.pixel_type = Array2dFile::FLOAT64; } - F64Image (const char* const fname) : idf (fname) + F64Image (const char* const fname) : adf (fname) { - idf.pixel_type = Array2dFile::FLOAT64; + adf.pixel_type = Array2dFile::FLOAT64; } }; -typedef F64Image ImageFile; +typedef F64Image ImageFile; +typedef kfloat64 ImageFileValue; +typedef kfloat64* ImageFileColumn; +typedef kfloat64** ImageFileArray; +