#pragma once #include #include #include #include using std::string; //读取和操作dfd图件 class GBaseObj; class AFX_EXT_CLASS GDfdMap { public: GDfdMap(); virtual ~GDfdMap(); void ClearAll(void); int ReadFile(const char* fname); //获取指定层下所有元素 int GetElements(std::list& dstObjs, string layername, bool bIncludingSublayers = true); //获取所有元素 std::list& GetElements(); int GetLayers(std::vector& 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& sublayers); void InsertObj(GBaseObj* pobj); //layerdst是否为scr的子层 bool IsSubLayer(string layerscr, string layerdst); protected: typedef std::list::iterator OBJITER; std::list m_elements; std::string m_tmpLayer; COLORREF m_tmpColor; std::map > m_mapLayerObjs; //层位和对应元素 };