示例#1
0
        static public void AddBackgroundOnPage(Form1 Parent)
        {
            if (Parent.m_CurDoc == null)
            {
                Document.CreateNewDoc(Parent);
            }

            IAUX_Inst             auxInst          = Parent.m_pxcInst.GetExtension("AUX");
            IPXC_BackgroundParams backgroundParams = Parent.m_pxcInst.CreateBackgroundParams();
            IColor fillColor = auxInst.CreateColor(ColorType.ColorType_RGB);

            fillColor.SetRGB(0.5f, 1.0f, 0.5f);
            IPXC_Pages pages  = Parent.m_CurDoc.Pages;
            IBitSet    bitSet = auxInst.CreateBitSet(pages.Count);

            bitSet.Set(0, pages.Count, true);
            backgroundParams.FillColor = fillColor;
            backgroundParams.VAlign    = 0;
            backgroundParams.HAlign    = 2;
            backgroundParams.Scale     = 60;
            backgroundParams.Rotation  = 45;
            Parent.m_CurDoc.PlaceBackgrounds(bitSet, backgroundParams);

            backgroundParams.BackgroundFile = System.Environment.CurrentDirectory + "\\Images\\Editor_welcome.png";
            backgroundParams.BackgroundPage = 0;
            backgroundParams.VAlign         = 2;
            backgroundParams.HAlign         = 0;
            backgroundParams.Scale          = 60;
            backgroundParams.Rotation       = 45;
            backgroundParams.Opacity        = 50;
            backgroundParams.BackgroundType = PXC_BackgroundType.Background_Image;
            backgroundParams.Flags         |= (uint)PXC_BackgroundFlags.BackgroundFlag_ScaleToPage;
            Parent.m_CurDoc.PlaceBackgrounds(bitSet, backgroundParams);
            Marshal.ReleaseComObject(pages);
        }
        static public int RemoveFirstPageFromTheDocument(Form1 Parent)
        {
            if (Parent.m_CurDoc == null)
            {
                Document.OpenDocFromStringPath(Parent);
            }
            IAUX_Inst auxInst = (IAUX_Inst)Parent.m_pxcInst.GetExtension("AUX");
            IBitSet   bs      = auxInst.CreateBitSet(1);

            bs.Set(0);
            IPXC_UndoRedoData urd   = null;
            IPXC_Pages        pages = Parent.m_CurDoc.Pages;

            if (pages.Count > 1)
            {
                pages.DeletePages(bs, null, out urd);
            }
            else
            {
                MessageBox.Show("The last page can't be removed from the document!");
            }
            Marshal.ReleaseComObject(urd);
            Marshal.ReleaseComObject(pages);
            return((int)Form1.eFormUpdateFlags.efuf_All);
        }
示例#3
0
        static public int ConvertToPDF(Form1 Parent)
        {
            if (Parent.m_CurDoc == null)
            {
                Document.CreateNewDoc(Parent);
            }

            IIXC_Inst  ixcInst = Parent.m_pxcInst.GetExtension("IXC");
            IAUX_Inst  auxInst = Parent.m_pxcInst.GetExtension("AUX");
            IPXC_Pages pages   = Parent.m_CurDoc.Pages;
            IPXC_Page  Page    = pages[0];
            double     nHeight = 0.0;
            double     nWidth  = 0.0;

            Page.GetDimension(out nWidth, out nHeight);
            IIXC_Image img = ixcInst.CreateEmptyImage();

            img.Load(System.Environment.CurrentDirectory + "\\Images\\Editor_welcome.png");
            IIXC_Page           ixcPage = img.GetPage(0);
            IPXC_Image          pxcImg  = Parent.m_CurDoc.AddImageFromIXCPage(ixcPage);
            IPXC_ContentCreator CC      = Parent.m_CurDoc.CreateContentCreator();
            PXC_Rect            rcImg   = new PXC_Rect();

            CC.SaveState();
            {
                //Proportional resize rectangle calculation
                {
                    double k1 = nWidth / nHeight;
                    double k2 = (double)pxcImg.Width / pxcImg.Height;
                    if (k1 >= k2)
                    {
                        rcImg.top   = nHeight;
                        rcImg.right = nWidth / 2.0 + rcImg.top * k2 / 2.0;
                        rcImg.left  = nWidth / 2.0 - rcImg.top * k2 / 2.0;
                    }
                    else
                    {
                        rcImg.right  = nWidth;
                        rcImg.top    = nHeight / 2.0 + rcImg.right / k2 / 2.0;
                        rcImg.bottom = nHeight / 2.0 - rcImg.right / k2 / 2.0;
                    }
                }
                //Moving the image rectangle to the center

                PXC_Rect rcImage = new PXC_Rect();
                rcImage.right = 1;
                rcImage.top   = 1;
                PXC_Matrix matrix = Page.GetMatrix(PXC_BoxType.PBox_PageBox);
                matrix = auxInst.MathHelper.Matrix_RectToRect(ref rcImage, ref rcImg);
                CC.ConcatCS(ref matrix);
                CC.PlaceImage(pxcImg);
            }
            CC.RestoreState();
            Page.PlaceContent(CC.Detach());

            Marshal.ReleaseComObject(Page);
            Marshal.ReleaseComObject(pages);

            return((int)Form1.eFormUpdateFlags.efuf_All);
        }
示例#4
0
        static public void AddHeadersAndFootersOnPages(Form1 Parent)
        {
            if (Parent.m_CurDoc == null)
            {
                Document.CreateNewDoc(Parent);
            }

            IAUX_Inst auxInst = Parent.m_pxcInst.GetExtension("AUX");
            IPXC_HeaderAndFooterParams firstHeaderFooter = Parent.m_pxcInst.CreateHeaderAndFooterParams();
            IPXC_Font font  = Parent.m_CurDoc.CreateNewFont("Arial", (uint)PXC_CreateFontFlags.CreateFont_Serif, 400);
            IColor    color = auxInst.CreateColor(ColorType.ColorType_RGB);

            color.SetRGB(0, 0, 0);
            firstHeaderFooter.Font           = font;
            firstHeaderFooter.FillColor      = color;
            firstHeaderFooter.LeftHeaderText = "%[Page]";
            firstHeaderFooter.LeftFooterText = "%[Page] of %[Pages]";
            firstHeaderFooter.BottomMargin   = 36.0f;
            firstHeaderFooter.TopMargin      = 36.0f;
            firstHeaderFooter.RightMargin    = 36.0f;
            firstHeaderFooter.LeftMargin     = 36.0f;
            firstHeaderFooter.FontSize       = 30.0f;
            IPXC_Pages pages  = Parent.m_CurDoc.Pages;
            IBitSet    bitSet = auxInst.CreateBitSet(pages.Count);

            bitSet.Set(0, pages.Count, true);
            Parent.m_CurDoc.PlaceHeadersAndFooters(bitSet, firstHeaderFooter);

            IPXC_HeaderAndFooterParams secondHeaderFooter = Parent.m_pxcInst.CreateHeaderAndFooterParams();

            font = Parent.m_CurDoc.CreateNewFont("Comic Sans MS", (uint)PXC_CreateFontFlags.CreateFont_Italic, 1000);
            color.SetRGB(0.35f, 0.48f, 0.35f);
            secondHeaderFooter.Font             = font;
            secondHeaderFooter.FillColor        = color;
            secondHeaderFooter.CenterHeaderText = "%[Date:MM.dd.yyyy] %[Time]";
            secondHeaderFooter.CenterFooterText = "Version %[AppVersion]";
            secondHeaderFooter.BottomMargin     = 20.0f;
            secondHeaderFooter.TopMargin        = 20.0f;
            secondHeaderFooter.RightMargin      = 40.0f;
            secondHeaderFooter.LeftMargin       = 40.0f;
            secondHeaderFooter.FontSize         = 15.0f;
            Parent.m_CurDoc.PlaceHeadersAndFooters(bitSet, secondHeaderFooter);

            IPXC_HeaderAndFooterParams thirdHeaderFooter = Parent.m_pxcInst.CreateHeaderAndFooterParams();

            font = Parent.m_CurDoc.CreateNewFont("Times New Roman", (uint)PXC_CreateFontFlags.CreateFont_Monospaced, 700);
            color.SetRGB(0.67f, 0.23f, 0.8f);
            thirdHeaderFooter.Font            = font;
            thirdHeaderFooter.FillColor       = color;
            thirdHeaderFooter.RightHeaderText = "%[Computer]";
            thirdHeaderFooter.RightFooterText = "%[User]";
            thirdHeaderFooter.BottomMargin    = 40.0f;
            thirdHeaderFooter.TopMargin       = 40.0f;
            thirdHeaderFooter.RightMargin     = 20.0f;
            thirdHeaderFooter.LeftMargin      = 20.0f;
            thirdHeaderFooter.FontSize        = 20.0f;
            Parent.m_CurDoc.PlaceHeadersAndFooters(bitSet, thirdHeaderFooter);
            Marshal.ReleaseComObject(pages);
        }
        static public int AddTextAnnotation(Form1 Parent)
        {
            if (Parent.m_CurDoc == null)
            {
                Document.CreateNewDoc(Parent);
            }

            IPXC_UndoRedoData urData    = null;
            IPXC_Pages        pages     = Parent.m_CurDoc.Pages;
            IPXC_Page         firstPage = pages[0];
            PXC_Rect          rcPage    = firstPage.get_Box(PXC_BoxType.PBox_PageBox);

            Marshal.ReleaseComObject(firstPage);
            IPXC_Page page    = pages.InsertPage(0, ref rcPage, out urData);
            IPXS_Inst pxsInst = Parent.m_pxcInst.GetExtension("PXS");
            IAUX_Inst auxInst = Parent.m_pxcInst.GetExtension("AUX");
            //Getting Text annotation atom for the InsertNewAnnot method
            uint nText = pxsInst.StrToAtom("Text");

            double   nCX   = (rcPage.right - rcPage.left) / 2.0;
            double   nCY   = (rcPage.top - rcPage.bottom) / 2.0;
            PXC_Rect rcOut = new PXC_Rect();

            rcOut.left   = nCX - 200;
            rcOut.bottom = nCY + 250;
            rcOut.right  = nCX - 150;
            rcOut.top    = nCY + 300;
            IPXC_Annotation     annot = unchecked (page.InsertNewAnnot(nText, ref rcOut));
            IPXC_AnnotData_Text aData = annot.Data as IPXC_AnnotData_Text;

            aData.Contents = "Text Annotation 1.";
            aData.Title    = "Text Annotation 1";
            var color = auxInst.CreateColor(ColorType.ColorType_RGB);

            color.SetRGB(0.0f, 0.8f, 0.8f);
            aData.Color   = color;
            aData.Opacity = 0.5f;
            annot.Data    = aData;

            rcOut.bottom  -= 100;
            rcOut.top     -= 100;
            annot          = unchecked (page.InsertNewAnnot(nText, ref rcOut));
            aData          = annot.Data as IPXC_AnnotData_Text;
            aData.Contents = "Text Annotation 2.";
            aData.Title    = "Text Annotation 2";
            color          = auxInst.CreateColor(ColorType.ColorType_RGB);
            color.SetRGB(0.5f, 0.4f, 0.48f);
            aData.Color = color;
            annot.Data  = aData;
            Marshal.ReleaseComObject(page);
            Marshal.ReleaseComObject(pages);

            return((int)Form1.eFormUpdateFlags.efuf_Annotations);
        }
        static public int AddPopupAnnotation(Form1 Parent)
        {
            if (Parent.m_CurDoc == null)
            {
                Document.CreateNewDoc(Parent);
            }

            IPXC_UndoRedoData urData    = null;
            IPXC_Pages        pages     = Parent.m_CurDoc.Pages;
            IPXC_Page         firstPage = pages[0];
            PXC_Rect          rcPage    = firstPage.get_Box(PXC_BoxType.PBox_PageBox);

            Marshal.ReleaseComObject(firstPage);
            IPXC_Page page    = pages.InsertPage(0, ref rcPage, out urData);
            IPXS_Inst pxsInst = Parent.m_pxcInst.GetExtension("PXS");
            IAUX_Inst auxInst = Parent.m_pxcInst.GetExtension("AUX");
            //Getting Popup annotation atom for the InsertNewAnnot method
            uint nSquare = pxsInst.StrToAtom("Square");

            double   nCX   = (rcPage.right - rcPage.left) / 2.0;
            double   nCY   = (rcPage.top - rcPage.bottom) / 2.0;
            PXC_Rect rcOut = new PXC_Rect();

            rcOut.left   = nCX - 200;
            rcOut.bottom = nCY + 200;
            rcOut.right  = nCX + 200;
            rcOut.top    = nCY + 300;
            IPXC_Annotation             sqAnnot = page.InsertNewAnnot(nSquare, ref rcOut);
            IPXC_AnnotData_SquareCircle aSData  = sqAnnot.Data as IPXC_AnnotData_SquareCircle;
            var color = auxInst.CreateColor(ColorType.ColorType_RGB);

            color.SetRGB(0.0f, 0.8f, 0.8f);
            aSData.Color    = color;
            aSData.Title    = "Square annotation 1.";
            aSData.Contents = "Popup Annotation 1.";
            sqAnnot.Data    = aSData;

            //Getting Text annotation atom for the InsertNewAnnot method
            uint                 nText = pxsInst.StrToAtom("Popup");
            IPXC_Annotation      annot = page.InsertNewAnnot(nText, ref rcOut);
            IPXC_AnnotData_Popup aData = annot.Data as IPXC_AnnotData_Popup;

            aData.Opened = true;
            annot.Data   = aData;
            sqAnnot.SetPopup(annot);

            Marshal.ReleaseComObject(page);
            Marshal.ReleaseComObject(pages);

            return((int)Form1.eFormUpdateFlags.efuf_Annotations);
        }
        static public int DrawSquareAnnotation(Form1 Parent)
        {
            if (Parent.m_CurDoc == null)
            {
                Document.CreateNewDoc(Parent);
            }
            IPXC_Pages pages   = Parent.m_CurDoc.Pages;
            IPXC_Page  page    = pages[0];
            PXC_Rect   rcPage  = page.get_Box(PXC_BoxType.PBox_PageBox);
            IPXS_Inst  pxsInst = Parent.m_pxcInst.GetExtension("PXS");
            IAUX_Inst  auxInst = Parent.m_pxcInst.GetExtension("AUX");
            //Getting Square annotation atom for the InsertNewAnnot method
            uint nSquare = pxsInst.StrToAtom("Square");
            //Placing it in the center of page
            double   nCX   = (rcPage.right - rcPage.left) / 2.0;
            double   nCY   = (rcPage.top - rcPage.bottom) / 2.0;
            PXC_Rect rcOut = new PXC_Rect();

            rcOut.left   = nCX - 200;
            rcOut.bottom = nCY - 100;
            rcOut.right  = nCX + 200;
            rcOut.top    = nCY + 100;
            IPXC_Annotation             annot = page.InsertNewAnnot(nSquare, ref rcOut);
            IPXC_AnnotData_SquareCircle aData = annot.Data as IPXC_AnnotData_SquareCircle;

            aData.Opacity = 0.7;
            var color = auxInst.CreateColor(ColorType.ColorType_RGB);

            color.SetRGB(0.0f, 1.0f, 1.0f);
            aData.Color = color;
            //Setting dashed border pattern
            var border = new PXC_AnnotBorder();

            border.nStyle       = PXC_AnnotBorderStyle.ABS_Dashed;
            border.nWidth       = 4.0f;
            border.DashArray    = new float[10];
            border.DashArray[0] = border.DashArray[1] = 16.0f; //Width of dashes
            border.nDashCount   = 2;                           //Number of dashes
            aData.set_Border(border);
            annot.Data = aData;
            Marshal.ReleaseComObject(page);
            Marshal.ReleaseComObject(pages);

            return((int)Form1.eFormUpdateFlags.efuf_Annotations);
        }
示例#8
0
        static public int AddAttachmentAsAnnotation(Form1 Parent)
        {
            if (Parent.m_CurDoc == null)
            {
                Document.CreateNewDoc(Parent);
            }

            IPXC_UndoRedoData urData    = null;
            IPXC_Pages        pages     = Parent.m_CurDoc.Pages;
            IPXC_Page         firstPage = pages[0];
            PXC_Rect          rcPage    = firstPage.get_Box(PXC_BoxType.PBox_PageBox);

            Marshal.ReleaseComObject(firstPage);
            IPXC_Page page    = pages.InsertPage(0, ref rcPage, out urData);
            IPXS_Inst pxsInst = Parent.m_pxcInst.GetExtension("PXS");
            IAUX_Inst auxInst = Parent.m_pxcInst.GetExtension("AUX");
            //Getting File attachment annotation atom for the InsertNewAnnot method
            uint nText = pxsInst.StrToAtom("FileAttachment");

            double   nCX   = (rcPage.right - rcPage.left) / 2.0;
            double   nCY   = (rcPage.top - rcPage.bottom) / 2.0;
            PXC_Rect rcOut = new PXC_Rect();

            rcOut.left   = nCX - 200;
            rcOut.bottom = nCY + 250;
            rcOut.right  = nCX - 150;
            rcOut.top    = nCY + 300;
            IPXC_Annotation annot = page.InsertNewAnnot(nText, ref rcOut);
            IPXC_AnnotData_FileAttachment aData = annot.Data as IPXC_AnnotData_FileAttachment;

            aData.Contents = "FileAttachment Annotation 1.";
            string                  sFilePath = System.Environment.CurrentDirectory + "\\Documents\\Hobbit.txt";
            IPXC_FileSpec           fileSpec  = Parent.m_CurDoc.CreateEmbeddFile(sFilePath);
            IPXC_EmbeddedFileStream EFS       = fileSpec.EmbeddedFile;

            EFS.UpdateFromFile2(sFilePath);
            aData.FileAttachment = fileSpec;
            annot.Data           = aData;

            Marshal.ReleaseComObject(page);
            Marshal.ReleaseComObject(pages);

            return((int)Form1.eFormUpdateFlags.efuf_Annotations | (int)Form1.eFormUpdateFlags.efuf_Attachments);
        }
示例#9
0
        static public void AddWatermarksOnPage(Form1 Parent)
        {
            if (Parent.m_CurDoc == null)
            {
                Document.CreateNewDoc(Parent);
            }

            IAUX_Inst            auxInst   = Parent.m_pxcInst.GetExtension("AUX");
            IPXC_WatermarkParams watermark = Parent.m_pxcInst.CreateWatermarkParams();
            IColor fillColor = auxInst.CreateColor(ColorType.ColorType_RGB);

            fillColor.SetRGB(0.4f, 0.2f, 0.6f);
            watermark.Text        = "WATERMARK";
            watermark.HAlign      = 50;
            watermark.VAlign      = 0;
            watermark.FillColor   = fillColor;
            watermark.Rotation    = -30;
            watermark.FontSize    = 200;
            watermark.StrokeWidth = 5.0f;
            IPXC_Pages pages  = Parent.m_CurDoc.Pages;
            IBitSet    bitSet = auxInst.CreateBitSet(pages.Count);

            bitSet.Set(0, pages.Count, true);
            Parent.m_CurDoc.PlaceWatermark(bitSet, watermark);
            watermark.Text      = "";
            watermark.ImageFile = System.Environment.CurrentDirectory + "\\Images\\Editor_welcome.png";
            PXC_Size rect = new PXC_Size();

            rect.cx            = 200;
            rect.cy            = 400;
            watermark.Rotation = -45;
            watermark.VAlign   = 2;
            watermark.set_ImageSize(rect);
            watermark.Flags        |= (uint)PXC_WatermarkFlags.WatermarkFlag_PlaceOnBackground;
            watermark.WatermarkType = PXC_WatermarkType.Watermark_Image;
            watermark.Opacity       = 50;
            Parent.m_CurDoc.PlaceWatermark(bitSet, watermark);
            Marshal.ReleaseComObject(pages);
        }
示例#10
0
        static public int MoveFirstPageToBack(Form1 Parent)
        {
            if (Parent.m_CurDoc == null)
            {
                Document.OpenDocFromStringPath(Parent);
            }
            IAUX_Inst auxInst = (IAUX_Inst)Parent.m_pxcInst.GetExtension("AUX");
            IBitSet   bs      = auxInst.CreateBitSet(1);

            bs.Set(0);
            IPXC_UndoRedoData urd   = null;
            IPXC_Pages        pages = Parent.m_CurDoc.Pages;

            if (pages.Count > 1)
            {
                pages.MovePages(bs, pages.Count, null, out urd);
            }
            else
            {
                MessageBox.Show("Current document has one page - nothing to move!");
            }
            Marshal.ReleaseComObject(pages);
            return((int)Form1.eFormUpdateFlags.efuf_All);
        }
示例#11
0
        static public void ConvertToImage(Form1 Parent)
        {
            if (Parent.m_CurDoc == null)
            {
                Document.OpenDocFromStringPath(Parent);
            }

            IIXC_Inst  ixcInst = Parent.m_pxcInst.GetExtension("IXC");
            IAUX_Inst  auxInst = Parent.m_pxcInst.GetExtension("AUX");
            IPXC_Pages pages   = Parent.m_CurDoc.Pages;
            IPXC_Page  Page    = pages[Parent.CurrentPage];
            double     nHeight = 0.0;
            double     nWidth  = 0.0;

            Page.GetDimension(out nWidth, out nHeight);
            uint                  cx      = (uint)(nWidth * 150 / 72.0);
            uint                  cy      = (uint)(nHeight * 150 / 72.0);
            IIXC_Page             ixcPage = ixcInst.Page_CreateEmpty(cx, cy, IXC_PageFormat.PageFormat_8ARGB, 0);
            IPXC_PageRenderParams param   = Parent.m_pxcInst.CreateRenderParams();

            if (param != null)
            {
                param.RenderFlags |= ((uint)PXC_RenderFlags.RF_SmoothImages | (uint)PXC_RenderFlags.RF_SmoothLineArts);
                param.SetColor(PXC_RenderColor.RC_PageColor1, 255, 255, 255, 0);
                param.TextSmoothMode |= PXC_TextSmoothMode.TSM_Antialias;
            }
            tagRECT rc = new tagRECT();

            rc.right  = (int)cx;
            rc.bottom = (int)cy;
            PXC_Matrix matrix = Page.GetMatrix(PXC_BoxType.PBox_PageBox);

            matrix = auxInst.MathHelper.Matrix_Scale(ref matrix, cx / nWidth, -cy / nHeight);
            matrix = auxInst.MathHelper.Matrix_Translate(ref matrix, 0, cy);
            Page.DrawToIXCPage(ixcPage, ref rc, ref matrix, param);
            ixcPage.FmtInt[(uint)IXC_FormatParametersIDS.FP_ID_XDPI]       = 150;
            ixcPage.FmtInt[(uint)IXC_FormatParametersIDS.FP_ID_YDPI]       = 150;
            ixcPage.FmtInt[(uint)IXC_FormatParametersIDS.FP_ID_INTERLACE]  = 1;
            ixcPage.FmtInt[(uint)IXC_FormatParametersIDS.FP_ID_FILTER]     = 5;
            ixcPage.FmtInt[(uint)IXC_FormatParametersIDS.FP_ID_COMP_LEVEL] = 5;
            ixcPage.FmtInt[(uint)IXC_FormatParametersIDS.FP_ID_FORMAT]     = (uint)IXC_ImageFileFormatIDs.FMT_PNG_ID;
            IIXC_Image ixcImg = ixcInst.CreateEmptyImage();

            ixcImg.InsertPage(ixcPage, 0);
            string sPath = Path.GetTempFileName();

            sPath = sPath.Replace(".tmp", ".png");
            ixcImg.Save(sPath, IXC_CreationDisposition.CreationDisposition_Overwrite);
            Process.Start(sPath);

            ixcImg.RemovePageByIndex(0);
            ixcPage = ixcInst.Page_CreateEmpty(cx, cy, IXC_PageFormat.PageFormat_8Gray, 0);
            if (param != null)
            {
                param.SetColor(PXC_RenderColor.RC_PageColor1, 255, 255, 255, 255);
            }
            Page.DrawToIXCPage(ixcPage, ref rc, ref matrix, param);
            ixcPage.FmtInt[(uint)IXC_FormatParametersIDS.FP_ID_XDPI]         = 150;
            ixcPage.FmtInt[(uint)IXC_FormatParametersIDS.FP_ID_YDPI]         = 150;
            ixcPage.FmtInt[(uint)IXC_FormatParametersIDS.FP_ID_YSUBSAMPLING] = 20;
            ixcPage.FmtInt[(uint)IXC_FormatParametersIDS.FP_ID_FORMAT]       = (uint)IXC_ImageFileFormatIDs.FMT_JPEG_ID;
            ixcPage.FmtInt[(uint)IXC_FormatParametersIDS.FP_ID_JPEG_QUALITY] = 100;
            ixcImg.InsertPage(ixcPage, 0);
            sPath = sPath.Replace(".png", ".jpg");
            ixcImg.Save(sPath, IXC_CreationDisposition.CreationDisposition_Overwrite);
            Process.Start(sPath);
            Marshal.ReleaseComObject(Page);

            ixcImg.RemovePageByIndex(0);
            ixcPage = ixcInst.Page_CreateEmpty(cx, cy, IXC_PageFormat.PageFormat_8RGB, 0);
            for (int i = 0; i < pages.Count; i++)
            {
                Page = pages[(uint)i];
                Page.DrawToIXCPage(ixcPage, ref rc, ref matrix, param);
                ixcPage.FmtInt[(uint)IXC_FormatParametersIDS.FP_ID_XDPI]   = 150;
                ixcPage.FmtInt[(uint)IXC_FormatParametersIDS.FP_ID_YDPI]   = 150;
                ixcPage.FmtInt[(uint)IXC_FormatParametersIDS.FP_ID_ITYPE]  = 1;
                ixcPage.FmtInt[(uint)IXC_FormatParametersIDS.FP_ID_FORMAT] = (uint)IXC_ImageFileFormatIDs.FMT_TIFF_ID;
                ixcImg.InsertPage(ixcPage);
                ixcPage = ixcInst.Page_CreateEmpty(cx, cy, IXC_PageFormat.PageFormat_8Gray, 0);
                Marshal.ReleaseComObject(Page);
            }
            sPath = sPath.Replace(".jpg", ".tiff");
            ixcImg.Save(sPath, IXC_CreationDisposition.CreationDisposition_Overwrite);
            Process.Start(sPath);


            Marshal.ReleaseComObject(pages);
        }
        static public int AddFreeTextAnnotation(Form1 Parent)
        {
            if (Parent.m_CurDoc == null)
            {
                Document.CreateNewDoc(Parent);
            }

            IPXC_UndoRedoData urData    = null;
            IPXC_Pages        pages     = Parent.m_CurDoc.Pages;
            IPXC_Page         firstPage = pages[0];
            PXC_Rect          rcPage    = firstPage.get_Box(PXC_BoxType.PBox_PageBox);

            Marshal.ReleaseComObject(firstPage);
            IPXC_Page page    = pages.InsertPage(0, ref rcPage, out urData);
            IPXS_Inst pxsInst = Parent.m_pxcInst.GetExtension("PXS");
            IAUX_Inst auxInst = Parent.m_pxcInst.GetExtension("AUX");
            //Getting Free text annotation atom for the InsertNewAnnot method
            uint nText = pxsInst.StrToAtom("FreeText");

            double   nCX   = (rcPage.right - rcPage.left) / 2.0;
            double   nCY   = (rcPage.top - rcPage.bottom) / 2.0;
            PXC_Rect rcOut = new PXC_Rect();

            rcOut.left   = nCX - 200;
            rcOut.bottom = nCY + 200;
            rcOut.right  = nCX + 200;
            rcOut.top    = nCY + 300;
            IPXC_Annotation         annot = unchecked (page.InsertNewAnnot(nText, ref rcOut));
            IPXC_AnnotData_FreeText aData = annot.Data as IPXC_AnnotData_FreeText;

            aData.Contents = "Free Text Annotation 1.";
            aData.Title    = "Free Text Annotation 1.";
            IPXC_Font font = Parent.m_CurDoc.CreateNewFont("Arial", (uint)PXC_CreateFontFlags.CreateFont_Monospaced, 700);

            aData.DefaultFont     = font;
            aData.DefaultFontSize = 40;
            var color = auxInst.CreateColor(ColorType.ColorType_RGB);

            color.SetRGB(0.7f, 0.7f, 0.7f);
            aData.DefaultTextColor = color;
            aData.Opacity          = 0.5;
            aData.TextRotation     = 90;
            aData.Subject          = "Typewriter";
            //Setting dashed border pattern
            var border = new PXC_AnnotBorder();

            border.nStyle       = PXC_AnnotBorderStyle.ABS_Beveled;
            border.nWidth       = 4.0f;
            border.DashArray    = new float[15];
            border.DashArray[0] = border.DashArray[1] = 5.0f; //Width of dashes
            border.nDashCount   = 2;                          //Number of dashes
            aData.set_Border(border);
            annot.Data = aData;

            rcOut.bottom         -= 200;
            rcOut.top            -= 200;
            annot                 = unchecked (page.InsertNewAnnot(nText, ref rcOut));
            aData                 = annot.Data as IPXC_AnnotData_FreeText;
            aData.Contents        = "Free Text Annotation 2.";
            aData.DefaultFontSize = 15.0;
            color                 = auxInst.CreateColor(ColorType.ColorType_RGB);
            color.SetRGB(0.0f, 0.0f, 0.0f);
            aData.SColor           = color;
            aData.DefaultTextColor = color;
            //Setting dashed border pattern
            border              = new PXC_AnnotBorder();
            border.nStyle       = PXC_AnnotBorderStyle.ABS_Dashed;
            border.nWidth       = 10.0f;
            border.DashArray    = new float[20];
            border.DashArray[0] = border.DashArray[1] = 5.0f; //Width of dashes
            border.nDashCount   = 4;                          //Number of dashes
            aData.set_Border(border);
            annot.Data = aData;

            rcOut.bottom         -= 200;
            rcOut.top            -= 200;
            annot                 = unchecked (page.InsertNewAnnot(nText, ref rcOut));
            aData                 = annot.Data as IPXC_AnnotData_FreeText;
            aData.Contents        = "Free Text Annotation 3.";
            color                 = auxInst.CreateColor(ColorType.ColorType_RGB);
            aData.DefaultFontSize = 15.0;
            color.SetRGB(1.0f, 1.0f, 1.0f);
            aData.SColor = color;
            color.SetRGB(0.0f, 0.0f, 0.0f);
            aData.DefaultTextColor = color;
            annot.Data             = aData;
            Marshal.ReleaseComObject(page);
            Marshal.ReleaseComObject(pages);

            return((int)Form1.eFormUpdateFlags.efuf_Annotations);
        }
示例#13
0
        static public void ConvertToTXT(Form1 Parent)
        {
            if (Parent.m_CurDoc == null)
            {
                Document.OpenDocFromStringPath(Parent);
            }

            IAUX_Inst     auxInst = Parent.m_pxcInst.GetExtension("AUX");
            IPXC_Pages    pages   = Parent.m_CurDoc.Pages;
            IPXC_Page     Page    = pages[Parent.CurrentPage];
            IPXC_PageText Text    = Page.GetText(null, false);

            string writePath = Path.GetTempFileName();

            writePath = writePath.Replace(".tmp", ".txt");
            StreamWriter stream = new StreamWriter(writePath);

            List <PXC_TextLineInfo> textsLineInfo = new List <PXC_TextLineInfo>();

            for (int i = 0; i < Text.LinesCount; i++)
            {
                PXC_TextLineInfo pxcTLI = Text.LineInfo[(uint)i];
                textsLineInfo.Add(pxcTLI);
            }

            textsLineInfo.Sort(delegate(PXC_TextLineInfo firstTLI, PXC_TextLineInfo secondTLI)
            {
                PXC_RectF rcFirst  = firstTLI.rcBBox;
                PXC_RectF rcSecond = secondTLI.rcBBox;
                auxInst.MathHelper.Rect_TransformDF(ref firstTLI.Matrix, ref rcFirst);
                auxInst.MathHelper.Rect_TransformDF(ref secondTLI.Matrix, ref rcSecond);
                if (rcFirst.top < rcSecond.top)
                {
                    return(1);
                }
                if (rcFirst.top > rcSecond.top)
                {
                    return(-1);
                }

                if (rcFirst.left < rcSecond.left)
                {
                    return(-1);
                }
                if (rcFirst.left > rcSecond.left)
                {
                    return(1);
                }

                return(0);
            });

            for (int i = 0; i < Text.LinesCount; i++)
            {
                stream.Write(Text.GetChars(textsLineInfo[i].nFirstCharIndex, textsLineInfo[i].nCharsCount));
                if (i < Text.LinesCount - 1)
                {
                    stream.Write((textsLineInfo[i].rcBBox.top == textsLineInfo[i + 1].rcBBox.top) ? " " : "\r\n");
                }
            }
            stream.Close();
            Process.Start(writePath);

            Marshal.ReleaseComObject(Page);
            Marshal.ReleaseComObject(pages);
        }
示例#14
0
        static public void AddTextFieldsOnPage(Form1 Parent)
        {
            int index = 1;
            //delegate string CheckNamesFields(IPXC_Document Doc, string fieldName, ref int x);
            CheckNamesFields checkNamesFields = (IPXC_Document Doc, string fName, ref int inx) =>
            {
                string sFieldName = "";
                uint   i          = 0;
                do
                {
                    sFieldName = fName + inx;
                    IPXC_FormField ff = Doc.AcroForm.GetFieldByName(sFieldName);
                    if (ff == null)
                    {
                        break;
                    }
                    inx++;
                    i++;
                }while (i <= Doc.AcroForm.FieldsCount);
                inx++;
                return(sFieldName);
            };

            if (Parent.m_CurDoc == null)
            {
                Document.CreateNewDoc(Parent);
            }
            PXC_Rect rc = new PXC_Rect();

            rc.top   = 800;
            rc.right = 600;

            IPXC_UndoRedoData urD       = null;
            IPXC_Pages        pages     = Parent.m_CurDoc.Pages;
            IPXC_Page         firstPage = pages.InsertPage(0, rc, out urD);
            PXC_Rect          textRC    = new PXC_Rect();

            textRC.top    = rc.top - 1.0 * 72.0;
            textRC.left   = 1.0 * 72.0;
            textRC.bottom = rc.top - 2.0 * 72.0;
            textRC.right  = rc.right - 1.0 * 72.0;

            //Ordinary text field
            IPXC_FormField firstTextBOX = Parent.m_CurDoc.AcroForm.CreateField(checkNamesFields(Parent.m_CurDoc, "Text", ref index), PXC_FormFieldType.FFT_Text, 0, textRC);

            firstTextBOX.SetValueText("Ordinary text field");
            Marshal.ReleaseComObject(firstTextBOX);

            //Read-only and locked text field with custom style
            textRC.top    = rc.top - 3.0 * 72.0;
            textRC.bottom = rc.top - 4.0 * 72.0;
            IPXC_FormField secondTextBOX = Parent.m_CurDoc.AcroForm.CreateField(checkNamesFields(Parent.m_CurDoc, "Text", ref index), PXC_FormFieldType.FFT_Text, 0, textRC);

            secondTextBOX.SetValueText("Read-only and locked text field with custom style");
            IAUX_Inst             auxInst = Parent.m_pxcInst.GetExtension("AUX");
            IPXC_Annotation       annot   = secondTextBOX.Widget[0];
            IPXC_AnnotData_Widget WData   = (IPXC_AnnotData_Widget)annot.Data;
            IColor color = auxInst.CreateColor(ColorType.ColorType_RGB);

            color.SetRGB(0.9f, 0.9f, 0.6f);
            WData.FColor = color;
            color.SetRGB(0.6f, 0.9f, 0.9f);
            WData.SColor = color;
            PXC_AnnotBorder border = new PXC_AnnotBorder();

            border.nStyle       = PXC_AnnotBorderStyle.ABS_Dashed;
            border.DashArray    = new float[10];
            border.DashArray[0] = border.DashArray[1] = 16.0f; //Width of dashes
            border.nDashCount   = 2;                           //Number of dashes
            border.nWidth       = 5.0f;
            WData.set_Border(ref border);
            annot.Data = WData;
            secondTextBOX.SetFlags((uint)PXC_FormFieldFlag.FFF_ReadOnly, (uint)PXC_FormFieldFlag.FFF_ReadOnly);
            Marshal.ReleaseComObject(secondTextBOX);



            //90 degree orientation text field with multiline option enabled
            textRC.top    = rc.top - 5.0 * 72.0;
            textRC.bottom = rc.top - 7.0 * 72.0;
            IPXC_FormField thirdTextBOX = Parent.m_CurDoc.AcroForm.CreateField(checkNamesFields(Parent.m_CurDoc, "Text", ref index), PXC_FormFieldType.FFT_Text, 0, textRC);

            thirdTextBOX.SetFlags((uint)PXC_FormFieldFlag.TFF_MultiLine, (uint)PXC_FormFieldFlag.TFF_MultiLine);
            thirdTextBOX.SetValueText("90 degree orientation text field with multiline option enabled");
            annot = thirdTextBOX.Widget[0];
            WData = (IPXC_AnnotData_Widget)annot.Data;
            WData.ContentRotation = 90;
            annot.Data            = WData;
            Marshal.ReleaseComObject(thirdTextBOX);

            //Time formatted text field with custom JS that gives current time
            textRC.top    = rc.top - 8.0 * 72.0;
            textRC.bottom = rc.top - 9.0 * 72.0;
            IPXC_FormField fourthTextBOX = Parent.m_CurDoc.AcroForm.CreateField(checkNamesFields(Parent.m_CurDoc, "Text", ref index), PXC_FormFieldType.FFT_Text, 0, textRC);

            annot        = fourthTextBOX.Widget[0];
            annot.Flags |= (uint)PXC_SignDocumentFlags.Sign_TX_Date;
            IPXC_ActionsList actionsList = Parent.m_CurDoc.CreateActionsList();

            //Set script to ActionList
            actionsList.AddJavaScript("var now = new Date()\n" +
                                      "this.getField(\"Text4\").value = now.getHours() + \":\" + now.getMinutes() ");
            fourthTextBOX.Actions[PXC_TriggerType.Trigger_Format] = actionsList;
            Marshal.ReleaseComObject(fourthTextBOX);
            Marshal.ReleaseComObject(firstPage);
            Marshal.ReleaseComObject(pages);
        }
        static public int AddRedactAnnotation(Form1 Parent)
        {
            if (Parent.m_CurDoc == null)
            {
                Document.CreateNewDoc(Parent);
            }

            IPXC_UndoRedoData urData    = null;
            IPXC_Pages        pages     = Parent.m_CurDoc.Pages;
            IPXC_Page         firstPage = pages[0];
            PXC_Rect          rcPage    = firstPage.get_Box(PXC_BoxType.PBox_PageBox);

            Marshal.ReleaseComObject(firstPage);
            IPXC_Page           page    = pages.InsertPage(0, ref rcPage, out urData);
            IPXS_Inst           pxsInst = Parent.m_pxcInst.GetExtension("PXS");
            IAUX_Inst           auxInst = Parent.m_pxcInst.GetExtension("AUX");
            IPXC_ContentCreator CC      = Parent.m_CurDoc.CreateContentCreator();
            double nCX = (rcPage.right - rcPage.left) / 2.0;
            double nCY = (rcPage.top - rcPage.bottom) / 4.0 * 3.0;

            IPXC_Font font = Parent.m_CurDoc.CreateNewFont("Arial", (uint)PXC_CreateFontFlags.CreateFont_Monospaced, 700);

            CC.SetFontSize(30);
            CC.SetFont(font);
            CC.SetColorRGB(0x00000000);
            for (int i = 0; i < 4; i++)
            {
                CC.ShowTextLine(nCX - 190, nCY - (40 * i), "This is a story of long ago.", -1, (uint)PXC_ShowTextLineFlags.STLF_Default | (uint)PXC_ShowTextLineFlags.STLF_AllowSubstitution);
            }
            page.PlaceContent(CC.Detach(), (uint)PXC_PlaceContentFlags.PlaceContent_Replace);
            IPXC_PageText Text = page.GetText(null, false);

            PXC_Rect rcOut = new PXC_Rect();

            rcOut.left   = nCX - 150;
            rcOut.bottom = nCY - 100;
            rcOut.right  = nCX + 150;
            rcOut.top    = nCY + 100;
            //Getting Redact annotation atom for the InsertNewAnnot method
            uint                     nText = pxsInst.StrToAtom("Redact");
            IPXC_Annotation          annot = unchecked (page.InsertNewAnnot(nText, ref rcOut));
            IPXC_AnnotData_Redaction aData = annot.Data as IPXC_AnnotData_Redaction;

            aData.Title = "Redact annotation 1.";

            IPXC_QuadsF quadsF = Parent.m_pxcInst.CreateQuads();
            uint        afafaf = quadsF.Count;
            PXC_RectF   rectF  = new PXC_RectF();

            Text.GetTextQuads3(8, 75, quadsF, out rectF);
            aData.Quads = quadsF;
            var color = auxInst.CreateColor(ColorType.ColorType_RGB);

            color.SetRGB(0.0f, 0.0f, 0.0f);
            aData.FColor = color;
            aData.SColor = color;
            annot.Data   = aData;

            Marshal.ReleaseComObject(page);
            Marshal.ReleaseComObject(pages);

            return((int)Form1.eFormUpdateFlags.efuf_Annotations);
        }
        static public int AddLinkAnnotation(Form1 Parent)
        {
            if (Parent.m_CurDoc == null)
            {
                Document.CreateNewDoc(Parent);
            }

            IPXC_UndoRedoData urData    = null;
            IPXC_Pages        pages     = Parent.m_CurDoc.Pages;
            IPXC_Page         firstPage = pages[0];
            PXC_Rect          rcPage    = firstPage.get_Box(PXC_BoxType.PBox_PageBox);

            Marshal.ReleaseComObject(firstPage);
            IPXC_Page page    = pages.InsertPage(0, ref rcPage, out urData);
            IPXS_Inst pxsInst = Parent.m_pxcInst.GetExtension("PXS");
            IAUX_Inst auxInst = Parent.m_pxcInst.GetExtension("AUX");
            //Getting Link annotation atom for the InsertNewAnnot method
            uint nText = pxsInst.StrToAtom("Link");

            double   nCX   = (rcPage.right - rcPage.left) / 2.0;
            double   nCY   = (rcPage.top - rcPage.bottom) / 2.0;
            PXC_Rect rcOut = new PXC_Rect();

            rcOut.left   = nCX - 200;
            rcOut.bottom = nCY + 250;
            rcOut.right  = nCX + 150;
            rcOut.top    = nCY + 300;
            IPXC_Annotation     annot = unchecked (page.InsertNewAnnot(nText, ref rcOut));
            IPXC_AnnotData_Link aData = annot.Data as IPXC_AnnotData_Link;

            aData.Contents     = "Link Annotation 1.";
            aData.HighlighMode = PXC_AnnotHighlightMode.AHM_Outline;
            var color = auxInst.CreateColor(ColorType.ColorType_RGB);

            color.SetRGB(0.0f, 0.8f, 0.8f);
            aData.Color = color;
            //Setting dashed border pattern
            var border = new PXC_AnnotBorder();

            border.nStyle       = PXC_AnnotBorderStyle.ABS_Dashed;
            border.nWidth       = 4.0f;
            border.DashArray    = new float[10];
            border.DashArray[0] = border.DashArray[1] = 16.0f; //Width of dashes
            border.nDashCount   = 2;                           //Number of dashes
            aData.set_Border(border);
            //Setting the annotation's URI action
            IPXC_ActionsList AL = Parent.m_CurDoc.CreateActionsList();

            AL.AddURI("https://www.google.com");
            annot.set_Actions(PXC_TriggerType.Trigger_Up, AL);
            annot.Data = aData;

            rcOut.bottom  -= 200;
            rcOut.top     -= 200;
            annot          = unchecked (page.InsertNewAnnot(nText, ref rcOut));
            aData          = annot.Data as IPXC_AnnotData_Link;
            aData.Contents = "Link Annotation 2.";
            color          = auxInst.CreateColor(ColorType.ColorType_RGB);
            color.SetRGB(0.5f, 0.4f, 0.48f);
            aData.Color = color;
            //Setting the annotation's Goto action
            PXC_Destination dest = new PXC_Destination();

            dest.nPageNum   = page.Number + 1;
            dest.nType      = PXC_DestType.Dest_XYZ;
            dest.nNullFlags = 15;
            AL = Parent.m_CurDoc.CreateActionsList();
            AL.AddGoto(dest);
            annot.set_Actions(PXC_TriggerType.Trigger_Up, AL);
            annot.Data = aData;
            Marshal.ReleaseComObject(page);
            Marshal.ReleaseComObject(pages);

            return((int)Form1.eFormUpdateFlags.efuf_Annotations);
        }
        static public int AddPolygonAndPolylineAnnotation(Form1 Parent)
        {
            if (Parent.m_CurDoc == null)
            {
                Document.CreateNewDoc(Parent);
            }

            IPXC_UndoRedoData urData    = null;
            IPXC_Pages        pages     = Parent.m_CurDoc.Pages;
            IPXC_Page         firstPage = pages[0];
            PXC_Rect          rcPage    = firstPage.get_Box(PXC_BoxType.PBox_PageBox);

            Marshal.ReleaseComObject(firstPage);
            IPXC_Page page    = pages.InsertPage(0, ref rcPage, out urData);
            IPXS_Inst pxsInst = Parent.m_pxcInst.GetExtension("PXS");
            IAUX_Inst auxInst = Parent.m_pxcInst.GetExtension("AUX");
            //Getting Polygon and Polyline annotations atom for the InsertNewAnnot method
            string sPolygon  = "Polygon";
            string sPolyline = "PolyLine";
            uint   nText     = pxsInst.StrToAtom(sPolygon);

            for (int p = 0; p < 2; p++)
            {
                double   nCX   = (rcPage.right - rcPage.left) / 2.0;
                double   nCY   = (rcPage.top - rcPage.bottom) / 2.0;
                PXC_Rect rcOut = new PXC_Rect();
                rcOut.left   = nCX - 150;
                rcOut.bottom = nCY + 200;
                rcOut.right  = nCX + 150;
                rcOut.top    = nCY + 300;
                if (p > 0)
                {
                    nText        = pxsInst.StrToAtom(sPolyline);
                    rcOut.bottom = nCY - 200;
                    rcOut.top    = nCY - 100;
                }


                IPXC_Annotation     annot = unchecked (page.InsertNewAnnot(nText, ref rcOut));
                IPXC_AnnotData_Poly aData = annot.Data as IPXC_AnnotData_Poly;
                aData.Title  = (p == 0) ? sPolygon : sPolyline;
                aData.Title += " annotation 1.";
                IPXC_PolygonSrcF poly = aData.Vertices;
                double           r    = 1.5 * 72.0;
                double           a    = -90.0;
                poly.Clear();
                for (int i = 0; i < 4 + p; i++)
                {
                    PXC_PointF pointF = new PXC_PointF();
                    pointF.x = (float)(rcOut.left + r * Math.Cos(a * Math.PI / 180.0));
                    pointF.y = (float)(rcOut.bottom - r * Math.Sin(a * Math.PI / 180.0));
                    a       += 360.0 / 4;
                    poly.Insert(ref pointF, 1, uint.MaxValue);
                }
                aData.Vertices = poly;
                IColor color = auxInst.CreateColor(ColorType.ColorType_RGB);
                color.SetRGB(0.5f, 0.2f, 0.2f);
                aData.FColor = color;
                color.SetRGB(0.0f, 0.0f, 0.0f);
                aData.SColor = color;

                annot.Data = aData;

                annot        = unchecked (page.InsertNewAnnot(nText, ref rcOut));
                aData        = annot.Data as IPXC_AnnotData_Poly;
                aData.Title  = (p == 0) ? sPolygon : sPolyline;
                aData.Title += " annotation 2.";
                poly         = aData.Vertices;
                poly.Clear();
                for (int i = 0; i < 6 + p; i++)
                {
                    PXC_PointF pointF = new PXC_PointF();
                    pointF.x = (float)(nCX + r * Math.Cos(a * Math.PI / 180.0));
                    pointF.y = (float)(rcOut.bottom - r * Math.Sin(a * Math.PI / 180.0));
                    a       += 360.0 / 6;
                    poly.Insert(ref pointF, 1, uint.MaxValue);
                }
                aData.Vertices = poly;
                color          = auxInst.CreateColor(ColorType.ColorType_RGB);
                color.SetRGB(0.2f, 0.5f, 0.2f);
                aData.FColor = color;
                color.SetRGB(0.0f, 0.0f, 0.0f);
                aData.SColor = color;
                PXC_AnnotBorder border = new PXC_AnnotBorder();
                border.nStyle = PXC_AnnotBorderStyle.ABS_Solid;
                border.nWidth = 5.0f;
                aData.set_Border(border);
                aData.BlendMode = PXC_BlendMode.BlendMode_Multiply;
                annot.Data      = aData;


                annot        = unchecked (page.InsertNewAnnot(nText, ref rcOut));
                aData        = annot.Data as IPXC_AnnotData_Poly;
                aData.Title  = (p == 0) ? sPolygon : sPolyline;
                aData.Title += " annotation 3.";
                poly         = aData.Vertices;
                poly.Clear();
                for (int i = 0; i < 8 + p; i++)
                {
                    PXC_PointF pointF = new PXC_PointF();
                    pointF.x = (float)(rcOut.right + r * Math.Cos(a * Math.PI / 180.0));
                    pointF.y = (float)(rcOut.bottom - r * Math.Sin(a * Math.PI / 180.0));
                    a       += 360.0 / 8;
                    poly.Insert(ref pointF, 1, uint.MaxValue);
                }
                aData.Vertices = poly;
                color          = auxInst.CreateColor(ColorType.ColorType_RGB);
                color.SetRGB(0.2f, 0.2f, 0.5f);
                aData.FColor = color;
                color.SetRGB(0.0f, 0.0f, 0.0f);
                aData.SColor      = color;
                border            = new PXC_AnnotBorder();
                border.nStyle     = PXC_AnnotBorderStyle.ABS_Dashed;
                border.nWidth     = 3.0f;
                border.DashArray  = new float[] { 10f, 8f, 6f, 4f, 2f, 2f, 4f, 6f, 8f, 10f }; //Width of dashes
                border.nDashCount = 4;                                                        //Number of dashes
                aData.set_Border(border);
                aData.BlendMode = PXC_BlendMode.BlendMode_Multiply;
                annot.Data      = aData;
            }
            Marshal.ReleaseComObject(page);
            Marshal.ReleaseComObject(pages);

            return((int)Form1.eFormUpdateFlags.efuf_Annotations);
        }
        static public int AddSquareAndCircleAnnotation(Form1 Parent)
        {
            if (Parent.m_CurDoc == null)
            {
                Document.CreateNewDoc(Parent);
            }

            IPXC_UndoRedoData urData    = null;
            IPXC_Pages        pages     = Parent.m_CurDoc.Pages;
            IPXC_Page         firstPage = pages[0];
            PXC_Rect          rcPage    = firstPage.get_Box(PXC_BoxType.PBox_PageBox);

            Marshal.ReleaseComObject(firstPage);
            IPXC_Page page    = pages.InsertPage(0, ref rcPage, out urData);
            IPXS_Inst pxsInst = Parent.m_pxcInst.GetExtension("PXS");
            IAUX_Inst auxInst = Parent.m_pxcInst.GetExtension("AUX");
            //Getting Square and Circle annotations atom for the InsertNewAnnot method
            uint nSquare = pxsInst.StrToAtom("Square");
            uint nCircle = pxsInst.StrToAtom("Circle");

            double   nCX   = (rcPage.right - rcPage.left) / 2.0;
            double   nCY   = (rcPage.top - rcPage.bottom) / 2.0;
            PXC_Rect rcOut = new PXC_Rect();

            rcOut.left   = nCX - 200;
            rcOut.bottom = nCY + 200;
            rcOut.right  = nCX + 200;
            rcOut.top    = nCY + 300;
            IPXC_Annotation             annot = unchecked (page.InsertNewAnnot(nSquare, ref rcOut));
            IPXC_AnnotData_SquareCircle aData = annot.Data as IPXC_AnnotData_SquareCircle;

            aData.Title = "Square annotation 1.";
            annot.Data  = aData;

            rcOut.bottom -= 150;
            rcOut.top    -= 150;
            annot         = unchecked (page.InsertNewAnnot(nSquare, ref rcOut));
            aData         = annot.Data as IPXC_AnnotData_SquareCircle;
            aData.Title   = "Square annotation 2.";
            IColor color = auxInst.CreateColor(ColorType.ColorType_RGB);

            color.SetRGB(0.0f, 0.0f, 0.0f);
            aData.SColor = color;
            color.SetRGB(0.15f, 0.5f, 0.12f);
            aData.FColor = color;
            annot.Data   = aData;

            rcOut.bottom -= 150;
            rcOut.top    -= 150;
            annot         = unchecked (page.InsertNewAnnot(nCircle, ref rcOut));
            aData         = annot.Data as IPXC_AnnotData_SquareCircle;
            aData.Title   = "Circle annotation 3.";
            color.SetRGB(0.0f, 0.0f, 0.0f);
            aData.SColor = color;
            color.SetRGB(0.5f, 0.5f, 0.5f);
            aData.FColor = color;
            //Setting dashed border pattern
            PXC_AnnotBorder border = new PXC_AnnotBorder();

            border.nStyle     = PXC_AnnotBorderStyle.ABS_Dashed;
            border.nWidth     = 4.0f;
            border.DashArray  = new float[] { 10f, 8f, 6f, 4f, 2f, 2f, 4f, 6f, 8f, 10f }; //Width of dashes
            border.nDashCount = 4;                                                        //Number of dashes
            aData.set_Border(border);
            annot.Data = aData;

            rcOut.bottom -= 150;
            rcOut.top    -= 150;
            annot         = unchecked (page.InsertNewAnnot(nCircle, ref rcOut));
            aData         = annot.Data as IPXC_AnnotData_SquareCircle;
            aData.Title   = "Circle annotation 4.";
            color.SetRGB(0.0f, 0.0f, 0.0f);
            aData.SColor = color;
            color.SetRGB(0.5f, 0.5f, 0.5f);
            aData.FColor = color;
            //Setting dashed border pattern
            border        = new PXC_AnnotBorder();
            border.nStyle = PXC_AnnotBorderStyle.ABS_Solid;
            border.nWidth = 5.0f;
            aData.set_Border(border);
            annot.Data = aData;
            Marshal.ReleaseComObject(page);
            Marshal.ReleaseComObject(pages);

            return((int)Form1.eFormUpdateFlags.efuf_Annotations);
        }
        static public int AddLineAnnotation(Form1 Parent)
        {
            if (Parent.m_CurDoc == null)
            {
                Document.CreateNewDoc(Parent);
            }

            IPXC_UndoRedoData urData    = null;
            IPXC_Pages        pages     = Parent.m_CurDoc.Pages;
            IPXC_Page         firstPage = pages[0];
            PXC_Rect          rcPage    = firstPage.get_Box(PXC_BoxType.PBox_PageBox);

            Marshal.ReleaseComObject(firstPage);
            IPXC_Page page    = pages.InsertPage(0, ref rcPage, out urData);
            IPXS_Inst pxsInst = Parent.m_pxcInst.GetExtension("PXS");
            IAUX_Inst auxInst = Parent.m_pxcInst.GetExtension("AUX");
            //Getting Line annotation atom for the InsertNewAnnot method
            uint nText = pxsInst.StrToAtom("Line");

            double   nCX   = (rcPage.right - rcPage.left) / 2.0;
            double   nCY   = (rcPage.top - rcPage.bottom) / 2.0;
            PXC_Rect rcOut = new PXC_Rect();

            rcOut.left   = nCX - 200;
            rcOut.bottom = nCY + 200;
            rcOut.right  = nCX + 200;
            rcOut.top    = nCY + 300;
            PXC_Point startPoint = new PXC_Point();

            startPoint.x = rcPage.left + 50;
            startPoint.y = rcPage.top - 50;
            PXC_Point endPiont = new PXC_Point();

            endPiont.x = rcPage.right - 50;
            endPiont.y = startPoint.y;
            IPXC_Annotation     annot = unchecked (page.InsertNewAnnot(nText, ref rcOut));
            IPXC_AnnotData_Line aData = annot.Data as IPXC_AnnotData_Line;

            aData.Title = "Line annotation 1.";
            var color = auxInst.CreateColor(ColorType.ColorType_RGB);

            color.SetRGB(0.0f, 0.0f, 0.0f);
            aData.Color = color;
            aData.SetLinePoints(ref startPoint, ref endPiont);
            PXC_AnnotBorder border = new PXC_AnnotBorder();

            border.nStyle = PXC_AnnotBorderStyle.ABS_Solid;
            border.nWidth = 3.0f;
            aData.set_Border(border);
            annot.Data = aData;

            startPoint.y = startPoint.y - 50;
            endPiont.y   = startPoint.y;
            annot        = unchecked (page.InsertNewAnnot(nText, ref rcOut));
            aData        = annot.Data as IPXC_AnnotData_Line;
            aData.SetLinePoints(ref startPoint, ref endPiont);
            aData.Title = "Line annotation 2.";
            aData.Color = color;
            aData.SetLineEndings(PXC_AnnotLineEndingStyle.LE_None, PXC_AnnotLineEndingStyle.LE_OpenArrow);
            aData.set_Border(border);
            annot.Data = aData;

            startPoint.y = startPoint.y - 50;
            endPiont.y   = startPoint.y;
            annot        = unchecked (page.InsertNewAnnot(nText, ref rcOut));
            aData        = annot.Data as IPXC_AnnotData_Line;
            aData.SetLinePoints(ref startPoint, ref endPiont);
            aData.Title  = "Line annotation 3.";
            aData.Color  = color;
            aData.FColor = color;
            aData.SetLineEndings(PXC_AnnotLineEndingStyle.LE_ClosedArrow, PXC_AnnotLineEndingStyle.LE_ClosedArrow);
            aData.set_Border(border);
            annot.Data = aData;

            startPoint.y = startPoint.y - 50;
            endPiont.y   = startPoint.y;
            annot        = unchecked (page.InsertNewAnnot(nText, ref rcOut));
            aData        = annot.Data as IPXC_AnnotData_Line;
            aData.SetLinePoints(ref startPoint, ref endPiont);
            aData.Title  = "Line annotation 4.";
            aData.Color  = color;
            aData.FColor = color;
            aData.SetLineEndings(PXC_AnnotLineEndingStyle.LE_Circle, PXC_AnnotLineEndingStyle.LE_None);
            aData.set_Border(border);
            annot.Data = aData;

            startPoint.y = startPoint.y - 50;
            endPiont.y   = startPoint.y;
            annot        = unchecked (page.InsertNewAnnot(nText, ref rcOut));
            aData        = annot.Data as IPXC_AnnotData_Line;
            aData.SetLinePoints(ref startPoint, ref endPiont);
            aData.Title         = "Line annotation 5.";
            aData.ShowCaption   = true;
            aData.CaptionInLine = true;
            PXC_Size size;

            size.cx = 0;
            size.cy = 10;
            aData.set_CaptionOffset(ref size);
            aData.Contents = "Line annotation 5.";
            aData.Color    = color;
            annot.Data     = aData;

            startPoint.y = startPoint.y - 50;
            endPiont.y   = startPoint.y;
            annot        = unchecked (page.InsertNewAnnot(nText, ref rcOut));
            aData        = annot.Data as IPXC_AnnotData_Line;
            aData.SetLinePoints(ref startPoint, ref endPiont);
            aData.Title               = "Line annotation 6.";
            aData.Color               = color;
            aData.FColor              = color;
            aData.LeaderLine          = 15.0;
            aData.LeaderLineExtension = 15.0;
            aData.set_Border(border);
            annot.Data = aData;
            Marshal.ReleaseComObject(page);
            Marshal.ReleaseComObject(pages);

            return((int)Form1.eFormUpdateFlags.efuf_Annotations);
        }