00001 #ifndef MESHTRANSFORMATION_H
00002 #define MESHTRANSFORMATION_H
00003
00004 #include "SundanceDefs.h"
00005
00006 #include "Mesh.h"
00007 #include "TSFSmartPtr.h"
00008 #include "TSFTimeMonitor.h"
00009
00010 namespace Sundance
00011 {
00012
00013 using namespace TSF;
00014 using std::string;
00015
00016 using std::ostream;
00017
00018
00019
00020
00021
00022
00023 class MeshTransformationBase
00024 {
00025 public:
00026
00027 MeshTransformationBase() {;}
00028
00029 virtual ~MeshTransformationBase() {;}
00030
00031
00032 virtual void transform(Mesh& mesh) const = 0;
00033
00034
00035 virtual void undo(Mesh& mesh) const ;
00036
00037 protected:
00038 };
00039
00040
00041
00042
00043
00044
00045 class MeshTransformation
00046 {
00047 public:
00048
00049 MeshTransformation() : ptr_(0){;}
00050
00051 MeshTransformation(MeshTransformationBase* ptr);
00052
00053
00054 void transform(Mesh& mesh) const ;
00055
00056
00057 void undo(Mesh& mesh) const ;
00058
00059 private:
00060 TSFSmartPtr<MeshTransformationBase> ptr_;
00061
00062 static TSFTimer& meshTransformationTimer();
00063 };
00064
00065
00066
00067
00068
00069 }
00070 #endif