|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
//文件 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<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); //设置该类下的所有类别的状态
|
|
|
|
|
|
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();
|
|
|
}
|