示例#1
0
        public async Task DoneButtonTurnsOffEditMode()
        {
            AutomationTest testToRun = (testRunner) =>
            {
                SystemWindow systemWindow;

                testRunner.CloseSignInAndPrinterSelect();

                SearchRegion searchRegion = testRunner.GetRegionByName("Queue Item 2013-01-25_Mouthpiece_v2", 3);

                // Enter Edit mode and confirm checkboxes exist
                testRunner.ClickByName("Queue Edit Button", 2);
                testRunner.Delay(.3);
                Assert.IsNotNull(
                    testRunner.GetWidgetByName("Queue Item Checkbox", out systemWindow, 3, searchRegion),
                    "While in Edit mode, checkboxes should exist on queue items");

                // Exit Edit mode and confirm checkboxes are missing
                testRunner.ClickByName("Queue Done Button", 1);
                testRunner.Delay(.3);
                Assert.IsNull(
                    testRunner.GetWidgetByName("Queue Item Checkbox", out systemWindow, 1, searchRegion),
                    "After exiting Edit mode, checkboxes should not exist on queue items");

                return(Task.FromResult(0));
            };

            await MatterControlUtilities.RunTest(testToRun, queueItemFolderToAdd : QueueTemplate.Three_Queue_Items);
        }
        public async Task GetWidgetByNameTestRegionSingleWindow()
        {
            int leftClickCount = 0;

            AutomationTest testToRun = (testRunner) =>
            {
                testRunner.ClickByName("left");
                testRunner.Wait(.5);
                Assert.AreEqual(1, leftClickCount, "Should have one left click count after click");

                Assert.IsTrue(testRunner.NameExists("left"), "Left button should exist");

                SearchRegion rightButtonRegion = testRunner.GetRegionByName("right");

                Assert.IsFalse(testRunner.NameExists("left", searchRegion: rightButtonRegion), "Left button should not exist in the right button region");

                return(Task.FromResult(0));
            };

            SystemWindow buttonContainer = new SystemWindow(300, 200);

            Button leftButton = new Button("left", 10, 40);

            leftButton.Name   = "left";
            leftButton.Click += (sender, e) => { leftClickCount++; };
            buttonContainer.AddChild(leftButton);

            Button rightButton = new Button("right", 110, 40);

            rightButton.Name = "right";
            buttonContainer.AddChild(rightButton);

            await AutomationRunner.ShowWindowAndExecuteTests(buttonContainer, testToRun, 10);
        }
        public static void NavigateToFolder(this AutomationRunner testRunner, string libraryRowItemName)
        {
            SearchRegion libraryRowItemRegion = testRunner.GetRegionByName(libraryRowItemName, 3);

            testRunner.ClickByName(libraryRowItemName);
            testRunner.Delay(.5);
            testRunner.ClickByName("Open Collection", searchRegion: libraryRowItemRegion);
            testRunner.Delay(.5);
        }
        private void SearchButton_Click(object sender, RoutedEventArgs e)
        {
            IsSearchRegionVisible = true;

            // Given that binding and layouting might take a few cycles, when calling UpdateLayout
            // we can guarantee that the focus call will be able to find an open ASB
            SearchRegion.UpdateLayout();

            SearchRegion.Focus(FocusState.Programmatic);
        }
        public void EditButtonTurnsOnOffEditMode()
        {
            //Run a copy of MatterControl
            Action <AutomationTesterHarness> testToRun = (AutomationTesterHarness resultsHarness) =>
            {
                AutomationRunner testRunner = new AutomationRunner(MatterControlUtilities.DefaultTestImages);
                {
                    MatterControlUtilities.PrepForTestRun(testRunner);

                    /*
                     * Tests that when the edit button is clicked we go into editmode (print queue items have checkboxes on them)
                     * 1. After Edit button is clicked print queue items have check boxes
                     * 2. Selecting multiple queue itema and then clicking the Remove button removes the item
                     * 3. Selecting multiple queue items and then clicking the Remove button decreases the queue tab count by one
                     */

                    bool checkboxExists = testRunner.WaitForName("Queue Item Checkbox", 2);

                    resultsHarness.AddTestResult(checkboxExists == false);

                    resultsHarness.AddTestResult(QueueData.Instance.Count == 4);

                    SystemWindow systemWindow;
                    string       itemName = "Queue Item " + "2013-01-25_Mouthpiece_v2";

                    GuiWidget    queueItem       = testRunner.GetWidgetByName(itemName, out systemWindow, 3);
                    SearchRegion queueItemRegion = testRunner.GetRegionByName(itemName, 3);

                    {
                        testRunner.ClickByName("Queue Edit Button", 2);

                        SystemWindow containingWindow;
                        GuiWidget    foundWidget = testRunner.GetWidgetByName("Queue Item Checkbox", out containingWindow, 3, searchRegion: queueItemRegion);
                        resultsHarness.AddTestResult(foundWidget != null, "We should have an actual checkbox");
                    }

                    {
                        testRunner.ClickByName("Queue Done Button", 2);

                        testRunner.Wait(.5);

                        SystemWindow containingWindow;
                        GuiWidget    foundWidget = testRunner.GetWidgetByName("Queue Item Checkbox", out containingWindow, 1, searchRegion: queueItemRegion);
                        resultsHarness.AddTestResult(foundWidget == null, "We should not have an actual checkbox");
                    }

                    MatterControlUtilities.CloseMatterControl(testRunner);
                }
            };

            AutomationTesterHarness testHarness = MatterControlUtilities.RunTest(testToRun, queueItemFolderToAdd: QueueTemplate.Three_Queue_Items, overrideWidth: 600);

            Assert.IsTrue(testHarness.AllTestsPassed(4));
        }
示例#6
0
        public void WriteHalconObj(string fileName)
        {
            if (CodeReaderHand.Handle.ToInt32() > 0)
            {
                CodeReaderHand.WriteDataCode2dModel(fileName + ".dcm");
            }

            if (SearchRegion.IsInitialized())
            {
                SearchRegion.WriteRegion(fileName + ".hobj");
            }
        }
示例#7
0
        public static bool NavigateToFolder(AutomationRunner testRunner, string libraryRowItemName)
        {
            bool         goodNavigate         = true;
            SearchRegion libraryRowItemRegion = testRunner.GetRegionByName(libraryRowItemName, 3);

            goodNavigate &= testRunner.ClickByName(libraryRowItemName);
            goodNavigate &= testRunner.MoveToByName(libraryRowItemName);
            testRunner.Wait(.5);
            goodNavigate &= testRunner.ClickByName("Open Collection", searchRegion: libraryRowItemRegion);
            testRunner.Wait(.5);

            return(goodNavigate);
        }
示例#8
0
        public void ClickOnLibraryCheckBoxes()
        {
            // Run a copy of MatterControl
            Action <AutomationTesterHarness> testToRun = (AutomationTesterHarness resultsHarness) =>
            {
                AutomationRunner testRunner = new AutomationRunner(MatterControlUITests.DefaultTestImages);

                // Now do the actions specific to this test. (replace this for new tests)
                {
                    testRunner.ClickByName("Library Tab");
                    testRunner.Wait(1);
                    SystemWindow systemWindow;
                    GuiWidget    rowItem = testRunner.GetWidgetByName("Local Library Row Item Collection", out systemWindow);
                    testRunner.Wait(1);

                    SearchRegion rowItemRegion = testRunner.GetRegionByName("Local Library Row Item Collection");

                    testRunner.ClickByName("Library Edit Button");
                    testRunner.Wait(1);

                    SystemWindow containingWindow;
                    GuiWidget    foundWidget    = testRunner.GetWidgetByName("Row Item Select Checkbox", out containingWindow, searchRegion: rowItemRegion);
                    CheckBox     checkBoxWidget = foundWidget as CheckBox;
                    resultsHarness.AddTestResult(checkBoxWidget != null, "We should have an actual checkbox");
                    resultsHarness.AddTestResult(checkBoxWidget.Checked == false, "currently not checked");

                    testRunner.ClickByName("Row Item Select Checkbox", searchRegion: rowItemRegion);
                    testRunner.Wait(.5);
                    resultsHarness.AddTestResult(checkBoxWidget.Checked == true, "currently checked");

                    testRunner.ClickByName("Local Library Row Item Collection");
                    testRunner.Wait(.5);
                    resultsHarness.AddTestResult(checkBoxWidget.Checked == false, "currently not checked");

                    MatterControlUITests.CloseMatterControl(testRunner);
                }
            };

#if !__ANDROID__
            // Set the static data to point to the directory of MatterControl
            StaticData.Instance = new MatterHackers.Agg.FileSystemStaticData(Path.Combine("..", "..", "..", "..", "StaticData"));
#endif
            bool showWindow;
            MatterControlApplication matterControlWindow = MatterControlApplication.CreateInstance(out showWindow);
            AutomationTesterHarness  testHarness         = AutomationTesterHarness.ShowWindowAndExectueTests(matterControlWindow, testToRun, 1000);

            // NOTE: In the future we may want to make the "Local Library Row Item Collection" not clickable.
            // If that is the case fix this test to click on a child of "Local Library Row Item Collection" instead.
            Assert.IsTrue(testHarness.AllTestsPassed);
            Assert.IsTrue(testHarness.TestCount == 4);             // make sure we ran all our tests
        }
示例#9
0
 public void GenSearchRegion()
 {
     if (SearchRegion == null || SearchRegion.IsInitialized() == false)
     {
         if (ROIList != null)
         {
             ROI roiSearcch = ROIList.Find(x => x.OperatorFlag == ROIOperation.None);
             if (roiSearcch != null)
             {
                 SearchRegion = roiSearcch.GetRegion();
             }
         }
     }
 }
示例#10
0
        public async Task EditButtonTurnsOnOffEditMode()
        {
            AutomationTest testToRun = (testRunner) =>
            {
                testRunner.CloseSignInAndPrinterSelect();

                /*
                 * Tests that when the edit button is clicked we go into editmode (print queue items have checkboxes on them)
                 * 1. After Edit button is clicked print queue items have check boxes
                 * 2. Selecting multiple queue itema and then clicking the Remove button removes the item
                 * 3. Selecting multiple queue items and then clicking the Remove button decreases the queue tab count by one
                 */

                bool checkboxExists = testRunner.WaitForName("Queue Item Checkbox", 2);

                Assert.IsTrue(checkboxExists == false);

                Assert.IsTrue(QueueData.Instance.ItemCount == 4);

                SystemWindow systemWindow;
                string       itemName = "Queue Item 2013-01-25_Mouthpiece_v2";

                GuiWidget    queueItem       = testRunner.GetWidgetByName(itemName, out systemWindow, 3);
                SearchRegion queueItemRegion = testRunner.GetRegionByName(itemName, 3);

                {
                    testRunner.ClickByName("Queue Edit Button", 2);

                    SystemWindow containingWindow;
                    GuiWidget    foundWidget = testRunner.GetWidgetByName("Queue Item Checkbox", out containingWindow, 3, searchRegion: queueItemRegion);
                    Assert.IsTrue(foundWidget != null, "We should have an actual checkbox");
                }

                {
                    testRunner.ClickByName("Queue Done Button", 2);

                    testRunner.Delay(.5);

                    SystemWindow containingWindow;
                    GuiWidget    foundWidget = testRunner.GetWidgetByName("Queue Item Checkbox", out containingWindow, 1, searchRegion: queueItemRegion);
                    Assert.IsTrue(foundWidget == null, "We should not have an actual checkbox");
                }

                return(Task.FromResult(0));
            };

            await MatterControlUtilities.RunTest(testToRun, queueItemFolderToAdd : QueueTemplate.Three_Queue_Items, overrideWidth : 600);
        }
示例#11
0
        public void ClickOnLibraryCheckBoxes()
        {
            // Run a copy of MatterControl
            Action <AutomationTesterHarness> testToRun = (AutomationTesterHarness resultsHarness) =>
            {
                AutomationRunner testRunner = new AutomationRunner(MatterControlUtilities.DefaultTestImages);

                // Now do the actions specific to this test. (replace this for new tests)
                {
                    MatterControlUtilities.PrepForTestRun(testRunner);

                    testRunner.ClickByName("Library Tab", 3);
                    MatterControlUtilities.NavigateToFolder(testRunner, "Local Library Row Item Collection");

                    SystemWindow systemWindow;
                    string       itemName = "Row Item " + "Calibration - Box";

                    GuiWidget rowItem = testRunner.GetWidgetByName(itemName, out systemWindow, 3);

                    SearchRegion rowItemRegion = testRunner.GetRegionByName(itemName, 3);

                    testRunner.ClickByName("Library Edit Button", 3);
                    testRunner.Wait(.5);

                    GuiWidget foundWidget    = testRunner.GetWidgetByName("Row Item Select Checkbox", out systemWindow, 3, searchRegion: rowItemRegion);
                    CheckBox  checkBoxWidget = foundWidget as CheckBox;
                    resultsHarness.AddTestResult(checkBoxWidget != null, "We should have an actual checkbox");
                    resultsHarness.AddTestResult(checkBoxWidget.Checked == false, "currently not checked");

                    testRunner.ClickByName("Row Item Select Checkbox", 3, searchRegion: rowItemRegion);
                    testRunner.ClickByName("Library Tab");
                    resultsHarness.AddTestResult(checkBoxWidget.Checked == true, "currently checked");

                    testRunner.ClickByName(itemName, 3);
                    testRunner.ClickByName("Library Tab");
                    resultsHarness.AddTestResult(checkBoxWidget.Checked == false, "currently not checked");

                    MatterControlUtilities.CloseMatterControl(testRunner);
                }
            };

            AutomationTesterHarness testHarness = MatterControlUtilities.RunTest(testToRun);

            // NOTE: In the future we may want to make the "Local Library Row Item Collection" not clickable.
            // If that is the case fix this test to click on a child of "Local Library Row Item Collection" instead.
            Assert.IsTrue(testHarness.AllTestsPassed);
            Assert.IsTrue(testHarness.TestCount == 4);             // make sure we ran all our tests
        }
示例#12
0
        public async Task QueueSelectCheckBoxWorks()
        {
            AutomationTest testToRun = (testRunner) =>
            {
                testRunner.CloseSignInAndPrinterSelect();

                /*
                 * Tests that when one item is selected
                 * 1. Queue Item count equals three before the test starts
                 * 2. Selecting multiple queue items and then clicking the Remove button removes the item
                 * 3. Selecting multiple queue items and then clicking the Remove button decreases the queue tab count by one
                 */

                int queueItemCount = QueueData.Instance.ItemCount;

                bool queueItemExists       = testRunner.WaitForName("Queue Item Batman", 2);
                bool secondQueueItemExists = testRunner.WaitForName("Queue Item 2013-01-25_Mouthpiece_v2", 2);

                SystemWindow systemWindow;
                GuiWidget    rowItem = testRunner.GetWidgetByName("Queue Item Batman", out systemWindow, 3);

                SearchRegion rowItemRegion = testRunner.GetRegionByName("Queue Item Batman", 3);

                testRunner.ClickByName("Queue Edit Button", 3);

                GuiWidget foundWidget    = testRunner.GetWidgetByName("Queue Item Checkbox", out systemWindow, 3, searchRegion: rowItemRegion);
                CheckBox  checkBoxWidget = foundWidget as CheckBox;
                Assert.IsTrue(checkBoxWidget != null, "We should have an actual checkbox");
                Assert.IsTrue(checkBoxWidget.Checked == false, "currently not checked");

                testRunner.ClickByName("Queue Item Batman", 3);
                Assert.IsTrue(checkBoxWidget.Checked == true, "currently checked");

                testRunner.ClickByName("Queue Item Checkbox", 3, searchRegion: rowItemRegion);
                Assert.IsTrue(checkBoxWidget.Checked == false, "currently not checked");


                return(Task.FromResult(0));
            };

            await MatterControlUtilities.RunTest(testToRun, queueItemFolderToAdd : QueueTemplate.Three_Queue_Items);
        }
        public void DoneButtonTurnsOffEditMode()
        {
            //Run a copy of MatterControl
            Action <AutomationTesterHarness> testToRun = (AutomationTesterHarness resultsHarness) =>
            {
                AutomationRunner testRunner = new AutomationRunner(MatterControlUtilities.DefaultTestImages);
                {
                    MatterControlUtilities.PrepForTestRun(testRunner);

                    /*
                     * Tests that when one item is selected
                     * 1. Queue Item count equals three before the test starts
                     * 2. Selecting multiple queue itema and then clicking the Remove button removes the item
                     * 3. Selecting multiple queue items and then clicking the Remove button decreases the queue tab count by one
                     */

                    int queueItemCount = QueueData.Instance.Count;

                    string       itemName = "Queue Item " + "2013-01-25_Mouthpiece_v2";
                    SystemWindow systemWindow;
                    GuiWidget    queueItem       = testRunner.GetWidgetByName(itemName, out systemWindow, 3);
                    SearchRegion queueItemRegion = testRunner.GetRegionByName(itemName, 3);

                    testRunner.ClickByName("Queue Edit Button", 2);

                    GuiWidget foundWidget = testRunner.GetWidgetByName("Queue Item Checkbox", out systemWindow, 3, searchRegion: queueItemRegion);
                    resultsHarness.AddTestResult(foundWidget != null, "We should have an actual checkbox");

                    testRunner.ClickByName("Queue Done Button", 1);

                    foundWidget = testRunner.GetWidgetByName("Queue Item Checkbox", out systemWindow, 1, searchRegion: queueItemRegion);
                    resultsHarness.AddTestResult(foundWidget != null, "Checkbox is gone");

                    MatterControlUtilities.CloseMatterControl(testRunner);
                }
            };

            AutomationTesterHarness testHarness = MatterControlUtilities.RunTest(testToRun, queueItemFolderToAdd: QueueTemplate.Three_Queue_Items);

            Assert.IsTrue(testHarness.AllTestsPassed(2));
        }
        public async Task ClickOnLibraryCheckBoxes()
        {
            AutomationTest testToRun = (testRunner) =>
            {
                testRunner.CloseSignInAndPrinterSelect();

                testRunner.ClickByName("Library Tab", 3);
                testRunner.NavigateToFolder("Local Library Row Item Collection");

                SystemWindow systemWindow;
                string       itemName = "Row Item Calibration - Box";

                GuiWidget rowItem = testRunner.GetWidgetByName(itemName, out systemWindow, 3);

                SearchRegion rowItemRegion = testRunner.GetRegionByName(itemName, 3);

                testRunner.ClickByName("Library Edit Button", 3);
                testRunner.Delay(.5);

                GuiWidget foundWidget    = testRunner.GetWidgetByName("Row Item Select Checkbox", out systemWindow, 3, searchRegion: rowItemRegion);
                CheckBox  checkBoxWidget = foundWidget as CheckBox;
                Assert.IsTrue(checkBoxWidget != null, "We should have an actual checkbox");
                Assert.IsTrue(checkBoxWidget.Checked == false, "currently not checked");

                testRunner.ClickByName("Row Item Select Checkbox", 3, searchRegion: rowItemRegion);
                testRunner.ClickByName("Library Tab");
                Assert.IsTrue(checkBoxWidget.Checked == true, "currently checked");

                testRunner.ClickByName(itemName, 3);
                testRunner.ClickByName("Library Tab");
                Assert.IsTrue(checkBoxWidget.Checked == false, "currently not checked");

                return(Task.FromResult(0));
            };

            await MatterControlUtilities.RunTest(testToRun);
        }
示例#15
0
        public void GetWidgetByNameTestRegionSingleWindow()
        {
            int leftClickCount = 0;

            Action <AutomationTesterHarness> testToRun = (AutomationTesterHarness resultsHarness) =>
            {
                AutomationRunner testRunner = new AutomationRunner();
                testRunner.ClickByName("left");
                testRunner.Wait(.5);
                resultsHarness.AddTestResult(leftClickCount == 1, "Got left button click");

                SearchRegion rightButtonRegion = testRunner.GetRegionByName("right");

                testRunner.ClickByName("left", searchRegion: rightButtonRegion);
                testRunner.Wait(.5);

                resultsHarness.AddTestResult(leftClickCount == 1, "Did not get left button click");
            };

            SystemWindow buttonContainer = new SystemWindow(300, 200);

            Button leftButton = new Button("left", 10, 40);

            leftButton.Name   = "left";
            leftButton.Click += (sender, e) => { leftClickCount++; };
            buttonContainer.AddChild(leftButton);
            Button rightButton = new Button("right", 110, 40);

            rightButton.Name = "right";
            buttonContainer.AddChild(rightButton);

            AutomationTesterHarness testHarness = AutomationTesterHarness.ShowWindowAndExectueTests(buttonContainer, testToRun, 10);

            Assert.IsTrue(testHarness.AllTestsPassed);
            Assert.IsTrue(testHarness.TestCount == 2);             // make sure we can all our tests
        }
示例#16
0
        public bool ReadHalconObj(string fileName)
        {
            bool state = true;

            if (System.IO.File.Exists(fileName + ".dcm"))
            {
                CodeReaderHand.ReadDataCode2dModel(fileName + ".dcm");
            }
            else
            {
                state = false;
            }

            if (System.IO.File.Exists(fileName + ".hobj"))
            {
                SearchRegion.ReadRegion(fileName + ".hobj");
            }
            else
            {
                state = false;
            }

            return(state);
        }
示例#17
0
        public static SearchResultMatch FindNext(ISearchStrategy strategy, SearchLocation location)
        {
            var files = location.GenerateFileList().ToArray();

            if (files.Length == 0)
            {
                return(null);
            }
            if (currentSearchRegion == null || !currentSearchRegion.IsSameState(files, strategy, location))
            {
                currentSearchRegion = SearchRegion.CreateSearchRegion(files, strategy, location);
            }
            if (currentSearchRegion == null)
            {
                return(null);
            }
            var result = currentSearchRegion.FindNext();

            if (result == null)
            {
                currentSearchRegion = null;
            }
            return(result);
        }
示例#18
0
        private void searchProvider_SearchCompleted(object sender, SearchCompletedEventArgs e)
        {
            this.informationLayer.Items.Clear();

            SearchResultCollection results = e.Response.ResultSets.First().Results;

            if (results.Count > 0)
            {
                foreach (SearchResultBase result in results)
                {
                    MapItem item = new MapItem();
                    item.Caption       = result.Name;
                    item.Location      = result.LocationData.Locations.First();
                    item.BaseZoomLevel = 9;
                    item.ZoomRange     = new ZoomRange(5, 12);
                    this.informationLayer.Items.Add(item);
                }
            }
            else
            {
                SearchRegion region = e.Response.ResultSets.First().SearchRegion;

                if (region != null)
                {
                    this.radMap.SetView(region.GeocodeLocation.BestView);

                    if (region.GeocodeLocation.Address != null && region.GeocodeLocation.Locations.Count > 0)
                    {
                        foreach (Location location in region.GeocodeLocation.Locations)
                        {
                            MapItem item = new MapItem();
                            item.Caption       = region.GeocodeLocation.Address.FormattedAddress;
                            item.Location      = location;
                            item.BaseZoomLevel = 5;
                            item.ZoomRange     = new ZoomRange(5, 12);
                            this.informationLayer.Items.Add(item);
                        }
                    }
                }
            }

            SearchRegionCollection alternateRegions = e.Response.ResultSets.First().AlternateSearchRegions;

            if (alternateRegions.Count > 0)
            {
                foreach (SearchRegion region in alternateRegions)
                {
                    if (region.GeocodeLocation.Address != null && region.GeocodeLocation.Locations.Count > 0)
                    {
                        foreach (Location location in region.GeocodeLocation.Locations)
                        {
                            MapItem item = new MapItem();
                            item.Caption       = region.GeocodeLocation.Address.FormattedAddress;
                            item.Location      = location;
                            item.BaseZoomLevel = 5;
                            item.ZoomRange     = new ZoomRange(5, 12);
                            this.SuggestionsListBox.Items.Add(item);
                        }
                    }
                }
            }
        }
示例#19
0
        public bool FindDataCode(HImage img, bool train = false)
        {
            if (!SearchRegion.IsInitialized())
            {
                SearchRegion = img.GetDomain();
            }

            if (!train)
            {
                Display(1);
            }


            HImage reduceImg = img.ReduceDomain(SearchRegion);
            HImage searchImg = reduceImg.CropDomain();

            reduceImg.Dispose();

            int width, height;

            searchImg.GetImageSize(out width, out height);

            HImage zoomImg = searchImg.ZoomImageFactor(DateCodeZoomImg, DateCodeZoomImg, "constant");

            DataCodeContour.Dispose();
            searchImg.Dispose();

            HTuple ResultHandles, DecodedDataStrings;

            if (train)
            {
                DataCodeContour = CodeReaderHand.FindDataCode2d(zoomImg, "train", "all", out ResultHandles, out DecodedDataStrings);
            }
            else
            {
                DataCodeContour = CodeReaderHand.FindDataCode2d(zoomImg, "stop_after_result_num", 1, out ResultHandles, out DecodedDataStrings);
            }


            if (DecodedDataStrings.Length > 0)
            {
                DataCodeString = DecodedDataStrings[0].S;

                HHomMat2D mat = new HHomMat2D();
                HHomMat2D scalMat = mat.HomMat2dScale(1 / DateCodeZoomImg, 1 / DateCodeZoomImg, 0.0, 0.0);
                double    row, col;
                SearchRegion.AreaCenter(out row, out col);
                HHomMat2D tranMat = scalMat.HomMat2dTranslate(row - height / 2.0, col - width / 2.0);

                HXLDCont tranDataCodeContour = tranMat.AffineTransContourXld(DataCodeContour);
                DataCodeContour.Dispose();
                DataCodeContour = tranDataCodeContour;

                if (!train)
                {
                    Display(2);
                    Display(3);
                }
            }
            else
            {
                if (UseBrighten)
                {
                    HImage brightenImg = zoomImg.ScaleImage(UseBrightenValue, 0.0);
                    DataCodeContour = CodeReaderHand.FindDataCode2d(brightenImg, "stop_after_result_num", 1, out ResultHandles, out DecodedDataStrings);
                    if (DecodedDataStrings.Length > 0)
                    {
                        DataCodeString = DecodedDataStrings[0].S;

                        HHomMat2D mat = new HHomMat2D();
                        HHomMat2D scalMat = mat.HomMat2dScale(1 / DateCodeZoomImg, 1 / DateCodeZoomImg, 0.0, 0.0);
                        double    row, col;
                        SearchRegion.AreaCenter(out row, out col);
                        HHomMat2D tranMat = scalMat.HomMat2dTranslate(row - height / 2.0, col - width / 2.0);

                        HXLDCont tranDataCodeContour = tranMat.AffineTransContourXld(DataCodeContour);
                        DataCodeContour.Dispose();
                        DataCodeContour = tranDataCodeContour;
                        if (!train)
                        {
                            Display(2);
                            Display(3);
                        }

                        return(true);
                    }
                }



                DataCodeString = string.Empty;

                if (!train)
                {
                    Display(4);
                }
                return(false);
            }



            return(true);
        }