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++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

//////////////////////////////////////////////////////////////////////////////
//文件 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();
}