////////////////////////////////////////////////////////////////////////////// //文件 ClassList.h //主要功能: // //程序编写: 2005-12-07 ///////////////////////////////////////////////////////////////////////////// #pragma once #include "layer.h" #include ".\LayerClass.h" /** * 原来Class意思是第一级图层,就是Layer平级的,字符串是 Layer: * 现在我们把这个概念去掉了,只有一个Layer是Class,所有的图层都放在Layer这个class里面 * 我们的存储 */ class AFX_EXT_CLASS CClassList { public: CClassList(void); virtual ~CClassList(void); protected: CList value; public: CLayerList* GetNext(POSITION &pos); CLayerList* GetPrev(POSITION &pos); CLayerList* GetAt(POSITION pos); CLayerList* GetHead(); CLayerList* GetTail(); POSITION GetHeadPosition(); POSITION GetTailPosition(); int GetCount(void); int GetLayerCount(void); CLayerList* FindAdd(CString strClassName); POSITION AddOnly(CString strClassName); POSITION AddTail(CString strClassName); POSITION AddHead(CString strClassName); POSITION Find(CString strClassName); POSITION InsertBefore(POSITION position, CString strClassName); POSITION InsertAfter (POSITION position, CString strClassName); void RemoveAll(BOOL bFreeMem=TRUE); void RemoveAt(POSITION pos); virtual void ScaleProperty(double sx, double sy, BOOL bJudgeEditSatte=TRUE); virtual void Serialize(CArchive& ar, const short &ver); int PositionNew(int bReplace); int Merge(CClassList& cl, CPtrList* pAddedLayerList = NULL, bool bReplaceExistLayer = TRUE); int ReplaceLayer(CString strOldName, CString strNewName); int MoveClass(POSITION sourcePos, POSITION objPos); void operator=(CClassList& cl); int SetLayerState(LPCTSTR lpClassName, int state); //设置该类下的所有类别的状态 void Write(CFile& fw, const short& ver); 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 WriteLayerNamePCG(CFile& fw, const short& ver, int nBaseTabNum, int isClosed); void WriteDML(CFile& fw, const short& ver, int nBaseTabNum); void WriteLayerNameDML(CFile& fw, const short& ver, int nBaseTabNum, int isClosed); void WriteLayerNameDML(CFile& fw, const short& ver, int nBaseTabNum); int WriteLegendDML(CFile& fw, const short& ver, double cc=1.0, int nBaseTabNum=1); void WritePCG(CFile& fw, const short& ver, int nBaseTabNum); void WriteLayerNamePCG(CFile& fw, const short& ver, int nBaseTabNum); int WriteLegendPCG(CFile& fw, const short& ver, double cc=1.0, int nBaseTabNum=1); void SerializeLayerName(CArchive& ar, const short &ver); //仅实现了写功能 void SerializeLegend(CArchive& ar, const short &ver); //仅实现了写功能 }; AFX_INLINE POSITION CClassList::GetHeadPosition() { return value.GetHeadPosition(); } AFX_INLINE POSITION CClassList::GetTailPosition() { return value.GetTailPosition(); } AFX_INLINE CLayerList* CClassList::GetNext(POSITION &pos) { return value.GetNext(pos); } AFX_INLINE CLayerList* CClassList::GetPrev(POSITION &pos) { return value.GetPrev(pos); } AFX_INLINE CLayerList* CClassList::GetAt(POSITION pos) { return value.GetAt(pos); } AFX_INLINE CLayerList* CClassList::GetHead() { return value.GetHead(); } AFX_INLINE CLayerList* CClassList::GetTail() { return value.GetTail(); } AFX_INLINE int CClassList::GetCount(void) { return (int)value.GetCount(); }