public void SetMarksByString(string markStr) { ClearMarks(); var array = markStr.Split('#'); if (array == null) { return; } for (int i = 0; i < array.Length - 1; i++) { var s = array[i]; var mark = s.Split(':'); if (mark != null && mark.Length == 2) { int regionIndex; MarkRegionInfo markType; if (int.TryParse(mark[0], out regionIndex) && MarkRegionInfo.TryParse(mark[1], out markType)) { AddMarks(regionIndex, markType); } } } }
public static bool TryParse(string str, out MarkRegionInfo markRegionInfo) { markRegionInfo = new MarkRegionInfo(); var array = str.Split(';'); if (array == null || array.Length < 3) { return(false); } var headArray = array[0].Split(','); EMarkDataType markType; int x, y, w, h; if (headArray == null || headArray.Length != 5 || !EMarkDataType.TryParse(headArray[0], out markType) || !int.TryParse(headArray[1], out x) || !int.TryParse(headArray[2], out y) || !int.TryParse(headArray[3], out w) || !int.TryParse(headArray[4], out h)) { return(false); } markRegionInfo.MarkRegionType = markType; markRegionInfo.SmallestRect = new Rectangle(x, y, w, h); markRegionInfo.DefectInfos = new Dictionary <int, DefectInfo>(); for (int i = 1; i < array.Length - 1; i++) { var infoArray = array[i].Split(','); int index, codeNum; int infoX, infoY, infoW, infoH; if (infoArray == null || infoArray.Length != 6 || !int.TryParse(infoArray[0], out index) || !int.TryParse(infoArray[1], out codeNum) || !int.TryParse(infoArray[2], out infoX) || !int.TryParse(infoArray[3], out infoY) || !int.TryParse(infoArray[4], out infoW) || !int.TryParse(infoArray[5], out infoH)) { return(false); } DefectInfo defectInfo = new DefectInfo(); defectInfo.CodeNum = codeNum; defectInfo.DefectRect = new Rectangle(infoX, infoY, infoW, infoH); if (markRegionInfo.DefectInfos.ContainsKey(index)) { return(false); } else { markRegionInfo.DefectInfos.Add(index, defectInfo); } } return(true); }
public void SaveMarkInfo(EMarkDataType markType) { MarkDataInfo markDataInfo = new MarkDataInfo(ProductName, BatchName, BoardName, SideName, ShotName, DefectName); _sqliteDb.ReadMarkDataType(ref markDataInfo); MarkRegionInfo markRegionInfo = new MarkRegionInfo(); markRegionInfo.SetByDefectCell(DefectCells[DisplayWindowIndex], DefectRegionIndex, markType); markDataInfo.AddMarks(DefectRegionIndex, markRegionInfo); _sqliteDb.WriteMarkDataInfo(markDataInfo); return; }
public void AddMarks(int regionIndex, MarkRegionInfo markRegionInfo) { if (MarkRegionInfos == null) { MarkRegionInfos = new Dictionary <int, MarkRegionInfo>(); } if (MarkRegionInfos.ContainsKey(regionIndex)) { MarkRegionInfos[regionIndex] = markRegionInfo; } else { MarkRegionInfos.Add(regionIndex, markRegionInfo); } }
public string MarksToString() { if (MarkRegionInfos == null) { MarkRegionInfos = new Dictionary <int, MarkRegionInfo>(); } string marksString = ""; foreach (var regionMarkType in MarkRegionInfos) { int regionIndex = regionMarkType.Key; MarkRegionInfo markType = regionMarkType.Value; marksString += regionIndex.ToString() + ":" + markType.GenString() + "#"; } return(marksString); }