using System; using System.Collections.Generic; using System.Text; using System.Drawing; using C1.C1Pdf; namespace VG { public interface IVGOutput { float Scale { get;} void DrawLine(Pen pn, float startx, float starty, float endx, float endy); void DrawRectangle(Pen pn, RectangleF rectf); void DrawEllipse(Pen pn, float cx, float cy, float dx, float dy); void DrawImage(Bitmap bm, RectangleF rectf); void DrawString(string text, Font myFont, Brush brush, RectangleF rectf); void DrawArc(Pen pn, RectangleF rectf, float startAngle, float sweepAngle); SizeF MeasureString(string text, Font myFont); void Save(string fileName); float FontSizeAdjust { get;} } public partial class VGOut_C1PDF : IVGOutput { private C1PdfDocument _VGOutput; //public C1PdfDocument VGOutput //{ get { return _VGOutput; } } public static VGOut_C1PDF Create() { C1PdfDocument pdf = new C1.C1Pdf.C1PdfDocument(); pdf.FontType = C1.C1Pdf.FontTypeEnum.Embedded; // embed fonts return new VGOut_C1PDF(pdf); } public VGOut_C1PDF(C1PdfDocument vgOutput) { _VGOutput = vgOutput; } public float Scale // { get { return _VGOutput.Transform.Elements[0]; } } { get { return 1; } } public void DrawLine(Pen pn, float startx, float starty, float endx, float endy) { _VGOutput.DrawLine(pn, startx, starty, endx, endy); } public void DrawRectangle(Pen pn, RectangleF rectf) { _VGOutput.DrawRectangle(pn, rectf.X, rectf.Y, rectf.Width, rectf.Height); } public void DrawEllipse(Pen pn, float cx, float cy, float dx, float dy) { _VGOutput.DrawEllipse(pn, cx, cy, dx, dy); } public void DrawImage(Bitmap bm, RectangleF rectf) { _VGOutput.DrawImage(bm, rectf, ContentAlignment.MiddleCenter, ImageSizeModeEnum.Scale); } public void DrawString(string text, Font myFont, Brush brush, RectangleF rectf) { _VGOutput.DrawString(text, myFont, brush, rectf, StringFormat.GenericTypographic); } public void DrawArc(Pen pn, RectangleF rectf, float startAngle, float sweepAngle) { _VGOutput.DrawArc(pn, rectf, startAngle, sweepAngle); } public SizeF MeasureString(string text, Font myFont) { return _VGOutput.MeasureString(text, myFont, 500); } //, StringFormat.GenericTypographic public void Save(string fileName) { _VGOutput.Save(fileName); } public float FontSizeAdjust { get { return .95F; } } } public partial class VGOut_Graphics: IVGOutput { private Graphics _VGOutput; //public Graphics VGOutput //{ get { return _VGOutput; } } public VGOut_Graphics(Graphics vgOutput) { _VGOutput = vgOutput; } public float Scale { get { return _VGOutput.Transform.Elements[0]; } } public void DrawLine(Pen pn, float startx, float starty, float endx, float endy) { _VGOutput.DrawLine(pn, startx, starty, endx, endy); } public void DrawRectangle(Pen pn, RectangleF rectf) { _VGOutput.DrawRectangle(pn, rectf.X, rectf.Y, rectf.Width, rectf.Height); } public void DrawEllipse(Pen pn, float cx, float cy, float dx, float dy) { _VGOutput.DrawEllipse(pn, cx, cy, dx, dy); } public void DrawImage(Bitmap bm, RectangleF rectf) { _VGOutput.DrawImage(bm, rectf); } public void DrawString(string text, Font myFont, Brush brush, RectangleF rectf) { _VGOutput.DrawString(text, myFont, brush, rectf, StringFormat.GenericTypographic); } public void DrawArc(Pen pn, RectangleF rectf, float startAngle, float sweepAngle) { _VGOutput.DrawArc(pn, rectf, startAngle, sweepAngle); } public SizeF MeasureString(string text, Font myFont) { return _VGOutput.MeasureString(text, myFont, new PointF(0, 0), StringFormat.GenericTypographic); } public void Save(string fileName) { ;/* Don't do anything*/ } public float FontSizeAdjust { get { return .71f * 96f / _VGOutput.DpiX; } } // Changed to adjust for Screen DPI Setting } }