123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- using ComPDFKit.PDFAnnotation;
- using ComPDFKit.Tool;
- using ComPDFKit.Controls.Common;
- using ComPDFKit.Controls.Data;
- using ComPDFKit.Controls.PDFControl;
- using System;
- using System.Linq;
- using System.Windows.Controls;
- using System.Windows.Media;
- using ComPDFKit.Controls.Helper;
- using ComPDFKit.Tool.Help;
- using ComPDFKit.Tool.UndoManger;
- using ComPDFKitViewer.Helper;
- namespace ComPDFKit.Controls.PDFControlUI
- {
- public partial class CPDFMarkupUI : UserControl
- {
- private CPDFAnnotationType currentAnnotationType;
- private AnnotParam annotParam;
- private CPDFMarkupAnnotation markupAnnot;
- private PDFViewControl viewControl;
- public event EventHandler<CPDFAnnotationData> PropertyChanged;
- public CPDFMarkupUI()
- {
- InitializeComponent();
- ColorPickerControl.ColorChanged -= ColorPickerControl_ColorChanged;
- CPDFOpacityControl.OpacityChanged -= CPDFOpacityControl_OpacityChanged;
- ColorPickerControl.ColorChanged += ColorPickerControl_ColorChanged;
- CPDFOpacityControl.OpacityChanged += CPDFOpacityControl_OpacityChanged;
- }
-
- private AnnotHistory GetAnnotHistory()
- {
- if (markupAnnot != null && markupAnnot.IsValid())
- {
- switch (markupAnnot.Type)
- {
- case C_ANNOTATION_TYPE.C_ANNOTATION_HIGHLIGHT:
- return new LineAnnotHistory();
- case C_ANNOTATION_TYPE.C_ANNOTATION_UNDERLINE:
- return new UnderlineAnnotHistory();
- case C_ANNOTATION_TYPE.C_ANNOTATION_STRIKEOUT:
- return new StrikeoutAnnotHistory();
- case C_ANNOTATION_TYPE.C_ANNOTATION_SQUIGGLY:
- return new SquigglyAnnotHistory();
- }
- }
- return new AnnotHistory();
- }
- private void CPDFOpacityControl_OpacityChanged(object sender, EventArgs e)
- {
- if (annotParam == null)
- {
- PropertyChanged?.Invoke(this, GetMarkupData());
- }
- else
- {
- if(markupAnnot!=null && markupAnnot.IsValid())
- {
- byte opacity = (byte)(CPDFOpacityControl.OpacityValue / 100.0 * 255);
- if (viewControl != null && viewControl.PDFViewTool != null)
- {
- AnnotHistory history = GetAnnotHistory();
- history.PDFDoc = viewControl.GetCPDFViewer().GetDocument();
- history.Action = HistoryAction.Update;
- history.PreviousParam = ParamConverter.CPDFDataConverterToAnnotParam(history.PDFDoc, markupAnnot.Page.PageIndex, markupAnnot);
-
- markupAnnot.SetTransparency(opacity);
- markupAnnot.UpdateAp();
- viewControl.UpdateAnnotFrame();
-
- history.CurrentParam = ParamConverter.CPDFDataConverterToAnnotParam(history.PDFDoc, markupAnnot.Page.PageIndex, markupAnnot);
- viewControl.GetCPDFViewer().UndoManager.AddHistory(history);
- }
- }
- }
- CPDFAnnotationPreviewerControl.DrawMarkUpPreview(GetMarkupData());
- }
- private void ColorPickerControl_ColorChanged(object sender, EventArgs e)
- {
- if (annotParam == null)
- {
- PropertyChanged?.Invoke(this, GetMarkupData());
- }
- else
- {
- SolidColorBrush colorBrush = ColorPickerControl.Brush as SolidColorBrush;
- if (markupAnnot != null && markupAnnot.IsValid() && colorBrush!=null)
- {
- byte[] color = new byte[3]
- {
- colorBrush.Color.R,
- colorBrush.Color.G,
- colorBrush.Color.B
- };
- if (viewControl != null && !markupAnnot.Color.SequenceEqual(color))
- {
- AnnotHistory history = GetAnnotHistory();
- history.PDFDoc = viewControl.GetCPDFViewer().GetDocument();
- history.Action = HistoryAction.Update;
- history.PreviousParam = ParamConverter.CPDFDataConverterToAnnotParam(history.PDFDoc, markupAnnot.Page.PageIndex, markupAnnot);
-
- markupAnnot.SetColor(color);
- markupAnnot.UpdateAp();
- viewControl.UpdateAnnotFrame();
-
- history.CurrentParam = ParamConverter.CPDFDataConverterToAnnotParam(history.PDFDoc, markupAnnot.Page.PageIndex, markupAnnot);
- viewControl.GetCPDFViewer().UndoManager.AddHistory(history);
- }
- }
- }
- CPDFAnnotationPreviewerControl.DrawMarkUpPreview(GetMarkupData());
- }
- private void NoteTextBox_TextChanged(object sender, TextChangedEventArgs e)
- {
- if (annotParam == null)
- {
- PropertyChanged?.Invoke(this, GetMarkupData());
- }
- else
- {
- if (markupAnnot != null && markupAnnot.IsValid())
- {
- if (viewControl != null && markupAnnot.GetContent() != NoteTextBox.Text)
- {
- AnnotHistory history = GetAnnotHistory();
- history.PDFDoc = viewControl.GetCPDFViewer().GetDocument();
- history.Action = HistoryAction.Update;
- history.PreviousParam = ParamConverter.CPDFDataConverterToAnnotParam(history.PDFDoc, markupAnnot.Page.PageIndex, markupAnnot);
-
- markupAnnot.SetContent(NoteTextBox.Text);
- viewControl.UpdateAnnotFrame();
-
- history.CurrentParam = ParamConverter.CPDFDataConverterToAnnotParam(history.PDFDoc, markupAnnot.Page.PageIndex, markupAnnot);
- viewControl.GetCPDFViewer().UndoManager.AddHistory(history);
- }
- }
- }
- }
- public CPDFMarkupData GetMarkupData()
- {
- CPDFMarkupData pdfMarkupData = new CPDFMarkupData();
- pdfMarkupData.AnnotationType = currentAnnotationType;
- pdfMarkupData.Color = ((SolidColorBrush)ColorPickerControl.Brush).Color;
- pdfMarkupData.Opacity = CPDFOpacityControl.OpacityValue / 100.0;
- pdfMarkupData.Note = NoteTextBox.Text;
- return pdfMarkupData;
- }
- public void SetPresentAnnotAttrib(AnnotParam param,CPDFMarkupAnnotation markup,PDFViewControl view)
- {
- this.annotParam = null;
- this.markupAnnot = null;
- this.viewControl = null;
- if(param!=null)
- {
- if(param is HighlightParam)
- {
- HighlightParam highlightParam = (HighlightParam)param;
- Color newColor = Color.FromRgb(
- highlightParam.HighlightColor[0],
- highlightParam.HighlightColor[1],
- highlightParam.HighlightColor[2]);
- ColorPickerControl.Brush = new SolidColorBrush(newColor);
- ColorPickerControl.SetCheckedForColor(newColor);
- }
-
- if(param is UnderlineParam)
- {
- UnderlineParam underlineParam = (UnderlineParam)param;
- Color newColor = Color.FromRgb(
- underlineParam.UnderlineColor[0],
- underlineParam.UnderlineColor[1],
- underlineParam.UnderlineColor[2]);
- ColorPickerControl.Brush = new SolidColorBrush(newColor);
- ColorPickerControl.SetCheckedForColor(newColor);
- }
- if (param is StrikeoutParam)
- {
- StrikeoutParam strikeoutParam = (StrikeoutParam)param;
- Color newColor = Color.FromRgb(
- strikeoutParam.StrikeoutColor[0],
- strikeoutParam.StrikeoutColor[1],
- strikeoutParam.StrikeoutColor[2]);
- ColorPickerControl.Brush = new SolidColorBrush(newColor);
- ColorPickerControl.SetCheckedForColor(newColor);
- }
- if(param is SquigglyParam)
- {
- SquigglyParam squigglyParam= (SquigglyParam)param;
- Color newColor = Color.FromRgb(
- squigglyParam.SquigglyColor[0],
- squigglyParam.SquigglyColor[1],
- squigglyParam.SquigglyColor[2]);
- ColorPickerControl.Brush = new SolidColorBrush(newColor);
- ColorPickerControl.SetCheckedForColor(newColor);
- }
- CPDFOpacityControl.OpacityValue = (int)(param.Transparency / 255D * 100);
- NoteTextBox.Text = param.Content;
- }
-
- this.annotParam = param;
- this.markupAnnot = markup;
- this.viewControl = view;
-
- CPDFAnnotationPreviewerControl.DrawMarkUpPreview(GetMarkupData());
- }
- public void InitWithAnnotationType(CPDFAnnotationType annotationType)
- {
- currentAnnotationType = annotationType;
- switch (annotationType)
- {
- case CPDFAnnotationType.Highlight:
- TitleTextBlock.Text = LanguageHelper.PropertyPanelManager.GetString("Title_Highlight");
- break;
- case CPDFAnnotationType.Underline:
- TitleTextBlock.Text = LanguageHelper.PropertyPanelManager.GetString("Title_Underline");
- break;
- case CPDFAnnotationType.Strikeout:
- TitleTextBlock.Text = LanguageHelper.PropertyPanelManager.GetString("Title_Strikeout");
- break;
- case CPDFAnnotationType.Squiggly:
- TitleTextBlock.Text = LanguageHelper.PropertyPanelManager.GetString("Title_Squiggly");
- break;
- default:
- throw new ArgumentException("Not Excepted Argument");
- }
- CPDFAnnotationPreviewerControl.DrawMarkUpPreview(GetMarkupData());
- }
- }
- }
|