123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- using ComPDFKit.PDFAnnotation;
- using ComPDFKit.Tool;
- using ComPDFKit.Tool.Help;
- using ComPDFKit.Controls.Data;
- using ComPDFKit.Controls.PDFControl;
- using System;
- using System.Linq;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Media;
- using ComPDFKit.Tool.UndoManger;
- using ComPDFKitViewer.Helper;
- namespace ComPDFKit.Controls.PDFControlUI
- {
- public partial class CPDFFreehandUI : UserControl
- {
- public event EventHandler<CPDFAnnotationData> PropertyChanged;
- public event EventHandler<bool> EraseClickHandler;
- public event EventHandler<double> EraseChangeHandler;
- private InkParam inkParam = null;
- private CPDFInkAnnotation cPDFAnnotation = null;
- private PDFViewControl pdfViewerControl = null;
- public CPDFFreehandUI()
- {
- InitializeComponent();
- ColorPickerControl.ColorChanged -= ColorPickerControl_ColorChanged;
- CPDFOpacityControl.OpacityChanged -= CPDFOpacityControl_OpacityChanged;
- CPDFThicknessControl.ThicknessChanged -= CPDFThicknessControl_ThicknessChanged;
- ColorPickerControl.ColorChanged += ColorPickerControl_ColorChanged;
- CPDFOpacityControl.OpacityChanged += CPDFOpacityControl_OpacityChanged;
- CPDFThicknessControl.ThicknessChanged += CPDFThicknessControl_ThicknessChanged;
- CPDFAnnotationPreviewerControl.DrawFreehandPreview(GetFreehandData());
- EraseThickness.ThicknessChanged -= EraseThickness_ThicknessChanged;
- EraseThickness.ThicknessChanged += EraseThickness_ThicknessChanged;
- }
- private void EraseThickness_ThicknessChanged(object sender, EventArgs e)
- {
- EraseChangeHandler?.Invoke(this, EraseThickness.Thickness);
- EraseCircle.Width = EraseThickness.Thickness * 6;
- EraseCircle.Height = EraseThickness.Thickness * 6;
- }
- private void CPDFOpacityControl_OpacityChanged(object sender, EventArgs e)
- {
- if (cPDFAnnotation == null)
- {
- PropertyChanged?.Invoke(this, GetFreehandData());
- }
- else
- {
- double transparent = CPDFOpacityControl.OpacityValue / 100.0;
- if(transparent<=1)
- {
- transparent = transparent * 255;
- }
- if (inkParam.Transparency != (byte)transparent && pdfViewerControl != null)
- {
- InkAnnotHistory history = new InkAnnotHistory();
- history.PDFDoc = pdfViewerControl.GetCPDFViewer().GetDocument();
- history.Action = HistoryAction.Update;
- history.PreviousParam = ParamConverter.CPDFDataConverterToAnnotParam(history.PDFDoc, cPDFAnnotation.Page.PageIndex, cPDFAnnotation);
-
- cPDFAnnotation.SetTransparency((byte)transparent);
- cPDFAnnotation.UpdateAp();
- pdfViewerControl.UpdateAnnotFrame();
- history.CurrentParam = ParamConverter.CPDFDataConverterToAnnotParam(history.PDFDoc, cPDFAnnotation.Page.PageIndex, cPDFAnnotation);
- pdfViewerControl.GetCPDFViewer().UndoManager.AddHistory(history);
- }
- }
- CPDFAnnotationPreviewerControl.DrawFreehandPreview(GetFreehandData());
- }
- private void CPDFThicknessControl_ThicknessChanged(object sender, EventArgs e)
- {
- if (cPDFAnnotation == null)
- {
- PropertyChanged?.Invoke(this, GetFreehandData());
- }
- else
- {
- if (Math.Abs(inkParam.Thickness - CPDFThicknessControl.Thickness) > 0.01 && pdfViewerControl != null)
- {
- InkAnnotHistory history = new InkAnnotHistory();
- history.PDFDoc = pdfViewerControl.GetCPDFViewer().GetDocument();
- history.Action = HistoryAction.Update;
- history.PreviousParam = ParamConverter.CPDFDataConverterToAnnotParam(history.PDFDoc, cPDFAnnotation.Page.PageIndex, cPDFAnnotation);
- cPDFAnnotation.SetThickness(CPDFThicknessControl.Thickness);
- cPDFAnnotation.UpdateAp();
- pdfViewerControl.UpdateAnnotFrame();
-
- history.CurrentParam = ParamConverter.CPDFDataConverterToAnnotParam(history.PDFDoc, cPDFAnnotation.Page.PageIndex, cPDFAnnotation);
- pdfViewerControl.GetCPDFViewer().UndoManager.AddHistory(history);
- }
- }
- CPDFAnnotationPreviewerControl.DrawFreehandPreview(GetFreehandData());
- }
- private void ColorPickerControl_ColorChanged(object sender, EventArgs e)
- {
- if (cPDFAnnotation == null)
- {
- PropertyChanged?.Invoke(this, GetFreehandData());
- }
- else
- {
- byte[] color = new byte[3];
- color[0] = ((SolidColorBrush)ColorPickerControl.Brush).Color.R;
- color[1] = ((SolidColorBrush)ColorPickerControl.Brush).Color.G;
- color[2] = ((SolidColorBrush)ColorPickerControl.Brush).Color.B;
-
- if (!cPDFAnnotation.InkColor.SequenceEqual(color) && pdfViewerControl != null)
- {
- InkAnnotHistory history = new InkAnnotHistory();
- history.PDFDoc = pdfViewerControl.GetCPDFViewer().GetDocument();
- history.Action = HistoryAction.Update;
- history.PreviousParam = ParamConverter.CPDFDataConverterToAnnotParam(history.PDFDoc, cPDFAnnotation.Page.PageIndex, cPDFAnnotation);
-
- cPDFAnnotation.SetInkColor(color);
- cPDFAnnotation.UpdateAp();
- pdfViewerControl.UpdateAnnotFrame();
-
- history.CurrentParam = ParamConverter.CPDFDataConverterToAnnotParam(history.PDFDoc, cPDFAnnotation.Page.PageIndex, cPDFAnnotation);
- pdfViewerControl.GetCPDFViewer().UndoManager.AddHistory(history);
- }
- }
- CPDFAnnotationPreviewerControl.DrawFreehandPreview(GetFreehandData());
- }
- private void NoteTextBox_TextChanged(object sender, TextChangedEventArgs e)
- {
- if (cPDFAnnotation == null)
- {
- PropertyChanged?.Invoke(this, GetFreehandData());
- }
- else
- {
- if (inkParam.Content != NoteTextBox.Text && pdfViewerControl != null)
- {
- InkAnnotHistory history = new InkAnnotHistory();
- history.PDFDoc = pdfViewerControl.GetCPDFViewer().GetDocument();
- history.Action = HistoryAction.Update;
- history.PreviousParam = ParamConverter.CPDFDataConverterToAnnotParam(history.PDFDoc, cPDFAnnotation.Page.PageIndex, cPDFAnnotation);
-
- cPDFAnnotation.SetContent(NoteTextBox.Text);
- pdfViewerControl.UpdateAnnotFrame();
-
- history.CurrentParam = ParamConverter.CPDFDataConverterToAnnotParam(history.PDFDoc, cPDFAnnotation.Page.PageIndex, cPDFAnnotation);
- pdfViewerControl.GetCPDFViewer().UndoManager.AddHistory(history);
- }
- }
- }
- public void SetPresentAnnotAttrib(AnnotParam annotParam, CPDFAnnotation annotation, PDFViewControl cPDFViewer)
- {
- inkParam = (InkParam)annotParam;
- cPDFAnnotation = (CPDFInkAnnotation)annotation;
- pdfViewerControl = cPDFViewer;
- if (inkParam==null)
- {
- return;
- }
- ColorPickerControl.Brush = new SolidColorBrush(ParamConverter.ConverterByteForColor(inkParam.InkColor));
- CPDFOpacityControl.OpacityValue = (int)(inkParam.Transparency / 255D * 100);
- CPDFThicknessControl.Thickness = Convert.ToInt16(inkParam.Thickness);
- ColorPickerControl.SetCheckedForColor(ParamConverter.ConverterByteForColor(inkParam.InkColor));
- NoteTextBox.Text = inkParam.Content;
- }
- public CPDFFreehandData GetFreehandData()
- {
- CPDFFreehandData pdfFreehandData = new CPDFFreehandData();
- pdfFreehandData.AnnotationType = CPDFAnnotationType.Freehand;
- pdfFreehandData.BorderColor = ((SolidColorBrush)ColorPickerControl.Brush).Color;
- pdfFreehandData.Opacity = CPDFOpacityControl.OpacityValue / 100.0;
- pdfFreehandData.Thickness = CPDFThicknessControl.Thickness;
- pdfFreehandData.Note = NoteTextBox.Text;
- return pdfFreehandData;
- }
- public void SetEraseCheck(bool isCheck)
- {
- if(isCheck)
- {
- FreehandBtn.IsChecked = false;
- EraseBtn.IsChecked = true;
- FreehandPanel.Visibility = Visibility.Collapsed;
- ErasePanel.Visibility = Visibility.Visible;
- CPDFAnnotationPreviewerControl.Visibility = Visibility.Collapsed;
- EraseCirclePanel.Visibility = Visibility.Visible;
- }
- else
- {
- FreehandBtn.IsChecked = true;
- EraseBtn.IsChecked = false;
- FreehandPanel.Visibility = Visibility.Visible;
- ErasePanel.Visibility = Visibility.Collapsed;
- CPDFAnnotationPreviewerControl.Visibility = Visibility.Visible;
- EraseCirclePanel.Visibility=Visibility.Collapsed;
- }
- }
- internal void ClearAnnotAttribEvent()
- {
- cPDFAnnotation = null;
- }
- internal int GetEraseThickness()
- {
- return EraseThickness.Thickness;
- }
- private void FreehandBtn_Click(object sender, RoutedEventArgs e)
- {
- SetEraseCheck(false);
- EraseClickHandler?.Invoke(this, false);
- }
- private void EraseBtn_Click(object sender, RoutedEventArgs e)
- {
- SetEraseCheck(true);
- EraseClickHandler?.Invoke(this, true);
- }
- }
- }
|