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 列表选中赋值
}
}