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 }
/// <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(); }
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); }
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); } } }
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(); }