using ComPDFKit.Measure; using ComPDFKit.PDFAnnotation; using ComPDFKitViewer.Helper; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Documents; using System.Windows.Media; namespace ComPDFKit.Tool.SettingParam { public class DefaultSettingParam { public bool IsShowLink = false; public bool IsShowWidget = false; #region Measure public bool IsOpenMeasure { get; set; } = false; public bool IsCreateSquarePolygonMeasure = false; private LineMeasureParam lineMeasureParamDef; public LineMeasureParam LineMeasureParamDef { get { LineMeasureParam Param = new LineMeasureParam(); if (lineMeasureParamDef.CopyTo(Param)) { return Param; } return null; } private set { value.CopyTo(lineMeasureParamDef); } } private PolyLineMeasureParam polyLineMeasureParamDef; public PolyLineMeasureParam PolyLineMeasureParamDef { get { PolyLineMeasureParam Param = new PolyLineMeasureParam(); if (polyLineMeasureParamDef.CopyTo(Param)) { return Param; } return null; } private set { value.CopyTo(polyLineMeasureParamDef); } } private PolygonMeasureParam polygonMeasureParamDef; public PolygonMeasureParam PolygonMeasureParamDef { get { PolygonMeasureParam Param = new PolygonMeasureParam(); if (polygonMeasureParamDef.CopyTo(Param)) { return Param; } return null; } private set { value.CopyTo(polygonMeasureParamDef); } } private void InitLineMeasure() { lineMeasureParamDef = new LineMeasureParam(); lineMeasureParamDef.measureInfo = new CPDFMeasureInfo { Unit = CPDFMeasure.CPDF_CM, Precision = CPDFMeasure.PRECISION_VALUE_TWO, RulerBase = 1, RulerBaseUnit = CPDFMeasure.CPDF_CM, RulerTranslate = 1, RulerTranslateUnit = CPDFMeasure.CPDF_CM, CaptionType = CPDFCaptionType.CPDF_CAPTION_LENGTH, }; } private void InitPolyLineMeasure() { polyLineMeasureParamDef = new PolyLineMeasureParam(); polyLineMeasureParamDef.measureInfo = new CPDFMeasureInfo { Unit = CPDFMeasure.CPDF_CM, Precision = CPDFMeasure.PRECISION_VALUE_TWO, RulerBase = 1, RulerBaseUnit = CPDFMeasure.CPDF_CM, RulerTranslate = 1, RulerTranslateUnit = CPDFMeasure.CPDF_CM, CaptionType = CPDFCaptionType.CPDF_CAPTION_LENGTH, }; } private void InitPolygonMeasure() { polygonMeasureParamDef = new PolygonMeasureParam(); polygonMeasureParamDef.measureInfo = new CPDFMeasureInfo { Unit = CPDFMeasure.CPDF_CM, Precision = CPDFMeasure.PRECISION_VALUE_TWO, RulerBase = 1, RulerBaseUnit = CPDFMeasure.CPDF_CM, RulerTranslate = 1, RulerTranslateUnit = CPDFMeasure.CPDF_CM, CaptionType = CPDFCaptionType.CPDF_CAPTION_LENGTH | CPDFCaptionType.CPDF_CAPTION_AREA, }; } #endregion #region Annot private CircleParam circleParamDef; public CircleParam CircleParamDef { get { CircleParam Param = new CircleParam(); if (circleParamDef.CopyTo(Param)) { return Param; } return null; } private set { value.CopyTo(circleParamDef); } } private FreeTextParam freeTextParamDef; public FreeTextParam FreeTextParamDef { get { FreeTextParam Param = new FreeTextParam(); if (freeTextParamDef.CopyTo(Param)) { return Param; } return null; } private set { value.CopyTo(freeTextParamDef); } } private HighlightParam highlightParamDef; public HighlightParam HighlightParamDef { get { HighlightParam Param = new HighlightParam(); if (highlightParamDef.CopyTo(Param)) { return Param; } return null; } private set { value.CopyTo(highlightParamDef); } } private InkParam inkParamDef; public InkParam InkParamDef { get { InkParam Param = new InkParam(); if (inkParamDef.CopyTo(Param)) { return Param; } return null; } private set { value.CopyTo(inkParamDef); } } private LineParam lineParamDef; public LineParam LineParamDef { get { LineParam Param = new LineParam(); if (lineParamDef.CopyTo(Param)) { return Param; } return null; } private set { value.CopyTo(lineParamDef); } } private LinkParam linkParamDef; public LinkParam LinkParamDef { get { LinkParam Param = new LinkParam(); if (linkParamDef.CopyTo(Param)) { return Param; } return null; } private set { value.CopyTo(linkParamDef); } } private RedactParam redactParamDef; public RedactParam RedactParamDef { get { RedactParam Param = new RedactParam(); if (redactParamDef.CopyTo(Param)) { return Param; } return null; } private set { value.CopyTo(redactParamDef); } } private SquareParam squareParamDef; public SquareParam SquareParamDef { get { SquareParam Param = new SquareParam(); if (squareParamDef.CopyTo(Param)) { return Param; } return null; } private set { value.CopyTo(squareParamDef); } } private SquigglyParam squigglyParamDef; public SquigglyParam SquigglyParamDef { get { SquigglyParam Param = new SquigglyParam(); if (squigglyParamDef.CopyTo(Param)) { return Param; } return null; } private set { value.CopyTo(squigglyParamDef); } } private StampParam stampParamDef; public StampParam StampParamDef { get { StampParam Param = new StampParam(); if (stampParamDef.CopyTo(Param)) { return Param; } return null; } private set { value.CopyTo(stampParamDef); } } private StickyNoteParam stickyNoteParamDef; public StickyNoteParam StickyNoteParamDef { get { StickyNoteParam Param = new StickyNoteParam(); if (stickyNoteParamDef.CopyTo(Param)) { return Param; } return null; } private set { value.CopyTo(stickyNoteParamDef); } } private StrikeoutParam strikeoutParamDef; public StrikeoutParam StrikeoutParamDef { get { StrikeoutParam Param = new StrikeoutParam(); if (strikeoutParamDef.CopyTo(Param)) { return Param; } return null; } private set { value.CopyTo(strikeoutParamDef); } } private UnderlineParam underlineParamDef; public UnderlineParam UnderlineParamDef { get { UnderlineParam Param = new UnderlineParam(); if (underlineParamDef.CopyTo(Param)) { return Param; } return null; } private set { value.CopyTo(underlineParamDef); } } private SoundParam soundParamDef; public SoundParam SoundParamDef { get { SoundParam Param = new SoundParam(); if (soundParamDef.CopyTo(Param)) { return Param; } return null; } private set { value.CopyTo(soundParamDef); } } private void InitUnderline() { underlineParamDef = new UnderlineParam(); } private void InitStrikeout() { strikeoutParamDef = new StrikeoutParam(); } private void InitStamp() { stampParamDef = new StampParam(); } private void InitSquiggly() { squigglyParamDef = new SquigglyParam(); } private void InitSquare() { squareParamDef = new SquareParam(); } private void InitRedact() { redactParamDef = new RedactParam(); } private void InitLink() { linkParamDef = new LinkParam(); } private void InitLine() { lineParamDef = new LineParam(); } private void InitInk() { inkParamDef = new InkParam(); } private void Inithighlight() { highlightParamDef = new HighlightParam(); } private void InitFreeText() { freeTextParamDef = new FreeTextParam(); freeTextParamDef.Alignment = C_TEXT_ALIGNMENT.ALIGNMENT_LEFT; freeTextParamDef.Transparency = 255; byte[] lineColor = { 255, 0, 0 }; freeTextParamDef.LineColor = lineColor; freeTextParamDef.LineWidth = 1; freeTextParamDef.FontName = "Arial"; byte[] fontColor = { 255, 0, 0 }; freeTextParamDef.FontColor = fontColor; freeTextParamDef.FontSize = 14; } private void InitCircle() { circleParamDef = new CircleParam(); } private void InitStickyNote() { stickyNoteParamDef = new StickyNoteParam(); stickyNoteParamDef.Transparency = 255; stickyNoteParamDef.StickyNoteColor = new byte[3] { 255, 0, 0 }; } private void InitSound() { soundParamDef = new SoundParam(); } #endregion #region Widget private CheckBoxParam checkBoxParamDef; public CheckBoxParam CheckBoxParamDef { get { CheckBoxParam Param = new CheckBoxParam(); if (checkBoxParamDef.CopyTo(Param)) { return Param; } return null; } private set { value.CopyTo(checkBoxParamDef); } } private ComboBoxParam comboBoxParamDef; public ComboBoxParam ComboBoxParamDef { get { ComboBoxParam Param = new ComboBoxParam(); if (comboBoxParamDef.CopyTo(Param)) { return Param; } return null; } private set { value.CopyTo(comboBoxParamDef); } } private ListBoxParam listBoxParamDef; public ListBoxParam ListBoxParamDef { get { ListBoxParam Param = new ListBoxParam(); if (listBoxParamDef.CopyTo(Param)) { return Param; } return null; } private set { value.CopyTo(listBoxParamDef); } } private PushButtonParam pushButtonParamDef; public PushButtonParam PushButtonParamDef { get { PushButtonParam Param = new PushButtonParam(); if (pushButtonParamDef.CopyTo(Param)) { return Param; } return null; } private set { value.CopyTo(pushButtonParamDef); } } private RadioButtonParam radioButtonParamDef; public RadioButtonParam RadioButtonParamDef { get { RadioButtonParam Param = new RadioButtonParam(); if (radioButtonParamDef.CopyTo(Param)) { return Param; } return null; } private set { value.CopyTo(radioButtonParamDef); } } private SignatureParam signatureParamDef; public SignatureParam SignatureParamDef { get { SignatureParam Param = new SignatureParam(); if (signatureParamDef.CopyTo(Param)) { return Param; } return null; } private set { value.CopyTo(signatureParamDef); } } private TextBoxParam textBoxParamDef; public TextBoxParam TextBoxParamDef { get { TextBoxParam Param = new TextBoxParam(); if (textBoxParamDef.CopyTo(Param)) { return Param; } return null; } private set { value.CopyTo(textBoxParamDef); } } private void InitCheckBox() { checkBoxParamDef = new CheckBoxParam(); } private void InitComboBox() { comboBoxParamDef = new ComboBoxParam(); } private void InitListBox() { listBoxParamDef = new ListBoxParam(); } private void InitPushButton() { pushButtonParamDef = new PushButtonParam(); } private void InitRadioButton() { radioButtonParamDef = new RadioButtonParam(); } private void InitSignature() { signatureParamDef = new SignatureParam(); } private void InitTextBox() { textBoxParamDef = new TextBoxParam(); } #endregion #region PDFEdit private ImageEditParam imageEditParamDef; public ImageEditParam ImageEditParamDef { get { ImageEditParam Param = new ImageEditParam(); if (imageEditParamDef.CopyTo(Param)) { return Param; } return null; } private set { value.CopyTo(imageEditParamDef); } } private TextEditParam textEditParamDef; public TextEditParam TextEditParamDef { get { TextEditParam Param = new TextEditParam(); if (textEditParamDef.CopyTo(Param)) { return Param; } return null; } private set { value.CopyTo(textEditParamDef); } } private void InitTextEdit() { textEditParamDef = new TextEditParam(); } private void InitImageEdit() { imageEditParamDef = new ImageEditParam(); } #endregion public DefaultSettingParam() { #region Measure InitLineMeasure(); InitPolyLineMeasure(); InitPolygonMeasure(); #endregion #region Annot InitUnderline(); InitStrikeout(); InitStamp(); InitSquiggly(); InitSquare(); InitRedact(); InitLink(); InitLine(); InitInk(); Inithighlight(); InitFreeText(); InitCircle(); InitStickyNote(); InitSound(); #endregion #region Widget InitCheckBox(); InitComboBox(); InitListBox(); InitPushButton(); InitRadioButton(); InitSignature(); InitTextBox(); #endregion #region PDFEdit InitTextEdit(); InitImageEdit(); #endregion } public bool SetAnnotParam(AnnotParam annotParam) { bool IsOK = false; if (annotParam == null) { return IsOK; } switch (annotParam.CurrentType) { case C_ANNOTATION_TYPE.C_ANNOTATION_NONE: break; case C_ANNOTATION_TYPE.C_ANNOTATION_UNKOWN: break; case C_ANNOTATION_TYPE.C_ANNOTATION_TEXT: if (annotParam is StickyNoteParam) { StickyNoteParamDef = annotParam as StickyNoteParam; IsOK = true; } break; case C_ANNOTATION_TYPE.C_ANNOTATION_LINK: if (annotParam is LinkParam) { LinkParamDef = annotParam as LinkParam; IsOK = true; } break; case C_ANNOTATION_TYPE.C_ANNOTATION_FREETEXT: if (annotParam is FreeTextParam) { FreeTextParamDef = annotParam as FreeTextParam; IsOK = true; } break; case C_ANNOTATION_TYPE.C_ANNOTATION_LINE: if (annotParam is LineParam) { LineParamDef = annotParam as LineParam; IsOK = true; } else if (annotParam is LineMeasureParam) { LineMeasureParamDef = annotParam as LineMeasureParam; IsOK = true; } break; case C_ANNOTATION_TYPE.C_ANNOTATION_SQUARE: if (annotParam is SquareParam) { SquareParamDef = annotParam as SquareParam; IsOK = true; } break; case C_ANNOTATION_TYPE.C_ANNOTATION_CIRCLE: if (annotParam is CircleParam) { CircleParamDef = annotParam as CircleParam; IsOK = true; } break; case C_ANNOTATION_TYPE.C_ANNOTATION_POLYGON: if (annotParam is PolygonMeasureParam) { PolygonMeasureParamDef = annotParam as PolygonMeasureParam; IsOK = true; } break; case C_ANNOTATION_TYPE.C_ANNOTATION_POLYLINE: if (annotParam is PolyLineMeasureParam) { PolyLineMeasureParamDef = annotParam as PolyLineMeasureParam; IsOK = true; } break; case C_ANNOTATION_TYPE.C_ANNOTATION_HIGHLIGHT: if (annotParam is HighlightParam) { HighlightParamDef = annotParam as HighlightParam; IsOK = true; } break; case C_ANNOTATION_TYPE.C_ANNOTATION_UNDERLINE: if (annotParam is UnderlineParam) { UnderlineParamDef = annotParam as UnderlineParam; IsOK = true; } break; case C_ANNOTATION_TYPE.C_ANNOTATION_SQUIGGLY: if (annotParam is SquigglyParam) { SquigglyParamDef = annotParam as SquigglyParam; IsOK = true; } break; case C_ANNOTATION_TYPE.C_ANNOTATION_STRIKEOUT: if (annotParam is StrikeoutParam) { StrikeoutParamDef = annotParam as StrikeoutParam; IsOK = true; } break; case C_ANNOTATION_TYPE.C_ANNOTATION_STAMP: if (annotParam is StampParam) { StampParamDef = annotParam as StampParam; IsOK = true; } break; case C_ANNOTATION_TYPE.C_ANNOTATION_CARET: break; case C_ANNOTATION_TYPE.C_ANNOTATION_INK: if (annotParam is InkParam) { InkParamDef = annotParam as InkParam; IsOK = true; } break; case C_ANNOTATION_TYPE.C_ANNOTATION_POPUP: break; case C_ANNOTATION_TYPE.C_ANNOTATION_FILEATTACHMENT: break; case C_ANNOTATION_TYPE.C_ANNOTATION_SOUND: if (annotParam is SoundParam) { SoundParamDef = annotParam as SoundParam; IsOK = true; } break; case C_ANNOTATION_TYPE.C_ANNOTATION_MOVIE: break; case C_ANNOTATION_TYPE.C_ANNOTATION_WIDGET: if (annotParam is WidgetParm) { IsOK = SetWidgetParam(annotParam as WidgetParm); } break; case C_ANNOTATION_TYPE.C_ANNOTATION_SCREEN: break; case C_ANNOTATION_TYPE.C_ANNOTATION_PRINTERMARK: break; case C_ANNOTATION_TYPE.C_ANNOTATION_TRAPNET: break; case C_ANNOTATION_TYPE.C_ANNOTATION_WATERMARK: break; case C_ANNOTATION_TYPE.C_ANNOTATION_3D: break; case C_ANNOTATION_TYPE.C_ANNOTATION_RICHMEDIA: break; case C_ANNOTATION_TYPE.C_ANNOTATION_REDACT: if (annotParam is RedactParam) { RedactParamDef = annotParam as RedactParam; IsOK = true; } break; case C_ANNOTATION_TYPE.C_ANNOTATION_INTERCHANGE: break; default: break; } return IsOK; } private bool SetWidgetParam(WidgetParm formParm) { bool IsOK = false; if (formParm == null) { return IsOK; } switch (formParm.WidgetType) { case PDFAnnotation.Form.C_WIDGET_TYPE.WIDGET_NONE: break; case PDFAnnotation.Form.C_WIDGET_TYPE.WIDGET_PUSHBUTTON: if (formParm is PushButtonParam) { PushButtonParamDef = formParm as PushButtonParam; IsOK = true; } break; case PDFAnnotation.Form.C_WIDGET_TYPE.WIDGET_CHECKBOX: if (formParm is CheckBoxParam) { CheckBoxParamDef = formParm as CheckBoxParam; IsOK = true; } break; case PDFAnnotation.Form.C_WIDGET_TYPE.WIDGET_RADIOBUTTON: if (formParm is RadioButtonParam) { RadioButtonParamDef = formParm as RadioButtonParam; IsOK = true; } break; case PDFAnnotation.Form.C_WIDGET_TYPE.WIDGET_TEXTFIELD: if (formParm is TextBoxParam) { TextBoxParamDef = formParm as TextBoxParam; IsOK = true; } break; case PDFAnnotation.Form.C_WIDGET_TYPE.WIDGET_COMBOBOX: if (formParm is ComboBoxParam) { ComboBoxParamDef = formParm as ComboBoxParam; IsOK = true; } break; case PDFAnnotation.Form.C_WIDGET_TYPE.WIDGET_LISTBOX: if (formParm is ListBoxParam) { ListBoxParamDef = formParm as ListBoxParam; IsOK = true; } break; case PDFAnnotation.Form.C_WIDGET_TYPE.WIDGET_SIGNATUREFIELDS: if (formParm is SignatureParam) { SignatureParamDef = formParm as SignatureParam; IsOK = true; } break; case PDFAnnotation.Form.C_WIDGET_TYPE.WIDGET_UNKNOWN: break; default: break; } return IsOK; } public bool SetPDFEditParamm(PDFEditParam editParam) { switch (editParam.EditType) { case PDFPage.CPDFEditType.EditText: if (editParam is TextEditParam) { TextEditParamDef = editParam as TextEditParam; return true; } break; default: break; } return false; } } public class DefaultDrawParam { #region ShowAnnot private SolidColorBrush showLinkBrush; public SolidColorBrush ShowLinkBrush { get { return showLinkBrush.Clone(); } set { showLinkBrush = value; } } private Pen showLinkePen; public Pen ShowLinkePen { get { return showLinkePen.Clone(); } set { showLinkePen = value; } } #endregion #region AnnotSelectedRect private SolidColorBrush annotMoveBrush; public SolidColorBrush AnnotMoveBrush { get { return annotMoveBrush.Clone(); } set { annotMoveBrush = value; } } private Pen annotMovePen; public Pen AnnotMovePen { get { return annotMovePen.Clone(); } set { annotMovePen = value; } } private SolidColorBrush annotRectFillBrush; public SolidColorBrush AnnotRectFillBrush { get { return annotRectFillBrush.Clone(); } set { annotRectFillBrush = value; } } private Pen annotRectLinePen; public Pen AnnotRectLinePen { get { return annotRectLinePen.Clone(); } set { annotRectLinePen = value; } } private Pen annotRectHoverPen; public Pen AnnotRectHoverPen { get { return annotRectHoverPen.Clone(); } set { annotRectHoverPen = value; } } private Pen annotPointPen; public Pen AnnotPointPen { get { return annotPointPen.Clone(); } set { annotPointPen = value; } } private SolidColorBrush annotPointBorderBrush; public SolidColorBrush AnnotPointBorderBrush { get { return annotPointBorderBrush.Clone(); } set { annotPointBorderBrush = value; } } #endregion #region PDFEdit private SolidColorBrush caretBrush; public SolidColorBrush CaretBrush { get { return caretBrush.Clone(); } set { caretBrush = value; } } private Pen caretPen; public Pen CaretPen { get { return caretPen.Clone(); } set { caretPen = value; } } private SolidColorBrush pDFEditMoveBrush; public SolidColorBrush PDFEditMoveBrush { get { return pDFEditMoveBrush.Clone(); } set { pDFEditMoveBrush = value; } } private Pen pDFEditMovePen; public Pen PDFEditMovePen { get { return pDFEditMovePen.Clone(); } set { pDFEditMovePen = value; } } private Pen pDFEditMoveRectPen; public Pen PDFEditMoveRectPen { get { return pDFEditMoveRectPen.Clone(); } set { pDFEditMoveRectPen = value; } } #region Not selected state private SolidColorBrush pDFEditRectFillBrush; public SolidColorBrush PDFEditRectFillBrush { get { return pDFEditRectFillBrush.Clone(); } set { pDFEditRectFillBrush = value; } } private Pen pDFEditRectLinePen; public Pen PDFEditRectLinePen { get { return pDFEditRectLinePen.Clone(); } set { pDFEditRectLinePen = value; } } private Pen pDFEditPointPen; public Pen PDFEditPointPen { get { return pDFEditPointPen.Clone(); } set { pDFEditPointPen = value; } } private SolidColorBrush pDFEditPointBorderBrush; public SolidColorBrush PDFEditPointBorderBrush { get { return pDFEditPointBorderBrush.Clone(); } set { pDFEditPointBorderBrush = value; } } #endregion #region Selected state private SolidColorBrush sPDFEditRectFillBrush; public SolidColorBrush SPDFEditRectFillBrush { get { return sPDFEditRectFillBrush.Clone(); } set { sPDFEditRectFillBrush = value; } } private Pen sPDFEditRectLinePen; public Pen SPDFEditRectLinePen { get { return sPDFEditRectLinePen.Clone(); } set { sPDFEditRectLinePen = value; } } private Pen sPDFEditPointPen; public Pen SPDFEditPointPen { get { return sPDFEditPointPen.Clone(); } set { sPDFEditPointPen = value; } } private SolidColorBrush sPDFEditPointBorderBrush; public SolidColorBrush SPDFEditPointBorderBrush { get { return sPDFEditPointBorderBrush.Clone(); } set { sPDFEditPointBorderBrush = value; } } private SolidColorBrush sPDFEditCropBorderBrush; public SolidColorBrush SPDFEditCropBorderBrush { get { return sPDFEditCropBorderBrush.Clone(); } set { sPDFEditCropBorderBrush = value; } } #endregion #region Hover state private SolidColorBrush pDFEditRectFillHoverBrush; public SolidColorBrush PDFEditRectFillHoverBrush { get { return pDFEditRectFillHoverBrush.Clone(); } set { pDFEditRectFillHoverBrush = value; } } private Pen pDFEditRectLineHoverPen; public Pen PDFEditRectLineHoverPen { get { return pDFEditRectLineHoverPen.Clone(); } set { pDFEditRectLineHoverPen = value; } } private Pen pDFEditPointHoverPen; public Pen PDFEditPointHoverPen { get { return pDFEditPointHoverPen.Clone(); } set { pDFEditPointHoverPen = value; } } private SolidColorBrush pDFEditPointBorderHoverBrush; public SolidColorBrush PDFEditPointBorderHoverBrush { get { return pDFEditPointBorderHoverBrush.Clone(); } set { pDFEditPointBorderHoverBrush = value; } } #endregion #endregion #region AnnotEdit private SolidColorBrush editControlLineBrush; public SolidColorBrush EditControlLineBrush { get { return editControlLineBrush.Clone(); } set { editControlLineBrush = value; } } private Pen editControlLinePen; public Pen EditControlLinePen { get { return editControlLinePen.Clone(); } set { editControlLinePen = value; } } private Pen editLinePen; public Pen EditLinePen { get { return editLinePen.Clone(); } set { editLinePen = value; } } #endregion #region AnnotCreate private Pen redactPen; public Pen RedactPen { get { return redactPen.Clone(); } set { redactPen = value; } } private Pen linkPen; public Pen LinkPen { get { return linkPen.Clone(); } set { linkPen = value; } } private SolidColorBrush linkBrush; public SolidColorBrush LinkBrush { get { return linkBrush.Clone(); } set { linkBrush = value; } } #endregion #region WidgetCreate private Pen createWidgetPen; public Pen CreateWidgetPen { get { return createWidgetPen.Clone(); } set { createWidgetPen = value; } } #endregion #region PDFViewer private Pen viewerImagePen; public Pen ViewerImagePen { get { return viewerImagePen.Clone(); } set { viewerImagePen = value; } } private Brush viewerImageBackgroundBrush; public Brush ViewerImageBackgroundBrush { get { return viewerImageBackgroundBrush.Clone(); } set { viewerImageBackgroundBrush = value; } } #endregion #region PDFEditMultiSelected private SolidColorBrush pDFEditMultiMoveBrush; public SolidColorBrush PDFEditMultiMoveBrush { get { return pDFEditMultiMoveBrush.Clone(); } set { pDFEditMultiMoveBrush = value; } } private Pen pDFEditMultiMovePen; public Pen PDFEditMultiMovePen { get { return pDFEditMultiMovePen.Clone(); } set { pDFEditMultiMovePen = value; } } private Pen pDFEditMultiMoveRectPen; public Pen PDFEditMultiMoveRectPen { get { return pDFEditMultiMoveRectPen.Clone(); } set { pDFEditMultiMoveRectPen = value; } } #region Not selected state private SolidColorBrush pDFEditMultiRectFillBrush; public SolidColorBrush PDFEditMultiRectFillBrush { get { return pDFEditMultiRectFillBrush.Clone(); } set { pDFEditMultiRectFillBrush = value; } } private Pen pDFEditMultiRectLinePen; public Pen PDFEditMultiRectLinePen { get { return pDFEditMultiRectLinePen.Clone(); } set { pDFEditMultiRectLinePen = value; } } private Pen pDFEditMultiPointPen; public Pen PDFEditMultiPointPen { get { return pDFEditMultiPointPen.Clone(); } set { pDFEditMultiPointPen = value; } } private SolidColorBrush pDFEditMultiPointBorderBrush; public SolidColorBrush PDFEditMultiPointBorderBrush { get { return pDFEditMultiPointBorderBrush.Clone(); } set { pDFEditMultiPointBorderBrush = value; } } #endregion #region Selected state private SolidColorBrush sPDFEditMultiRectFillBrush; public SolidColorBrush SPDFEditMultiRectFillBrush { get { return sPDFEditMultiRectFillBrush.Clone(); } set { sPDFEditMultiRectFillBrush = value; } } private Pen sPDFEditMultiRectLinePen; public Pen SPDFEditMultiRectLinePen { get { return sPDFEditMultiRectLinePen.Clone(); } set { sPDFEditMultiRectLinePen = value; } } private Pen sPDFEditMultiPointPen; public Pen SPDFEditMultiPointPen { get { return sPDFEditMultiPointPen.Clone(); } set { sPDFEditMultiPointPen = value; } } private SolidColorBrush sPDFEditMultiPointBorderBrush; public SolidColorBrush SPDFEditMultiPointBorderBrush { get { return sPDFEditMultiPointBorderBrush.Clone(); } set { sPDFEditMultiPointBorderBrush = value; } } private SolidColorBrush sPDFEditMultiCropBorderBrush; public SolidColorBrush SPDFEditMultiCropBorderBrush { get { return sPDFEditMultiCropBorderBrush.Clone(); } set { sPDFEditMultiCropBorderBrush = value; } } #endregion #region Hover state private SolidColorBrush pDFEditMultiRectFillHoverBrush; public SolidColorBrush PDFEditMultiRectFillHoverBrush { get { return pDFEditMultiRectFillHoverBrush.Clone(); } set { pDFEditMultiRectFillHoverBrush = value; } } private Pen pDFEditMultiRectLineHoverPen; public Pen PDFEditMultiRectLineHoverPen { get { return pDFEditMultiRectLineHoverPen.Clone(); } set { pDFEditMultiRectLineHoverPen = value; } } private Pen pDFEditMultiPointHoverPen; public Pen PDFEditMultiPointHoverPen { get { return pDFEditMultiPointHoverPen.Clone(); } set { pDFEditMultiPointHoverPen = value; } } private SolidColorBrush pDFEditMultiPointBorderHoverBrush; public SolidColorBrush PDFEditMultiPointBorderHoverBrush { get { return pDFEditMultiPointBorderHoverBrush.Clone(); } set { pDFEditMultiPointBorderHoverBrush = value; } } #endregion #endregion #region PageSelected private SolidColorBrush pageSelectedBgPen; public SolidColorBrush PageSelectedBgPen { get { return pageSelectedBgPen.Clone(); } set { pageSelectedBgPen = value; } } private SolidColorBrush pageSelectedBgBrush; public SolidColorBrush PageSelectedBgBrush { get { return pageSelectedBgBrush.Clone(); } set { pageSelectedBgBrush = value; } } private SolidColorBrush pageSelectedMoveBrush; public SolidColorBrush PageSelectedMoveBrush { get { return pageSelectedMoveBrush.Clone(); } set { pageSelectedMoveBrush = value; } } private Pen pageSelectedMovePen; public Pen PageSelectedMovePen { get { return pageSelectedMovePen.Clone(); } set { pageSelectedMovePen = value; } } #region Not selected state private SolidColorBrush pageSelectedRectFillBrush; public SolidColorBrush PageSelectedRectFillBrush { get { return pageSelectedRectFillBrush.Clone(); } set { pageSelectedRectFillBrush = value; } } private Pen pageSelectedRectLinePen; public Pen PageSelectedRectLinePen { get { return pageSelectedRectLinePen.Clone(); } set { pageSelectedRectLinePen = value; } } private Pen pageSelectedPointPen; public Pen PageSelectedPointPen { get { return pageSelectedPointPen.Clone(); } set { pageSelectedPointPen = value; } } private SolidColorBrush pageSelectedPointBorderBrush; public SolidColorBrush PageSelectedPointBorderBrush { get { return pageSelectedPointBorderBrush.Clone(); } set { pageSelectedPointBorderBrush = value; } } #endregion #region Selected state private SolidColorBrush sPageSelectedRectFillBrush; public SolidColorBrush SPageSelectedRectFillBrush { get { return sPageSelectedRectFillBrush.Clone(); } set { sPageSelectedRectFillBrush = value; } } private Pen sPageSelectedRectLinePen; public Pen SPageSelectedRectLinePen { get { return sPageSelectedRectLinePen.Clone(); } set { sPageSelectedRectLinePen = value; } } private Pen sPageSelectedPointPen; public Pen SPageSelectedPointPen { get { return sPageSelectedPointPen.Clone(); } set { sPageSelectedPointPen = value; } } private SolidColorBrush sPageSelectedPointBorderBrush; public SolidColorBrush SPageSelectedPointBorderBrush { get { return sPageSelectedPointBorderBrush.Clone(); } set { sPageSelectedPointBorderBrush = value; } } private SolidColorBrush sPageSelectedCropBorderBrush; public SolidColorBrush SPageSelectedCropBorderBrush { get { return sPageSelectedCropBorderBrush.Clone(); } set { sPageSelectedCropBorderBrush = value; } } #endregion #region Horver state private SolidColorBrush pageSelectedRectFillHoverBrush; public SolidColorBrush PageSelectedRectFillHoverBrush { get { return pageSelectedRectFillHoverBrush.Clone(); } set { pageSelectedRectFillHoverBrush = value; } } private Pen pageSelectedRectLineHoverPen; public Pen PageSelectedRectLineHoverPen { get { return pageSelectedRectLineHoverPen.Clone(); } set { pageSelectedRectLineHoverPen = value; } } private Pen pageSelectedPointHoverPen; public Pen PageSelectedPointHoverPen { get { return pageSelectedPointHoverPen.Clone(); } set { pageSelectedPointHoverPen = value; } } private SolidColorBrush pageSelectedPointBorderHoverBrush; public SolidColorBrush PageSelectedPointBorderHoverBrush { get { return pageSelectedPointBorderHoverBrush.Clone(); } set { pageSelectedPointBorderHoverBrush = value; } } #endregion #endregion public DefaultDrawParam() { //ShowAnnot ShowLinkBrush = new SolidColorBrush(Color.FromRgb(0x78, 0xB4, 0xDB)); ShowLinkePen = null; // AnnotSelectedRect AnnotMoveBrush = new SolidColorBrush(Color.FromArgb(0x46, 0x46, 0x82, 0xB4)); AnnotMovePen = new Pen(new SolidColorBrush(Color.FromRgb(0x00, 0xFF, 0x00)), 2); AnnotRectFillBrush = new SolidColorBrush(Color.FromArgb(0x01, 0x00, 0x00, 0x00)); AnnotRectLinePen = new Pen(new SolidColorBrush(Color.FromRgb(71, 126, 222)), 2); AnnotRectHoverPen = new Pen(Brushes.Orange, 2) { DashStyle = DashStyles.Dash }; AnnotPointPen = new Pen(new SolidColorBrush(Color.FromRgb(71, 126, 222)), 2); AnnotPointBorderBrush = Brushes.White; //PDFEdit CaretBrush = new SolidColorBrush(Color.FromArgb(0x46, 0x46, 0x82, 0xB4)); CaretPen = new Pen(Brushes.Black, 1); PDFEditMovePen = new Pen(new SolidColorBrush(Color.FromRgb(0x00, 0xFF, 0x00)), 2); PDFEditMoveRectPen = new Pen(new SolidColorBrush(Color.FromRgb(0x00, 0xFF, 0x00)), 2); PDFEditMoveBrush = new SolidColorBrush(Color.FromArgb(0x46, 0x46, 0x82, 0xB4)); PDFEditRectFillHoverBrush = new SolidColorBrush(Color.FromArgb(0x01, 0x00, 0x00, 0x00)); PDFEditRectLineHoverPen = new Pen(Brushes.Orange, 2) { DashStyle = DashStyles.Dash }; PDFEditPointHoverPen = new Pen(new SolidColorBrush(Color.FromRgb(71, 126, 222)), 2); PDFEditPointBorderHoverBrush = Brushes.White; PDFEditRectFillBrush = new SolidColorBrush(Color.FromArgb(0x01, 0x00, 0x00, 0x00)); PDFEditRectLinePen = new Pen(new SolidColorBrush(Color.FromRgb(71, 126, 222)), 2) { DashStyle = DashStyles.Dash }; PDFEditPointPen = new Pen(new SolidColorBrush(Color.FromRgb(71, 126, 222)), 2); PDFEditPointBorderBrush = Brushes.White; SPDFEditRectFillBrush = new SolidColorBrush(Color.FromArgb(0x01, 0x00, 0x00, 0x00)); SPDFEditRectLinePen = new Pen(new SolidColorBrush(Color.FromRgb(71, 126, 222)), 2); SPDFEditPointPen = new Pen(new SolidColorBrush(Color.FromRgb(71, 126, 222)), 2); SPDFEditPointBorderBrush = Brushes.White; SPDFEditCropBorderBrush = new SolidColorBrush(Color.FromRgb(71, 126, 222)); //AnnotEdit EditControlLineBrush = new SolidColorBrush(Color.FromRgb(0x78, 0xB4, 0xDB)); EditControlLinePen = new Pen(new SolidColorBrush(Color.FromRgb(0x78, 0xB4, 0xDB)), 1); EditLinePen = new Pen(new SolidColorBrush(Color.FromRgb(0x78, 0xB4, 0xDB)), 1); //AnnotCreate RedactPen = new Pen(Brushes.Red, 1); LinkPen = new Pen(new SolidColorBrush(Color.FromRgb(71, 126, 222)), 1); LinkBrush = new SolidColorBrush(Color.FromRgb(0xCC, 0xDD, 0xEA)); //WidgetCreate CreateWidgetPen = new Pen(new SolidColorBrush(Color.FromRgb(0x00, 0xFF, 0x00)), 2); //PDFViewer ViewerImagePen = new Pen(new SolidColorBrush(Color.FromRgb(0x46, 0x82, 0xB4)), 1); ViewerImageBackgroundBrush = new SolidColorBrush(Color.FromArgb(0x46, 0x46, 0x82, 0xB4)); //PDFEditMultiSelected PDFEditMultiMoveRectPen = new Pen(new SolidColorBrush(Color.FromRgb(0x00, 0xFF, 0x00)), 2); PDFEditMultiMovePen = new Pen(new SolidColorBrush(Color.FromRgb(0x00, 0xFF, 0x00)), 2); PDFEditMultiMoveBrush = new SolidColorBrush(Color.FromArgb(0x46, 0x46, 0x82, 0xB4)); PDFEditMultiRectFillHoverBrush = new SolidColorBrush(Color.FromArgb(0x01, 0x00, 0x00, 0x00)); PDFEditMultiRectLineHoverPen = new Pen(Brushes.Orange, 2) { DashStyle = DashStyles.Dash }; PDFEditMultiPointHoverPen = new Pen(new SolidColorBrush(Color.FromRgb(71, 126, 222)), 2); PDFEditMultiPointBorderHoverBrush = Brushes.White; PDFEditMultiRectFillBrush = new SolidColorBrush(Color.FromArgb(0x01, 0x00, 0x00, 0x00)); PDFEditMultiRectLinePen = new Pen(new SolidColorBrush(Color.FromRgb(71, 126, 222)), 2) { DashStyle = DashStyles.Solid }; PDFEditMultiPointPen = new Pen(new SolidColorBrush(Color.FromRgb(71, 126, 222)), 2); PDFEditMultiPointBorderBrush = Brushes.White; SPDFEditMultiRectFillBrush = new SolidColorBrush(Color.FromArgb(0x01, 0x00, 0x00, 0x00)); SPDFEditMultiRectLinePen = new Pen(new SolidColorBrush(Color.FromRgb(71, 126, 222)), 2); SPDFEditMultiPointPen = new Pen(new SolidColorBrush(Color.FromRgb(71, 126, 222)), 2); SPDFEditMultiPointBorderBrush = Brushes.White; SPDFEditMultiCropBorderBrush = new SolidColorBrush(Color.FromRgb(71, 126, 222)); //PageSelected PageSelectedBgPen = null; PageSelectedBgBrush = new SolidColorBrush(Color.FromArgb(0x99, 0x00, 0x00, 0x00)); PageSelectedMovePen = new Pen(new SolidColorBrush(Color.FromRgb(0x00, 0xFF, 0x00)), 2); PageSelectedMoveBrush = new SolidColorBrush(Color.FromArgb(0x46, 0x46, 0x82, 0xB4)); PageSelectedRectFillHoverBrush = new SolidColorBrush(Color.FromArgb(0x01, 0x00, 0x00, 0x00)); PageSelectedRectLineHoverPen = new Pen(Brushes.Orange, 2) { DashStyle = DashStyles.Dash }; PageSelectedPointHoverPen = new Pen(new SolidColorBrush(Color.FromRgb(71, 126, 222)), 2); PageSelectedPointBorderHoverBrush = Brushes.White; PageSelectedRectFillBrush = new SolidColorBrush(Color.FromArgb(0x01, 0x00, 0x00, 0x00)); PageSelectedRectLinePen = new Pen(new SolidColorBrush(Color.FromRgb(71, 126, 222)), 2) { DashStyle = DashStyles.Dash }; PageSelectedPointPen = new Pen(new SolidColorBrush(Color.FromRgb(71, 126, 222)), 2); PageSelectedPointBorderBrush = Brushes.White; SPageSelectedRectFillBrush = new SolidColorBrush(Color.FromArgb(0x01, 0x00, 0x00, 0x00)); SPageSelectedRectLinePen = new Pen(new SolidColorBrush(Color.FromRgb(71, 126, 222)), 2); SPageSelectedPointPen = new Pen(new SolidColorBrush(Color.FromRgb(71, 126, 222)), 2); SPageSelectedPointBorderBrush = Brushes.White; SPageSelectedCropBorderBrush = new SolidColorBrush(Color.FromRgb(71, 126, 222)); } } public class MeasureSetting { public double RulerBase { get; set; } = 1; public string RulerBaseUnit { get; set; } = CPDFMeasure.CPDF_CM; public double RulerTranslate { get; set; } = 1; public string RulerTranslateUnit { get; set; } = CPDFMeasure.CPDF_CM; public double Precision { get; set; } = 0.01; public double MoveDetectionLength { get; set; } = 10; public bool IsShowArea { get; set; } = true; public bool IsShowLength { get; set; } = true; /// /// Return inch /// internal static double GetPointLength(Point startPoint, Point endPoint, double zoom) { if (zoom > 0) { return (endPoint - startPoint).Length / zoom / 96D; } return 0; } internal double GetMeasureRatio(string baseUnit) { if (baseUnit == CPDFMeasure.CPDF_PT) { return 1 / 72; } if (baseUnit == CPDFMeasure.CPDF_IN) { return 1; } if (baseUnit == CPDFMeasure.CPDF_MM) { return 1 / 25.4; } if (baseUnit == CPDFMeasure.CPDF_CM) { return 1 / 2.54; } if (baseUnit == CPDFMeasure.CPDF_M) { return 1 / 0.0254; } if (baseUnit == CPDFMeasure.CPDFO_KM) { return 1 / 0.0254 / 1000; } if (baseUnit == CPDFMeasure.CPDF_FT) { return 12; } if (baseUnit == CPDFMeasure.CPDF_YD) { return 36; } if (baseUnit == CPDFMeasure.CPDF_MI) { return 63360; } return 0; } internal double GetMeasureAreaRatio() { if (RulerBaseUnit == CPDFMeasure.CPDF_PT) { return CPDFMeasure.pt; } if (RulerBaseUnit == CPDFMeasure.CPDF_IN) { return CPDFMeasure.pt_in; } if (RulerBaseUnit == CPDFMeasure.CPDF_MM) { return CPDFMeasure.pt_mm; } if (RulerBaseUnit == CPDFMeasure.CPDF_CM) { return CPDFMeasure.pt_cm; } if (RulerBaseUnit == CPDFMeasure.CPDF_M) { return CPDFMeasure.pt_m; } if (RulerBaseUnit == CPDFMeasure.CPDFO_KM) { return CPDFMeasure.pt_km; } if (RulerBaseUnit == CPDFMeasure.CPDF_FT) { return CPDFMeasure.pt_ft; } if (RulerBaseUnit == CPDFMeasure.CPDF_YD) { return CPDFMeasure.pt_yd; } if (RulerBaseUnit == CPDFMeasure.CPDF_MI) { return CPDFMeasure.pt_mi; } return 0; } public int GetMeasureSavePrecision() { if (Precision == 1) { return CPDFMeasure.PRECISION_VALUE_ZERO; } if (Precision == 0.1) { return CPDFMeasure.PRECISION_VALUE_ONE; } if (Precision == 0.01) { return CPDFMeasure.PRECISION_VALUE_TWO; } if (Precision == 0.001) { return CPDFMeasure.PRECISION_VALUE_THREE; } if (Precision == 0.0001) { return CPDFMeasure.PRECISION_VALUE_FOUR; } return 0; } internal 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; } internal double GetMeasureLength(Point startPoint, Point endPoint, double zoom) { try { double inch = GetPointLength(startPoint, endPoint, zoom); double ratio = GetMeasureRatio(RulerBaseUnit); double rate = RulerTranslate / RulerBase; return inch * rate / ratio; } catch (Exception ex) { } return 0; } public double GetMeasurePDFLength(double lenght) { try { double inch = lenght / 72D; double ratio = GetMeasureRatio(RulerBaseUnit); double rate = RulerTranslate / RulerBase; return inch * rate / ratio; } catch (Exception ex) { } return 0; } public double GetMeasurePDFArea(double area) { try { double inch = area; double ratio = GetMeasureAreaRatio(); double rate = RulerTranslate / RulerBase; return inch * ratio * ratio * rate * rate; } catch (Exception ex) { } return 0; } public string GetPrecisionData(double number) { NumberFormatInfo formatInfo = new NumberFormatInfo(); formatInfo.NumberDecimalDigits = 2; if (Precision == 1) { formatInfo.NumberDecimalDigits = 0; } if (Precision == 0.1) { formatInfo.NumberDecimalDigits = 1; } if (Precision == 0.01) { formatInfo.NumberDecimalDigits = 2; } if (Precision == 0.001) { formatInfo.NumberDecimalDigits = 3; } if (Precision == 0.0001) { formatInfo.NumberDecimalDigits = 4; } if (Precision == 0.00001) { formatInfo.NumberDecimalDigits = 5; } return number.ToString("N", formatInfo); } internal double ComputePolygonArea(List points) { int point_num = points.Count; if (point_num < 3) return 0.0; double s = points[0].Y * (points[point_num - 1].X - points[1].X); for (int i = 1; i < point_num; ++i) s += points[i].Y * (points[i - 1].X - points[(i + 1) % point_num].X); return Math.Abs(s / 2.0); } } }