示例#1
0
        public override bool OnPointerMove(AnnContainer sender, AnnPointerEventArgs e)
        {
            bool handled = false;

            if (TargetObject != null && HasStarted)
            {
                LeadPointD pt = ClipPoint(e.Location, ClipRectangle);

                if (!LeadPoint.Equals(pt, _end))
                {
                    _end = pt;
                    LeadPointCollection points = TargetObject.Points;

                    if (points.Count > 1)
                    {
                        if (_clickCount % 2 != 0)
                        {
                            points[points.Count - 1] = pt; // end point
                        }
                    }

                    AnnIntersectionPointObject intersectionPointObject = TargetObject as AnnIntersectionPointObject;
                    if (intersectionPointObject != null)
                    {
                        intersectionPointObject.IntersectionInsideContainer = ClipRectangle.ContainsPoint(intersectionPointObject.IntersectionPoint);
                    }

                    Working();
                }

                handled = true;
            }

            return(handled);
        }
示例#2
0
        void _viewer_PostRender(object sender, ImageViewerRenderEventArgs args)
        {
            PaintEventArgs e = args.PaintEventArgs;

            if (command != null)
            {
                if (_drawing)
                {
                    double    xFactor = _viewer.XScaleFactor;
                    double    yFactor = _viewer.YScaleFactor;
                    float     xOffset = -_viewer.DisplayRectangle.Left;
                    float     yOffset = -_viewer.DisplayRectangle.Top;
                    LeadPoint center  = new LeadPoint((int)((_center.X + xOffset) * xFactor + 0.5), (int)((_center.Y + yOffset) * yFactor + 0.5));
                    LeadPoint current = new LeadPoint((int)((_curntMousePoint.X + xOffset) * xFactor + 0.5), (int)((_curntMousePoint.Y + yOffset) * yFactor + 0.5));

                    int Radius = Length(center, current);

                    e.Graphics.FillEllipse(Brushes.Red, RectFromCenterRadius(center, 2));
                    e.Graphics.IntersectClip(_viewer.ClientRectangle);

                    if (!_isCircle)
                    {
                        e.Graphics.DrawRectangle(Pens.Yellow, RectFromCenterRadius(center, Radius));
                    }
                    else
                    {
                        e.Graphics.DrawEllipse(Pens.Yellow, RectFromCenterRadius(center, Radius));
                    }
                }
            }
        }
示例#3
0
        void _viewer_MouseDown(object sender, MouseEventArgs e)
        {
            if (command != null && e.Button == MouseButtons.Left)
            {
                if (_viewer.ViewBounds.Contains(LeadPoint.Create(e.X, e.Y)))
                {
                    double xFactor = _viewer.XScaleFactor;
                    double yFactor = _viewer.YScaleFactor;

                    int xOffset = _viewer.ViewBounds.Left;
                    int yOffset = _viewer.ViewBounds.Top;

                    LeadPoint pnt = new LeadPoint((int)((e.X - xOffset) * 1.0 / xFactor + 0.5), (int)((e.Y - yOffset) * 1.0 / yFactor + 0.5));

                    _drawing         = true;
                    _mousedown       = true;
                    _center          = pnt;
                    _curntMousePoint = _center;
                    _viewer.Invalidate();


                    if (_viewer.WorkingInteractiveMode is ImageViewerFloaterInteractiveMode)
                    {
                        _mainForm.DisableAllInteractiveModes(_viewer);
                        _form.Viewer.InteractiveModes.BeginUpdate();
                        _form.NoneInteractiveMode.IsEnabled = true;
                        _form.Viewer.InteractiveModes.EndUpdate();
                        try
                        {
                            if (_viewer.Floater != null)
                            {
                                RasterRegionXForm xForm = new RasterRegionXForm();
                                xForm.ViewPerspective = RasterViewPerspective.TopLeft;

                                /*LeadMatrix mm = _viewer.FloaterTransform.OffsetY;
                                 * Matrix m = new Matrix((float)mm.M11, (float)mm.M12, (float)mm.M21, (float)mm.M22, (float)mm.OffsetX, (float)mm.OffsetY);
                                 * Transformer t = new Transformer(m);*/
                                LeadMatrix floaterTransform = _viewer.FloaterTransform;

                                xForm.XOffset                      = (int)floaterTransform.OffsetX;
                                xForm.YOffset                      = (int)floaterTransform.OffsetY;
                                xForm.YScalarDenominator           =
                                    xForm.XScalarDenominator       =
                                        xForm.XScalarNumerator     =
                                            xForm.YScalarNumerator = 1;

                                _viewer.Image.SetRegion(xForm, _viewer.Floater.GetRegion(null), RasterRegionCombineMode.Set);

                                _viewer.Floater.Dispose();
                                _viewer.Floater = null;
                            }
                        }
                        catch (Exception ex)
                        {
                            Messager.ShowError(this, ex);
                        }
                    }
                }
            }
        }
示例#4
0
        private void _rasterImageViewer_MouseMove(object sender, MouseEventArgs e)
        {
            string str = String.Empty;

            RasterImage image = _rasterImageViewer.Image;

            if (image != null)
            {
                LeadPoint pixels = PhysicalToLogical(new LeadPoint(e.X, e.Y));

                if (pixels.X >= 0 && pixels.X <= image.ImageWidth &&
                    pixels.Y >= 0 && pixels.Y <= image.ImageHeight)
                {
                    str = string.Format("{0},{1} px", (int)pixels.X, (int)pixels.Y);
                }

                if (InteractiveMode == ViewerControlInteractiveMode.SelectMode)
                {
                    int index = HitTestBarcode(pixels);
                    if (index != -1)
                    {
                        _rasterImageViewer.Cursor = Cursors.Cross;
                    }
                    else if (MainForm.InversePerspectiveActive == false)
                    {
                        _rasterImageViewer.Cursor = Cursors.Default;
                    }
                }
            }

            _mousePositionLabel.Text = str;
        }
示例#5
0
        void _viewer_MouseMove(object sender, MouseEventArgs e)
        {
            double xFactor = 1;
            double yFactor = 1;

            int       xOffset = 0;
            int       yOffset = 0;
            LeadPoint pixels  = _form.PhysicalToLogical(new LeadPoint(e.X, e.Y));

            Point pnt = new Point((int)((pixels.X - xOffset) * 1.0 / xFactor + 0.5), (int)((pixels.Y - yOffset) * 1.0 / yFactor + 0.5));

            if (_viewer.ImageBounds.Contains(pixels.X, pixels.Y))
            {
                _viewer.Cursor = Cursors.Cross;

                if (_firstPointSelected)
                {
                    _currentMousePoint = pnt;
                }

                if (_movingPntIdx != -1)
                {
                    _polyPoints.RemoveAt(_movingPntIdx);
                    _polyPoints.Insert(_movingPntIdx, pnt);
                    UpdateDialogPoints(_movingPntIdx, pnt);
                }
                _viewer.Invalidate();
            }
            _txtCursorX.Text = pnt.X.ToString();
            _txtCursorY.Text = pnt.Y.ToString();
        }
示例#6
0
        private void _rasterImageViewer_MouseMove(object sender, MouseEventArgs e)
        {
            string str;

            if (_rasterImageViewer.Image != null && _ocrPage != null)
            {
                // Show the mouse position in physical and logical (inches) coordinates

                PointF physical = new PointF(e.X, e.Y);
                PointF pixels;

                Transformer trans = new Transformer(ToMatrix(_rasterImageViewer.ImageTransform));
                pixels = trans.PointToLogical(physical);

                LeadPoint lPoint    = new LeadPoint((int)Math.Abs(pixels.X), (int)Math.Abs(pixels.Y));
                int       zoneIndex = _ocrPage.HitTestZone(lPoint);
                str = string.Format("{0},{1} px", (int)pixels.X, (int)pixels.Y);
            }
            else
            {
                str = string.Empty;
            }

            _mousePositionLabel.Text = str;
        }
示例#7
0
        private void ApplyWatershed()
        {
            if (_points.Count > 0)
            {
                LeadPoint point = _viewer.ScrollOffset;
                _viewer.Image = _orgImage.Clone();
                _viewer.ScrollBy(point);

                WatershedCommand command = new WatershedCommand();

                LeadPoint[][] points = new LeadPoint[_points.Count][];

                double xFactor = _viewer.XScaleFactor;
                double yFactor = _viewer.YScaleFactor;

                int xOffset = _viewer.ViewBounds.Left;
                int yOffset = _viewer.ViewBounds.Top;

                for (int idx = 0; idx < points.Length; idx++)
                {
                    points[idx] = new LeadPoint[_points.ToArray()[idx].ToArray().Length];

                    for (int idx2 = 0; idx2 < points[idx].Length; idx2++)
                    {
                        points[idx][idx2].X = (int)((_points.ToArray()[idx].ToArray()[idx2].X - xOffset) * 1.0 / xFactor + 0.5);
                        points[idx][idx2].Y = (int)((_points.ToArray()[idx].ToArray()[idx2].Y - yOffset) * 1.0 / yFactor + 0.5);
                    }
                }

                command.PointsArray = points;

                command.Run(_viewer.Image);
                _viewer.Invalidate();
            }
        }
示例#8
0
        private LeadPoint[] PointsFromCorners(LeadPoint topLeft, LeadPoint bottomRight)
        {
            // Set the points from a 2 corner points
            var x1 = topLeft.X;
            var y1 = topLeft.Y;
            var x2 = bottomRight.X;
            var y2 = bottomRight.Y;

            var width      = x2 - x1;
            var height     = y2 - y1;
            var halfWidth  = width / 2;
            var halfHeight = height / 2;

            return(new LeadPoint[]
            {
                new LeadPoint(x1, y1),
                new LeadPoint(x1 + halfWidth, y1),
                new LeadPoint(x2, y1),
                new LeadPoint(x2, y1 + halfHeight),
                new LeadPoint(x2, y2),
                new LeadPoint(x1 + halfWidth, y2),
                new LeadPoint(x1, y2),
                new LeadPoint(x1, y1 + halfHeight)
            });
        }
示例#9
0
        private LeadPoint[] PointsFromRectangle(LeadRect rect)
        {
            var topLeft     = new LeadPoint(rect.Left, rect.Top);
            var bottomRight = new LeadPoint(rect.Right, rect.Bottom);

            return(PointsFromCorners(topLeft, bottomRight));
        }
示例#10
0
        int Length(LeadPoint center, LeadPoint current)
        {
            int xDiff = center.X - current.X;
            int yDiff = center.Y - current.Y;

            return((int)(Math.Sqrt((double)(xDiff * xDiff + yDiff * yDiff)) + 0.5));
        }
示例#11
0
        private void AddMagicWand(LeadPoint MagicWandPoint)
        {
            ImageViewer imageViewer = this.ImageViewer;

            LeadMatrix  MyMatrix = imageViewer.ImageTransform;
            Transformer t        = new Transformer(new System.Drawing.Drawing2D.Matrix((float)MyMatrix.M11, (float)MyMatrix.M12, (float)MyMatrix.M21, (float)MyMatrix.M22, (float)MyMatrix.OffsetX, (float)MyMatrix.OffsetY));

            LeadPoint pt = MagicWandPoint;

            pt = imageViewer.Image.PointToImage(RasterViewPerspective.TopLeft, pt);

            PointF ptF = t.PointToLogical(new PointF(pt.X, pt.Y));

            RasterColor lowerColor = new RasterColor(Threshold, Threshold, Threshold);
            RasterColor upperColor = new RasterColor(Threshold, Threshold, Threshold);

            if (((int)ptF.X > imageViewer.Image.Width) || ((int)ptF.Y > imageViewer.Image.Height))
            {
                return;
            }
            else
            {
                if (((int)ptF.X > 0) && ((int)ptF.Y > 0))
                {
                    imageViewer.Image.AddMagicWandToRegion((int)ptF.X, (int)ptF.Y, lowerColor, upperColor, RasterRegionCombineMode.Set);
                    imageViewer.ActiveItem.ImageRegionToFloater();
                    imageViewer.Image.SetRegion(null, null, RasterRegionCombineMode.Set);
                }
            }
        }
示例#12
0
        void _viewer_MouseUp(object sender, MouseEventArgs e)
        {
            Cursor.Clip = Rectangle.Empty;

            if (e.Button == MouseButtons.Left)
            {
                LeadPoint tmpPnt = _viewer.ConvertPoint(null, ImageViewerCoordinateType.Control, ImageViewerCoordinateType.Image, LeadPoint.Create(e.X, e.Y));
                _pressed = false;

                switch (_button)
                {
                case downButtonPosition.END_RECT:
                case downButtonPosition.NONE:
                    _xEnd         = tmpPnt.X;
                    _yEnd         = tmpPnt.Y;
                    _numXEnd.Text = _xEnd.ToString();
                    _numYEnd.Text = _yEnd.ToString();
                    break;

                case downButtonPosition.START_RECT:
                    _xStart         = tmpPnt.X;
                    _yStart         = tmpPnt.Y;
                    _numXStart.Text = _xStart.ToString();
                    _numYStart.Text = _yStart.ToString();
                    break;
                }
                if (_cbMovable.Checked)
                {
                    _startRect = new Rectangle(_ptStart.X - 10, _ptStart.Y - 10, 20, 20);
                    _endRect   = new Rectangle(_ptEnd.X - 10, _ptEnd.Y - 10, 20, 20);
                }
            }
        }
示例#13
0
        void _viewer_PostRender(object sender, ImageViewerRenderEventArgs args)
        {
            LeadPoint firstPoint = _viewer.ConvertPoint(null, ImageViewerCoordinateType.Image, ImageViewerCoordinateType.Control, LeadPoint.Create(_xStart, _yStart));
            LeadPoint endPoint   = _viewer.ConvertPoint(null, ImageViewerCoordinateType.Image, ImageViewerCoordinateType.Control, LeadPoint.Create(_xEnd, _yEnd));

            float[]        dashValuesWhite = { 4, 4, 4, 4 };
            Pen            penBlack        = new Pen(Color.Black, 1);
            Pen            penWhite        = new Pen(Color.White, 1);
            PaintEventArgs e = args.PaintEventArgs;

            penWhite.DashPattern = dashValuesWhite;

            e.Graphics.DrawLine(penBlack, firstPoint.X, firstPoint.Y, endPoint.X, endPoint.Y);
            e.Graphics.DrawLine(penWhite, firstPoint.X, firstPoint.Y, endPoint.X, endPoint.Y);
            LeadRect startRect = _viewer.ConvertRect(null, ImageViewerCoordinateType.Image, ImageViewerCoordinateType.Control, LeadRect.Create(_startRect.X, _startRect.Y, _startRect.Width, _startRect.Height));
            LeadRect endRect   = _viewer.ConvertRect(null, ImageViewerCoordinateType.Image, ImageViewerCoordinateType.Control, LeadRect.Create(_endRect.X, _endRect.Y, _endRect.Width, _endRect.Height));

            if (_cbMovable.Checked)
            {
                e.Graphics.DrawRectangle(penBlack, startRect.X, startRect.Y, startRect.Width, startRect.Height);
                e.Graphics.DrawRectangle(penWhite, startRect.X, startRect.Y, startRect.Width, startRect.Height);
                e.Graphics.DrawRectangle(penBlack, endRect.X, endRect.Y, endRect.Width, endRect.Height);
                e.Graphics.DrawRectangle(penWhite, endRect.X, endRect.Y, endRect.Width, endRect.Height);
            }
        }
        private int DistanceBetweenPoints(LeadPoint point1, LeadPoint point2)
        {
            int dx = point2.X - point1.X;
            int dy = point2.Y - point1.Y;

            return((int)Math.Sqrt((dx * dx) + (dy * dy)));
        }
示例#15
0
        PDFObject HitTestPDFImageObject(LeadPoint pt)
        {
            PDFObject retObject = new PDFObject();

            PDFDocumentPage page = _document.Pages[_currentPageNumber - 1];

            if (page.Objects != null && page.Objects.Count > 0)
            {
                foreach (PDFObject obj in page.Objects)
                {
                    if (obj.ObjectType == PDFObjectType.Image)
                    {
                        PDFRect  tempPDFRect = page.ConvertRect(PDFCoordinateType.Pdf, PDFCoordinateType.Pixel, obj.Bounds);
                        LeadRect objectRect  = ToLeadRect(tempPDFRect);
                        if (objectRect.Contains(pt))
                        {
                            // Point in rect then user pressed over image object, so return it.
                            retObject = obj;
                            break;
                        }
                    }
                }
            }

            return(retObject);
        }
        private void service_Move(object sender, InteractiveEventArgs e)
        {
            if (this.ImageViewer.Items.Count < 1)
            {
                return;
            }
            var item = this.ImageViewer.Items[0];

            if (item == null)
            {
                return;
            }

            e.IsHandled = true;

            this.OnWorkStarted(EventArgs.Empty);
            if (!item.HasFloater)
            {
                TryAddFloater(item);
            }
            else
            {
                LeadMatrix matrix = new LeadMatrix();

                LeadPoint positionImage = ImageViewer.ConvertPoint(ImageViewer.Items[0],
                                                                   ImageViewerCoordinateType.Control, ImageViewerCoordinateType.Image, LeadPoint.Create(e.Position.X, e.Position.Y));

                matrix.OffsetX        = positionImage.X - item.Floater.Width / 2;
                matrix.OffsetY        = positionImage.Y - item.Floater.Height / 2;
                item.FloaterTransform = matrix;
            }
            this.OnWorkCompleted(EventArgs.Empty);
        }
示例#17
0
 private void UpdateControlPoints()
 {
     for (var i = 0; i < _imagePoints.Length; i++)
     {
         _controlPoints[i] = new LeadPoint(_imagePoints[i].X, _imagePoints[i].Y);
     }
     ImageViewer.ConvertPoints(null, ImageViewerCoordinateType.Image, ImageViewerCoordinateType.Item, _controlPoints);
 }
示例#18
0
        void _viewer_MouseDown(object sender, MouseEventArgs e)
        {
            LeadPoint pixels      = _form.PhysicalToLogical(new LeadPoint(e.X, e.Y));
            LeadRect  imageBounds = new LeadRect(0, 0, _viewer.Image.ImageWidth, _viewer.Image.ImageHeight);

            if (imageBounds.Contains(pixels))
            {
                if (e.Button == MouseButtons.Left)
                {
                    double xFactor = 1;
                    double yFactor = 1;

                    int xOffset = 0;
                    int yOffset = 0;

                    Point pnt = new Point((int)Math.Ceiling(((pixels.X - xOffset) * 1.0 / xFactor + 0.5)), (int)Math.Ceiling(((pixels.Y - yOffset) * 1.0 / yFactor + 0.5)));

                    _movingPntIdx = -1;

                    if (!_drawing)
                    {
                        Rectangle[] hyberAreas = new Rectangle[_polyPoints.Count];
                        for (int idx = 0; idx < hyberAreas.Length; idx++)
                        {
                            hyberAreas[idx] = CreateRectFromPoint(_polyPoints[idx], 15);
                            if (hyberAreas[idx].Contains(pnt))
                            {
                                _movingPntIdx = idx;
                                break;
                            }
                        }
                    }

                    if (_movingPntIdx == -1)
                    {
                        if (_polyPoints.Count < 4)
                        {
                            if (pnt.Equals(_lastPoint))
                            {
                                return;
                            }
                            _firstPointSelected = true;
                            _polyPoints.Add(pnt);
                            _currentMousePoint = pnt;
                            UpdateDialogPoints(_polyPoints.Count - 1, pnt);
                            _lastPoint = pnt;
                        }

                        if (_polyPoints.Count == 4)
                        {
                            _drawing = false;
                            _viewer.Invalidate();
                            _btnApply.Enabled = true;
                        }
                    }
                }
            }
        }
示例#19
0
        private void _btnCancel_Click(object sender, EventArgs e)
        {
            LeadPoint point = _viewer.ScrollOffset;

            _viewer.Image = _orgImage.Clone();
            _viewer.ScrollBy(point);
            _orgImage.Dispose();
            this.Close();
        }
        public void ResetThumbs(LeadPoint[] thumbs)
        {
            _topLeft     = thumbs[0];
            _topRight    = thumbs[1];
            _bottomRight = thumbs[2];
            _bottomLeft  = thumbs[3];

            UpdateControlPoints();
        }
示例#21
0
        private void _btnReset_Click(object sender, EventArgs e)
        {
            _points.Clear();
            _currentSegment.Clear();
            LeadPoint point = _viewer.ScrollOffset;

            _viewer.Image = _orgImage.Clone();
            _viewer.ScrollBy(point);
            _viewer.Invalidate();
        }
示例#22
0
        private void _thumbnailsContextMenuStrip_Opening(object sender, CancelEventArgs e)
        {
            // Get current page from the position
            if (!_documentViewer.HasDocument)
            {
                e.Cancel = true;
                return;
            }

            var thumbnails = _documentViewer.Thumbnails;

            if (thumbnails == null)
            {
                e.Cancel = true;
                return;
            }

            var pageNumber  = -1;
            var imageViewer = thumbnails.ImageViewer;
            var position    = imageViewer.PointToClient(Cursor.Position);
            var item        = imageViewer.HitTestItem(LeadPoint.Create(position.X, position.Y));
            var canRunText  = false;

            if (item != null)
            {
                pageNumber = imageViewer.Items.IndexOf(item) + 1;
                canRunText = _documentViewer.Commands.CanRun(DocumentViewerCommands.TextGet, pageNumber);
            }

            if (pageNumber != -1)
            {
                _thumbnailsGetThisPageTextToolStripMenuItem.Tag            = canRunText ? (object)pageNumber : null;
                _thumbnailsGetThisPageTextToolStripMenuItem.Enabled        = canRunText;
                _thumbnailsRotateClockwiseToolStripMenuItem.Tag            = pageNumber;
                _thumbnailsRotateClockwiseToolStripMenuItem.Enabled        = true;
                _thumbnailsRotateCounterClockwiseToolStripMenuItem.Tag     = pageNumber;
                _thumbnailsRotateCounterClockwiseToolStripMenuItem.Enabled = true;
                _thumbnailsEnableDisablePageToolStripMenuItem.Tag          = pageNumber;
                _thumbnailsEnableDisablePageToolStripMenuItem.Enabled      = true;
                _thumbnailsEnableDisablePageToolStripMenuItem.Checked      = _documentViewer.Document.Pages[pageNumber - 1].IsDeleted;
            }
            else
            {
                _thumbnailsGetThisPageTextToolStripMenuItem.Tag            = null;
                _thumbnailsGetThisPageTextToolStripMenuItem.Enabled        = false;
                _thumbnailsRotateClockwiseToolStripMenuItem.Tag            = null;
                _thumbnailsRotateClockwiseToolStripMenuItem.Enabled        = true;
                _thumbnailsRotateCounterClockwiseToolStripMenuItem.Tag     = null;
                _thumbnailsRotateCounterClockwiseToolStripMenuItem.Enabled = true;
                _thumbnailsEnableDisablePageToolStripMenuItem.Tag          = null;
                _thumbnailsEnableDisablePageToolStripMenuItem.Enabled      = false;
            }

            _thumbnailsGetAllPagesTextToolStripMenuItem.Enabled = _documentViewer.Commands.CanRun(DocumentViewerCommands.TextGet, 0);
        }
示例#23
0
 void _viewer_MouseMove(object sender, MouseEventArgs e)
 {
     if (_viewer.ViewBounds.Contains(LeadPoint.Create(e.X, e.Y)))
     {
         if (_drawing)
         {
             _currentSegment.Add(new Point(e.X, e.Y));
             _viewer.Invalidate();
         }
     }
 }
示例#24
0
        private IntPtr _redWin32Pen       = CreatePen(0, 2, (uint)0x80000FF);   //red win32 pen

        // Translate Point From Control to RasterImage
        private Point TranslatePoint(ImageViewer viewer, RasterImage image, Point point)
        {
            if (image != null && viewer != null)
            {
                LeadPoint leadPoint = new LeadPoint(point.X, point.Y);
                leadPoint = viewer.ConvertPoint(viewer.Items[0], ImageViewerCoordinateType.Control, ImageViewerCoordinateType.Image, leadPoint);
                point.X   = leadPoint.X;
                point.Y   = leadPoint.Y;
            }
            return(point);
        }
示例#25
0
 void _viewer_PanBegin(object sender, MouseEventArgs e)
 {
     if (e.Button == MouseButtons.Right)
     {
         _viewer.Identity();
     }
     else
     {
         _currentPoint = new LeadPoint(e.X, e.Y);
     }
 }
示例#26
0
        public LeadPoint PointToPixels(LeadPoint value)
        {
            if (value.IsEmpty)
            {
                return(LeadPoint.Empty);
            }

            var resolution = this.Pages.DefaultResolution;

            return(LeadPoint.Create(DocumentToPixels(resolution, value.X), DocumentToPixels(resolution, value.Y)));
        }
        public ViewContextMenu(DocumentViewer documentViewer, Action selectAllTextAction)
        {
            _commandsBinder = new CommandsBinder(documentViewer);

            _commandsBinder.Items.Add(new CommandBinderItem
            {
                CommandNames  = new string[] { DocumentViewerCommands.TextCopy, DocumentViewerCommands.AnnotationsCopy },
                ToolStripItem = this.Items.Add("Copy")
            });

            _commandsBinder.Items.Add(new CommandBinderItem
            {
                CommandName   = DocumentViewerCommands.AnnotationsPaste,
                ToolStripItem = this.Items.Add("Paste"),
                GetValue      = (() =>
                {
                    // The paste position, in viewer coordinates
                    var position = documentViewer.View.ImageViewer.PointToClient(_openingPosition);
                    return(LeadPoint.Create(position.X, position.Y));
                })
            });


            _commandsBinder.Items.Add(new CommandBinderItem
            {
                CommandName   = DocumentViewerCommands.AnnotationsDelete,
                ToolStripItem = this.Items.Add("Delete")
            });

            this.Items.Add(new ToolStripSeparator());

            _commandsBinder.Items.Add(new CommandBinderItem
            {
                CommandName   = DocumentViewerCommands.TextSelectAll,
                ToolStripItem = this.Items.Add("Select all", null, new EventHandler(delegate { selectAllTextAction(); })),
                AutoRun       = false
            });

            _commandsBinder.Items.Add(new CommandBinderItem
            {
                CommandName   = DocumentViewerCommands.AnnotationsSelectAll,
                ToolStripItem = this.Items.Add("Select all annotations")
            });

            _commandsBinder.Items.Add(new CommandBinderItem
            {
                CommandNames  = new string[] { DocumentViewerCommands.TextClearSelection, DocumentViewerCommands.AnnotationsClearSelection },
                ToolStripItem = this.Items.Add("Clear selection")
            });

            _commandsBinder.BindActions(true);
            _commandsBinder.Run();
        }
示例#28
0
        void _viewer_MouseUp(object sender, MouseEventArgs e)
        {
            LeadPoint pixels = _form.PhysicalToLogical(new LeadPoint(e.X, e.Y));

            if (_viewer.ImageBounds.Contains(pixels.X, pixels.Y))
            {
                if (e.Button == MouseButtons.Left)
                {
                    _movingPntIdx = -1;
                }
            }
        }
示例#29
0
 void _viewer_MouseDown(object sender, MouseEventArgs e)
 {
     if (e.Button == MouseButtons.Left)
     {
         _drawing = true;
         _segIndex++;
         LeadPoint point = _viewer.ScrollOffset;
         _viewer.Image = _orgImage.Clone();
         _viewer.ScrollBy(point);
         _viewer.Invalidate();
     }
 }
示例#30
0
        private void _rasterImageViewer_MouseMove(object sender, MouseEventArgs e)
        {
            string str;

            if (_rasterImageViewer.Image != null)
            {
                // Show the mouse position in physical and logical (inches) coordinates

                PointF physical = new PointF(e.X, e.Y);
                PointF pixels;


                Transformer trans = new Transformer(ToMatrix(_rasterImageViewer.ImageTransform));
                pixels = trans.PointToLogical(physical);

                LeadPoint lPoint    = new LeadPoint((int)pixels.X, (int)pixels.Y);
                int       zoneIndex = _ocrPage.HitTestZone(lPoint);
                if (zoneIndex != -1)
                {
                    if (_ocrPage.Zones[zoneIndex].ZoneType == OcrZoneType.Table && _ocrPage.TableZoneManager != null)
                    {
                        try
                        {
                            OcrTablePointInformation tablePointInfo = _ocrPage.TableZoneManager.GetPointInformation(zoneIndex, lPoint, new LeadSize(2, 2));
                            int cellIndex = tablePointInfo.CellIndex + 1;
                            _cellIndexLabel.Text = "Cell Index: " + cellIndex.ToString();
                        }
                        catch (System.Exception /*e*/)
                        {
                            _cellIndexLabel.Text = string.Empty;
                        }
                    }
                    else
                    {
                        _cellIndexLabel.Text = string.Empty;
                    }
                }
                else
                {
                    _cellIndexLabel.Text = string.Empty;
                }


                str = string.Format("{0},{1} px", (int)pixels.X, (int)pixels.Y);
            }
            else
            {
                str = string.Empty;
            }

            _mousePositionLabel.Text = str;
        }