void Initialize()
{
this.pageOrigin = new XPoint();
XMatrix matrix = new XMatrix(); //XMatrix.Identity;
double pageHeight = this.pageSize.height;
PdfPage targetPage = PdfPage;
XPoint trimOffset = new XPoint();
if (targetPage != null && targetPage.TrimMargins.AreSet)
{
pageHeight += targetPage.TrimMargins.Top.Point + targetPage.TrimMargins.Bottom.Point;
trimOffset = new XPoint(targetPage.TrimMargins.Left.Point, targetPage.TrimMargins.Top.Point);
}
#if GDI
if (this.targetContext == XGraphicTargetContext.GDI)
{
if (this.gfx != null)
matrix = (XMatrix)gfx.Transform;
if (this.pageUnit != XGraphicsUnit.Point)
{
switch (this.pageUnit)
{
case XGraphicsUnit.Inch:
matrix.ScalePrepend(XUnit.InchFactor);
break;
case XGraphicsUnit.Millimeter:
matrix.ScalePrepend(XUnit.MillimeterFactor);
break;
case XGraphicsUnit.Centimeter:
matrix.ScalePrepend(XUnit.CentimeterFactor);
break;
case XGraphicsUnit.Presentation:
matrix.ScalePrepend(XUnit.PresentationFactor);
break;
}
}
}
#endif
#if WPF
if (this.targetContext == XGraphicTargetContext.WPF)
{
if (this.pageUnit != XGraphicsUnit.Presentation)
{
switch (this.pageUnit)
{
case XGraphicsUnit.Point:
matrix.ScalePrepend(XUnit.PointFactorWpf);
break;
case XGraphicsUnit.Inch:
matrix.ScalePrepend(XUnit.InchFactorWpf);
break;
case XGraphicsUnit.Millimeter:
matrix.ScalePrepend(XUnit.MillimeterFactorWpf);
break;
case XGraphicsUnit.Centimeter:
matrix.ScalePrepend(XUnit.CentimeterFactorWpf);
break;
}
if (!matrix.IsIdentity)
{
#if !SILVERLIGHT
MatrixTransform transform = new MatrixTransform((System.Windows.Media.Matrix)matrix);
dc.PushTransform(transform);
#else
MatrixTransform transform2 = new MatrixTransform();
transform2.Matrix = (System.Windows.Media.Matrix)matrix;
dc.PushTransform(transform2);
#endif
}
}
}
#endif
if (this.pageDirection == XPageDirection.Upwards)
matrix.Prepend(new XMatrix(1, 0, 0, -1, 0, pageHeight));
if (trimOffset != new XPoint())
matrix.TranslatePrepend(trimOffset.x, trimOffset.y);
this.defaultViewMatrix = matrix;
this.transform = new XMatrix(); //XMatrix.Identity;
}