using ComPDFKit.Import; using ComPDFKit.PDFAnnotation; using ComPDFKit.PDFAnnotation.Form; using ComPDFKit.PDFDocument; using ComPDFKit.PDFPage; using ComPDFKit.Tool.DrawTool; using ComPDFKitViewer.BaseObject; using ComPDFKitViewer.Helper; using ComPDFKitViewer.Layer; using ComPDFKitViewer.Widget; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Input; namespace ComPDFKit.Tool { public partial class CPDFViewerTool { BaseWidget cacheMoveWidget; int createWidgetTag = -1; public BaseWidget GetCacheHitTestWidget() { return cacheMoveWidget; } private void InsertWidgetView() { CreateWidgetTool createAnnotTool = new CreateWidgetTool(); int annotViewindex = PDFViewer.GetMaxViewIndex(); PDFViewer.InsertView(annotViewindex, createAnnotTool); createWidgetTag = createAnnotTool.GetResTag(); } protected bool AnnotWidgetHitTest() { BaseAnnot baseAnnot = PDFViewer.AnnotHitTest(); if (baseAnnot != null) { if ((baseAnnot as BaseWidget) != null) { cacheMoveWidget = baseAnnot as BaseWidget; return true; } } cacheMoveWidget = null; return false; } public CPDFAnnotation StartDrawWidget(C_WIDGET_TYPE WidgetType) { Point point = Mouse.GetPosition(this); BaseLayer baseLayer = PDFViewer.GetViewForTag(createWidgetTag); PDFViewer.GetPointPageInfo(point, out int index, out Rect paintRect, out Rect pageBound); if (index < 0) { return null; } CPDFDocument cPDFDocument = PDFViewer.GetDocument(); CPDFPage cPDFPage = cPDFDocument.PageAtIndex(index); Point cropPoint = new Point(); if (PDFViewer.GetIsCrop()) { CRect cRect = cPDFPage.GetCropBounds(); cropPoint.X = DpiHelper.PDFNumToStandardNum(cRect.left); cropPoint.Y = DpiHelper.PDFNumToStandardNum(cRect.top); } return (baseLayer as CreateWidgetTool).StartDraw(point, cropPoint, cPDFPage, paintRect, pageBound, WidgetType); } public void SetDrawWidgetType(C_WIDGET_TYPE WidgetType) { Point point = Mouse.GetPosition(this); BaseLayer baseLayer = PDFViewer.GetViewForTag(createWidgetTag); CPDFDocument cPDFDocument = PDFViewer.GetDocument(); (baseLayer as CreateWidgetTool).SetDrawType(WidgetType); } /// /// Widget move in create mode /// /// /// Identify whether the default size style of the widget form is displayed /// public void MoveDrawWidget(bool Hide) { Point point = Mouse.GetPosition(this); BaseLayer baseLayer = PDFViewer.GetViewForTag(createWidgetTag); PDFViewer.GetPointPageInfo(point, out int index, out Rect paintRect, out Rect pageBound); (baseLayer as CreateWidgetTool).MoveDraw(point, PDFViewer.GetZoom(), PDFViewer.ActualWidth, PDFViewer.ActualHeight, Hide, paintRect); } public Rect EndDrawWidget() { Point point = Mouse.GetPosition(this); BaseLayer baseLayer = PDFViewer.GetViewForTag(createWidgetTag); return (baseLayer as CreateWidgetTool).EndDraw(); } public void ClearDrawWidget() { Point point = Mouse.GetPosition(this); BaseLayer baseLayer = PDFViewer.GetViewForTag(createWidgetTag); if (baseLayer is CreateWidgetTool) { (baseLayer as CreateWidgetTool).ClearDraw(); (baseLayer as CreateWidgetTool).SetDrawType(C_WIDGET_TYPE.WIDGET_NONE); } } public void ReDrawWidget() { Point point = Mouse.GetPosition(this); BaseLayer baseLayer = PDFViewer.GetViewForTag(createWidgetTag); if (baseLayer is CreateWidgetTool) { (baseLayer as CreateWidgetTool).ReDrawWidget(PDFViewer.GetZoom()); } } } }