/// <summary> /// Initializes a new instance of the XGraphics class. /// </summary> /// <param name="gfx">The GFX.</param> /// <param name="size">The size.</param> /// <param name="pageUnit">The page unit.</param> /// <param name="pageDirection">The page direction.</param> XGraphics(Graphics gfx, XSize size, XGraphicsUnit pageUnit, XPageDirection pageDirection) { if (gfx == null) throw new ArgumentNullException("gfx"); this.gfx = gfx; this.drawGraphics = true; this.pageSize = new XSize(size.width, size.height); this.pageUnit = pageUnit; switch (pageUnit) { case XGraphicsUnit.Point: this.pageSizePoints = new XSize(size.width, size.height); break; case XGraphicsUnit.Inch: this.pageSizePoints = new XSize(XUnit.FromInch(size.width), XUnit.FromInch(size.height)); break; case XGraphicsUnit.Millimeter: this.pageSizePoints = new XSize(XUnit.FromMillimeter(size.width), XUnit.FromMillimeter(size.height)); break; case XGraphicsUnit.Centimeter: this.pageSizePoints = new XSize(XUnit.FromCentimeter(size.width), XUnit.FromCentimeter(size.height)); break; default: throw new NotImplementedException("unit"); } this.pageDirection = pageDirection; Initialize(); }
/// <summary> /// Initializes a new instance of the XGraphics class. /// </summary> /// <param name="gfx">The gfx.</param> /// <param name="size">The size.</param> /// <param name="pageUnit">The page unit.</param> /// <param name="pageDirection">The page direction.</param> XGraphics(Graphics gfx, XSize size, XGraphicsUnit pageUnit, XPageDirection pageDirection) { if (gfx == null) { //throw new ArgumentNullException("gfx"); gfx = Graphics.FromHwnd(IntPtr.Zero); } this.gsStack = new GraphicsStateStack(this); this.targetContext = XGraphicTargetContext.GDI; this.gfx = gfx; this.drawGraphics = true; this.pageSize = new XSize(size.width, size.height); this.pageUnit = pageUnit; switch (pageUnit) { case XGraphicsUnit.Point: this.pageSizePoints = new XSize(size.width, size.height); break; case XGraphicsUnit.Inch: this.pageSizePoints = new XSize(XUnit.FromInch(size.width), XUnit.FromInch(size.height)); break; case XGraphicsUnit.Millimeter: this.pageSizePoints = new XSize(XUnit.FromMillimeter(size.width), XUnit.FromMillimeter(size.height)); break; case XGraphicsUnit.Centimeter: this.pageSizePoints = new XSize(XUnit.FromCentimeter(size.width), XUnit.FromCentimeter(size.height)); break; case XGraphicsUnit.Presentation: this.pageSizePoints = new XSize(XUnit.FromPresentation(size.width), XUnit.FromPresentation(size.height)); break; default: throw new NotImplementedException("unit"); } this.pageDirection = pageDirection; Initialize(); }
/// <summary> /// Creates a new instance of the XGraphics class from a PdfSharp.Pdf.PdfPage object. /// </summary> public static XGraphics FromPdfPage(PdfPage page, XGraphicsPdfPageOptions options, XGraphicsUnit unit, XPageDirection pageDirection) { return new XGraphics(page, options, unit, pageDirection); }
/// <summary> /// Creates a new instance of the XGraphics class from a PdfSharp.Pdf.PdfPage object. /// </summary> public static XGraphics FromPdfPage(PdfPage page, XPageDirection pageDirection) { return new XGraphics(page, XGraphicsPdfPageOptions.Append, XGraphicsUnit.Point, pageDirection); }
/// <summary> /// Creates the measure context. This is a graphics context created only for querying measures of text. /// Drawing on a measure context has no effect. /// </summary> public static XGraphics CreateMeasureContext(XSize size, XGraphicsUnit pageUnit, XPageDirection pageDirection) { XGraphics gfx = null; #if GDI gfx = new XGraphics((System.Drawing.Graphics)null, size, pageUnit, pageDirection); #endif #if WPF && !SILVERLIGHT gfx = new XGraphics((System.Windows.Media.DrawingContext)null, size, pageUnit, pageDirection); #endif #if SILVERLIGHT gfx = new XGraphics(new Canvas(), size, pageUnit, pageDirection); #endif return gfx; }
/// <summary> /// Initializes a new instance of the XGraphics class for drawing on a PDF page. /// </summary> XGraphics(PdfPage page, XGraphicsPdfPageOptions options, XGraphicsUnit pageUnit, XPageDirection pageDirection) { if (page == null) throw new ArgumentNullException("page"); if (page.Owner == null) throw new ArgumentException("You cannot draw on a page that is not owned by a PdfDocument object.", "page"); if (page.RenderContent != null) throw new InvalidOperationException("An XGraphics object already exists for this page and must be disposed before a new one can be created."); if (page.Owner.IsReadOnly) throw new InvalidOperationException("Cannot create XGraphics for a page of a document that cannot be modified. Use PdfDocumentOpenMode.Modify."); this.gsStack = new GraphicsStateStack(this); PdfContent content = null; switch (options) { case XGraphicsPdfPageOptions.Replace: page.Contents.Elements.Clear(); goto case XGraphicsPdfPageOptions.Append; case XGraphicsPdfPageOptions.Prepend: content = page.Contents.PrependContent(); break; case XGraphicsPdfPageOptions.Append: content = page.Contents.AppendContent(); break; } page.RenderContent = content; #if GDI // HACK: This does not work with MediumTrust //this.gfx = Graphics.FromHwnd(IntPtr.Zero); this.targetContext = XGraphicTargetContext.GDI; Bitmap bm = new Bitmap(10, 10); this.gfx = Graphics.FromImage(bm); #endif #if WPF && !SILVERLIGHT this.dv = new DrawingVisual(); this.dc = this.dv.RenderOpen(); this.targetContext = XGraphicTargetContext.WPF; #endif #if SILVERLIGHT this.dc = new DrawingContext(new Canvas()); this.targetContext = XGraphicTargetContext.WPF; #endif #if GDI && WPF this.targetContext = PdfSharp.Internal.TargetContextHelper.TargetContext; #endif this.renderer = new PdfSharp.Drawing.Pdf.XGraphicsPdfRenderer(page, this, options); this.pageSizePoints = new XSize(page.Width, page.Height); switch (pageUnit) { case XGraphicsUnit.Point: this.pageSize = new XSize(page.Width, page.Height); break; case XGraphicsUnit.Inch: this.pageSize = new XSize(XUnit.FromPoint(page.Width).Inch, XUnit.FromPoint(page.Height).Inch); break; case XGraphicsUnit.Millimeter: this.pageSize = new XSize(XUnit.FromPoint(page.Width).Millimeter, XUnit.FromPoint(page.Height).Millimeter); break; case XGraphicsUnit.Centimeter: this.pageSize = new XSize(XUnit.FromPoint(page.Width).Centimeter, XUnit.FromPoint(page.Height).Centimeter); break; case XGraphicsUnit.Presentation: this.pageSize = new XSize(XUnit.FromPoint(page.Width).Presentation, XUnit.FromPoint(page.Height).Presentation); break; default: throw new NotImplementedException("unit"); } this.pageUnit = pageUnit; this.pageDirection = pageDirection; Initialize(); }
/// <summary> /// Initializes a new instance of the XGraphics class. /// </summary> /// <param name="canvas">The canvas.</param> /// <param name="size">The size.</param> /// <param name="pageUnit">The page unit.</param> /// <param name="pageDirection">The page direction.</param> XGraphics(Canvas canvas, XSize size, XGraphicsUnit pageUnit, XPageDirection pageDirection) { //throw new ArgumentNullException("canvas"); if (canvas == null) canvas = new Canvas(); this.dc = new DrawingContext(canvas); this.gsStack = new GraphicsStateStack(this); this.targetContext = XGraphicTargetContext.WPF; this.drawGraphics = true; this.pageSize = new XSize(size.width, size.height); this.pageUnit = pageUnit; switch (pageUnit) { case XGraphicsUnit.Point: this.pageSizePoints = new XSize(size.width, size.height); break; case XGraphicsUnit.Inch: this.pageSizePoints = new XSize(XUnit.FromInch(size.width), XUnit.FromInch(size.height)); break; case XGraphicsUnit.Millimeter: this.pageSizePoints = new XSize(XUnit.FromMillimeter(size.width), XUnit.FromMillimeter(size.height)); break; case XGraphicsUnit.Centimeter: this.pageSizePoints = new XSize(XUnit.FromCentimeter(size.width), XUnit.FromCentimeter(size.height)); break; case XGraphicsUnit.Presentation: this.pageSizePoints = new XSize(XUnit.FromPresentation(size.width), XUnit.FromPresentation(size.height)); break; default: throw new NotImplementedException("unit"); } this.pageDirection = pageDirection; Initialize(); }
// -------------------------------------------------------------------------------------------- #region Transformation public void SetPageTransform(XPageDirection direction, XPoint origion, XGraphicsUnit unit) { if (this.gfxStateStack.Count > 0) throw new InvalidOperationException("PageTransformation can be modified only when the graphics stack is empty."); throw new NotImplementedException("SetPageTransform"); }
/// <summary> /// Initializes a new instance of the XGraphics class. /// </summary> /// <param name="dc">The drawing context.</param> /// <param name="size">The size.</param> /// <param name="pageUnit">The page unit.</param> /// <param name="pageDirection">The page direction.</param> XGraphics(DrawingContext dc, XSize size, XGraphicsUnit pageUnit, XPageDirection pageDirection) { if (dc == null) { //throw new ArgumentNullException("dc"); this.dv = new DrawingVisual(); dc = this.dv.RenderOpen(); } this.gsStack = new GraphicsStateStack(this); this.targetContext = XGraphicTargetContext.WPF; this.dc = dc; this.drawGraphics = true; this.pageSize = new XSize(size.width, size.height); this.pageUnit = pageUnit; switch (pageUnit) { case XGraphicsUnit.Point: this.pageSizePoints = new XSize(size.width, size.height); break; case XGraphicsUnit.Inch: this.pageSizePoints = new XSize(XUnit.FromInch(size.width), XUnit.FromInch(size.height)); break; case XGraphicsUnit.Millimeter: this.pageSizePoints = new XSize(XUnit.FromMillimeter(size.width), XUnit.FromMillimeter(size.height)); break; case XGraphicsUnit.Centimeter: this.pageSizePoints = new XSize(XUnit.FromCentimeter(size.width), XUnit.FromCentimeter(size.height)); break; default: throw new NotImplementedException("unit"); } this.pageDirection = pageDirection; Initialize(); }
/// <summary> /// Initializes a new instance of the XGraphics class for drawing on a PDF page. /// </summary> XGraphics(PdfPage page, XGraphicsPdfPageOptions options, XGraphicsUnit pageUnit, XPageDirection pageDirection) { if (page == null) throw new ArgumentNullException("page"); if (page.Owner == null) throw new ArgumentException("You cannot draw on a page that is not owned by a PdfDocument object.", "page"); if (page.RenderContent != null) throw new InvalidOperationException("An XGraphics object already exists for this page and must be disposed before a new one can be created."); if (page.Owner.IsReadOnly) throw new InvalidOperationException("Cannot create XGraphics for a page of a document that cannot be modiefied"); PdfContent content = null; switch (options) { case XGraphicsPdfPageOptions.Replace: page.Contents.Elements.Clear(); goto case XGraphicsPdfPageOptions.Append; case XGraphicsPdfPageOptions.Prepend: content = page.Contents.PrependContent(); break; case XGraphicsPdfPageOptions.Append: content = page.Contents.AppendContent(); break; } page.RenderContent = content; this.gfx = Graphics.FromHwnd(IntPtr.Zero); this.renderer = new PdfSharp.Drawing.Pdf.XGraphicsPdfRenderer(page, this, options); this.pageSizePoints = new XSize(page.Width, page.Height); switch (pageUnit) { case XGraphicsUnit.Point: this.pageSize = new XSize(page.Width, page.Height); break; case XGraphicsUnit.Inch: this.pageSize = new XSize(XUnit.FromPoint(page.Width).Inch, XUnit.FromPoint(page.Height).Inch); break; case XGraphicsUnit.Millimeter: this.pageSize = new XSize(XUnit.FromPoint(page.Width).Millimeter, XUnit.FromPoint(page.Height).Millimeter); break; case XGraphicsUnit.Centimeter: this.pageSize = new XSize(XUnit.FromPoint(page.Width).Centimeter, XUnit.FromPoint(page.Height).Centimeter); break; default: throw new NotImplementedException("unit"); } this.pageUnit = pageUnit; this.pageDirection = pageDirection; Initialize(); }