diff --git a/PROMS/VG/IVGOutput.cs b/PROMS/VG/IVGOutput.cs new file mode 100644 index 00000000..247f871b --- /dev/null +++ b/PROMS/VG/IVGOutput.cs @@ -0,0 +1,85 @@ +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 + } +}