#pragma once #include "DrawModel\BaseLib.h" #include "DrawOperator\DrawLib.h" #include "DrawOperator\XyIO.h" #include "afx.h" #include "CallBack.h" using namespace std; //typedef POSITION(IDWHelper::*FUNC) (CCurve* pCurve, CString strLayer); // //FUNC FUNCCurve; class IDWHelper { public: IDWHelper(); ~IDWHelper(); void Calculate(LPCTSTR layerFile, LPCTSTR wellFile, LPCTSTR outFile, double factor = 2.0, LPCTSTR faultLayer="", double contourStep = 5.0, int contourMarkStep = 5 ,int times=0, int gridM=0, int smooth=0, BOOL withName = FALSE); bool Calculate(CMesh* pMesh, vector> wellData , CMesh* pMeshNew, LPCTSTR outFile, double factor = 2, LPCTSTR faultLayer= "" ,int times=0, int gridM=0, int smooth=0); void CalculateAdjustData(LPCTSTR layerFile, LPCTSTR wellFile, LPCTSTR outFile); void SetProgressEvent(CPPCallback callback) { DoProgress = callback; // DoProgress("", 11); }//staticCXy* pxy, void AddContourCurve(std::vector* curves, std::vector* layer, POSITION newMeshPosition); typedef POSITION(IDWHelper::*pmfn1)(CCurve* pCurve, CString strLayer); private: void ReadInToMatrix(string FilePath, vector>& data, vector& name); BOOL OpenFile(LPCTSTR lpszFileName); void Serialize(CArchive& ar, CXy* pXy); CString MakeExtFileName(LPCTSTR oldFile, LPCTSTR ext); CString MakeExtFileName(LPCTSTR oldFile, LPCTSTR nameSuffix, LPCTSTR newExt); CMesh* IDWHelper::ReadFileMesh(LPCTSTR lpszFileName); inline BOOL IsPointInFault(double x, double y, CString faultLayer); private: CXy* m_pXy; CXy* m_pXyTmp; //CMesh* m_pMesh; double InvalidZ = 1e301; CPPCallback DoProgress = nullptr; BOOL m_bWithName = FALSE; vector m_names; };