コード例 #1
0
        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);
                    }
                }
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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;
        }
コード例 #4
0
        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);
            }
        }
コード例 #5
0
        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);
        }