using ComPDFKit.Tool.DrawTool; using ComPDFKitViewer.Layer; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Input; using System.Windows; using ComPDFKit.PDFAnnotation; using ComPDFKit.PDFPage; using ComPDFKit.PDFDocument; using ComPDFKitViewer.BaseObject; using ComPDFKit.PDFAnnotation.Form; using System.Windows.Media; namespace ComPDFKit.Tool { public partial class CPDFViewerTool { /// ///Identity whether to draw the custom tool /// protected bool isDrawAnnot { get; set; } public event EventHandler> DeleteChanged; int customizeToolViewTag = -1; private bool UnCheckCustomizeToolViewerModel() { if (currentModel == ToolType.Customize) { return false; } return true; } private void InsertCustomizeToolView() { CreateCustomizeTool createAnnotTool = new CreateCustomizeTool(); createAnnotTool.PDFViewer = PDFViewer; int customizeToolViewindex = PDFViewer.GetMaxViewIndex(); createAnnotTool.DeleteChanged += CreateAnnotTool_DeleteChanged; PDFViewer.InsertView(customizeToolViewindex, createAnnotTool); customizeToolViewTag= createAnnotTool.GetResTag(); } private void CreateAnnotTool_DeleteChanged(object sender, List e) { DeleteChanged?.Invoke(this, e); } /// /// Begin to draw the custom tool /// public void DrawStartCustomizeTool(CustomizeToolType ToolType) { if (UnCheckCustomizeToolViewerModel()) { return; } Point point = Mouse.GetPosition(this); BaseLayer baseLayer = PDFViewer.GetViewForTag(customizeToolViewTag); PDFViewer.GetPointPageInfo(point, out int index, out Rect paintRect, out Rect pageBound); if (index < 0) { return; } CPDFDocument cPDFDocument = PDFViewer.GetDocument(); CPDFPage cPDFPage = cPDFDocument.PageAtIndex(index); BaseLayer layer = PDFViewer.GetViewForTag(PDFViewer.GetAnnotViewTag()); (baseLayer as CreateCustomizeTool).ErasePageIndex = -1; if (ToolType == CustomizeToolType.kErase) { (baseLayer as CreateCustomizeTool).SetAnnotLayer(layer as AnnotLayer); (baseLayer as CreateCustomizeTool).ErasePageIndex = index; } (baseLayer as CreateCustomizeTool).StartDraw(point, cPDFPage, paintRect, pageBound, ToolType); } /// /// Custom tool move call /// public void DrawMoveCustomizeTool() { if (UnCheckCustomizeToolViewerModel()) { return; } Point point = Mouse.GetPosition(this); BaseLayer baseLayer = PDFViewer.GetViewForTag(customizeToolViewTag); (baseLayer as CreateCustomizeTool).MoveDraw(point, PDFViewer.GetZoom()); } /// /// Custom tool end call /// public void DrawEndCustomizeTool() { if (UnCheckCustomizeToolViewerModel()) { return; } Point point = Mouse.GetPosition(this); BaseLayer baseLayer = PDFViewer.GetViewForTag(customizeToolViewTag); (baseLayer as CreateCustomizeTool).EndDraw(); return; } /// /// Clear the custom tool /// public void CleanCustomizeTool() { BaseLayer baseLayer = PDFViewer.GetViewForTag(customizeToolViewTag); (baseLayer as CreateCustomizeTool).ClearDraw(); } /// /// Set the thickness of the custom tool /// public void SetEraseZoom(double eraseZoom) { BaseLayer baseLayer = PDFViewer.GetViewForTag(customizeToolViewTag); (baseLayer as CreateCustomizeTool)?.SetEraseZoom(eraseZoom); } /// /// Clear the custom tool /// public void SetDefEraseThickness(double defEraseThickness) { BaseLayer baseLayer = PDFViewer.GetViewForTag(customizeToolViewTag); (baseLayer as CreateCustomizeTool)?.SetDefEraseThickness(defEraseThickness); } /// /// Clear the custom tool /// public void SetEraseBrush(SolidColorBrush drawBrush) { if(PDFViewer!=null) { BaseLayer baseLayer = PDFViewer.GetViewForTag(customizeToolViewTag); (baseLayer as CreateCustomizeTool)?.SetEraseBrush(drawBrush); } } } }