private void SetFigChild(MpFigure_v1001 mpfig, Dictionary <uint, CadFigure> dic) { for (int i = 0; i < mpfig.ChildIdList.Count; i++) { uint id = mpfig.ChildIdList[i]; mpfig.TempFigure.ChildList.Add(dic[id]); dic[id].Parent = mpfig.TempFigure; } }
public static List <MpFigure_v1001> FigureListToMp_v1001(List <CadFigure> figList, bool withChild = false) { List <MpFigure_v1001> ret = new List <MpFigure_v1001>(); for (int i = 0; i < figList.Count; i++) { ret.Add(MpFigure_v1001.Create(figList[i], withChild)); } return(ret); }
public static List <MpFigure_v1001> FigureMapToMp_v1001( Dictionary <uint, CadFigure> figMap, bool withChild = false) { List <MpFigure_v1001> ret = new List <MpFigure_v1001>(); foreach (CadFigure fig in figMap.Values) { ret.Add(MpFigure_v1001.Create(fig, withChild)); } return(ret); }
public static MpFigure_v1001 Create(CadFigure fig, bool withChild = false) { MpFigure_v1001 ret = new MpFigure_v1001(); ret.StoreCommon(fig); if (withChild) { ret.StoreChildList(fig); } else { ret.StoreChildIdList(fig); } return(ret); }
public CadObjectDB Restore() { CadObjectDB ret = new CadObjectDB(); ret.LayerIdProvider.Counter = LayerIdCount; ret.FigIdProvider.Counter = FigureIdCount; // Figure map List <CadFigure> figList = MpUtil_v1001.FigureListFromMp_v1001(FigureList); var dic = new Dictionary <uint, CadFigure>(); for (int i = 0; i < figList.Count; i++) { CadFigure fig = figList[i]; dic.Add(fig.ID, fig); FigureList[i].TempFigure = fig; } ret.FigureMap = dic; // Child list for (int i = 0; i < figList.Count; i++) { MpFigure_v1001 mpfig = FigureList[i]; SetFigChild(mpfig, dic); } // Layer map ret.LayerList = MpUtil_v1001.LayerListFromMp(LayerList, dic); ret.LayerMap = new Dictionary <uint, CadLayer>(); for (int i = 0; i < ret.LayerList.Count; i++) { CadLayer layer = ret.LayerList[i]; ret.LayerMap.Add(layer.ID, layer); } ret.CurrentLayerID = CurrentLayerID; return(ret); }
public virtual void ForEachFig(Action <MpFigure_v1001> d) { d(this); if (ChildList == null) { return; } int i; for (i = 0; i < ChildList.Count; i++) { MpFigure_v1001 c = ChildList[i]; c.ForEachFig(d); } }
public virtual void ForEachFigID(Dictionary <uint, MpFigure_v1001> allMap, Action <uint> d) { d(ID); if (ChildIdList == null) { return; } int i; for (i = 0; i < ChildIdList.Count; i++) { uint id = ChildIdList[i]; MpFigure_v1001 childFig = allMap[id]; childFig.ForEachFigID(allMap, d); } }
public void GarbageCollect() { var idMap = new Dictionary <uint, MpFigure_v1001>(); foreach (MpFigure_v1001 fig in FigureList) { idMap.Add(fig.ID, fig); } var activeSet = new HashSet <uint>(); foreach (MpLayer_v1001 layer in LayerList) { foreach (uint id in layer.FigureIdList) { MpFigure_v1001 fig = idMap[id]; fig.ForEachFigID(idMap, (a) => { activeSet.Add(a); }); } } int i = FigureList.Count - 1; for (; i >= 0; i--) { MpFigure_v1001 fig = FigureList[i]; if (!activeSet.Contains(fig.ID)) { FigureList.RemoveAt(i); } } }