//------------------------------------------------------------------------- private void DoWork(object sender, DoWorkEventArgs e) { if (e.Argument != null) { var obj = e.Argument as string[]; if (obj != null) { string key = obj.First(); string qrCodeText; if (obj.Length == 2) qrCodeText = obj[1]; else qrCodeText = ""; if (ShetIdManualySet && key == "RecAll") { key = "RecAllAlignmentOnly"; } switch (key) { case "new Recognize": Status = StatusMessage.NULL; isInvert = false; isRotate = false; isCut = false; isClear = false; usedPrevTool = false; ShetIdManualySet = false; string fileName = obj.Last(); rec = new Recognize(fileName, defaults, cancelSource.Token); rec.BubbleItems = new ObservableCollection<BubbleItem>(); errList.Clear(); if (rec != null && rec.Audit != null && !string.IsNullOrEmpty(rec.Audit.error)) { Invoke(new MethodInvoker(delegate { lblErr.Text = rec.Audit.error; errList.Add(rec.Audit.error); lblErr.Visible = true; })); } recBitmap = (Bitmap)rec.Bitmap.Clone(); Invoke(new MethodInvoker(delegate { BoxSheet.SelectedIndex = -1; })); break; case "RecAll": //Invoke(new MethodInvoker(delegate // { // BoxSheet.SelectedIndex = -1; // })); if (string.IsNullOrEmpty(obj.Last()) && !string.IsNullOrEmpty(lastSheetId)) { rec.RecAll(lastSheetId, false, ref qrCodeText, isRotate, isCut, ShetIdManualySet); } else { rec.RecAll(obj.Last(), false, ref qrCodeText, isRotate); } if (rec.cancellationToken.IsCancellationRequested) Invoke(new MethodInvoker(delegate { if (!isRotate) btnRestore_Click(null, null); })); break; case "RecAllAlignmentOnly": rec.RecAll(obj.Last(), true, ref qrCodeText, isRotate, isCut, ShetIdManualySet); break; case "SelectedSheetIdentifier": rec.SelectedSheetIdentifier(obj.Last(), ref qrCodeText, isRotate, isCut, ShetIdManualySet); break; case "BarcodesRecognition": rec.BarcodesRecognition(qrCodeText); break; case "BubblesRecognition": CreateEtalonAreas(); GetAreasSettings(); if (!string.IsNullOrEmpty(rec.Audit.error) && rec.Audit.error.StartsWith("Calibration")) { //if (rpf != null && rpf.Disposing) //CloseProcessingForm(); rec.Audit.error = ""; Invoke(new MethodInvoker(delegate { rbtnGrid.PerformClick(); })); break; } if (rec.bubbles_per_lineErr) { if (rpf != null && rpf.Disposing) CloseProcessingForm(); MessageBox.Show("Please, specify correctly the bubbles per line" , Text, MessageBoxButtons.OK, MessageBoxIcon.Stop); break; } else// (!rec.bubbles_per_lineErr) rec.RecAndFindBubble(); break; case "BubblesRecognition2": rec.Exception = null; rec.BarCodesPrompt = ""; //rec.Status = RecognizeAction.SearchBublesFinished; //var maxCountRectangles = rec.AddMaxCountRectangles(); //rec.BubblesRecognition(); int deltaX = 0; //if (rec.bubbles_per_lineFLEX != 5) //{ // deltaX = 0; //} recTools.BubblesRecognize ( ref rec.allContourMultiLine , ref rec.factRectangle , rec.Bitmap , ref barCodesPrompt , rec.filterType , rec.defaults.SmartResize , rec.bubblesRegions , rec.bubblesOfRegion , rec.bubblesSubLinesCount , rec.bubblesSubLinesStep , rec.bubblesPerLine , rec.lineHeight , rec.linesPerArea , rec.answersPosition , rec.indexAnswersPosition , rec.totalOutput , rec.bubbleLines , rec.regions , rec.areas , 0, 0, 0, 0//x1, x2, y1, y2 , rec.kx, rec.ky , rec.curRect , rec.etRect , 0//deltaY , rec.AmoutOfQuestions , rec.IndexOfFirstQuestion , maxCountRectangles , rec.darknessPercent , rec.darknessDifferenceLevel , rec.lastBannerBottom , deltaX ); rec.FillBubbleItems(maxCountRectangles);// rec.FillBubbleItemsRectangle(rec.allContourMultiLine, rec.factRectangle); if (rec.Exception != null) { //MessageBox.Show // ("Please check that you have the correct number of columns and sub rows" // , Text, MessageBoxButtons.OK // , MessageBoxIcon.Exclamation // ); //Invoke(new MethodInvoker(delegate //{ // CloseProcessingForm(); //})); return; } rec.FindBubble(rec.factRectangle, rec.allContourMultiLine, true); if (rec.Exception != null) return; if (bac.CheckBoxArr.Length == 0) { //AddBubblesAreaControl(new BubbleEventArgs(false, rec.BubbleItems, rec.areas, rec.AmoutOfQuestions, rec.maxAmoutOfQuestions, rec.IndexOfFirstQuestion, rec.linesPerArea, rec.bubblesPerLine)); GetAreasSettings(); Invoke(new MethodInvoker(delegate { bac = CreateNewBubblesAreaControl(rec.areas, rec.AmoutOfQuestions); bac.lockReport = true; DrawBubbleItems(); bac.lockReport = false; })); } Invoke(new MethodInvoker(delegate { if (!string.IsNullOrEmpty(barCodesPrompt)) { rec.BarCodesPrompt = barCodesPrompt; if (!errList.Contains(rec.BarCodesPrompt)) errList.Add(rec.BarCodesPrompt); lblErr.Visible = true; } pictureBox1.Refresh(); VerifyButton.Enabled = true; //Status = StatusMessage.NULL; rec.Status = RecognizeAction.NULL; })); //rec.UpdateGui(); break; case "RemoveNoise": //cancelSource = new System.Threading.CancellationTokenSource(); rec.Bitmap = recTools.RemoveNoise(rec.Bitmap); pictureBox1.Image = (Bitmap)rec.Bitmap.Clone(); break; } //if (qrCodeText == "") // e.Result = key; //else e.Result = new string[2] { key, qrCodeText }; } } }