using ComPDFKitViewer.AnnotEvent; using ComPDFKitViewer; using Prism.Mvvm; using Prism.Regions; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Media; using Prism.Commands; using System.Windows.Controls; using ComPDFKit.PDFAnnotation; using PDF_Office.Helper; using System.Diagnostics; using PDF_Office.Model; using PDF_Office.ViewModels.Tools; using Microsoft.Office.Interop.Excel; using Point = System.Windows.Point; namespace PDF_Office.ViewModels.FillAndSign.PropertyPanel { public class ShapFillPropertyViewModel : BindableBase, INavigationAware { public AnnotAttribEvent AnnotEvent { get; set; } private AnnotHandlerEventArgs Annot; private AnnotPropertyPanel PropertyPanel; private FillAndSignContentViewModel fillAndSignContentViewModel; private Geometry dataPath = null; public Geometry DataPath { get { return dataPath; } set { SetProperty(ref dataPath, value); } } private Brush selectColor = new SolidColorBrush(Colors.GreenYellow); public Brush SelectColor { get { return selectColor; } set { SetProperty(ref selectColor, value); fillAndSignContentViewModel.SelectColor = value; fillAndSignContentViewModel.SetStamp(); } } private double fillOpacity = 1; public double FillOpacity { get { return fillOpacity; } set { SetProperty(ref fillOpacity, value); fillAndSignContentViewModel.FillOpacity = value; fillAndSignContentViewModel.SetStamp( ); } } private bool _isMultiSelected = false; public bool IsMultiSelected { get { return _isMultiSelected; } set => SetProperty(ref _isMultiSelected, value); } private double lineWidth = 1; public double LineWidth { get { return lineWidth; } set { SetProperty(ref lineWidth, value); fillAndSignContentViewModel.LineWidth = value; fillAndSignContentViewModel.SetStamp(); } } public DelegateCommand SelectedThickCommand { get; set; } public DelegateCommand SelectedColorCommand { get; set; } //public DelegateCommand LineStyleCommand { get; set; } public DelegateCommand SharpsTypeCommand { get; set; } public DelegateCommand ThicknessChangedCommand { get; set; } public DelegateCommand SelectedOpacityValueCommand { get; set; } public ShapFillPropertyViewModel() { SelectedThickCommand = new DelegateCommand(SelectedThick_Command); SelectedColorCommand = new DelegateCommand(SelectedColor_Command); //LineStyleCommand = new DelegateCommand(LineStyle_Command); SharpsTypeCommand = new DelegateCommand(SharpsType_Command); ThicknessChangedCommand = new DelegateCommand(ThicknessChanged_Command); SelectedOpacityValueCommand = new DelegateCommand(SelectedOpacityValue); } private void SharpsType_Command(object obj) { if (obj != null) { var tag = (string)obj; SharpsType(tag,obj); } } private void SharpsType(string tag, object obj, bool isFromToolsBtn = false) { Dictionary changeData = new Dictionary(); switch (tag) { case "HookShape": var hookShape = new PathGeometry(); hookShape.AddGeometry(Geometry.Parse("M0.599976 7.0286L5.57775 11.8L13.4 1.40002")); DataPath = hookShape; changeData[AnnotArgsType.AnnotLine] = tag; break; case "ForkShape": var forkShape = new PathGeometry(); forkShape.AddGeometry(Geometry.Parse("M3.19995 3.20001L12.8 12.8 M12.8 3.20001L3.20005 12.8")); DataPath = forkShape; changeData[AnnotArgsType.AnnotLine] = tag; break; case "RectShape": { RectangleGeometry rectPath = new RectangleGeometry(); rectPath.Rect = new Rect(0, 5, 28, 22); DataPath = rectPath; changeData[AnnotArgsType.AnnotSquare] = tag; } break; case "LineShape": { var lineShape = new PathGeometry(); lineShape.AddGeometry(Geometry.Parse(" M0,10L20,10")); DataPath = lineShape; changeData[AnnotArgsType.AnnotLine] = tag; } break; case "DotShape": { EllipseGeometry circlePath = new EllipseGeometry(); circlePath.RadiusX = 2.4; circlePath.RadiusY = 2.4; circlePath.Center = new Point(2.4,2.4); DataPath = circlePath; changeData[AnnotArgsType.AnnotCircle] = tag; } break; } //if (isFromToolsBtn == false) // PropertyPanel.AnnotTypeChangedInvoke(this, changeData); } private void InitSharpsType(string tag) { switch (tag) { case "HookShape": var hookShape = new PathGeometry(); hookShape.AddGeometry(Geometry.Parse("M0.599976 7.0286L5.57775 11.8L13.4 1.40002")); DataPath = hookShape; break; case "ForkShape": var forkShape = new PathGeometry(); forkShape.AddGeometry(Geometry.Parse("M3.19995 3.20001L12.8 12.8 M12.8 3.20001L3.20005 12.8")); DataPath = forkShape; break; case "RectShape": { RectangleGeometry rectPath = new RectangleGeometry(); rectPath.Rect = new Rect(0, 5, 28, 22); DataPath = rectPath; } break; case "LineShape": { var lineShape = new PathGeometry(); lineShape.AddGeometry(Geometry.Parse(" M0,10L20,10")); DataPath = lineShape; } break; case "DotShape": { EllipseGeometry circlePath = new EllipseGeometry(); circlePath.RadiusX = 2.4; circlePath.RadiusY = 2.4; circlePath.Center = new Point(2.4, 2.4); DataPath = circlePath; } break; } //if (isFromToolsBtn == false) // PropertyPanel.AnnotTypeChangedInvoke(this, changeData); } private void SelectedThick_Command(object obj) { if (obj is double) { var tran = (double)obj; //BorderOpacity = tran; SelectColor.Opacity = tran; //AnnotEvent?.UpdateAttrib(AnnotAttrib.Transparency, tran); //AnnotEvent?.UpdateAnnot(); } } private void ThicknessChanged_Command(object obj) { if (obj != null) { var item = (ComboBoxItem)obj; var content = (string)item.Content; if (content != null) { var intData = int.Parse(content); LineWidth = intData; } } } private void SelectedColor_Command(object obj) { if (obj != null) { var colorValue = (Color)obj; if (colorValue != null) { SelectColor = new SolidColorBrush(colorValue); SelectColor.Opacity = FillOpacity; Dictionary changeData = new Dictionary(); changeData[AnnotArgsType.AnnotFreehand] = obj; //PropertyPanel.DataChangedInvoke(this, changeData); } } } private void SelectedOpacityValue(object obj) { if (obj != null) { FillOpacity = (double)obj; SelectColor.Opacity = FillOpacity; //AnnotEvent?.UpdateAttrib(AnnotAttrib.Transparency, FillOpacity); //AnnotEvent?.UpdateAnnot(); Dictionary changeData = new Dictionary(); changeData[AnnotArgsType.AnnotFreehand] = FillOpacity; //PropertyPanel.DataChangedInvoke(this, changeData); } } public bool IsNavigationTarget(NavigationContext navigationContext) { return true; } public void OnNavigatedFrom(NavigationContext navigationContext) { } public void OnNavigatedTo(NavigationContext navigationContext) { string shape = ""; navigationContext.Parameters.TryGetValue(ParameterNames.PropertyPanelContentViewModel, out PropertyPanel); navigationContext.Parameters.TryGetValue("FillAndSignContentViewModel", out fillAndSignContentViewModel); navigationContext.Parameters.TryGetValue("Shape", out shape); InitSharpsType(shape); if (PropertyPanel != null) { AnnotEvent = PropertyPanel.AnnotEvent; Annot = PropertyPanel.annot; var stampAnnotArgs = Annot as StampAnnotArgs; if (PropertyPanel.annotlists != null && PropertyPanel.annotlists.Count > 1) { IsMultiSelected = true; } else { IsMultiSelected = false; } if (IsMultiSelected) { } else { GetAnnotProperty(); } } } private void GetAnnotProperty() { if (Annot is StickyAnnotArgs) { var annot = Annot as StickyAnnotArgs; if (annot != null) { SelectColor = new SolidColorBrush(annot.Color); FillOpacity = annot.Transparency; } } } } }