Browse Source

ComPDFKit.Tool(win)-APP多选获取数据,数据储存,鼠标获取裁剪框的裁剪区域位置

liyijie 8 months ago
parent
commit
f9e9a592ce
1 changed files with 165 additions and 21 deletions
  1. 165 21
      Demo/Examples/ComPDFKit.Tool/CPDFToolManager.cs

+ 165 - 21
Demo/Examples/ComPDFKit.Tool/CPDFToolManager.cs

@@ -20,6 +20,8 @@ using ComPDFKit.Tool.Help;
 using ComPDFKit.Measure;
 using System.Dynamic;
 using System.Globalization;
+using System.Reflection;
+using static ComPDFKit.Tool.Help.ImportWin32;
 
 namespace ComPDFKit.Tool
 {
@@ -351,6 +353,37 @@ namespace ComPDFKit.Tool
             return editAreaObject?.cPDFEditArea;
         }
 
+        /// <summary>
+        /// Get the index of the multi choice comment list
+        /// </summary>
+        /// <param name="pageIndexs"></param>
+        /// <returns></returns>
+        public List<CPDFEditArea> GetSelectedEditAreaListObject(ref List<int> pageIndexs)
+        {
+            List<CPDFEditArea> editAreaObjectlist = new List<CPDFEditArea>();
+            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(viewerTool.PDFViewer.GetViewForTag(viewerTool.multiSelectedRectViewTag));
+            if (multiSelectedRect != null && multiSelectedRect.Children.Count > 0)
+            {
+                foreach (SelectedRect selectedRect in multiSelectedRect.Children)
+                {
+                    EditAreaObject editAreaObject = viewerTool.GetEditAreaObjectListForRect(selectedRect);
+                    if (editAreaObject == null)
+                    {
+                        //pageIndexs.Add(-1);
+                    }
+                    else
+                    {
+                        if (!editAreaObjectlist.Contains(editAreaObject?.cPDFEditArea))
+                        {
+                            pageIndexs.Add(editAreaObject.PageIndex);
+                            editAreaObjectlist.Add(editAreaObject?.cPDFEditArea);
+                        }
+                    }
+                }
+            }
+            return editAreaObjectlist;
+        }
+
         public CPDFAnnotation GetCPDFAnnotation()
         {
             return cPDFAnnotation;
@@ -431,20 +464,20 @@ namespace ComPDFKit.Tool
             {
                 case C_ANNOTATION_TYPE.C_ANNOTATION_WIDGET:
                     {
-                    currentParam = ParamConverter.WidgetConverter(viewerTool.GetCPDFViewer().GetDocument(), e.annotData.Annot);
-                    (e.annotData.Annot as CPDFWidget).UpdateFormAp();
-                    break;
+                        currentParam = ParamConverter.WidgetConverter(viewerTool.GetCPDFViewer().GetDocument(), e.annotData.Annot);
+                        (e.annotData.Annot as CPDFWidget).UpdateFormAp();
+                        break;
                     }
 
                 default:
                     {
-                    currentParam = ParamConverter.AnnotConverter(viewerTool.GetCPDFViewer().GetDocument(), e.annotData.Annot);
+                        currentParam = ParamConverter.AnnotConverter(viewerTool.GetCPDFViewer().GetDocument(), e.annotData.Annot);
                         if (e.annotData.AnnotType != C_ANNOTATION_TYPE.C_ANNOTATION_SOUND)
                         {
-                    e.annotData.Annot.UpdateAp();
+                            e.annotData.Annot.UpdateAp();
                         }
-                    break;
-            }
+                        break;
+                    }
             }
 
             annotHistory.PreviousParam = previousParam;
@@ -506,6 +539,8 @@ namespace ComPDFKit.Tool
                     groupHistory.Histories.Add(pDFEditHistory);
                 }
             }
+            //Add end edit
+            cPDFEditPage.EndEdit();
             viewerTool.GetCPDFViewer().UndoManager.AddHistory(groupHistory);
 
             viewerTool.GetCPDFViewer().UpdateRenderFrame();
@@ -735,7 +770,7 @@ namespace ComPDFKit.Tool
             viewerTool.DrawEndSelectedMultiRect();
             viewerTool.DrawEndPageSelectedRect();
             if (currentToolType != ToolType.SelectedPage &&
-                viewerTool.IsCanSave()&&
+                viewerTool.IsCanSave() &&
                 cPDFAnnotation?.Type != C_ANNOTATION_TYPE.C_ANNOTATION_FREETEXT)
             {
                 viewerTool.PDFViewer.EnableZoom(true);
@@ -748,9 +783,9 @@ namespace ComPDFKit.Tool
             {
                 viewerTool.PDFViewer.Cursor = viewerTool.Cursor = Cursors.IBeam;
             }
-            else if(currentToolType == ToolType.ContentEdit)
+            else if (currentToolType == ToolType.ContentEdit)
             {
-                if(createContentEditType == CPDFEditType.EditText)
+                if (createContentEditType == CPDFEditType.EditText)
                     viewerTool.PDFViewer.Cursor = viewerTool.Cursor = Cursors.IBeam;
                 else
                     viewerTool.PDFViewer.Cursor = viewerTool.Cursor = viewerTool.DrawMoveTest(viewerTool.GetLastSelectedRect());
@@ -759,7 +794,7 @@ namespace ComPDFKit.Tool
             {
                 viewerTool.PDFViewer.Cursor = viewerTool.Cursor = Cursors.Arrow;
             }
-            
+
             if (currentToolType == ToolType.Customize)
             {
                 viewerTool.CleanCustomizeTool();
@@ -823,7 +858,16 @@ namespace ComPDFKit.Tool
                     {
                         if (viewerTool.GetLastSelectedRect() != null)
                         {
-                            viewerTool.DrawEndTextEdit(viewerTool.GetLastSelectedRect());
+                            //Crop Save Processing
+                            if (!viewerTool.GetIsCropMode())
+                            {
+                                viewerTool.DrawEndTextEdit(viewerTool.GetLastSelectedRect());
+                            }
+                            else
+                            {
+                                //Originally saved cropping logic
+                            }
+
                             editSelected = false;
                         }
                         else
@@ -872,6 +916,10 @@ namespace ComPDFKit.Tool
                             }
                             else
                             {
+                                //Draw a box to select multiple boxes
+                                Rect rectFrameSelect = viewerTool.DrawEndFrameSelect();
+                                viewerTool.FrameSelectAddRect(rectFrameSelect);
+
                                 e.IsCreate = true;
                             }
                         }
@@ -894,6 +942,25 @@ namespace ComPDFKit.Tool
             }
         }
 
+        /// <summary>
+        /// Create cropping logic
+        /// </summary>
+        public void CropSelectRect()
+        {
+            if (viewerTool.GetLastSelectedRect() != null)
+            {
+                if (viewerTool.GetIsCropMode())
+                {
+                    viewerTool.DrawEndTextEdit(viewerTool.GetLastSelectedRect());
+                }
+            }
+            viewerTool.DrawEndSelectText();
+            if (viewerTool.IsCanSave())
+            {
+                cPDFAnnotation = null;
+            }
+        }
+
         private void SaveCurrentAnnot()
         {
             viewerTool.SetIsCanSave(true);
@@ -1025,7 +1092,7 @@ namespace ComPDFKit.Tool
                         e.IsCreate = true;
                         e.annotType = C_ANNOTATION_TYPE.C_ANNOTATION_INK;
                         e.Data = GetAnnotExpandObject(annotation);
-                        if (e.mouseButtonEventArgs!=null)
+                        if (e.mouseButtonEventArgs != null)
                         {
                             MouseLeftButtonUpHandler?.Invoke(this, e);
                         }
@@ -1172,7 +1239,7 @@ namespace ComPDFKit.Tool
                                     }
                                 }
 
-                                if(createAnnotType == C_ANNOTATION_TYPE.C_ANNOTATION_REDACT && textSelectInfo.PageSelectPointList.Count ==0)
+                                if (createAnnotType == C_ANNOTATION_TYPE.C_ANNOTATION_REDACT && textSelectInfo.PageSelectPointList.Count == 0)
                                 {
                                     viewerTool.GetCPDFViewer().UpdateAnnotFrame();
                                 }
@@ -1684,7 +1751,7 @@ namespace ComPDFKit.Tool
                     if (currentToolType == ToolType.CreateAnnot)
                     {
                         if (!viewerTool.PDFViewer.GetIsShowStampMouse())
-                        { 
+                        {
                             // Annotation drawing only occurs if the mouse is not set to stamp/data application mode.// Annotation drawing only occurs if the mouse is not set to stamp/data application mode.
                             viewerTool.MoveDrawAnnot();
                         }
@@ -1744,12 +1811,14 @@ namespace ComPDFKit.Tool
                 if (createContentEditType != CPDFEditType.EditImage)
                 {
                     Cursor cursor = Cursors.Arrow;
+                    MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(viewerTool.PDFViewer.GetViewForTag(viewerTool.multiSelectedRectViewTag));
+
                     if (viewerTool.GetLastSelectedRect() != null)
                     {
                         if (editSelected)
                         {
                             viewerTool.DrawMoveTextEdit(viewerTool.GetLastSelectedRect(), clickEditSelected);
-                            if(clickEditSelected)
+                            if (clickEditSelected)
                                 cursor = Cursors.IBeam;
                             else
                                 cursor = viewerTool.DrawMoveTest(viewerTool.GetLastSelectedRect());
@@ -1761,8 +1830,16 @@ namespace ComPDFKit.Tool
                     }
                     else
                     {
-                        viewerTool.HideDrawSelectedMultiRect();
                         cursor = viewerTool.DrawMoveTest(viewerTool.GetLastSelectedRect());
+                        if (multiSelectedRect == null || multiSelectedRect.Children.Count == 0)
+                        {
+                            //Selection of mobile drawing logic
+                            if (e.mouseButtonEventArgs.LeftButton == MouseButtonState.Pressed)
+                            {
+                                viewerTool.DrawMoveFrameSelect();
+                            }
+                        }
+
                     }
 
                     if (cursor == Cursors.Arrow && createContentEditType == CPDFEditType.EditText)
@@ -1774,6 +1851,35 @@ namespace ComPDFKit.Tool
                 }
                 else
                 {
+                    Cursor cursor = Cursors.Arrow;
+                    MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(viewerTool.PDFViewer.GetViewForTag(viewerTool.multiSelectedRectViewTag));
+
+                    if (viewerTool.GetLastSelectedRect() != null)
+                    {
+                        if (editSelected)
+                        {
+                            viewerTool.DrawMoveTextEdit(viewerTool.GetLastSelectedRect(), clickEditSelected);
+                            if (clickEditSelected)
+                                cursor = Cursors.IBeam;
+                            else
+                                cursor = viewerTool.DrawMoveTest(viewerTool.GetLastSelectedRect());
+                        }
+                        else
+                        {
+                            cursor = viewerTool.DrawMoveTest(viewerTool.GetLastSelectedRect());
+                        }
+                    }
+                    else
+                    {
+                        cursor = viewerTool.DrawMoveTest(viewerTool.GetLastSelectedRect());
+                    }
+
+                    if (cursor == Cursors.Arrow && createContentEditType == CPDFEditType.EditText)
+                    {
+                        cursor = Cursors.IBeam;
+                    }
+                    viewerTool.Cursor = cursor;
+                    viewerTool.PDFViewer.Cursor = cursor;
                     //viewerTool.Cursor = Cursors.None;
                     //viewerTool.PDFViewer.Cursor = Cursors.None;
                 }
@@ -1874,7 +1980,7 @@ namespace ComPDFKit.Tool
                                     else
                                     {
                                         viewerTool.MultipleClick();
-                                        e.IsDrawing=true;
+                                        e.IsDrawing = true;
                                     }
                                     break;
                                 case 2:
@@ -1940,7 +2046,7 @@ namespace ComPDFKit.Tool
                         if (list.Contains(e.annotType))
                         {
                             viewerTool.CleanSelectedRect();
-                            if (!e.IsMersured||!list.Contains(createAnnotType))
+                            if (!e.IsMersured || !list.Contains(createAnnotType))
                             {
                                 viewerTool.StartDrawEditAnnot();
                             }
@@ -1978,6 +2084,15 @@ namespace ComPDFKit.Tool
                         clickEditSelected = true;
                         switch ((e.mouseButtonEventArgs as MouseButtonEventArgs).ClickCount)
                         {
+                            case 1:
+                                if (viewerTool.GetIsCropMode())
+                                {
+                                    //Preconditions for determining crop acquisition points
+                                    viewerTool.HandleTextSelectClick(viewerTool.GetLastSelectedRect(), true);
+                                    clickEditSelected = false;
+                                    MouseLeftButtonDownHandler?.Invoke(this, e);
+                                }
+                                break;
                             case 2:
                                 viewerTool.HandleTextSelectClick(viewerTool.GetLastSelectedRect(), true);
                                 clickEditSelected = false;
@@ -1996,8 +2111,19 @@ namespace ComPDFKit.Tool
                         viewerTool.HideDrawSelectedMultiRect();
                         if (viewerTool.GetLastSelectedRect() != null)
                         {
+                            viewerTool.DrawEndFrameSelect();
                             Point point = Mouse.GetPosition(viewerTool);
-                            PointControlType pointControlType = viewerTool.GetLastSelectedRect().GetHitControlIndex(point);
+                            PointControlType pointControlType = PointControlType.None;
+                            if (viewerTool.GetIsCropMode())
+                            {
+                                //Crop acquisition point judgment
+                                pointControlType = viewerTool.GetLastSelectedRect().GetHitCropControlIndex(point);
+                            }
+                            else
+                            {
+                                pointControlType = viewerTool.GetLastSelectedRect().GetHitControlIndex(point);
+                            }
+
                             EditAreaObject editAreaObject = viewerTool.GetEditAreaObjectForRect(viewerTool.GetLastSelectedRect());
                             if (pointControlType != PointControlType.None &&
                                 (editAreaObject.cPDFEditArea.Type == CPDFEditType.EditImage || pointControlType != PointControlType.Body))
@@ -2027,12 +2153,22 @@ namespace ComPDFKit.Tool
                                     default:
                                         break;
                                 }
-                                viewerTool.DrawStartTextEdit(viewerTool.GetLastSelectedRect());
+                                if (e.mouseButtonEventArgs.LeftButton == MouseButtonState.Pressed)
+                                {
+                                    viewerTool.DrawStartTextEdit(viewerTool.GetLastSelectedRect(), editAreaObject);
+                                }
+
                                 clickEditSelected = false;
                             }
                         }
                         else
                         {
+                            //If it is multiple selection, do not create a new input box
+                            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(viewerTool.PDFViewer.GetViewForTag(viewerTool.multiSelectedRectViewTag));
+                            if (multiSelectedRect != null && multiSelectedRect.Children.Count > 0)
+                            {
+                                return;
+                            }
                             Point point = Mouse.GetPosition(viewerTool);
                             viewerTool.GetCPDFViewer().GetPointPageInfo(point, out int index, out Rect paintRect, out Rect pageBound);
                             if (index < 0)
@@ -2044,6 +2180,14 @@ namespace ComPDFKit.Tool
                             {
                                 viewerTool.DrawTest(pageBound, index);
                             }
+                            if (createContentEditType == CPDFEditType.None)
+                            {
+                                viewerTool.DrawFrameSelect();
+                            }
+                            else
+                            {
+                                viewerTool.DrawEndFrameSelect();
+                            }
                             clickEditSelected = false;
                         }
                     }