|
@@ -6,6 +6,7 @@ using System.Collections.Generic;
|
|
|
using System.Windows;
|
|
|
using System.Windows.Controls;
|
|
|
using System.Windows.Input;
|
|
|
+using ComPDFKit.Tool.SettingParam;
|
|
|
|
|
|
|
|
|
namespace Compdfkit_Tools.Measure
|
|
@@ -340,47 +341,48 @@ namespace Compdfkit_Tools.Measure
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public void BindMeasureSetting()
|
|
|
+ public void BindMeasureSetting(CPDFMeasureInfo measureInfo)
|
|
|
{
|
|
|
- //if (UpdateArgsList != null && UpdateArgsList.Count>0)
|
|
|
- //{
|
|
|
- // return;
|
|
|
- //}
|
|
|
- //RulerBaseText.Text = MeasureSetting.RulerBase.ToString();
|
|
|
- //RulerTranslateText.Text = MeasureSetting.RulerTranslate.ToString();
|
|
|
- //RulerTranslateCombo.SelectedIndex = -1;
|
|
|
- //RulerBaseUnitCombo.SelectedIndex = -1;
|
|
|
- //PrecisionBox.SelectedIndex = -1;
|
|
|
- //if (MeasureSetting.RulerBaseUnit == "in")
|
|
|
- //{
|
|
|
- // RulerBaseUnitCombo.SelectedIndex = 0;
|
|
|
- //}
|
|
|
- //if (MeasureSetting.RulerBaseUnit == "cm")
|
|
|
- //{
|
|
|
- // RulerBaseUnitCombo.SelectedIndex = 1;
|
|
|
- //}
|
|
|
- //if (MeasureSetting.RulerBaseUnit == "mm")
|
|
|
- //{
|
|
|
- // RulerBaseUnitCombo.SelectedIndex = 2;
|
|
|
- //}
|
|
|
+ if(measureInfo == null)
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ RulerBaseText.Text = measureInfo.RulerBase.ToString();
|
|
|
+ RulerTranslateText.Text = measureInfo.RulerTranslate.ToString();
|
|
|
+ RulerTranslateCombo.SelectedIndex = -1;
|
|
|
+ RulerBaseUnitCombo.SelectedIndex = -1;
|
|
|
+ PrecisionBox.SelectedIndex = -1;
|
|
|
+ if (measureInfo.RulerBaseUnit == "in")
|
|
|
+ {
|
|
|
+ RulerBaseUnitCombo.SelectedIndex = 0;
|
|
|
+ }
|
|
|
+ if (measureInfo.RulerBaseUnit == "cm")
|
|
|
+ {
|
|
|
+ RulerBaseUnitCombo.SelectedIndex = 1;
|
|
|
+ }
|
|
|
+ if (measureInfo.RulerBaseUnit == "mm")
|
|
|
+ {
|
|
|
+ RulerBaseUnitCombo.SelectedIndex = 2;
|
|
|
+ }
|
|
|
|
|
|
- //for (int i = 0; i < RulerTranslateCombo.Items.Count; i++)
|
|
|
- //{
|
|
|
- // ComboBoxItem checkItem = RulerTranslateCombo.Items[i] as ComboBoxItem;
|
|
|
- // if (checkItem != null && checkItem.Content.ToString() == MeasureSetting.RulerTranslateUnit.ToString())
|
|
|
- // {
|
|
|
- // RulerTranslateCombo.SelectedIndex = i;
|
|
|
- // }
|
|
|
- //}
|
|
|
+ for (int i = 0; i < RulerTranslateCombo.Items.Count; i++)
|
|
|
+ {
|
|
|
+ ComboBoxItem checkItem = RulerTranslateCombo.Items[i] as ComboBoxItem;
|
|
|
+ if (checkItem != null && checkItem.Tag.ToString() == measureInfo.RulerTranslateUnit.ToString())
|
|
|
+ {
|
|
|
+ RulerTranslateCombo.SelectedIndex = i;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- //for (int i = 0; i < PrecisionBox.Items.Count; i++)
|
|
|
- //{
|
|
|
- // ComboBoxItem checkItem = PrecisionBox.Items[i] as ComboBoxItem;
|
|
|
- // if (checkItem != null && checkItem.Content.ToString() == ((decimal)MeasureSetting.Precision).ToString())
|
|
|
- // {
|
|
|
- // PrecisionBox.SelectedIndex = i;
|
|
|
- // }
|
|
|
- //}
|
|
|
+ string precision = GetMeasureShowPrecision(measureInfo.Precision).ToString();
|
|
|
+ for (int i = 0; i < PrecisionBox.Items.Count; i++)
|
|
|
+ {
|
|
|
+ ComboBoxItem checkItem = PrecisionBox.Items[i] as ComboBoxItem;
|
|
|
+ if (checkItem != null && checkItem.Content.ToString() == precision)
|
|
|
+ {
|
|
|
+ PrecisionBox.SelectedIndex = i;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
//public void BindMeasureSetting(MeasureEventArgs measureEventArgs)
|
|
|
//{
|
|
@@ -425,42 +427,139 @@ namespace Compdfkit_Tools.Measure
|
|
|
// }
|
|
|
//}
|
|
|
|
|
|
- //private void SaveMeasureSetting()
|
|
|
- //{
|
|
|
- // if (double.TryParse(RulerBaseText.Text, out double ruleBase))
|
|
|
- // {
|
|
|
- // MeasureSetting.RulerBase = ruleBase;
|
|
|
- // }
|
|
|
+ public void SaveMeasureSetting(CPDFAnnotation annot)
|
|
|
+ {
|
|
|
+ MeasureSetting measureSetting = new MeasureSetting();
|
|
|
+ if (double.TryParse(RulerBaseText.Text, out double ruleBase))
|
|
|
+ {
|
|
|
+ measureSetting.RulerBase = ruleBase;
|
|
|
+ }
|
|
|
|
|
|
- // if (RulerBaseUnitCombo.SelectedItem != null)
|
|
|
- // {
|
|
|
- // ComboBoxItem checkItem = RulerBaseUnitCombo.SelectedItem as ComboBoxItem;
|
|
|
- // MeasureSetting.RulerBaseUnit = checkItem.Content.ToString();
|
|
|
- // }
|
|
|
+ if (RulerBaseUnitCombo.SelectedItem != null)
|
|
|
+ {
|
|
|
+ ComboBoxItem checkItem = RulerBaseUnitCombo.SelectedItem as ComboBoxItem;
|
|
|
+ measureSetting.RulerBaseUnit = checkItem.Tag.ToString();
|
|
|
+ }
|
|
|
|
|
|
- // if (double.TryParse(RulerTranslateText.Text, out double ruletranBase))
|
|
|
- // {
|
|
|
- // MeasureSetting.RulerTranslate = ruletranBase;
|
|
|
- // }
|
|
|
+ if (double.TryParse(RulerTranslateText.Text, out double ruletranBase))
|
|
|
+ {
|
|
|
+ measureSetting.RulerTranslate = ruletranBase;
|
|
|
+ }
|
|
|
|
|
|
- // if (RulerTranslateCombo.SelectedItem != null)
|
|
|
- // {
|
|
|
- // ComboBoxItem checkItem = RulerTranslateCombo.SelectedItem as ComboBoxItem;
|
|
|
- // MeasureSetting.RulerTranslateUnit = checkItem.Content.ToString();
|
|
|
- // }
|
|
|
+ if (RulerTranslateCombo.SelectedItem != null)
|
|
|
+ {
|
|
|
+ ComboBoxItem checkItem = RulerTranslateCombo.SelectedItem as ComboBoxItem;
|
|
|
+ measureSetting.RulerTranslateUnit = checkItem.Tag.ToString();
|
|
|
+ }
|
|
|
|
|
|
- // if (PrecisionBox.SelectedValue != null)
|
|
|
- // {
|
|
|
- // ComboBoxItem checkItem = PrecisionBox.SelectedValue as ComboBoxItem;
|
|
|
- // if (double.TryParse(checkItem.Content.ToString(), out double precision))
|
|
|
- // {
|
|
|
- // MeasureSetting.Precision = precision;
|
|
|
- // }
|
|
|
- // }
|
|
|
+ if (PrecisionBox.SelectedValue != null)
|
|
|
+ {
|
|
|
+ ComboBoxItem checkItem = PrecisionBox.SelectedValue as ComboBoxItem;
|
|
|
+ if (double.TryParse(checkItem.Content.ToString(), out double precision))
|
|
|
+ {
|
|
|
+ measureSetting.Precision = precision;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- // MeasureSetting.IsShowArea = (bool)AreaCheckBox.IsChecked;
|
|
|
- // MeasureSetting.IsShowLength = (bool)LengthCheckBox.IsChecked;
|
|
|
- //}
|
|
|
+ measureSetting.IsShowArea = (bool)AreaCheckBox?.IsChecked;
|
|
|
+ measureSetting.IsShowLength = (bool)LengthCheckBox?.IsChecked;
|
|
|
+ UpdateAnnotWithSetting(annot, measureSetting);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void UpdateAnnotWithSetting(CPDFAnnotation annot, MeasureSetting measureSetting)
|
|
|
+ {
|
|
|
+ if(annot is CPDFLineAnnotation lineAnnot)
|
|
|
+ {
|
|
|
+ if (lineAnnot.IsMersured())
|
|
|
+ {
|
|
|
+ CPDFDistanceMeasure lineMeasure = lineAnnot.GetDistanceMeasure();
|
|
|
+ CPDFMeasureInfo info = lineMeasure.MeasureInfo;
|
|
|
+
|
|
|
+ info.RulerBaseUnit = measureSetting.RulerBaseUnit;
|
|
|
+ info.RulerBase = (float)measureSetting.RulerBase;
|
|
|
+ info.RulerTranslateUnit = measureSetting.RulerTranslateUnit;
|
|
|
+ info.RulerTranslate = (float)measureSetting.RulerTranslate;
|
|
|
+
|
|
|
+ info.Precision = GetMeasureSavePrecision(measureSetting.Precision);
|
|
|
+ lineAnnot.GetDistanceMeasure().SetMeasureInfo(info);
|
|
|
+ lineAnnot.GetDistanceMeasure().SetMeasureScale(info.RulerBase, info.RulerBaseUnit, info.RulerTranslate, info.RulerTranslateUnit);
|
|
|
+
|
|
|
+ lineAnnot.GetDistanceMeasure().UpdateAnnotMeasure();
|
|
|
+ lineAnnot.UpdateAp();
|
|
|
+ PdfViewControl.UpdateAnnotFrame();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if(annot is CPDFPolylineAnnotation polylineAnnot)
|
|
|
+ {
|
|
|
+ if (polylineAnnot.IsMersured())
|
|
|
+ {
|
|
|
+ CPDFPerimeterMeasure polylineMeasure = polylineAnnot.GetPerimeterMeasure();
|
|
|
+ CPDFMeasureInfo info = polylineMeasure.MeasureInfo;
|
|
|
+ info.RulerBaseUnit = measureSetting.RulerBaseUnit;
|
|
|
+ info.RulerBase = (float)measureSetting.RulerBase;
|
|
|
+ info.RulerTranslateUnit = measureSetting.RulerTranslateUnit;
|
|
|
+ info.RulerTranslate = (float)measureSetting.RulerTranslate;
|
|
|
+ info.Precision = GetMeasureSavePrecision(measureSetting.Precision);
|
|
|
+ polylineAnnot.GetPerimeterMeasure().SetMeasureInfo(info);
|
|
|
+ polylineAnnot.GetPerimeterMeasure().SetMeasureScale(info.RulerBase, info.RulerBaseUnit, info.RulerTranslate, info.RulerTranslateUnit);
|
|
|
+ polylineAnnot.GetPerimeterMeasure().UpdateAnnotMeasure();
|
|
|
+ polylineAnnot.UpdateAp();
|
|
|
+ PdfViewControl.UpdateAnnotFrame();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if(annot is CPDFPolygonAnnotation areaAnnot)
|
|
|
+ {
|
|
|
+ if (areaAnnot.IsMersured())
|
|
|
+ {
|
|
|
+ CPDFAreaMeasure areaMeasure = areaAnnot.GetAreaMeasure();
|
|
|
+ CPDFMeasureInfo info = areaMeasure.MeasureInfo;
|
|
|
+ info.RulerBaseUnit = measureSetting.RulerBaseUnit;
|
|
|
+ info.RulerBase = (float)measureSetting.RulerBase;
|
|
|
+ info.RulerTranslateUnit = measureSetting.RulerTranslateUnit;
|
|
|
+ info.RulerTranslate = (float)measureSetting.RulerTranslate;
|
|
|
+ info.Precision = GetMeasureSavePrecision(measureSetting.Precision);
|
|
|
+ info.CaptionType = CPDFCaptionType.CPDF_CAPTION_NONE;
|
|
|
+ if (measureSetting.IsShowArea)
|
|
|
+ {
|
|
|
+ info.CaptionType |= CPDFCaptionType.CPDF_CAPTION_AREA;
|
|
|
+ }
|
|
|
+ if (measureSetting.IsShowLength)
|
|
|
+ {
|
|
|
+ info.CaptionType |= CPDFCaptionType.CPDF_CAPTION_LENGTH;
|
|
|
+ }
|
|
|
+ areaAnnot.GetAreaMeasure().SetMeasureInfo(info);
|
|
|
+ areaAnnot.GetAreaMeasure().SetMeasureScale(info.RulerBase, info.RulerBaseUnit, info.RulerTranslate, info.RulerTranslateUnit);
|
|
|
+ areaAnnot.GetAreaMeasure().UpdateAnnotMeasure();
|
|
|
+ areaAnnot.UpdateAp();
|
|
|
+ PdfViewControl.UpdateAnnotFrame();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private double GetMeasureShowPrecision(int precision)
|
|
|
+ {
|
|
|
+ if (precision == CPDFMeasure.PRECISION_VALUE_ZERO)
|
|
|
+ {
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ if (CPDFMeasure.PRECISION_VALUE_ONE == precision)
|
|
|
+ {
|
|
|
+ return 0.1;
|
|
|
+ }
|
|
|
+ if (CPDFMeasure.PRECISION_VALUE_TWO == precision)
|
|
|
+ {
|
|
|
+ return 0.01;
|
|
|
+ }
|
|
|
+ if (CPDFMeasure.PRECISION_VALUE_THREE == precision)
|
|
|
+ {
|
|
|
+ return 0.001;
|
|
|
+ }
|
|
|
+ if (CPDFMeasure.PRECISION_VALUE_FOUR == precision)
|
|
|
+ {
|
|
|
+ return 0.0001;
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
|
|
|
public void ChangedCheckBoxIsChecked(bool Area, bool Lenght)
|
|
|
{
|