Ignore:
Timestamp:
06/22/15 13:36:21 (9 years ago)
Author:
mhnguyen
Message:

Implementing generic transformation algorithm (local commit)

+) Change a little bit to make sure everything work in order

Test
+) test_new_features passe with inverse

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/filter/axis_algorithm_transformation.cpp

    r620 r621  
    11#include "axis_algorithm_transformation.hpp" 
     2#include "axis_inverse.hpp" 
     3#include "axis_zoom.hpp" 
    24 
    35namespace xios { 
    46 
    5 CAxisAlgorithmTransformation::CAxisAlgorithmTransformation(CAxis* axisDestination) 
     7CAxisAlgorithmTransformation::CAxisAlgorithmTransformation(CAxis* axisDestination, CAxis* axisSource, std::vector<ETranformationType>& algos) 
    68 : CGenericAlgorithmTransformation() 
    79{ 
    8   int niDest = axisDestination->ni.getValue(); 
    9   int ibeginDest = axisDestination->ibegin.getValue(); 
     10  for (int idx = 0; idx < algos.size(); ++idx) 
     11  { 
     12    switch (algos[idx]) 
     13    { 
     14      case TRANS_ZOOM_AXIS: 
     15        algosOfAnAxis_.push_back(new CAxisZoom(axisDestination, axisSource)); 
     16        break; 
     17      case TRANS_INVERSE_AXIS: 
     18        algosOfAnAxis_.push_back(new CAxisInverse(axisDestination, axisSource)); 
     19        break; 
     20      default: 
     21        break; 
     22    } 
     23  } 
     24  computeIndexSourceMapping(); 
     25} 
    1026 
    11   for (int idx = 0; idx < niDest; ++idx) axisDestGlobalIndex_.push_back(ibeginDest+idx); 
     27CAxisAlgorithmTransformation::~CAxisAlgorithmTransformation() 
     28{ 
     29  for (int idx = 0; idx < algosOfAnAxis_.size(); ++idx) delete algosOfAnAxis_[idx]; 
     30} 
     31 
     32void CAxisAlgorithmTransformation::computeIndexSourceMapping() 
     33{ 
     34  if (!algosOfAnAxis_.empty()) 
     35  { 
     36    algosOfAnAxis_[0]->computeIndexSourceMapping(this->transformationMapping_); 
     37    for (int idx = 1; idx < algosOfAnAxis_.size(); ++idx) 
     38    { 
     39      algosOfAnAxis_[idx]->computeIndexSourceMapping(algosOfAnAxis_[idx-1]->getTransformationMapping()); 
     40    } 
     41    this->transformationMapping_ = algosOfAnAxis_[algosOfAnAxis_.size()-1]->getTransformationMapping(); 
     42  } 
    1243} 
    1344 
Note: See TracChangeset for help on using the changeset viewer.