/[escript]/trunk/ripley/src/Rectangle.cpp
ViewVC logotype

Diff of /trunk/ripley/src/Rectangle.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 4526 by jfenwick, Mon Sep 2 06:34:25 2013 UTC revision 4529 by caltinay, Fri Oct 25 01:23:27 2013 UTC
# Line 307  void Rectangle::readBinaryGridImpl(escri Line 307  void Rectangle::readBinaryGridImpl(escri
307                                     const std::vector<int>& multiplier,                                     const std::vector<int>& multiplier,
308                                     int byteOrder) const                                     int byteOrder) const
309  {  {
     if (byteOrder != BYTEORDER_NATIVE)  
         throw RipleyException("readBinaryGrid(): only native byte order supported at the moment.");  
   
310      // check destination function space      // check destination function space
311      int myN0, myN1;      int myN0, myN1;
312      if (out.getFunctionSpace().getTypeCode() == Nodes) {      if (out.getFunctionSpace().getTypeCode() == Nodes) {
# Line 359  void Rectangle::readBinaryGridImpl(escri Line 356  void Rectangle::readBinaryGridImpl(escri
356      vector<ValueType> values(num0*numComp);      vector<ValueType> values(num0*numComp);
357      const int dpp = out.getNumDataPointsPerSample();      const int dpp = out.getNumDataPointsPerSample();
358    
359      for (index_t y=0; y<num1; y++) {      for (int y=0; y<num1; y++) {
360          const int fileofs = numComp*(idx0+(idx1+y)*numValues[0]);          const int fileofs = numComp*(idx0+(idx1+y)*numValues[0]);
361          f.seekg(fileofs*sizeof(ValueType));          f.seekg(fileofs*sizeof(ValueType));
362          f.read((char*)&values[0], num0*numComp*sizeof(ValueType));          f.read((char*)&values[0], num0*numComp*sizeof(ValueType));
363          for (int x=0; x<num0; x++) {          for (int x=0; x<num0; x++) {
364              const int baseIndex = first0+x*multiplier[0]              const int baseIndex = first0+x*multiplier[0]
365                                      +(first1+y*multiplier[1])*myN0;                                      +(first1+y*multiplier[1])*myN0;
366              for (index_t m1=0; m1<multiplier[1]; m1++) {              for (int m1=0; m1<multiplier[1]; m1++) {
367                  for (index_t m0=0; m0<multiplier[0]; m0++) {                  for (int m0=0; m0<multiplier[0]; m0++) {
368                      const int dataIndex = baseIndex+m0+m1*myN0;                      const int dataIndex = baseIndex+m0+m1*myN0;
369                      double* dest = out.getSampleDataRW(dataIndex);                      double* dest = out.getSampleDataRW(dataIndex);
370                      for (int c=0; c<numComp; c++) {                      for (int c=0; c<numComp; c++) {
371                          if (!std::isnan(values[x*numComp+c])) {                          ValueType val = values[x*numComp+c];
372    
373                            if (byteOrder != BYTEORDER_NATIVE) {
374                                char* cval = reinterpret_cast<char*>(&val);
375                                // this will alter val!!
376                                byte_swap32(cval);
377                            }
378                            if (!std::isnan(val)) {
379                              for (int q=0; q<dpp; q++) {                              for (int q=0; q<dpp; q++) {
380                                  *dest++ = static_cast<double>(values[x*numComp+c]);                                  *dest++ = static_cast<double>(val);
381                              }                              }
382                          }                          }
383                      }                      }

Legend:
Removed from v.4526  
changed lines
  Added in v.4529

  ViewVC Help
Powered by ViewVC 1.1.26