You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

143 lines
4.2 KiB
C

1 month ago
//////////////////////////////////////////////////////////////////////////////
//<2F>ļ<EFBFBD> LayerClass.h
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>:
//
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д: 2005-12-07
/////////////////////////////////////////////////////////////////////////////
#pragma once
#include "afxcoll.h"
#include ".\name.h"
/**
* ͼ<EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><EFBFBD><EFBFBD>
*/
class CLayer;
class AFX_EXT_CLASS CLayerList : public CName
{
public:
CLayerList(CString strName);
CLayerList(void);
virtual ~CLayerList(void);
protected:
CPtrList value;
public:
virtual void Serialize(CArchive& ar, const short& ver);
virtual int Read(CFile& fr, const short& ver);
virtual void Write(CFile& fw, const short& ver);
virtual void ScaleProperty(double sx, double sy, BOOL bJudgeEditSatte=TRUE);
void SerializeLegend(CArchive& ar, const short &ver); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
void SerializeLayerName(CArchive& ar, const short& ver); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
void SerializeLayerState(CArchive& ar, const short& ver); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
int WriteLegend(CFile& fw, const short& ver, double cc=1.0);
void WriteLayerName(CFile& fw, const short& ver);
void WriteLayerState(CFile& fw, const short& ver);
void WriteLayerNameDML(CFile& fw, const short& ver, int nBaseTabNum, int isClosed);
void WriteLayerNameDML(CFile& fw, const short& ver, int nBaseTabNum);
void WriteDML(CFile& fw, const short& ver, int nBaseTabNum);
int WriteLegendDML(CFile& fw, const short& ver, double cc=1.0, int nBaseTabNum=1);
void WriteLayerNamePCG(CFile& fw, const short& ver, int nBaseTabNum, int isClosed);
void WriteLayerNamePCG(CFile& fw, const short& ver, int nBaseTabNum);
void WritePCG(CFile& fw, const short& ver, int nBaseTabNum);
int WriteLegendPCG(CFile& fw, const short& ver, double cc=1.0, int nBaseTabNum=1);
POSITION FindAdd(CString strName, bool* pbCreateNew = NULL); //<2F>Ȳ<EFBFBD><C8B2><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>иò<D0B8>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򷵻<EFBFBD><F2B7B5BB><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD>λ<EFBFBD><CEBB>
POSITION Add(CLayer* pLayer); //<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>иò<D0B8>,<2C><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
POSITION InsertAfter(POSITION posAfter, CLayer* pLayer);
POSITION InsertBefore(POSITION posBefore, CLayer* pLayer);
int Merge(CLayerList& cl, CPtrList* pAddedLayerList = NULL, bool bReplaceExistLayer = TRUE);
int ReplacePath(CString strOld, CString strNew);
int FindPath(CString strPathName, CString strFind);
POSITION FindLayer(CString strName, BOOL bIncludeSublayer = FALSE);
void FindLayers(CString strName, CPtrList& positions, BOOL bIncludeSublayer = FALSE);
int SetLayerState(CString sLayer, int state, BOOL bIncludeSubLayer);
int SetLayerState(int state); //<2F><><EFBFBD>ø<EFBFBD><C3B8><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
void RemoveAll(BOOL bFreeMem=TRUE);
void RemoveAllLegend(void);
void RemoveAt(CString strLayerName);
void RemoveAt(POSITION pos);
void RemoveAt(CLayer* pLayer); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1>е<EFBFBD>ָ<EFBFBD><EFBFBD><EBA3AC><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>pLayer<65><72><EFBFBD><EFBFBD>
CLayer* RemoveAtNoClear(POSITION pos);
CString GetPathName(POSITION pos);
CString GetClassName(void);
CPtrList* GetPtrList(void);
CLayer* GetAt(POSITION pos);
CLayer* GetNext(POSITION &pos);
CLayer* GetPrev(POSITION &pos);
CLayer* GetHead();
CLayer* GetTail();
POSITION GetHeadPosition();
POSITION GetTailPosition();
int GetCount(void);
void Standardization(CString &strLayerName);
int PositionNew(int bReplace=1);//<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>еķ<D0B5><C4B7><EFBFBD>ָ<EFBFBD>룬bReaplce=TRUEʱ<45><CAB1>ʾ<EFBFBD><CABE><EFBFBD>Ų<EFBFBD>Ϊ<EFBFBD>ղ<EFBFBD><D5B2><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>򲻹<EFBFBD><F2B2BBB9>Ƿ<EFBFBD>Ϊ<EFBFBD>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD>λ
void GetNewUsing(CStringList &list);
void operator=(CLayerList& lc);
int AddHeadLayer(LPCTSTR lpszLayerName); //<2F><><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>磺"NewLayer\\"<22><>"NewLayer\\Test\\"
};
AFX_INLINE CPtrList* CLayerList::GetPtrList(void)
{
return &value;
}
AFX_INLINE CString CLayerList::GetClassName(void)
{
return name;
}
AFX_INLINE int CLayerList::GetCount(void)
{
return (int)value.GetCount();
}
AFX_INLINE POSITION CLayerList::GetHeadPosition()
{
return value.GetHeadPosition();
}
AFX_INLINE POSITION CLayerList::GetTailPosition()
{
return value.GetTailPosition();
}
AFX_INLINE CLayer* CLayerList::GetNext(POSITION &pos)
{
return (CLayer*)value.GetNext(pos);
}
AFX_INLINE CLayer* CLayerList::GetPrev(POSITION &pos)
{
return (CLayer*)value.GetPrev(pos);
}
AFX_INLINE CLayer* CLayerList::GetAt(POSITION pos)
{
return (CLayer*)value.GetAt(pos);
}
AFX_INLINE CLayer* CLayerList::GetHead()
{
return (CLayer*)value.GetHead();
}
AFX_INLINE CLayer* CLayerList::GetTail()
{
return (CLayer*)value.GetTail();
}