using ComPDFKit.PDFWatermark; using ComPDFKitViewer.PdfViewer; using PDF_Office.CustomControl; using PDF_Office.Helper; using PDF_Office.Model.EditTools.Watermark; using PDF_Office.Model.PageEdit; using Prism.Commands; using Prism.Mvvm; using Prism.Regions; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; namespace PDF_Office.ViewModels.EditTools.Watermark { public class WatermarkCreateFileContentViewModel : BindableBase, INavigationAware { public WatermarkInfo WatermarkInfo = new WatermarkInfo(); public CPDFViewer currentViewer; private List _opacityList = new List(); public List OpacityList { get { return _opacityList; } set { SetProperty(ref _opacityList, value); } } private void InitOpacityList() { OpacityList.Clear(); for (int temp = 0; temp <= 100; temp += 10) { OpacityList.Add(temp.ToString() + " %"); } } private List _rotationList = new List(); public List RotationList { get { return _rotationList; } set { SetProperty(ref _rotationList, value); } } private void InitRotationList() { RotationList.Clear(); for (int temp = -45; temp <= 45; temp += 15) { RotationList.Add(temp.ToString()); } } private List _scaleList = new List(); public List ScaleList { get { return _scaleList; } set { SetProperty(ref _scaleList, value); } } private void InitScaleList() { ScaleList.Clear(); for (int temp = 0; temp <= 100; temp += 10) { ScaleList.Add(temp.ToString() + " %"); } } private List _isFrontList = new List(); public List IsFrontList { get { return _isFrontList; } set { SetProperty(ref _isFrontList, value); } } private void InitIsFrontList() { IsFrontList.Clear(); IsFrontList.Add("位于页面上方"); IsFrontList.Add("位于页面下方"); } private int _rotationValue = 0; public int RotationValue { get { return _rotationValue; } set { SetProperty(ref _rotationValue, value); WatermarkInfo.Rotation = (float)RotationValue; } } private int _opacityValue = 100; public int OpacityValue { get { return _opacityValue; } set { SetProperty(ref _opacityValue, value); WatermarkInfo.Opacity = (byte)((float)(OpacityValue / 100) * 225); } } private int _relativeScaleValue = 50; public int RelativeScaleValue { get { return _relativeScaleValue; } set { SetProperty(ref _relativeScaleValue, value); } } private string _vertOffsetValue = "0"; public string VertOffsetValue { get { return _vertOffsetValue; } set { SetProperty(ref _vertOffsetValue, value); WatermarkInfo.VertOffset = float.Parse(VertOffsetValue); } } private string _horizOffsetValue = "0"; public string HorizOffsetValue { get { return _horizOffsetValue; } set { SetProperty(ref _horizOffsetValue, value); WatermarkInfo.HorizOffset = float.Parse(HorizOffsetValue); } } private string _verticalSpacingValue = "6"; public string VerticalSpacingValue { get { return _verticalSpacingValue; } set { SetProperty(ref _verticalSpacingValue, value); WatermarkInfo.VerticalSpacing = float.Parse(VerticalSpacingValue); } } private string _horizontalSpacingValue = "6"; public string HorizontalSpacingValue { get { return _horizontalSpacingValue; } set { SetProperty(ref _horizontalSpacingValue, value); WatermarkInfo.HorizontalSpacing = float.Parse(HorizontalSpacingValue); } } public string PageRangeText{get;set;} = "0"; private int _pageRangeSelectIndex = 0; public int PageRangeSelectIndex { get { return _pageRangeSelectIndex; } set { SetProperty(ref _pageRangeSelectIndex, value); EditToolsHelper.GetPageRange(PageRangeSelectIndex, currentViewer.Document,ref WatermarkInfo.PageRange, PageRangeText); } } private int _isFrontSelectedIndex = 0; public int IsFrontSelectedIndex { get { return _isFrontSelectedIndex; } set { SetProperty(ref _isFrontSelectedIndex, value); SetIsFront(IsFrontSelectedIndex); } } private string _fileNameText = ""; public string FileNameText { get { return _fileNameText; } set { SetProperty(ref _fileNameText, value); } } private ObservableDictionary _getLocationFromNumber = new ObservableDictionary(); public ObservableDictionary GetLocationFromNumber { get { return _getLocationFromNumber; } set { _getLocationFromNumber = value; } } public DelegateCommand ChangeLocationCommand { get; set; } public DelegateCommand OpenFileCommand { get; set; } public WatermarkCreateFileContentViewModel() { ChangeLocationCommand = new DelegateCommand(ChangeLocation); OpenFileCommand = new DelegateCommand(OpenFile); InitList(); WatermarkInfo.WatermarkHorizalign = C_Watermark_Horizalign.WATERMARK_HORIZALIGN_CENTER; WatermarkInfo.WatermarkVertalign = C_Watermark_Vertalign.WATERMARK_VERTALIGN_CENTER; InitLocationButtonMatrix(); } private void SetIsFront(int Index) { if (Index == 0) { WatermarkInfo.IsFront = false; } if (Index == 1) { WatermarkInfo.IsFront = true; } } private void InitList() { InitOpacityList(); InitIsFrontList(); InitRotationList(); InitScaleList(); } private void InitLocationButtonMatrix() { GetLocationFromNumber.Clear(); for (var temp = 0; temp <= 22; temp++) { GetLocationFromNumber.Add(temp.ToString(), true); if (temp % 10 == 2) { temp += 7; } } int Num = (int)WatermarkInfo.WatermarkVertalign * 10 + (int)WatermarkInfo.WatermarkHorizalign; GetLocationFromNumber[Num.ToString()] = false; } public void ChangeLocation(object e) { string args = e as string; if (args != null) { WatermarkInfo.WatermarkVertalign = (C_Watermark_Vertalign)(int.Parse(args) / 10); WatermarkInfo.WatermarkHorizalign = (C_Watermark_Horizalign)(int.Parse(args) % 10); InitLocationButtonMatrix(); } } public void OpenFile(){ System.Windows.Forms.OpenFileDialog dlg = new System.Windows.Forms.OpenFileDialog(); dlg.Multiselect = false; dlg.Filter = "PDF|*.png;*.jpg;"; if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) { FileNameText = dlg.FileName; EditToolsHelper.ChooseFile(dlg.FileName, ref WatermarkInfo); } } public bool IsNavigationTarget(NavigationContext navigationContext) { return true; } public void OnNavigatedFrom(NavigationContext navigationContext) { } public void OnNavigatedTo(NavigationContext navigationContext) { } } }