using ComPDFKitViewer.AnnotEvent; using PDF_Office.Model; using PDF_Office.ViewModels.Tools; using Prism.Commands; 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.Controls.Primitives; using System.Windows.Media; namespace PDF_Office.ViewModels.PropertyPanel.AnnotPanel { public class FreehandAnnotPropertyViewModel : BindableBase, INavigationAware { private Brush selectColor = new SolidColorBrush(Colors.Transparent); public Brush SelectColor { get { return selectColor; } set { SetProperty(ref selectColor, value); SetAnnotProperty(); } } private double annotOpacity = 1; public double AnnotOpacity { get { return annotOpacity; } set { SetProperty(ref annotOpacity, value); } } private double thicknessLine = 1; public double ThicknessLine { get { return thicknessLine; } set { SetProperty(ref thicknessLine, value); SetAnnotProperty(); } } private FreehandAnnotArgs Annot; private AnnotPropertyPanel PropertyPanel; public DelegateCommand EraseCommand { get; set; } public DelegateCommand PenCommand { get; set; } public DelegateCommand SelectedColorChangedCommand { get; set; } public DelegateCommand SelectedValueChangedCommand { get; set; } public FreehandAnnotPropertyViewModel() { EraseCommand = new DelegateCommand(Erase_Command); PenCommand = new DelegateCommand(Pen_Command); SelectedColorChangedCommand = new DelegateCommand(SelectedColorChanged_Click); SelectedValueChangedCommand = new DelegateCommand(SelectedValueChanged_Command); } private void SelectedValueChanged_Command(object obj) { if (obj != null) { annotOpacity = (double)obj; SelectColor.Opacity = annotOpacity; SetAnnotProperty(); Dictionary changeData = new Dictionary(); changeData[AnnotArgsType.AnnotFreehand] = annotOpacity; PropertyPanel.DataChangedInvoke(this, changeData); } } private void SelectedColorChanged_Click(object obj) { if (obj != null) { var colorValue = (Color)obj; if (colorValue != null) { SelectColor = new SolidColorBrush(colorValue); SelectColor.Opacity = AnnotOpacity; Dictionary changeData = new Dictionary(); changeData[AnnotArgsType.AnnotFreehand] = obj; PropertyPanel.DataChangedInvoke(this, changeData); } } } private void Erase_Command(object obj) { var btn = obj as ToggleButton; if(btn.IsChecked == true) { Dictionary changeData = new Dictionary(); changeData[AnnotArgsType.AnnotErase] = btn; PropertyPanel.DataChangedInvoke(this, changeData); } } private void Pen_Command(object obj) { var btn = obj as ToggleButton; if (btn.IsChecked == true) { Dictionary changeData = new Dictionary(); changeData[AnnotArgsType.AnnotErase] = btn; PropertyPanel.DataChangedInvoke(this, changeData); } } public bool IsNavigationTarget(NavigationContext navigationContext) { return true; } public void OnNavigatedFrom(NavigationContext navigationContext) { } public void OnNavigatedTo(NavigationContext navigationContext) { navigationContext.Parameters.TryGetValue(ParameterNames.PropertyPanelContentViewModel, out PropertyPanel); if (PropertyPanel != null) { Annot = PropertyPanel.annot as FreehandAnnotArgs; } } private void SetAnnotProperty() { if (Annot != null) { if (Annot is FreehandAnnotArgs) { if (Annot.Transparency != AnnotOpacity) Annot.Transparency = AnnotOpacity; if (Annot.LineWidth != ThicknessLine) Annot.LineWidth = ThicknessLine; var c = (SelectColor as SolidColorBrush).Color; if (Annot.InkColor.A != c.A || Annot.InkColor.B != c.B || Annot.InkColor.G != c.G || Annot.InkColor.R != c.R) Annot.InkColor = (SelectColor as SolidColorBrush).Color; } } } } }