# ifndef TRACKINCURVE_H
# define TRACKINCURVE_H
# pragma once
# include "TrackCurveBase.h"
# include "Data/DataObj_Curve.h"
class CWellPole ;
class CTrackCurve ;
//class CTrackInCurveCross;
//class CTrackInCurveSegment;
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> ƶ<EFBFBD> <C6B6> <EFBFBD> <EFBFBD> ߶<EFBFBD> <DFB6> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ƶ<EFBFBD> <C6B6> <EFBFBD> <EFBFBD> ߶<EFBFBD> <DFB6> <EFBFBD> <EFBFBD> <EFBFBD>
//typedef TObjectList<CTrackInCurveSegment>CCurveSegmentList;
//typedef CArray<double, double> DOUBLEARR;
class AFX_EXT_CLASS CTrackCurve : public CTrackCurveBase
{
public :
CTrackCurve ( ) ;
virtual ~ CTrackCurve ( ) ;
CTrackCurve ( const CRect8 & position ) ;
CLONE_WELLOBJECT ( CTrackCurve )
virtual void operator = ( CTrackCurve & object ) ;
public :
virtual CWellDataObj * GetDataObj ( ) { return & m_dataObj ; }
virtual void SetDataObj ( CWellDataObj * pData , BOOL bCopy = TRUE ) ;
virtual void GetDataValue ( double & dmin , double & dmax ) ;
virtual void Serialize ( CArchive & ar , const short & ver ) ;
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ߶<EFBFBD> <DFB6> <EFBFBD>
virtual void CalculateSize ( CPoint2D point ) ;
virtual void CurveToNewPos ( ) ;
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> ҿ̶<D2BF>
virtual void DrawTitleLeftAndRightContent ( CXyDC * pDC , CString left , CString right , GDFLOGFONTEXT logfont , CRect8 rect ) ;
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
virtual void DrawCurveLine ( CXyDC * pDC , CCurveEx & curve , GDFLOGPENEXT logpen ) ;
virtual BOOL ReadCurveData ( BOOL bInit = TRUE ) ;
virtual void ComputePoints ( ) ;
virtual void ComputePoints ( CRect8 positon ) ;
//<2F> <> <EFBFBD> <EFBFBD> б <EFBFBD> <D0B1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ϵ<EFBFBD> <CFB5> <EFBFBD> <EFBFBD> е <EFBFBD> <D0B5> <EFBFBD> <EFBFBD> <EFBFBD>
virtual void ComputePointsInclined ( ) ;
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ<EFBFBD> <D6B5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ
virtual BOOL GetCurveValue ( double dDepth , double & dValue , int & nBegin ) ;
virtual double GetCurveValue ( int index ) ;
virtual double GetCurveDepth ( int index ) ;
//////<2F> ӹ<EFBFBD> <D3B9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱ<EFBFBD> <CAB1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ӷ<EFBFBD> <D3B6> <EFBFBD>
void BuidChildObject ( vector < CString > & fields , StringVectorSet & datas , BOOL bInit = FALSE ) ;
/////<2F> <> ȡ<EFBFBD> <C8A1> <EFBFBD> ڶ<EFBFBD> <DAB6> <EFBFBD> <EFBFBD> ľ<EFBFBD> <C4BE> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
virtual void GetChildDatas ( StringVectorSet & dataContent , BOOL bHaveWellName ) ;
void BuidChildObject ( double * pDepth , double * pData , int datanum , BOOL bInit ) ;
virtual void ClearCurveData ( ) ;
public :
//<2F> <> pcg<63> <67> ʽ <EFBFBD> <CABD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
virtual int ReadPCG_Data ( CFile & fr , const short & ver ) ;
//<2F> <> ȡpcg <20> ྮ<EFBFBD> <E0BEAE> <EFBFBD> <EFBFBD> <EFBFBD> Ա<EFBFBD> <D4B1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> CurveStyle
virtual int ReadPCG_SelfSection ( CFile & fr , CXmlParse & xp , const short & ver ) ;
//дpcg<63> <67> ʽ <EFBFBD> ĵ<EFBFBD> <C4B5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
virtual void WritePCG_Data ( CFile & fw , int nBaseTabNum ) ;
void CaculateStartAndEnd ( CWellPole * pWellObj ) ;
public :
CWellDataObj_Curve m_dataObj ; // <20> <> <EFBFBD> <EFBFBD> ԭʼ <D4AD> <CABC> <EFBFBD> <EFBFBD>
int m_nStatid ; //<2F> <> <EFBFBD> <EFBFBD> ״̬<D7B4> <CCAC> ־<EFBFBD> <D6BE> statid=0<> <30> <EFBFBD> <EFBFBD> ʾ <EFBFBD> <CABE> ʼ ״̬,statid=1,<2C> <> ʾ <EFBFBD> <CABE> <EFBFBD> <EFBFBD> ״̬<D7B4> <CCAC> statid=2<> <32> ʾ <EFBFBD> <CABE> <EFBFBD> <EFBFBD> ״̬<D7B4> <CCAC> <EFBFBD> ض<EFBFBD>
////<2F> ӹ<EFBFBD> <D3B9> <EFBFBD> <EFBFBD> <EFBFBD> ȡ<EFBFBD> <C8A1> <EFBFBD> ݻ<EFBFBD> <DDBB> ߽<EFBFBD> <DFBD> <EFBFBD> <EFBFBD> ݵ<EFBFBD> <DDB5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱʹ <CAB1> <CAB9>
CString m_strOperationNum ; //ʩ<> <CAA9> <EFBFBD> <EFBFBD>
CString m_strVersionNum ; //<2F> 汾<EFBFBD> <E6B1BE>
//TObjectList<CTrackInCurveCross> m_CurveCrossList;//<2F> 뱾<EFBFBD> <EBB1BE> <EFBFBD> ߹<EFBFBD> <DFB9> <EFBFBD> <EFBFBD> Ľ<EFBFBD> <C4BD> <EFBFBD> ͼ<EFBFBD> <CDBC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
virtual int ReadPCG_Data ( CKXmlParse & xp , const short & ver ) ;
//<2F> <> ȡpcg <20> ྮ<EFBFBD> <E0BEAE> <EFBFBD> <EFBFBD> <EFBFBD> Ա<EFBFBD> <D4B1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> CurveStyle
virtual int ReadPCG_SelfSection ( CKXmlParse & xp , const short & ver ) ;
virtual void GetChildDatas ( CString & jsonStr ) ;
virtual BOOL SetChildDatas ( CString & jsonStr ) ;
} ;
//
//class AFX_EXT_CLASS CTrackInCurveSegment : public CDrawTopEndObj
//{
//protected:
// //DECLARE_SERIAL(CTrackInCurveSegment);
//
//public:
// CTrackInCurveSegment();
// ~CTrackInCurveSegment();
// CTrackInCurveSegment(const CRect8& position);
//
//public:
// CTrackCurve* m_pCurve; // <20> <> <EFBFBD> <EFBFBD> ָ<EFBFBD> <D6B8>
//
//public:
// //<2F> Ա<EFBFBD> <D4B1> <EFBFBD> ѡ <EFBFBD> <D1A1> <EFBFBD> ߺ ͱ<DFBA> <EFBFBD> <D7BC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
// double Curve_ContrastCurve();
//
//public:
// virtual void DrawCurveSegment(CXyDC* pDC);
// virtual void Draw(CXyDC* pDC);
// virtual void Serialize(CArchive& ar, const short &ver);
//};
//
//class AFX_EXT_CLASS CTrackInCurveSegmentContainer : public CDrawTopEndObj
//{
//protected:
// //DECLARE_SERIAL(CTrackInCurveSegmentContainer);
//
//public:
// CTrackInCurveSegmentContainer();
// ~CTrackInCurveSegmentContainer();
// CTrackInCurveSegmentContainer(const CRect8& position);
//
// CCurveSegmentList m_CurveSegmentList; // <20> <> <EFBFBD> ߶<EFBFBD> <DFB6> <EFBFBD> <EFBFBD> <EFBFBD>
//
//public:
// //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ߶<EFBFBD> <DFB6> <EFBFBD>
// virtual void CalculateSize(CPoint2D point);
//
//// Implementation
//public:
// virtual void MoveTo(CRect8& position);
// virtual void Serialize(CArchive& ar, const short &ver);
// virtual CPoint2D GetHandle(int nHandle);
// virtual int GetHandleCount();
// virtual void MoveHandleTo(int nHandle, CPoint2D point);
// virtual BOOL Intersects(const CRect8& rect, double dHandleSize);
// virtual void Draw(CXyDC* pDC);
//};
//
///*<2A> <> <EFBFBD> <EFBFBD> ͼ<EFBFBD> <CDBC> ֪ͨ<CDA8> <D6AA> <EFBFBD> <EFBFBD> <EFBFBD> ӿڣ<D3BF> <DAA3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ս <EFBFBD> <D5BD> <EFBFBD> ͼ<EFBFBD> <CDBC> <EFBFBD> <EFBFBD> Ϣ<EFBFBD> <CFA2> <EFBFBD> Ϳ <EFBFBD> <CDBF> Լ̳<D4BC> <CCB3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ӿڣ<D3BF> <DAA3> <EFBFBD> ʵ<EFBFBD> <CAB5> <EFBFBD> 亯<EFBFBD> <E4BAAF> <EFBFBD> <EFBFBD>
//*/
//class CCurveCrossInterface
//{
//public:
// enum NotifyCode
// {
// CurveAllName, //֪ͨ<CDA8> Է<EFBFBD> ȷ<EFBFBD> <C8B7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ƵIJ<C6B5> <C4B2> <EFBFBD>
// ChangeSelDataArea ,//<2F> <> <EFBFBD> <EFBFBD> ͼ<EFBFBD> <CDBC> Ȧ<EFBFBD> <C8A6> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 仯
// SelectCrossPic, //֪ͨ<CDA8> Է<EFBFBD> ѡ <EFBFBD> <D1A1> <EFBFBD> <EFBFBD> <EFBFBD> µĽ<C2B5> <C4BD> <EFBFBD> ͼ
// DeleteCrossPic, //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͼ<EFBFBD> Ѿ<EFBFBD> <D1BE> ˳<EFBFBD> <CBB3> <EFBFBD>
// ChangeSelDataColor //<2F> <> <EFBFBD> <EFBFBD> ͼ<EFBFBD> <CDBC> Ȧ<EFBFBD> <C8A6> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ɫ<EFBFBD> 仯
// };
//
// virtual void CrossNotify(BYTE *pDataBuf, int BufSize) = 0;
//};
//
////CTrackInCurveCross<73> <73> <EFBFBD> <EFBFBD> <EFBFBD> ߵ <EFBFBD> <DFB5> ڵĶ<DAB5> <C4B6> <EFBFBD> <F3A3ACB9> <EFBFBD> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> <EFBFBD> صĽ<D8B5> <C4BD> <EFBFBD> ͼ<EFBFBD> <CDBC> <EFBFBD> <EFBFBD> <F3A3ACB2> 뽻<EFBFBD> <EBBDBB> ͼʵ<CDBC> ֻ<EFBFBD> <D6BB> <EFBFBD>
//class AFX_EXT_CLASS CTrackInCurveCross: public CDrawObj , public CCurveCrossInterface
//{
// //DECLARE_SERIAL(CTrackInCurveCross);
//
//public:
// CTrackInCurveCross(void);
// ~CTrackInCurveCross(void);
// CTrackInCurveCross(const CRect8& position);
//
//public:
// BOOL m_MoveDepId; //<2F> ƶ<EFBFBD> <C6B6> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ȶ<EFBFBD> Id
// int m_iShowMode ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ߵ <EFBFBD> <DFB5> <EFBFBD> ʾ 1=<3D> <> <EFBFBD> ߵ <EFBFBD> <DFB5> <EFBFBD> 2=<3D> <> <EFBFBD> <EFBFBD>
//
// DOUBLEARR m_fsdepArr; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʼ <EFBFBD> <CABC> <EFBFBD> <EFBFBD>
// DOUBLEARR m_fedepArr; //<2F> <> <EFBFBD> ν <EFBFBD> <CEBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
// CArray<CRect8, CRect8>m_RectArr;
// int m_PosInTrackNum; //<2F> <> ǰ<EFBFBD> <C7B0> <EFBFBD> <EFBFBD> ͼ<EFBFBD> <CDBC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ߷ֲ<DFB7> <D6B2> ڼ<EFBFBD> <DABC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> У <EFBFBD> <D0A3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 3
// int m_PosTrackIdArr[3];
//
// CString m_curve_name[3];
// CTrackCurve* m_pCurve[3];
//
// //CrossplotSpace::CCPCrossPic *m_pCrossPic;
// CDialog* m_pDialog;
// BOOL m_bActive; //<2F> Ƿ<EFBFBD> <C7B7> ǵ<EFBFBD> ǰ<EFBFBD> <EFBFBD> Ľ<EFBFBD> <C4BD> <EFBFBD> ͼ<EFBFBD> <CDBC> <EFBFBD> <EFBFBD>
//
// int m_SelId ; //<2F> <> ǰѡ <C7B0> е <EFBFBD> <D0B5> <EFBFBD> <EFBFBD> ȶ<EFBFBD> <C8B6> <EFBFBD> Ϣ
//
// static LPVOID c_pSCurPtr; //<2F> ڹ<EFBFBD> <DAB9> <EFBFBD> <EFBFBD> Ľ<EFBFBD> <C4BD> <EFBFBD> ͼ<EFBFBD> У <EFBFBD> <D0A3> <EFBFBD> ǰѡ <C7B0> е <EFBFBD> ͼ<EFBFBD> <CDBC> <EFBFBD> <EFBFBD> Ӧ<EFBFBD> Ľ<EFBFBD> <C4BD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
//
// CArray <Struct_CrossSelDataDepth*, Struct_CrossSelDataDepth *> m_SeldepthArr;
//
//public:
// void Initialize();
// void ResetAlldepth(DOUBLEARR & fsdepArr, DOUBLEARR &fedepArr);
// void InitObjFromParam(CStringArray & curveName, CWellObj *pWellObj, DOUBLEARR & fsdepArr, DOUBLEARR &fedepArr);
//
// void ChangeCrossdepth(); //<2F> <> <EFBFBD> εĸ<CEB5> <C4B8> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 仯<EFBFBD> <E4BBAF> <EFBFBD> Ľ<DEB8> <C4BD> <EFBFBD> ͼ<EFBFBD> <CDBC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
//
// virtual void CrossNotify(BYTE *pDataBuf, int BufSize); //<2F> <> <EFBFBD> յ<EFBFBD> <D5B5> <EFBFBD> <EFBFBD> <EFBFBD> ͼ<EFBFBD> <CDBC> <EFBFBD> <EFBFBD> ֪ͨ<CDA8> <D6AA> Ϣ.
//
// virtual CPoint2D GetHandle(int nHandle);
// virtual int GetHandleCount();
// virtual void MoveTo(CRect8& position);
// virtual void MoveHandleTo(int nHandle, CPoint2D point);
// virtual BOOL Intersects(const CRect8& rect, double dHandleSize);
// virtual void Draw(CXyDC* pDC);
// //virtual BOOL RemoveSelection();
// virtual void Serialize(CArchive& ar, const short &ver);
//
//
// //<2F> <> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͼ<EFBFBD> <CDBC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ȣ <EFBFBD> <C8A3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ȵ<EFBFBD> Id,pTrack<63> <6B> <EFBFBD> <EFBFBD> <EFBFBD> ڵ<EFBFBD> ,<2C> <> <EFBFBD> <EFBFBD> ʼ ʱ<CABC> <CAB1> ʹ <EFBFBD> <CAB9> <EFBFBD> <EFBFBD>
// int AddWellSecPos(const CRect8 & position, CTrackCurve* pTrack = NULL);
//
// void MoveWithCurve(CTrackCurve *pCurve);//<2F> <> <EFBFBD> <EFBFBD> λ<EFBFBD> ÷<EFBFBD> <C3B7> <EFBFBD> <EFBFBD> 仯<EFBFBD> <E4BBAF> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֮<EFBFBD> <D6AE> <EFBFBD> <EFBFBD>
// void ReSetOneCurvePos(int id); //<2F> <> <EFBFBD> <EFBFBD> ij<EFBFBD> <C4B3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ض<EFBFBD> <D8B6> <EFBFBD> <EFBFBD> <EFBFBD> λ<EFBFBD> <CEBB> ,id <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ID
//
// void ReSetAllCurvePos(); //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> е <EFBFBD> <D0B5> <EFBFBD> <EFBFBD> ߵ <EFBFBD> λ<EFBFBD> <CEBB>
//};
# endif