This commit is contained in:
Jsj 2008-08-25 15:52:49 +00:00
parent 6885d4a6ea
commit c724b77e07
5 changed files with 548 additions and 0 deletions

58
PROMS/VG/AssemblyInfo.cs Normal file
View File

@ -0,0 +1,58 @@
using System.Reflection;
using System.Runtime.CompilerServices;
//
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
//
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
//
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.*")]
//
// In order to sign your assembly you must specify a key to use. Refer to the
// Microsoft .NET Framework documentation for more information on assembly signing.
//
// Use the attributes below to control which key is used for signing.
//
// Notes:
// (*) If no key is specified, the assembly is not signed.
// (*) KeyName refers to a key that has been installed in the Crypto Service
// Provider (CSP) on your machine. KeyFile refers to a file which contains
// a key.
// (*) If the KeyFile and the KeyName values are both specified, the
// following processing occurs:
// (1) If the KeyName can be found in the CSP, that key is used.
// (2) If the KeyName does not exist and the KeyFile does exist, the key
// in the KeyFile is installed into the CSP and used.
// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility.
// When specifying the KeyFile, the location of the KeyFile should be
// relative to the project output directory which is
// %Project Directory%\obj\<configuration>. For example, if your KeyFile is
// located in the project directory, you would specify the AssemblyKeyFile
// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework
// documentation for more information on this.
//
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("")]
[assembly: AssemblyKeyName("")]

View File

@ -0,0 +1 @@
C1.C1Pdf.C1PdfDocument, C1.C1Pdf.2, Version=2.1.20082.76, Culture=neutral, PublicKeyToken=79882d576c6336da

365
PROMS/VG/VG.cs Normal file
View File

@ -0,0 +1,365 @@
/*********************************************************************************************
* Copyright 2005 - Volian Enterprises, Inc. All rights reserved.
* Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
* ------------------------------------------------------------------------------
* $Workfile: VG.cs $ $Revision: 2 $
* $Author: Jsj $ $Date: 2/28/06 1:33p $
*
* $History: VG.cs $
*
* ***************** Version 2 *****************
* User: Jsj Date: 2/28/06 Time: 1:33p
* Updated in $/LibSource/VG
* updated for X/Y Plots
*
* ***************** Version 1 *****************
* User: Kathy Date: 12/06/05 Time: 12:06p
* Created in $/LibSource/VG
*
* ***************** Version 1 *****************
* User: Kathy Date: 12/06/05 Time: 12:01p
* Created in $/LibSource/VG.root/VG
*********************************************************************************************/
using System;
using System.Xml;
using System.Drawing;
using System.Text;
using C1.C1Pdf;
namespace VG
{
/// <summary>
/// VG is the class representing vector graphics. It provides objects for:
/// Line, Rectangle, Text, Ellipse, Bitmaps, etc.
/// VG provides constructors for these objects from coordinate system locations
/// (such as starting x,y ending x,y, etc), xml and svg.
/// VG provides output to PDF. (More can be added).
/// VG data is stored in TWIPS (1440 per inch)
/// </summary>
// Temporary page class to store portrait/landscape, Left Margin, Vertical offset, etc
public class Page
{
public bool portrait=true;
public float LeftMargin=0f;
public float VertOffset=0f;
public Page(bool iport, float lm, float voff)
{
portrait=iport;
LeftMargin=lm;
VertOffset=voff;
}
}
public class VG
{
// Values of vector graphics items are stored as twips (1440 twips in an inch)
public int cx;
public int cy;
public int dx;
public int dy;
public float lnwid;
public Page pg;
public bool MoveAbsolute; // TODO: Not sure what to do with this.
public VG()
{
cx = 0;
cy = 0;
dx = 0;
dy = 0;
MoveAbsolute = false;
pg=null;
}
public VG(int sx, int sy, int ex, int ey, bool ima, Page ipg)
{
cx = sx;
cy = sy;
dx = ex;
dy = ey;
MoveAbsolute = ima;
pg=ipg;
}
public float ToPoints(float twip)
{
float r = ((float)twip) * 0.05f;
return r;
}
public void UpdatePageInfo(Page pa)
{
pg.LeftMargin=pa.LeftMargin;
pg.portrait=pg.portrait;
pg.VertOffset=pg.VertOffset;
}
public string AddRTFBUI(string origStr, string bold, string underline, string italics)
{
if (bold==""&&underline==""&&italics=="")return origStr;
StringBuilder sb = new StringBuilder();
if (bold == "bold")sb.Append("{\\b");
if (underline == "underline")sb.Append("{\\u");
if (italics == "italics") sb.Append("{\\i");
sb.Append(" ");
sb.Append(origStr);
if (bold == "bold")sb.Append("}");
if (underline == "underline")sb.Append("}");
if (italics == "italics") sb.Append("}");
return sb.ToString();
}
}
public class VG_Line : VG
{
// Line is defined as starting & ending points.
public VG_Line(int sx, int sy, int ex, int ey, int w, Page ipg)
{
cx = sx;
cy = sy;
dx = ex;
dy = ey;
lnwid = w;
pg=ipg;
}
public VG_Line(XmlElement svg, Page ipg)
{
cx = System.Convert.ToInt32(svg.GetAttribute("x1"));
cy = System.Convert.ToInt32(svg.GetAttribute("y1"));
dx = System.Convert.ToInt32(svg.GetAttribute("x2"));
dy = System.Convert.ToInt32(svg.GetAttribute("y2"));
lnwid = System.Convert.ToInt32(svg.GetAttribute("stroke-width"));
pg = ipg;
}
public void ToPdf(C1PdfDocument c1pdf)
{
float startx = pg.portrait ? (cx + pg.LeftMargin): (pg.VertOffset + cy);
float starty = pg.portrait ? (cy + pg.VertOffset): (pg.LeftMargin - cx);
float endx = pg.portrait ? (dx + pg.LeftMargin): (pg.VertOffset + dy);
float endy = pg.portrait ? (dy + pg.VertOffset): (pg.LeftMargin - dx);
Pen pn = new Pen(Brushes.Black,ToPoints(lnwid));
c1pdf.DrawLine(pn, ToPoints(startx), ToPoints(starty), ToPoints(endx), ToPoints(endy));
}
}
public class VG_Rect : VG
{
// Rectangle is defined as starting point & length/width
public VG_Rect(int sx, int sy, int ex, int ey, int w, Page ipg)
{
cx = sx;
cy = sy;
dx = ex;
dy = ey;
lnwid = w;
pg = ipg;
}
public VG_Rect(XmlElement svg, Page ipg)
{
cx = System.Convert.ToInt32(svg.GetAttribute("x"));
cy = System.Convert.ToInt32(svg.GetAttribute("y"));
dx = System.Convert.ToInt32(svg.GetAttribute("width"));
dy = System.Convert.ToInt32(svg.GetAttribute("height"));
lnwid = System.Convert.ToInt32(svg.GetAttribute("stroke-width"));
pg = ipg;
}
public void ToPdf(C1PdfDocument c1pdf)
{
Pen pn = new Pen(Brushes.Black,ToPoints(lnwid));
float startx = pg.portrait ? (cx + pg.LeftMargin): (pg.VertOffset + cy) ;
float starty = pg.portrait ? (cy + pg.VertOffset): (pg.LeftMargin - cx);
float endx = pg.portrait ? dx: dy;
float endy = pg.portrait ? dy: dx;
RectangleF rc = new RectangleF(ToPoints(startx), ToPoints(starty), ToPoints(endx), ToPoints(endy));
c1pdf.DrawRectangle(pn,rc);
}
}
public class VG_Image : VG
{
private int Scale;
private string FileName;
// Image is defined as starting point, scale factor (defaults to 1) & image file name
public VG_Image(int sx, int sy, int iscale, string fname)
{
cx = sx;
cy = sy;
Scale = 1;
FileName = fname;
}
public VG_Image(XmlElement svg, Page ipg)
{
cx = System.Convert.ToInt32(svg.GetAttribute("x"));
cy = System.Convert.ToInt32(svg.GetAttribute("y"));
Scale=1;
if (svg.HasAttribute("scale")) Scale = System.Convert.ToInt32(svg.GetAttribute("scale"));
FileName = svg.GetAttribute("bname");
pg = ipg;
}
public void ToPdf(C1PdfDocument c1pdf)
{
Pen pn = new Pen(Brushes.Black,lnwid);
Bitmap bm = new Bitmap(FileName);
RectangleF rc = new RectangleF();
rc.Height = ToPoints((bm.Height*Scale)*4.8f);
rc.Width = ToPoints((bm.Width*Scale)*4.8f);
rc.X = ToPoints(pg.LeftMargin+cx);
rc.Y = ToPoints(pg.VertOffset+cy);
c1pdf.DrawImage(bm, rc, ContentAlignment.MiddleCenter, ImageSizeModeEnum.Scale);
}
}
public class VG_Ellipse : VG
{
// Ellipse (circle) is defined by a bounding rectangle specified by a coordinate pair, a width, and a height
public VG_Ellipse(int sx, int sy, int ex, int ey, int w, Page ipg)
{
cx = sx;
cy = sy;
dx = ex;
dy = ey;
lnwid = w;
pg = ipg;
}
public VG_Ellipse(XmlElement svg, Page ipg)
{
cx = System.Convert.ToInt32(svg.GetAttribute("cx"));
cy = System.Convert.ToInt32(svg.GetAttribute("cy"));
dx = System.Convert.ToInt32(svg.GetAttribute("rx"));
dy = System.Convert.ToInt32(svg.GetAttribute("ry"));
lnwid = System.Convert.ToInt32(svg.GetAttribute("stroke-width"));
pg = ipg;
}
public void ToPdf(C1PdfDocument c1pdf)
{
Pen pn = new Pen(Brushes.Black,ToPoints(lnwid));
c1pdf.DrawEllipse(pn,ToPoints(pg.LeftMargin+cx), ToPoints(pg.VertOffset+cy), ToPoints(dx), ToPoints(dy));
}
}
public class VG_Text : VG
{
private string FontName;
private int FontSize;
private string Bold;
private string Underline;
private string Italics;
private string Text;
// Text is defined by a starting location, attributes & the string
public VG_Text(int sx, int sy, int fs, string txt, string fn, string ibold, string iunder, string iitalics, Page ipg)
{
cx = sx;
cy = sy;
FontSize = fs;
FontName = fn;
Text = txt;
Bold = ibold;
Underline = iunder;
Italics = iitalics;
pg = ipg;
// TODO: The following were in the 16-bit code - we may need to use these, wait and see
// strokeWidth = stroke;
// strokeWidthBold = strokebold;
// ULOffset = UnderlineOffset;
// ULWidth = UnderlineWidth;
}
public VG_Text(XmlElement svg, Page ipg)
{
cx = System.Convert.ToInt32(svg.GetAttribute("x"));
cy = System.Convert.ToInt32(svg.GetAttribute("y"));
FontSize = System.Convert.ToInt32(svg.GetAttribute("font-size"));
Bold = svg.GetAttribute("font-weight");
Underline = svg.GetAttribute("text-decoration");
Italics = svg.GetAttribute("font-style");
FontName = svg.GetAttribute("font-family");
Text = svg.InnerText;
pg = ipg;
}
public void ToPdf(C1PdfDocument c1pdf)
{
Font myfont = new Font(FontName,FontSize);
RectangleF rc = new RectangleF();
// the returned value from c1 pdf code is already in points,
// so need to convert the size.
rc.Size = c1pdf.MeasureStringRtf(Text,myfont,500); // TODO: 500 or pagewidth, or what
rc.X = ToPoints(pg.LeftMargin+cx);
rc.Y = ToPoints(pg.VertOffset+cy)-FontSize;
// add bold, underline & italics for entire object.
string rtfout = AddRTFBUI(Text,Bold,Underline,Italics);
c1pdf.DrawStringRtf(rtfout,myfont,Brushes.Black,rc);
}
}
public class VG_Arc : VG
{
public Single sweepAngle;
public Single startAngle;
public float stX,stY;
public float rWid,rHgt;
#if DEBUG
public static int iColor=0;
public Color [] myColors={Color.Red,Color.Orange,Color.Yellow,Color.Green,Color.Blue,Color.BlueViolet,Color.Violet};
#endif
// Arc is defined by a bounding rectangle specified by a coordinate pair, a width, and a height
public VG_Arc(float sx, float sy, float width, float hight, float stAngle, float swpAngle, int w, Page ipg)
{
stX = sx;
stY = sy;
rWid = width;
rHgt = hight;
startAngle = stAngle;
// startAngle = 90;
sweepAngle = swpAngle;
// sweepAngle = -45;
lnwid = w;
pg = ipg;
}
// public VG_Arc(XmlElement svg, Page ipg)
// {
// cx = System.Convert.ToInt32(svg.GetAttribute("cx"));
// cy = System.Convert.ToInt32(svg.GetAttribute("cy"));
// dx = System.Convert.ToInt32(svg.GetAttribute("rx"));
// dy = System.Convert.ToInt32(svg.GetAttribute("ry"));
// lnwid = System.Convert.ToInt32(svg.GetAttribute("stroke-width"));
// pg = ipg;
// }
public void ToPdf(C1PdfDocument c1pdf)
{
// Pen pn = new Pen(Brushes.Black,ToPoints(lnwid));
#if DEBUG
Pen pn = new Pen(myColors[iColor],ToPoints(lnwid));
iColor=(iColor+1)%myColors.Length;
#else
Pen pn = new Pen(Color.Black,ToPoints(lnwid));
#endif
// PointF startpt = new PointF(stX,stY);
// SizeF recsize = new SizeF(rWid,rHgt);
// RectangleF rc = new RectangleF(startpt,recsize);
float startx = pg.portrait ? (stX + pg.LeftMargin): (pg.VertOffset + stY);
float starty = pg.portrait ? (stY + pg.VertOffset): (pg.LeftMargin - stX);
RectangleF rc = new RectangleF(ToPoints(startx),ToPoints(starty),ToPoints(rWid),ToPoints(rHgt));
// c1pdf.DrawRectangle(pn,rc); //debug
// c1pdf.DrawArc(new Pen(Color.Black,ToPoints(lnwid)),new RectangleF(stX,stY,rWid,rHgt),startAngle,sweepAngle);
c1pdf.DrawArc(pn,rc,startAngle,sweepAngle);
// c1pdf.DrawArc(new Pen(Color.Black, 4),rc,startAngle,sweepAngle);
}
}
}

114
PROMS/VG/VG.csproj Normal file
View File

@ -0,0 +1,114 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectType>Local</ProjectType>
<ProductVersion>8.0.50727</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{52D74078-3822-410E-889B-464BD21AAB9E}</ProjectGuid>
<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ApplicationIcon>
</ApplicationIcon>
<AssemblyKeyContainerName>
</AssemblyKeyContainerName>
<AssemblyName>VG</AssemblyName>
<AssemblyOriginatorKeyFile>
</AssemblyOriginatorKeyFile>
<DefaultClientScript>JScript</DefaultClientScript>
<DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
<DefaultTargetSchema>IE50</DefaultTargetSchema>
<DelaySign>false</DelaySign>
<OutputType>Library</OutputType>
<RootNamespace>VG</RootNamespace>
<RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
<StartupObject>
</StartupObject>
<FileUpgradeFlags>
</FileUpgradeFlags>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DebugSymbols>true</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<NoStdLib>false</NoStdLib>
<NoWarn>
</NoWarn>
<Optimize>false</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<DebugType>full</DebugType>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>TRACE</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DebugSymbols>false</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<NoStdLib>false</NoStdLib>
<NoWarn>
</NoWarn>
<Optimize>true</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<DebugType>none</DebugType>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<ItemGroup>
<Reference Include="C1.C1Pdf.2, Version=2.1.20082.76, Culture=neutral, PublicKeyToken=79882d576c6336da, processorArchitecture=MSIL" />
<Reference Include="System">
<Name>System</Name>
</Reference>
<Reference Include="System.Data">
<Name>System.Data</Name>
</Reference>
<Reference Include="System.Drawing">
<Name>System.Drawing</Name>
</Reference>
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml">
<Name>System.XML</Name>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="VG.cs">
<SubType>Code</SubType>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Properties\licenses.licx" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PreBuildEvent>
</PreBuildEvent>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
</Project>

10
PROMS/VG/VG.csproj.vspscc Normal file
View File

@ -0,0 +1,10 @@
""
{
"FILE_VERSION" = "9237"
"ENLISTMENT_CHOICE" = "NEVER"
"PROJECT_FILE_RELATIVE_PATH" = ""
"NUMBER_OF_EXCLUDED_FILES" = "0"
"ORIGINAL_PROJECT_FILE_PATH" = ""
"NUMBER_OF_NESTED_PROJECTS" = "0"
"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
}