X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=libctsim%2Farray2dfile.cpp;h=a38dda3d67afdc0b2b52bd481f43a53b47697151;hp=3e1662ae1b91ab65ed81f73635efe05c9fe82035;hb=1a050c98763fbbc0662731b0b76953acede6f5d7;hpb=c8b19dfaffba9f06d8b6c40cb1bb83a8964867f7 diff --git a/libctsim/array2dfile.cpp b/libctsim/array2dfile.cpp index 3e1662a..a38dda3 100644 --- a/libctsim/array2dfile.cpp +++ b/libctsim/array2dfile.cpp @@ -1,10 +1,10 @@ /***************************************************************************** ** FILE IDENTIFICATION ** -** Name: array2dfile.cpp +** Name: array2dfile.cpp ** Purpose: 2-dimension array file class -** Programmer: Kevin Rosenberg -** Date Started: June 2000 +** Programmer: Kevin Rosenberg +** Date Started: June 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2001 Kevin Rosenberg @@ -57,7 +57,7 @@ Array2dFileLabel::init (void) m_second = lt->tm_sec; } -Array2dFileLabel::Array2dFileLabel() +Array2dFileLabel::Array2dFileLabel() { init(); } @@ -66,7 +66,7 @@ Array2dFileLabel::Array2dFileLabel(const char* const str, double ctime) : m_strLabel (str) { init(); - + m_labelType = L_USER; m_calcTime = ctime; } @@ -75,7 +75,7 @@ Array2dFileLabel::Array2dFileLabel(const int type, const char* const str, double : m_strLabel (str) { init(); - + m_labelType = type; m_calcTime = ctime; } @@ -84,7 +84,7 @@ Array2dFileLabel::~Array2dFileLabel() { } -void +void Array2dFileLabel::setDateTime (int year, int month, int day, int hour, int minute, int second) { m_year = year; @@ -95,7 +95,7 @@ Array2dFileLabel::setDateTime (int year, int month, int day, int hour, int minut m_second = second; } -void +void Array2dFileLabel::getDateTime (int& year, int& month, int& day, int& hour, int& minute, int& second) const { year = m_year; @@ -106,7 +106,7 @@ Array2dFileLabel::getDateTime (int& year, int& month, int& day, int& hour, int& second = m_second; } -const std::string& +const std::string& Array2dFileLabel::getDateString (void) const { char szDate [128]; @@ -134,7 +134,7 @@ Array2dFileLabel::operator= (const Array2dFileLabel& rhs) m_strLabel = rhs.m_strLabel; m_year = rhs.m_year; m_month = rhs.m_month; m_day = rhs.m_day; m_hour = rhs.m_hour; m_minute = rhs.m_minute; m_second = rhs.m_second; - + return (*this); } @@ -276,10 +276,10 @@ Array2dFile::reallocRealToComplex () -void +void Array2dFile::allocArrays () { - if (m_arrayData) + if (m_arrayData) freeArray (m_arrayData); if (m_imaginaryArrayData) freeArray (m_imaginaryArrayData); @@ -299,15 +299,15 @@ Array2dFile::allocArray (unsigned char**& rppData) rppData[i] = new unsigned char [columnBytes]; } -void +void Array2dFile::freeArrays () { - if (m_arrayData) + if (m_arrayData) freeArray (m_arrayData); - - if (m_imaginaryArrayData) + + if (m_imaginaryArrayData) freeArray (m_imaginaryArrayData); - + } void @@ -330,7 +330,7 @@ bool Array2dFile::fileWrite (const char* const filename) { m_filename = filename; - + frnetorderstream fs (m_filename.c_str(), std::ios::out | std::ios::in | std::ios::trunc | std::ios::binary); if (fs.fail()) { sys_error (ERR_WARNING, "Error opening file %s for writing [fileCreate]", m_filename.c_str()); @@ -338,13 +338,13 @@ Array2dFile::fileWrite (const char* const filename) } if (! headerWrite(fs)) return false; - + if (! arrayDataWrite (fs)) return false; - + if (! labelsWrite (fs)) return false; - + return true; } @@ -358,25 +358,25 @@ bool Array2dFile::fileRead (const char* const filename) { m_filename = filename; - + frnetorderstream fs (m_filename.c_str(), std::ios::out | std::ios::in | std::ios::binary); if (fs.fail()) { sys_error (ERR_WARNING, "Unable to open file %s [fileRead]", m_filename.c_str()); return false; } - + if (! headerRead(fs)) return false; - + allocArrays (); - + if (! arrayDataRead(fs)) return false;; - + if (! labelsRead (fs)) return false; - + return true; } @@ -388,7 +388,7 @@ Array2dFile::setAxisIncrement (double incX, double incY) m_axisIncrementY = incY; } -void +void Array2dFile::setAxisExtent (double minX, double maxX, double minY, double maxY) { m_axisExtentKnown = true; @@ -405,10 +405,10 @@ Array2dFile::headerRead (frnetorderstream& fs) sys_error (ERR_WARNING, "Tried to read header with file closed [headerRead]"); return false; } - + fs.seekg (0); kuint16 file_signature; - + fs.readInt16 (m_headersize); fs.readInt16 (file_signature); fs.readInt16 (m_pixelFormat); @@ -427,7 +427,7 @@ Array2dFile::headerRead (frnetorderstream& fs) fs.readFloat64 (m_maxY); fs.readFloat64 (m_offsetPV); fs.readFloat64 (m_scalePV); - + int read_m_headersize = fs.tellg(); if (read_m_headersize != m_headersize) { sys_error (ERR_WARNING, "Read m_headersize %d != file m_headersize %d", read_m_headersize, m_headersize); @@ -437,7 +437,7 @@ Array2dFile::headerRead (frnetorderstream& fs) sys_error (ERR_WARNING, "File signature %d != true signature %d", file_signature, m_signature); return false; } - + return ! fs.fail(); } @@ -449,9 +449,9 @@ Array2dFile::headerWrite (frnetorderstream& fs) sys_error (ERR_WARNING, "Tried to write header with ! fs"); return false; } - + m_numFileLabels = m_labels.size(); - + fs.seekp (0); fs.writeInt16 (m_headersize); fs.writeInt16 (m_signature); @@ -471,11 +471,11 @@ Array2dFile::headerWrite (frnetorderstream& fs) fs.writeFloat64 (m_maxY); fs.writeFloat64 (m_offsetPV); fs.writeFloat64 (m_scalePV); - + m_headersize = static_cast(fs.tellp()); fs.seekp (0); fs.writeInt16 (m_headersize); - + return ! fs.fail(); } @@ -487,10 +487,10 @@ Array2dFile::arrayDataWrite (frnetorderstream& fs) sys_error (ERR_WARNING, "Tried to arrayDataWrite with !fs"); return false; } - - if (! m_arrayData) + + if (! m_arrayData) return false; - + fs.seekp (m_headersize); int columnSize = m_ny * m_pixelSize; for (unsigned int ix = 0; ix < m_nx; ix++) { @@ -501,7 +501,7 @@ Array2dFile::arrayDataWrite (frnetorderstream& fs) fs.write (reinterpret_cast(ptrColumn), m_pixelSize); ptrColumn += m_pixelSize; } - } else + } else fs.write (reinterpret_cast(ptrColumn), columnSize); } if (m_dataType == DATA_TYPE_COMPLEX) { @@ -513,11 +513,11 @@ Array2dFile::arrayDataWrite (frnetorderstream& fs) fs.write (reinterpret_cast(ptrColumn), m_pixelSize); ptrColumn += m_pixelSize; } - } else + } else fs.write (reinterpret_cast(ptrColumn), columnSize); } } - + return true; } @@ -529,10 +529,10 @@ Array2dFile::arrayDataRead (frnetorderstream& fs) sys_error (ERR_WARNING, "Tried to arrayDataRead with ! fs"); return false; } - + if (! m_arrayData) return false; - + fs.seekg (m_headersize); int columnSize = m_ny * m_pixelSize; for (unsigned int ix = 0; ix < m_nx; ix++) { @@ -542,7 +542,7 @@ Array2dFile::arrayDataRead (frnetorderstream& fs) fs.read (reinterpret_cast(ptrColumn), m_pixelSize); ConvertReverseNetworkOrder (ptrColumn, m_pixelSize); ptrColumn += m_pixelSize; - } + } } else fs.read (reinterpret_cast(ptrColumn), columnSize); } @@ -554,12 +554,12 @@ Array2dFile::arrayDataRead (frnetorderstream& fs) fs.read (reinterpret_cast(ptrColumn), m_pixelSize); ConvertReverseNetworkOrder (ptrColumn, m_pixelSize); ptrColumn += m_pixelSize; - } + } } else fs.read (reinterpret_cast(ptrColumn), columnSize); } } - + return true; } @@ -570,11 +570,11 @@ Array2dFile::labelsRead (frnetorderstream& fs) fs.seekg (pos); if (fs.fail()) return false; - + for (int i = 0; i < m_numFileLabels; i++) { kuint16 labelType, year, month, day, hour, minute, second; kfloat64 calcTime; - + fs.readInt16 (labelType); fs.readInt16 (year); fs.readInt16 (month); @@ -583,20 +583,20 @@ Array2dFile::labelsRead (frnetorderstream& fs) fs.readInt16 (minute); fs.readInt16 (second); fs.readFloat64 (calcTime); - + kuint16 strLength; fs.readInt16 (strLength); char* pszLabelStr = new char [strLength+1]; fs.read (pszLabelStr, strLength); pszLabelStr[strLength] = 0; - + Array2dFileLabel* pLabel = new Array2dFileLabel (labelType, pszLabelStr, calcTime); delete pszLabelStr; - + pLabel->setDateTime (year, month, day, hour, minute, second); m_labels.push_back (pLabel); } - + return true; } @@ -605,7 +605,7 @@ Array2dFile::labelsWrite (frnetorderstream& fs) { off_t pos = m_headersize + m_arraySize; fs.seekp (pos); - + for (constLabelIterator l = m_labels.begin(); l != m_labels.end(); l++) { const Array2dFileLabel& label = **l; kuint16 labelType = label.getLabelType(); @@ -613,11 +613,11 @@ Array2dFile::labelsWrite (frnetorderstream& fs) const char* const labelString = label.getLabelString().c_str(); int year, month, day, hour, minute, second; kuint16 yearBuf, monthBuf, dayBuf, hourBuf, minuteBuf, secondBuf; - + label.getDateTime (year, month, day, hour, minute, second); yearBuf = year; monthBuf = month; dayBuf = day; hourBuf = hour; minuteBuf = minute; secondBuf = second; - + fs.writeInt16 (labelType); fs.writeInt16 (yearBuf); fs.writeInt16 (monthBuf); @@ -630,7 +630,7 @@ Array2dFile::labelsWrite (frnetorderstream& fs) fs.writeInt16 (strlength); fs.write (labelString, strlength); } - + return true; } @@ -645,7 +645,7 @@ void Array2dFile::labelAdd (int type, const char* const lstr, double calc_time) { Array2dFileLabel label (type, lstr, calc_time); - + labelAdd (label); } @@ -654,7 +654,7 @@ void Array2dFile::labelAdd (const Array2dFileLabel& label) { Array2dFileLabel* pLabel = new Array2dFileLabel(label); - + m_labels.push_back (pLabel); } @@ -673,7 +673,7 @@ Array2dFile::labelsCopy (const Array2dFile& copyFile, const char* const pszId) } } -void +void Array2dFile::arrayDataClear (void) { if (m_arrayData) { @@ -693,7 +693,7 @@ Array2dFile::printLabels (std::ostream& os) const { for (constLabelIterator l = m_labels.begin(); l != m_labels.end(); l++) { const Array2dFileLabel& label = **l; - + label.print (os); os << std::endl; } @@ -704,7 +704,7 @@ Array2dFile::printLabelsBrief (std::ostream& os) const { for (constLabelIterator l = m_labels.begin(); l != m_labels.end(); l++) { const Array2dFileLabel& label = **l; - + label.printBrief (os); } } @@ -714,7 +714,7 @@ Array2dFile::printLabelsBrief (std::ostringstream& os) const { for (constLabelIterator l = m_labels.begin(); l != m_labels.end(); l++) { const Array2dFileLabel& label = **l; - + label.printBrief (os); } }