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.

42 lines
1.1 KiB
C

1 month ago
#pragma once
#include <list>
#include <map>
#include <string>
#include <vector>
using std::string;
//<2F><>ȡ<EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD>dfdͼ<64><CDBC>
class GBaseObj;
class AFX_EXT_CLASS GDfdMap
{
public:
GDfdMap();
virtual ~GDfdMap();
void ClearAll(void);
int ReadFile(const char* fname);
//<2F><>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
int GetElements(std::list<GBaseObj*>& dstObjs, string layername, bool bIncludingSublayers = true);
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
std::list<GBaseObj*>& GetElements();
int GetLayers(std::vector<string>& layers);
void InsertObj(GBaseObj* pobj, const string& strLayer, COLORREF color);
string InsertLayer(string layername);
//implementations
protected:
string GetParentLayer(string curLayer);
int GetSubLayers(string parentLayer ,std::list<string>& sublayers);
void InsertObj(GBaseObj* pobj);
//layerdst<73>Ƿ<EFBFBD>Ϊscr<63><72><EFBFBD>Ӳ<EFBFBD>
bool IsSubLayer(string layerscr, string layerdst);
protected:
typedef std::list<GBaseObj*>::iterator OBJITER;
std::list<GBaseObj*> m_elements;
std::string m_tmpLayer;
COLORREF m_tmpColor;
std::map<string, std::list<GBaseObj*> > m_mapLayerObjs; //<2F><>λ<EFBFBD>Ͷ<EFBFBD>ӦԪ<D3A6><D4AA>
};