Beispiel #1
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 #2
0
        private bool Init()
        {
            // Check support required to use this program
            if (RasterSupport.IsLocked(RasterSupportType.Barcodes1D) && RasterSupport.IsLocked(RasterSupportType.Barcodes2D))
            {
                Messager.ShowError(this, BarcodeGlobalization.GetResxString(GetType(), "Resx_LEADBarcodeSupport"));
                return(false);
            }

            try
            {
                _rasterCodecs = new RasterCodecs();
            }
            catch (Exception ex)
            {
                Messager.ShowError(this, string.Format("RasterCodec initialize error: {0}", ex.Message));
                return(false);
            }

            // this is very important, must be placed leadtools.engine.dll in this path
            _rasterCodecs.Options.Pdf.InitialPath = AppDomain.CurrentDomain.BaseDirectory;

            _barcodeOptions = BarcodeOptions.Load();

            //BarcodeSymbology[] supportedSymbologies = BarcodeEngine.GetSupportedSymbologies();
            WriteLine(string.Format("{0} Supported symbologies:", _barcodeOptions.ReadOptionsSymbologies.Length), TraceEventType.Information);
            foreach (BarcodeSymbology symbology in _barcodeOptions.ReadOptionsSymbologies)
            {
                WriteLine(string.Format("{0}: {1}", symbology, BarcodeEngine.GetSymbologyFriendlyName(symbology)), TraceEventType.Information);
            }
            WriteLine(string.Format("----------"), TraceEventType.Information);

            _sampleSymbologiesRasterImage = null;

            // Create the barcodes symbologies multi-frame RasterImage
            using (Stream stream = GetType().Assembly.GetManifestResourceStream("BarcodeSplitManage.Resources.Symbologies.tif"))
            {
                _rasterCodecs.Options.Load.AllPages = true;
                _sampleSymbologiesRasterImage       = _rasterCodecs.Load(stream);
            }

            _barcodeEngine = new BarcodeEngine();
            _barcodeEngine.Reader.ImageType = BarcodeImageType.Unknown;
            _barcodeEngine.Reader.EnableReturnFourPoints = false;
            // Continue on errors
            _barcodeEngine.Reader.ErrorMode = BarcodeReaderErrorMode.IgnoreAll;

            _directorySettings = new DirectorySettings();

            return(true);
        }
Beispiel #3
0
        private void DrawBarcodeData(Graphics g, RasterImage image, BarcodeData data, StringFormat sf, Brush brush, Pen pen)
        {
            LeadRect  rect = data.Bounds;
            LeadRectD rc   = new LeadRectD(rect.X, rect.Y, rect.Width, rect.Height);
            string    line = BarcodeEngine.GetSymbologyFriendlyName(data.Symbology);

            if (FourPoints && data.Symbology != BarcodeSymbology.Aztec && data.Symbology != BarcodeSymbology.Maxi && data.Symbology != BarcodeSymbology.MicroQR)
            {
                LeadPointD[] pointsL = new LeadPointD[4];                Point[] points = new Point[4];
                pointsL[0].X = ((int)rc.Left & 0xffff);                  pointsL[0].Y = ((int)rc.Left >> 16);
                pointsL[1].X = ((int)rc.Top & 0xffff);                   pointsL[1].Y = ((int)rc.Top >> 16);
                pointsL[2].X = ((int)rc.Width & 0xffff);                 pointsL[2].Y = ((int)rc.Width >> 16);
                pointsL[3].X = ((int)rc.Height & 0xffff);                pointsL[3].Y = ((int)rc.Height >> 16);

                _rasterImageViewer.ImageTransform.TransformPoints(pointsL);

                for (int i = 0; i < 4; i++)
                {
                    points[i].X = (int)pointsL[i].X;    points[i].Y = (int)pointsL[i].Y;
                }

                g.DrawPolygon(pen, points);

                SizeF size = g.MeasureString(line, Font, points[2].X - points[0].X, sf);
                rc.Width  = (int)size.Width + 1;
                rc.Height = (int)size.Height + 1;

                g.FillRectangle(brush, points[0].X, points[0].Y, (int)rc.Width, (int)rc.Height);
                g.DrawString(line, Font, Brushes.White, new RectangleF(points[0].X, points[0].Y, (int)rc.Width, (int)rc.Height), sf);
            }
            else
            {
                rc = _rasterImageViewer.ImageTransform.TransformRect(rc);
                rc.Inflate(3, 3);

                if (rc.Width < 10 || rc.Height < 10)
                {
                    return;
                }

                g.DrawRectangle(pen, (int)rc.X, (int)rc.Y, (int)rc.Width, (int)rc.Height);

                SizeF size = g.MeasureString(line, Font, (int)rc.Width, sf);
                rc.Width  = (int)size.Width + 1;
                rc.Height = (int)size.Height + 1;

                g.FillRectangle(brush, (int)rc.X, (int)rc.Y, (int)rc.Width, (int)rc.Height);
                g.DrawString(line, Font, Brushes.White, new RectangleF((int)rc.X, (int)rc.Y, (int)rc.Width, (int)rc.Height), sf);
            }
        }
        protected override void OnStart(string[] args)
        {
            _barcodeOptions = BarcodeOptions.Load();

            //BarcodeSymbology[] supportedSymbologies = BarcodeEngine.GetSupportedSymbologies();
            Console.WriteLine(string.Format("{0} Supported symbologies:", _barcodeOptions.ReadOptionsSymbologies.Length));
            foreach (BarcodeSymbology symbology in _barcodeOptions.ReadOptionsSymbologies)
            {
                Console.WriteLine(string.Format("{0}: {1}", symbology, BarcodeEngine.GetSymbologyFriendlyName(symbology)));
            }

            _directorySettings.Load();
            DoPDFSplitStart();

            ServiceLog.WriteLog("Service started");
        }
Beispiel #5
0
        public BarcodeFieldDialog(BarcodeField ff, RasterImage image) : this()
        {
            bcff       = ff;
            this.image = image;
            BarcodeEngine eng = new BarcodeEngine();

            BarcodeSymbology[] symbologies = (BarcodeSymbology[])Enum.GetValues(typeof(BarcodeSymbology));

            cboxSymbology.DisplayMember = "FriendlyName";
            cboxSymbology.ValueMember   = "ActualSymbology";

            for (int i = 0; i < symbologies.Length; i++)
            {
                string symbology = "Unknown";
                try
                {
                    symbology = BarcodeEngine.GetSymbologyFriendlyName(symbologies[i]);
                }
                catch (Exception)
                {
                    symbology = Enum.GetName(typeof(BarcodeSymbology), symbologies[i]);
                }

                BarcodeFriendlySymbology bfs = new BarcodeFriendlySymbology(symbologies[i], symbology);

                cboxSymbology.Items.Add(bfs);

                if (bfs.ActualSymbology == bcff.Symbology)
                {
                    cboxSymbology.SelectedItem = bfs;
                }
            }

            txtName.Text = bcff.Name;
            if (cboxSymbology.SelectedItem == null)
            {
                cboxSymbology.SelectedIndex = 0;
            }
        }
Beispiel #6
0
        protected override void OnDrawItem(DrawItemEventArgs e)
        {
            if (_sampleSymbologiesRasterImage == null)
            {
                return;
            }

            if (e.Index == -1)
            {
                return;
            }

            Rectangle rc = new Rectangle(e.Bounds.X + _delta, e.Bounds.Y + _delta, e.Bounds.Width - 10, e.Bounds.Height - _delta);

            if (_stringFormat == null)
            {
                _stringFormat               = new StringFormat();
                _stringFormat.Alignment     = StringAlignment.Center;
                _stringFormat.LineAlignment = StringAlignment.Far;
            }

            BarcodeSymbology symbology = (BarcodeSymbology)Items[e.Index];
            string           name      = BarcodeEngine.GetSymbologyFriendlyName(symbology);

            _sampleSymbologiesRasterImage.Page = (int)symbology;

            if (_itemPen == null)
            {
                _itemPen = new Pen(Brushes.Black, 2);
            }

            e.Graphics.DrawRectangle(_itemPen, rc);
            e.Graphics.FillRectangle(Brushes.White, rc);

            RasterPaintProperties paintProperties = RasterPaintProperties.Default;

            if (RasterSupport.IsLocked(RasterSupportType.Document))
            {
                paintProperties.PaintDisplayMode = RasterPaintDisplayModeFlags.Bicubic;
            }
            else
            {
                paintProperties.PaintDisplayMode = RasterPaintDisplayModeFlags.ScaleToGray;
            }

            LeadRect imageRect = new LeadRect(rc.X + 2, rc.Y + 2, rc.Width - 4, rc.Height * 2 / 3);

            imageRect = RasterImage.CalculatePaintModeRectangle(
                _sampleSymbologiesRasterImage.ImageWidth,
                _sampleSymbologiesRasterImage.ImageHeight,
                imageRect,
                RasterPaintSizeMode.FitAlways,
                RasterPaintAlignMode.CenterAlways,
                RasterPaintAlignMode.CenterAlways);

            if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
            {
                e.Graphics.FillRectangle(SystemBrushes.Highlight, rc);
                RasterImagePainter.Paint(_sampleSymbologiesRasterImage, e.Graphics, imageRect, paintProperties);
                e.Graphics.DrawRectangle(Pens.Black, imageRect.X, imageRect.Y, imageRect.Width, imageRect.Height);
                e.Graphics.DrawString(name, Font, SystemBrushes.HighlightText, rc, _stringFormat);
            }
            else
            {
                e.Graphics.FillRectangle(SystemBrushes.Control, rc);
                RasterImagePainter.Paint(_sampleSymbologiesRasterImage, e.Graphics, imageRect, paintProperties);
                e.Graphics.DrawRectangle(Pens.Black, imageRect.X, imageRect.Y, imageRect.Width, imageRect.Height);
                e.Graphics.DrawString(name, Font, SystemBrushes.ControlText, rc, _stringFormat);
            }
        }
Beispiel #7
0
        private void Reader_ReadSymbology(object sender, BarcodeReadSymbologyEventArgs e)
        {
            bool   firstInGroup;
            double ms = 0;

            switch (e.Operation)
            {
            case BarcodeReadSymbologyOperation.PreRead:
                UpdateMessageLabel(e.Options);
                _stopWatch.Start();
                break;

            case BarcodeReadSymbologyOperation.PostRead:
                if (_stopWatch.IsRunning)
                {
                    _stopWatch.Stop();
                    ms = _stopWatch.ElapsedMilliseconds;
                    _stopWatch.Reset();
                    firstInGroup = true;
                }
                else
                {
                    firstInGroup = false;
                }

                // Add this item to the list
                if (e.Data != null)
                {
                    if (firstInGroup)
                    {
                        ListViewGroup group = new ListViewGroup(string.Format(DemosGlobalization.GetResxString(GetType(), "Resx_GroupRead"), ms));
                        _barcodesListView.Groups.Add(group);
                    }

                    ListViewItem item = new ListViewItem();
                    item.Text = _currentPageNumber.ToString();
                    item.SubItems.Add(BarcodeEngine.GetSymbologyFriendlyName(e.Data.Symbology));

                    string value    = string.Empty;
                    string location = string.Empty;

                    BarcodeData data = e.Data;
                    if (data != null)
                    {
                        value = data.Value;
                        if (value == null)
                        {
                            value = string.Empty;
                        }

                        location = string.Format("{0}, {1}, {2}, {3}", data.Bounds.Left, data.Bounds.Top, data.Bounds.Right, data.Bounds.Bottom);
                    }
                    else if (e.Error != null)
                    {
                        value = e.Error.Message;
                    }

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

                    item.SubItems.Add(location);

                    item.Group = _barcodesListView.Groups[_barcodesListView.Groups.Count - 1];
                    _barcodesListView.Items.Add(item);
                }
                break;
            }

            Application.DoEvents();

            if (_isAborted)
            {
                e.Status = BarcodeReadSymbologyStatus.Abort;
            }
        }
Beispiel #8
0
        private void btnAutoDetect_Click(object sender, EventArgs e)
        {
            DetectBarcodeOperation bo = new DetectBarcodeOperation(image, bcff.Bounds);

            bo.Start();

            if (bo.IsSymbologyDetected)
            {
                BarcodeFriendlySymbology bfs = new BarcodeFriendlySymbology(bo.DetectedSymbology, BarcodeEngine.GetSymbologyFriendlyName(bo.DetectedSymbology));
                cboxSymbology.SelectedItem = bfs;
            }
            else
            {
                MessageBox.Show("Unable to determine symbology.");
            }
        }