using ComPDFKitViewer.AnnotEvent; using PDF_Master.CustomControl.CompositeControl; using PDF_Master.Model.PropertyPanel.AnnotPanel; using PDFSettings; using Prism.Mvvm; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Media; namespace PDF_Master.Model.AnnotPanel { /// /// 注释-文本 /// 设置字体大小、字体内容排版、字体颜色、字体样式、字重 /// public class FontBoardVm : BindableBase { #region 变量 public List FontFamilyItems { get; protected set; } public List FontStyleItems { get; protected set; } public List FontSizeItems { get; protected set; } public List PresetFontItems { get; protected set; } public List PresetFontList = new List(); public FontBoardVm(bool isInitdata) { if (isInitdata) InitBaseVariable(); } #endregion 变量 #region 初始化下拉框或列表默认的数据 protected void InitBaseVariable() { InitBase_PresetFontStyles(); InitBase_FontFamilys(); InitBase_FontStyles(); InitBase_FontSize(); } private void InitBase_FontSize() { FontSizeItems = TextFont.GetFontSize(); } //预设字体样式 private void InitBase_PresetFontStyles() { PresetFontItems = new List(); PresetFontList = TextFont.GetCachePresetFontList(); foreach (var item in PresetFontList) { ComboDataItem itemData = new ComboDataItem(item.mTag, item.mTagContent); PresetFontItems.Add(itemData); } } //字体 private void InitBase_FontFamilys() { FontFamilyItems = TextFont.GetFamily(); } //字重 private void InitBase_FontStyles() { FontStyleItems = TextFont.GetFontStyle(); } #endregion 初始化下拉框或列表默认的数据 #region 属性 /// /// 预设样式 /// private ComboDataItem _currentPresetFont = new ComboDataItem("Custom", "Custom"); public ComboDataItem CurrentPresetFont { get { return _currentPresetFont; } set { SetProperty(ref _currentPresetFont, value); switch (value.ValueStr.ToString()) { case "Custom": PresetFontSelectedIndex = 0; break; case "H1": PresetFontSelectedIndex = 1; break; case "H2": PresetFontSelectedIndex = 2; break; case "H3": PresetFontSelectedIndex = 3; break; case "B1": PresetFontSelectedIndex = 4; break; case "B2": PresetFontSelectedIndex = 5; break; case "B3": PresetFontSelectedIndex = 6; break; default: PresetFontSelectedIndex = 0; break; } } } private int presetFontSelectedIndex; public int PresetFontSelectedIndex { get { return presetFontSelectedIndex; } set { SetProperty(ref presetFontSelectedIndex, value); } } #region 字体样式 //下拉框列表 private ComboDataItem _currentFontFamily = new ComboDataItem("Arial", "Arial"); public ComboDataItem CurrentFontFamily { get { return _currentFontFamily; } set { SetProperty(ref _currentFontFamily, value); switch (value.Content.ToString()) { case "Courier New": FontFamilySelectedIndex = 0; break; case "Arial": FontFamilySelectedIndex = 1; break; case "Times New Roman": FontFamilySelectedIndex = 2; break; case "Adobe Devanagari": FontFamilySelectedIndex = 3; break; } } } private int fontFamilySelectedIndex; public int FontFamilySelectedIndex { get { return fontFamilySelectedIndex; } set { SetProperty(ref fontFamilySelectedIndex, value); } } #endregion 字体样式 #region 字体大小 private int fontSizeSelectedIndex; public int FontSizeSelectedIndex { get { return fontSizeSelectedIndex; } set { SetProperty(ref fontSizeSelectedIndex, value); } } //下拉框列表:字体大小 private ComboDataItem _currentFontSize = new ComboDataItem(6); public ComboDataItem CurrentFontSize { get { return _currentFontSize; } set { SetProperty(ref _currentFontSize, value); switch (value.Value) { case 8: FontSizeSelectedIndex = 0; break; case 9: FontSizeSelectedIndex = 1; break; case 10: FontSizeSelectedIndex = 2; break; case 11: FontSizeSelectedIndex = 3; break; case 12: FontSizeSelectedIndex = 4; break; case 14: FontSizeSelectedIndex = 5; break; case 16: FontSizeSelectedIndex = 6; break; case 18: FontSizeSelectedIndex = 7; break; case 20: FontSizeSelectedIndex = 8; break; case 22: FontSizeSelectedIndex = 9; break; case 24: FontSizeSelectedIndex = 10; break; case 26: FontSizeSelectedIndex = 11; break; case 28: FontSizeSelectedIndex = 12; break; case 36: FontSizeSelectedIndex = 13; break; case 48: FontSizeSelectedIndex = 14; break; case 72: FontSizeSelectedIndex = 15; break; default: //FontSizeSelectedIndex = 0; //FontSizeSelectedIndex = -1; break; } } } #endregion 字体大小 //FontStyle & FontWeight private FontStyle _fontStyleItem; public FontStyle FontStyleItem { get { return _fontStyleItem; } set { SetProperty(ref _fontStyleItem, value); } } private FontWeight _fontWeight; public FontWeight FontWeightItem { get { return _fontWeight; } set { SetProperty(ref _fontWeight, value); } } private int fontStyleSelectedIndex; public int FontStyleSelectedIndex { get { return fontStyleSelectedIndex; } set { SetProperty(ref fontStyleSelectedIndex, value); } } private ComboDataItem _currrentFontWeightStyle = new ComboDataItem("Regular", "Regular"); public ComboDataItem CurrrentFontWeightStyle { get { return _currrentFontWeightStyle; } set { SetProperty(ref _currrentFontWeightStyle, value); switch (value.Content.ToString()) { case "Regular": FontStyleSelectedIndex = 0; break; case "Bold": FontStyleSelectedIndex = 1; break; case "Italic": FontStyleSelectedIndex = 2; break; case "Bold Italic": FontStyleSelectedIndex = 3; break; } } } public void UpdateFontWeight_Style() { switch (CurrrentFontWeightStyle.ValueStr) { case "Regular": FontStyleItem = FontStyles.Normal; FontWeightItem = FontWeights.Normal; break; case "Bold": FontStyleItem = FontStyles.Normal; FontWeightItem = FontWeights.Bold; break; case "Italic": FontStyleItem = FontStyles.Italic; FontWeightItem = FontWeights.Normal; break; case "Bold Italic": FontStyleItem = FontStyles.Italic; FontWeightItem = FontWeights.Bold; break; } } //文字内容对齐 private string _strtextAlign; public string StrTextAlign { get { return _strtextAlign; } set { SetProperty(ref _strtextAlign, value); } } //颜色 private Brush _fontColor = new SolidColorBrush(Colors.Black); public Brush FontColor { get { return _fontColor; } set { SetProperty(ref _fontColor, value); CurrentFontColor = _fontColor; } } private Brush _currentFontColor = new SolidColorBrush(Colors.Transparent); public Brush CurrentFontColor { get { return _currentFontColor; } set => SetProperty(ref _currentFontColor, value); } //外部UI引用,判断是否选中左对齐、居中对齐、右对齐,或都不选中 public string strAglinState { get; private set; } //VM赋值 public void SetStrAglinState(string str) { strAglinState = str; } #endregion 属性 #region 列表选中赋值 public void GetFontWeights_Style(FontStyle fontStyle, FontWeight fontWeights) { string strValue = ""; string strContent = ""; if (fontStyle == FontStyles.Normal) { if (fontWeights == FontWeights.Normal) { strValue = "Regular"; strContent = "Regular"; } else { strValue = "Bold"; strContent = "Bold"; } } else { if (fontWeights == FontWeights.Normal) { strValue = "Italic"; strContent = "Italic"; } else { strValue = "Bold Italic"; strContent = "Bold Italic"; } } CurrrentFontWeightStyle = new ComboDataItem(strValue, strContent); UpdateFontWeight_Style(); } public void GetCurrentFontSize(int size) { CurrentFontSize = new ComboDataItem(size); } public void GetCurrentFontFamily(string fontFamily, string uiStr) { if (fontFamily == "Helvetica") { fontFamily = "Arial"; uiStr = "Arial"; } if (fontFamily == "Times-Roman") { uiStr = "Times New Roman"; } if (fontFamily == "CourierNew") { uiStr = "Courier New"; } if (fontFamily == "AdobeDevanagari") { uiStr = "Adobe Devanagari"; } CurrentFontFamily = new ComboDataItem(fontFamily, uiStr); } public void GetCurrentPresetFont(string presetFont, string uiStr) { CurrentPresetFont = new ComboDataItem(presetFont, uiStr); } internal bool GetCurrentPresetFont(FreeTextAnnotArgs annot) { bool isExist = false; //List presetFontItems = TextFont.GetCachePresetFontList(); foreach (var item in PresetFontList) { if (annot.FontSize == item.mFontSize && annot.IsBold == (item.mFontWeight == FontWeights.Bold) && annot.IsItalic == (item.mFontStyle == FontStyles.Italic) && (annot.FontName == item.mFontFamily.Source || annot.FontName == "Arial" && item.mFontFamily.Source == "Helvetica") ) { if (item.mTag != "Custom") { CurrentPresetFont = new ComboDataItem(item.mTag, item.mTagContent); isExist = true; } break; } } return isExist; } #endregion 列表选中赋值 } }