Beispiel #1
0
        private void UpdateUIState()
        {
            bool itemSelected = _barcodesListView.SelectedItems.Count > 0;

            _deleteButton.Enabled = itemSelected;
            _zoomToButton.Enabled = itemSelected;

#if LEADTOOLS_V20_OR_LATER
            _aamvaButton.Enabled = false;
            if (_rasterImage != null)
            {
                PageBarcodes pageBarcodes = _documentBarcodes.Pages[_rasterImage.Page - 1];
                if (pageBarcodes.SelectedIndex > -1)
                {
                    BarcodeData data = pageBarcodes.Barcodes[pageBarcodes.SelectedIndex];
                    if (data.Symbology == BarcodeSymbology.PDF417)
                    {
                        AAMVAID id = BarcodeData.ParseAAMVAData(data.GetData(), false);
                        if (id != null)
                        {
                            _aamvaButton.Enabled = true;
                            id.Dispose();
                        }
                    }
                }
            }
#endif // #if LEADTOOLS_V20_OR_LATER
        }
Beispiel #2
0
        /// <summary>
        /// Called by MainForm and internally whenever the document barcodes are updated
        /// </summary>
        public void Populate()
        {
            _barcodesListView.Items.Clear();

            if (_documentBarcodes != null && _rasterImage != null)
            {
                PageBarcodes pageBarcodes = _documentBarcodes.Pages[_rasterImage.Page - 1];
                foreach (BarcodeData data in pageBarcodes.Barcodes)
                {
                    ListViewItem item = new ListViewItem();

                    item.Text = BarcodeEngine.GetSymbologyFriendlyName(data.Symbology);
                    LeadRect rc = data.Bounds;
                    item.SubItems.Add(string.Format("{0}, {1}, {2}, {3}", rc.Left, rc.Top, rc.Right, rc.Bottom));

                    string value = data.Value;
                    if (!string.IsNullOrEmpty(value))
                    {
                        // Parse the QR barcodes for ECI data
                        string eciData = null;
                        if (data.Symbology == BarcodeSymbology.QR || data.Symbology == BarcodeSymbology.MicroQR)
                        {
                            eciData = BarcodeData.ParseECIData(data.GetData());
                        }

                        if (!string.IsNullOrEmpty(eciData))
                        {
                            item.SubItems.Add(eciData);
                        }
                        else
                        {
                            item.SubItems.Add(value);
                        }
                    }
                    else
                    {
                        item.SubItems.Add("<NO DATA>");
                    }

                    _barcodesListView.Items.Add(item);
                }

                if (pageBarcodes.SelectedIndex != -1)
                {
                    _barcodesListView.Items[pageBarcodes.SelectedIndex].Selected = true;
                    _barcodesListView.EnsureVisible(pageBarcodes.SelectedIndex);
                }
            }

            UpdateUIState();
        }
Beispiel #3
0
        private int HitTestBarcode(LeadPoint point)
        {
            int          index        = 0;
            PageBarcodes pageBarcodes = _documentBarcodes.Pages[_rasterImageViewer.Image.Page - 1];

            foreach (BarcodeData data in pageBarcodes.Barcodes)
            {
                if (data.Bounds.Contains(point))
                {
                    return(index);
                }

                index++;
            }

            return(-1);
        }
Beispiel #4
0
        private void _rasterImageViewer_PostImagePaint(object sender, ImageViewerRenderEventArgs e)
        {
            RasterImage image = _rasterImageViewer.Image;

            if (image != null && !_disableExtraDrawing)
            {
                if (ShowBarcodes)
                {
                    using (StringFormat sf = new StringFormat())
                        using (Brush normalBrush = new SolidBrush(Color.FromArgb(200, Color.DarkGreen)))
                            using (Pen normalPen = new Pen(Color.FromArgb(180, Color.DarkGreen), 4))
                                using (Brush selectedBrush = new SolidBrush(Color.FromArgb(200, Color.Blue)))
                                    using (Pen selectedPen = new Pen(Color.FromArgb(180, Color.Blue), 4))
                                    {
                                        sf.FormatFlags = StringFormatFlags.NoWrap;

                                        // Draw the barcodes for this page
                                        int          index        = 0;
                                        PageBarcodes pageBarcodes = _documentBarcodes.Pages[image.Page - 1];
                                        foreach (BarcodeData data in pageBarcodes.Barcodes)
                                        {
                                            if (index == pageBarcodes.SelectedIndex)
                                            {
                                                DrawBarcodeData(e.PaintEventArgs.Graphics, image, data, sf, selectedBrush, selectedPen);
                                            }
                                            else
                                            {
                                                DrawBarcodeData(e.PaintEventArgs.Graphics, image, data, sf, normalBrush, normalPen);
                                            }

                                            index++;
                                        }
                                    }
                }

                if (_viewerRegion && _rasterImageViewer.Image.Page == _viewerRegionPage)
                {
                    // Draw an alpha brush around the image region
                    if (!_rasterImageViewer.Image.HasRegion)
                    {
                        _rasterImageViewer.Image.SetRegion(null, RegionG, RasterRegionCombineMode.Set);
                    }
                    LeadRect  regionBounds = RegionG.GetBounds();// _rasterImageViewer.Image.GetRegionBounds(null);
                    LeadRectD regionRect   = new LeadRectD(regionBounds.X, regionBounds.Y, regionBounds.Width, regionBounds.Height);
                    regionRect = _rasterImageViewer.ImageTransform.TransformRect(regionRect);
                    regionRect.Inflate(1, 1);
                    LeadRectD imageRect = new LeadRectD(0, 0, image.ImageWidth, image.ImageHeight);
                    imageRect = _rasterImageViewer.ImageTransform.TransformRect(imageRect);
                    imageRect.Inflate(1, 1);

                    using (Region region = new Region(new Rectangle((int)imageRect.X, (int)imageRect.Y, (int)imageRect.Width, (int)imageRect.Height)))
                    {
                        region.Exclude(new Rectangle((int)regionRect.X, (int)regionRect.Y, (int)regionRect.Width, (int)regionRect.Height));
                        using (Brush brush = new HatchBrush(HatchStyle.SmallConfetti, Color.Black, Color.FromArgb(64, Color.Black)))
                        {
                            e.PaintEventArgs.Graphics.FillRegion(brush, region);
                        }
                    }

                    e.PaintEventArgs.Graphics.DrawRectangle(Pens.Black, (int)regionRect.X, (int)regionRect.Y, (int)regionRect.Width, (int)regionRect.Height);
                    e.PaintEventArgs.Graphics.DrawRectangle(Pens.Black, (int)imageRect.X, (int)imageRect.Y, (int)imageRect.Width, (int)imageRect.Height);
                }
            }
        }
Beispiel #5
0
        private void DoReadBarcodes()
        {
            _documentBarcodes = new DocumentBarcodes();
            _barcodesListView.Groups.Clear();
            _barcodesListView.Items.Clear();

            _infoLabel.Text         = DemosGlobalization.GetResxString(GetType(), "Resx_SearchingForBarcode");
            _retryLinkLabel.Visible = false;
            _retryLinkLabel.Enabled = false;
            _messageLabel.Visible   = true;
            _messageLabel.Text      = string.Empty;
            _showReadOptionsDialogCheckBox.Visible = false;
            _stopButton.DialogResult = DialogResult.None;
            _stopButton.Text         = "&Stop";
            this.AcceptButton        = null;
            this.CancelButton        = null;
            _isWorking = true;

            Application.DoEvents();

            int firstPageNumber;
            int lastPageNumber;

            if (_currentPageOnly)
            {
                firstPageNumber = _rasterImage.Page;
                lastPageNumber  = _rasterImage.Page;
            }
            else
            {
                firstPageNumber = 1;
                lastPageNumber  = _rasterImage.PageCount;
            }

            Exception error = null;

            _stopWatch = new Stopwatch();

            _lastPageNumber = lastPageNumber;

            for (int pageNumber = firstPageNumber; pageNumber <= lastPageNumber && !_isAborted && error == null; pageNumber++)
            {
                _currentPageNumber = pageNumber;
                UpdateMessageLabel(null);
                Application.DoEvents();

                int savePageNumber = -1;

                if (_rasterImage.Page != pageNumber)
                {
                    _rasterImage.DisableEvents();
                    savePageNumber    = _rasterImage.Page;
                    _rasterImage.Page = pageNumber;
                }

                // Continue on errors
                _barcodeEngine.Reader.ErrorMode      = BarcodeReaderErrorMode.IgnoreAll;
                _barcodeEngine.Reader.ReadSymbology += new EventHandler <BarcodeReadSymbologyEventArgs>(Reader_ReadSymbology);

                try
                {
                    BarcodeData[] barcodes = _barcodeEngine.Reader.ReadBarcodes(_rasterImage, _bounds, 0, _symbologies, null);

                    PageBarcodes pageBarcodes = new PageBarcodes();
                    foreach (BarcodeData barcode in barcodes)
                    {
                        pageBarcodes.Barcodes.Add(barcode);
                    }

                    _documentBarcodes.Pages.Add(pageBarcodes);
                }
                catch (Exception ex)
                {
                    error = ex;
                }
                finally
                {
                    if (savePageNumber != -1)
                    {
                        _rasterImage.EnableEvents();
                        _rasterImage.Page = savePageNumber;
                    }

                    _barcodeEngine.Reader.ReadSymbology -= new EventHandler <BarcodeReadSymbologyEventArgs>(Reader_ReadSymbology);
                    _barcodeEngine.Reader.ErrorMode      = BarcodeReaderErrorMode.Default;
                }
            }

            _messageLabel.Visible   = false;
            _retryLinkLabel.Visible = true;
            _retryLinkLabel.Enabled = true;

            int count = 0;

            foreach (PageBarcodes pageBarcodes in _documentBarcodes.Pages)
            {
                count += pageBarcodes.Barcodes.Count;
            }

            if (count > 0)
            {
                _infoLabel.Text = string.Format(DemosGlobalization.GetResxString(GetType(), "Resx_DoneBarcode"), count);
            }
            else
            {
                _infoLabel.Text = string.Format(DemosGlobalization.GetResxString(GetType(), "Resx_DoneNoBarcode"));
            }

            if (error != null)
            {
                _stopButton.DialogResult = DialogResult.Cancel;
                MessageBox.Show(this, error.Message, DemosGlobalization.GetResxString(GetType(), "Resx_Error"), MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }

            if (count == 0 && error == null)
            {
                _showReadOptionsDialogCheckBox.Visible = true;
            }

            _stopButton.Text         = "C&lose";
            _stopButton.DialogResult = DialogResult.OK;
            this.AcceptButton        = _stopButton;
            this.CancelButton        = _stopButton;
            _isWorking = false;
            _stopButton.Focus();
        }