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.

120 lines
3.3 KiB
C

1 month ago
//////////////////////////////////////////////////////////////////////////////
//<2F>ļ<EFBFBD> ClassList.h
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>:
//
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д: 2005-12-07
/////////////////////////////////////////////////////////////////////////////
#pragma once
#include "layer.h"
#include ".\LayerClass.h"
/**
* ԭ<EFBFBD><EFBFBD>Class<EFBFBD><EFBFBD>˼<EFBFBD>ǵ<EFBFBD>һ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Layerƽ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Layer:
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD>ֻ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Layer<EFBFBD><EFBFBD>Class<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Layer<EFBFBD><EFBFBD><EFBFBD><EFBFBD>class<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ǵĴ
*/
class AFX_EXT_CLASS CClassList
{
public:
CClassList(void);
virtual ~CClassList(void);
protected:
CList<CLayerList*,CLayerList*> 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); //<2F><><EFBFBD>ø<EFBFBD><C3B8><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
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); //<2F><>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
void SerializeLegend(CArchive& ar, const short &ver); //<2F><>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
};
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();
}