- Fixed Header for EquipmentWBlank

- Aligned Tables properly
- Skip Section Title
- Calculated Table Width
- Fixed ChangeBar logic
- Added Text and Debug layers
- Adedd debug output to PDF
- Changed Paginate logic
- Adedd debug output to PDF
- Move GetParagraphHeight
- Added GetTableWidth
- Added ChangeBar Properties
- Added Debug and Text layers
Removed fixed override color for SVG
Removed simple PageBreak
This commit is contained in:
Rich 2010-05-25 16:15:26 +00:00
parent 9cc6174ad1
commit b00005780b
7 changed files with 249 additions and 54 deletions

View File

@ -105,6 +105,10 @@ namespace Volian.Print.Library
private int COL_WID_ADJ = 6; // adjusts for incorrect use of WidSTable when breaking a line (it breaks 6 chars too short)
public vlnParagraph(vlnParagraph parent, PdfContentByte cb, ItemInfo itemInfo, float xoff,float yoff, int rnoLevel, int maxRNO, FormatInfo formatInfo)
{
//int[] problemIDs = { 871, 877 };
//List<int> lProblemIDs = new List<int>( problemIDs );
//if (lProblemIDs.Contains(itemInfo.ItemID))
// Console.WriteLine("Found Item {0}", itemInfo.ItemID);
MyParent = parent;
MyContentByte = cb;
MyItemInfo = itemInfo;
@ -140,20 +144,38 @@ namespace Volian.Print.Library
//yoff += 2 * _SixLinesPerInch;
}
YTop = yoff;
if (itemInfo.MyHeader != null && itemInfo.MyHeader.Text != null && itemInfo.MyHeader.Text != "")
yoff += SetHeader(this, cb, itemInfo, formatInfo);
if (itemInfo.MyHeader != null && itemInfo.MyHeader.Text != null)
// if (itemInfo.MyHeader != null && itemInfo.MyHeader.Text != null && itemInfo.MyHeader.Text != "") // EquipmentWBlank uses an empty string
yoff += SetHeader(this, cb, itemInfo, formatInfo);
YOffset = yoff;
AddMacros(itemInfo, mytab);
if (mytab != null) mytab.YOffset = yoff;
if (myCB != null) myCB.YOffset = yoff;
Rtf = GetRtf(itemInfo);
if (itemInfo.IsTablePart)
{
Width = GetTableWidth(cb, IParagraph);
vlnParagraph hls = MyParent;
bool aerTable = itemInfo.FormatStepData.Type.Contains("AER");
while (hls.MyParent != null)
{
if (aerTable && hls.MyItemInfo.IsHigh) break;
hls = hls.MyParent;
}
XOffset = hls.XOffset + hls.Width / 2 - Width / 2;
if (XOffset < (float)itemInfo.MyDocStyle.Layout.LeftMargin)
XOffsetBox = (float)itemInfo.MyDocStyle.Layout.LeftMargin;
}
//if (MyItemInfo.ItemID == 117)
//{
// Rtf = Rtf.Replace("3 psig", @"3\'A0psig");
// //Console.WriteLine("'{0}'", Rtf);
//}
yoff += Height;
yoff += AdjustForBlankLines();
if (!itemInfo.IsStepSection) // Don't add any lines for the Section Title
{
yoff += Height;
yoff += AdjustForBlankLines();
}
float yOffRight = yoff;
float RnoOffset = ToPrint(formatInfo.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.ColRTable, maxRNO);
if (rnoLevel < maxRNO && itemInfo.RNOs != null) yOffRight= ChildrenRight.Add(cb, itemInfo.RNOs, XOffset + RnoOffset, YTop, YTop, rnoLevel + 1, maxRNO, formatInfo);
@ -207,6 +229,9 @@ namespace Volian.Print.Library
}
// HLP Change bar flags in format file:
//<ChangeBarData ChangeBarMessage="UserId" FixedChangeColumn="88" AbsoluteFixedChangeColumn="True" ContinuousChangeBars="True" ChgBarMessageFromEdit="True" ChangeBarToRNOSep="True" />
// Locations: With Text, Outside Box, AER on Left RNO on Right, To The Left of Text
// Text: Date & Change ID, Revision Number, Change ID, None, Custom (use input data)
// Flag AERChgBarMsgRNOChgBarNoMsg and AERMsgRNONoMsg are NOT Used in 16-bit.
private vlnChangeBar DoChangeBar(ItemInfo itemInfo, float xoff, float yoff, int maxRNO, FormatInfo formatInfo, vlnChangeBar myCB)
{
// find column for the change bar based on format flags - this is code from 16-bit
@ -235,6 +260,29 @@ namespace Volian.Print.Library
ProcedureConfig.PrintChangeBarText pcbt = itemInfo.PrintChangeBarText;
string pcbum1 = itemInfo.PrintChangeBarUsrMsg1;
string pcbum2 = itemInfo.PrintChangeBarUsrMsg2;
// Now get the text.
// This is only the User Change Bar Message from the docversion config. Any other data is determined
// during printing, i.e. item or page specific.
//if (cbd.MyChangeBarText == DocVersionConfig.PrintChangeBarText.ChgID || cbd.MyChangeBarText == DocVersionConfig.PrintChangeBarText.DateChgID)
//{
// cbd.MyChangeBarMessage = myItemInfo.UserID;
// string mydts = null;
// if (changeBarData.ChgBarMessageFromEdit)
// {
// StepInfo si = (StepInfo)myItemInfo;
// if (si != null)
// {
// StepConfig sc = si.MyConfig as StepConfig;
// if (sc != null && sc.Step_MultipleChangeID != null) cbd.MyChangeBarMessage = sc.Step_MultipleChangeID;
// }
// }
// if (cbd.MyChangeBarText == DocVersionConfig.PrintChangeBarText.DateChgID) cbd.MyChangeBarMessage = cbd.MyChangeBarMessage + @"\" + myItemInfo.DTS.Date.ToString();
//}
//else if (cbd.MyChangeBarText == DocVersionConfig.PrintChangeBarText.RevNum)
//{
// //TODO
//}
//myCB = new vlnChangeBar(this, XOffset + Width + 5, yoff); // xoff varies depending on type of change bar
myCB = new vlnChangeBar(this, (float) itemInfo.MyDocStyle.Layout.LeftMargin+(col*_CharsToTwips), yoff);
return myCB;
@ -242,16 +290,16 @@ namespace Volian.Print.Library
private int ChangeBarLocation(float c, vlnParagraph paragraph, FormatInfo formatInfo, int maxRNO)
{
int fixChgColumn = formatInfo.PlantFormat.FormatData.ProcData.ChangeBarData.FixedChangeColumn ?? 0;
int fixedChgCol = formatInfo.PlantFormat.FormatData.ProcData.ChangeBarData.FixedChangeColumn ?? 0;
int cols = formatInfo.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.ColS ?? 0;
int colr = ToPrint(formatInfo.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.ColRTable, maxRNO);
if (fixChgColumn < -10 || fixChgColumn >= 0)
return ((fixChgColumn > 0)? fixChgColumn :
(fixChgColumn == 0) ? (int)c + 1 :
(c > cols + colr + COL_WID_ADJ) ? - fixChgColumn :
if (fixedChgCol < -10 || fixedChgCol >= 0)
return ((fixedChgCol > 0) ? fixedChgCol :
(fixedChgCol == 0) ? (int)c + 1 :
(c > cols + colr + COL_WID_ADJ) ? -fixedChgCol :
AERLeftChangeBarLocation(formatInfo));
else
return (fixChgColumn + (((c < cols + Width + colr) || TableTest()
return (fixedChgCol + (((c < cols + Width + colr) || TableTest()
|| MyItemInfo.IsCaution || MyItemInfo.IsNote) ? 0 : cols+colr)); // || (GetColumnMode() == 0)) ? 0 : cols + colr));
/* Change bars to left of text -- ColS+WidS+ColR is the end of RNO col*/
}

View File

@ -57,27 +57,17 @@ namespace Volian.Print.Library
{
while (yTop > 0)
{
float newYTop = TextAt(cb, para, x, yTop - 12F, width, 100);
float newYTop = TextAt(cb, para, x, yTop - 12F, width, 100,"");
//Console.WriteLine("{0},{1},{2}", yTop, width, newYTop);
width -= 16;
yTop = newYTop;
}
}
public static float GetParagraphHeight(PdfContentByte cb, Paragraph iParagraph, float width)
private static bool _PdfDebug = true;
public static bool PdfDebug
{
ColumnText myColumnText = new ColumnText(cb);
myColumnText.SetSimpleColumn(0, 792F, width, 0); // Bottom margin
myColumnText.AddElement(iParagraph);
//myColumnText.UseAscender = true;// Adjusts to the top of the text box.
int status = myColumnText.Go(true); // Check to see if it will fit on the page.
if (ColumnText.HasMoreText(status)) throw(new Exception("Paragraph longer than a page"));
return 792F - myColumnText.YLine; // This gives the height of the Paragraph
}
private static bool _DrawBox = true;
public static bool DrawBox
{
get { return Rtf2Pdf._DrawBox; }
set { Rtf2Pdf._DrawBox = value; }
get { return Rtf2Pdf._PdfDebug; }
set { Rtf2Pdf._PdfDebug = value; }
}
private static System.Drawing.PointF _Offset = new System.Drawing.PointF(0, 0);
public static System.Drawing.PointF Offset
@ -85,8 +75,11 @@ namespace Volian.Print.Library
get { return Rtf2Pdf._Offset; }
set { Rtf2Pdf._Offset = value; }
}
public static float TextAt(PdfContentByte cb, Paragraph iParagraph, float x, float y, float width, float height)
public static float TextAt(PdfContentByte cb, Paragraph iParagraph, float x, float y, float width, float height, string debugText)
{
VlnSvgPageHelper _MyPageHelper = cb.PdfWriter.PageEvent as VlnSvgPageHelper;
PdfLayer textLayer = _MyPageHelper == null ? null : _MyPageHelper.TextLayer;
if (textLayer != null) cb.BeginLayer(textLayer);
float left = x + Offset.X;
float top = y + Offset.Y;
float right = left + width;
@ -111,14 +104,21 @@ namespace Volian.Print.Library
//Console.WriteLine("Calculated Bottom {0}, YLine {1}", top - textHeight, myColumnText.YLine);
//BoxText(cb, System.Drawing.Color.BurlyWood, left, top, left + width, top - height);
//BoxText(canvas, System.Drawing.Color.CadetBlue, left, top, left + width, top - textHeight);
if(DrawBox)BoxText(cb, System.Drawing.Color.CadetBlue, left, top, left + width, myColumnText.YLine);
if (textLayer != null) cb.EndLayer();
if (PdfDebug)
DrawPdfDebug(cb, System.Drawing.Color.CadetBlue, left, top, left + width, myColumnText.YLine, debugText);
//Console.WriteLine("Lines = {0}", myColumnText.LinesWritten);
return myColumnText.YLine;
}
private static void BoxText(PdfContentByte cb, System.Drawing.Color sysColor, float left, float top, float right, float bottom)
private static void DrawPdfDebug(PdfContentByte cb, System.Drawing.Color sysColor, float left, float top, float right, float bottom, string debugText)
{
float yAdj = 3;
cb.SaveState();
VlnSvgPageHelper _MyPageHelper = cb.PdfWriter.PageEvent as VlnSvgPageHelper;
PdfLayer debugLayer = _MyPageHelper == null ? null : _MyPageHelper.DebugLayer;
if (debugLayer != null) cb.BeginLayer(debugLayer);
cb.SetColorStroke(new Color(sysColor));
cb.SetLineWidth(.1F);
cb.MoveTo(left, top - yAdj);
@ -127,6 +127,15 @@ namespace Volian.Print.Library
cb.LineTo(left, bottom - yAdj);
cb.LineTo(left, top - yAdj);
cb.Stroke();
ColumnText ct = new ColumnText(cb);
ct.SetSimpleColumn(left, 4 + top - yAdj, right, top - yAdj - 50);
iTextSharp.text.Font font = FontFactory.GetFont("Arial", 2);
Chunk chk = new Chunk(debugText, font);
Phrase ph = new Phrase(chk);
ct.AddElement(ph);
cb.SetColorFill(new Color(sysColor));
ct.Go();
if (debugLayer != null) cb.EndLayer();
cb.RestoreState();
}

View File

@ -48,20 +48,17 @@ namespace Volian.Print.Library
if (_PartsAbove != null && _PartsAbove.Count > 0) yPageStart = PartsAbove.ToPdf(cb, yPageStart, yTopMargin, yBottomMargin);
float yLocation = yPageStart - YOffset;
float retval = yLocation;
if (MyItemInfo.IsStepSection)
if (!MyItemInfo.IsStepSection) // Don't ouput the Step Section title
{
Console.WriteLine("Step Section - {0}", MyItemInfo.Path);
}
else
{
retval = Rtf2Pdf.TextAt(cb, IParagraph, XOffset, yLocation, Width, 100);
retval = Rtf2Pdf.TextAt(cb, IParagraph, XOffset, yLocation, Width, 100, PdfDebugText);
if (retval == 0)
{
cb.PdfDocument.NewPage();
yPageStart = yTopMargin + YTop;
yLocation = yPageStart - YOffset;
Console.WriteLine("Other Paginate");
retval = Rtf2Pdf.TextAt(cb, IParagraph, XOffset, yLocation, Width, 100);
//MyItemInfo.ItemID, YSize, yPageSize, yLocation
Console.WriteLine("-1,'Yes','Forced Pagination',{0},{1},,{3},'{4}'", MyItemInfo.ItemID,YSize,0,yLocation,MyItemInfo.ShortPath);
retval = Rtf2Pdf.TextAt(cb, IParagraph, XOffset, yLocation, Width, 100, PdfDebugText);
}
}
//Height = yLocation - retval;
@ -71,12 +68,17 @@ namespace Volian.Print.Library
if (_PartsContainer != null && _PartsContainer.Count > 0) yPageStart = PartsContainer.ToPdf(cb, yPageStart, yTopMargin, yBottomMargin);
return yPageStart;
}
private string PdfDebugText
{
get
{
return string.Format("ID={0} Type={1} TypeName='{2}' EveryNLines= {3}", MyItemInfo.ItemID, MyItemInfo.FormatStepType, MyItemInfo.FormatStepData.Type, MyItemInfo.FormatStepData.StepLayoutData.EveryNLines);
}
}
public override float ToPdf(PdfContentByte cb, float yPageStart, float yTopMargin, float yBottomMargin)
{
float yLocation = yPageStart - YTopMost;
int paginate = Paginate(yLocation, yTopMargin - yBottomMargin);
int paginate = Paginate(yLocation, yTopMargin, yBottomMargin);
switch (paginate)
{
case 1: // Break on High Level Step
@ -96,12 +98,47 @@ namespace Volian.Print.Library
return yPageStart;
}
private int Paginate(float yLocation, float yPageSize)
private int Paginate(float yLocation, float yTopMargin, float yBottomMargin)
{
if (YSize <= yLocation) return 0; // Don't Paginate if there is enough room
float yPageSize = yTopMargin - yBottomMargin;
float yWithinMargins = yLocation - yBottomMargin;
if (MyItemInfo.ItemID == 879)
Console.Write(",'Here'");
if (MyItemInfo.IsStepSection) return 0; // Don't Paginate on a Step Section
if (YSize <= yWithinMargins)
{
if(MyItemInfo.IsHigh)
Console.WriteLine("1,'No','HLS will fit on page',{0},{1},{2}, {3}, {4},'{5}'", MyItemInfo.ItemID, YSize, yPageSize, yWithinMargins, (int)(100 * yWithinMargins / yPageSize), MyItemInfo.ShortPath);
return 0; // Don't Paginate if there is enough room
}
if (MyItemInfo.IsRNOPart && MyParent.XOffset < XOffset) return 0; // Don't paginate on an RNO to the right
if (MyItemInfo.IsHigh && YSize < yPageSize) return 1; // Paginate on High Level Steps
if (yLocation > yPageSize / 2) return 0;
if (MyItemInfo.IsHigh)
{
if (YSize < yPageSize) // if the entire step can fit on one page, do a page break
{
Console.WriteLine("2,'Yes','HLS will fit on 1 Page',{0},{1},{2}, {3}, {4},'{5}'", MyItemInfo.ItemID, YSize, yPageSize, yWithinMargins, (int)(100 * yWithinMargins / yPageSize), MyItemInfo.ShortPath);
return 1; // Paginate on High Level Steps
}
else // The entire step cannot fit go ahead and kick to the next page
{
if (yWithinMargins > yPageSize / 2)
{
// If High level Step will not fit, kick to the next page
Console.WriteLine("3,'No','HLS will have to split anyway',{0},{1},{2}, {3}, {4},'{5}'", MyItemInfo.ItemID, YSize, yPageSize, yWithinMargins, (int)(100 * yWithinMargins / yPageSize), MyItemInfo.ShortPath);
return 0;// Otherwise stay on this page
}
Console.WriteLine("3,'Yes','HLS will have to split',{0},{1},{2}, {3}, {4},'{5}'", MyItemInfo.ItemID, YSize, yPageSize, yWithinMargins, (int)(100 * yWithinMargins / yPageSize), MyItemInfo.ShortPath);
return 1; // Paginate on High Level Steps
}
}
if (yWithinMargins > yPageSize / 4)
{
Console.WriteLine("4,'No','Not Half way down the page',{0},{1},{2}, {3}, {4},'{5}'", MyItemInfo.ItemID, YSize, yPageSize, yWithinMargins, (int)(100 * yWithinMargins / yPageSize), MyItemInfo.ShortPath);
return 0; // More than half way down the page
}
//if (ChildrenBelow.Count > 0 && ChildrenBelow[0].YSize < yWithinMargins)
// return 0;
Console.WriteLine("5,'Yes','At least half the page is filled',{0},{1},{2},{3}, {4},'{5}'", MyItemInfo.ItemID, YSize, yPageSize, yWithinMargins, (int)(100 * yWithinMargins / yPageSize), MyItemInfo.ShortPath);
return 2;
}
}
@ -110,7 +147,7 @@ namespace Volian.Print.Library
public override float ToPdf(PdfContentByte cb, float yPageStart, float yTopMargin, float yBottomMargin)
{
float yLocation = yPageStart - YOffset;
Rtf2Pdf.TextAt(cb, IParagraph, XOffset, yLocation, HeaderWidth, 100);
Rtf2Pdf.TextAt(cb, IParagraph, XOffset, yLocation, HeaderWidth, 100,"");
return yPageStart;
}
}
@ -120,7 +157,7 @@ namespace Volian.Print.Library
public override float ToPdf(PdfContentByte cb, float yPageStart, float yTopMargin, float yBottomMargin)
{
float yLocation = yPageStart - YOffset;
Rtf2Pdf.TextAt(cb, IParagraph, XOffset, yLocation, TabWidth, 100);
Rtf2Pdf.TextAt(cb, IParagraph, XOffset, yLocation, TabWidth, 100, "");
return yPageStart;
}
}
@ -152,7 +189,7 @@ namespace Volian.Print.Library
public override float ToPdf(PdfContentByte cb, float yPageStart, float yTopMargin, float yBottomMargin)
{
float yLocation = yPageStart - YOffset;
Rtf2Pdf.TextAt(cb, IParagraph, XOffset, yLocation, Width, 100);
Rtf2Pdf.TextAt(cb, IParagraph, XOffset, yLocation, Width, 100, "");
return yPageStart;
}
}
@ -161,12 +198,16 @@ namespace Volian.Print.Library
public override float ToPdf(PdfContentByte cb, float yPageStart, float yTopMargin, float yBottomMargin)
{
float yLocation = yPageStart - YOffset;
VlnSvgPageHelper _MyPageHelper = cb.PdfWriter.PageEvent as VlnSvgPageHelper;
PdfLayer textLayer = _MyPageHelper == null ? null : _MyPageHelper.TextLayer;
if (textLayer != null) cb.BeginLayer(textLayer);
MyContentByte = cb;
System.Drawing.Color push = PrintOverride.SvgColor;
PrintOverride.SvgColor = PrintOverride.TextColor == System.Drawing.Color.Empty ? System.Drawing.Color.Black : PrintOverride.TextColor ;
if (MyPageHelper != null && MyPageHelper.MySvg != null)
MyPageHelper.MySvg.DrawMacro(MacroDef, XOffset, yLocation, cb);
PrintOverride.SvgColor = push;
if (textLayer != null) cb.EndLayer();
return yPageStart;
}
}

View File

@ -7,11 +7,30 @@ using iTextSharp.text.factories;
using Volian.Svg.Library;
using System.Text.RegularExpressions;
using System.Xml;
using VEPROMS.CSLA.Library;
namespace Volian.Print.Library
{
public class VlnSvgPageHelper:SvgPageHelper
{
private ChangeBarDefinition _ChangeBarDefinition;
public ChangeBarDefinition ChangeBarDefinition
{
get { return _ChangeBarDefinition; }
set { _ChangeBarDefinition = value; }
}
private PdfLayer _TextLayer;
public PdfLayer TextLayer
{
get { return _TextLayer; }
set { _TextLayer = value; }
}
private PdfLayer _DebugLayer;
public PdfLayer DebugLayer
{
get { return _DebugLayer; }
set { _DebugLayer = value; }
}
private VEPROMS.CSLA.Library.SectionInfo _MySection;
public VEPROMS.CSLA.Library.SectionInfo MySection
{
@ -267,4 +286,47 @@ namespace Volian.Print.Library
return "";
}
}
public class ChangeBarDefinition
{
private DocVersionConfig.PrintChangeBar _MyChangeBarType;
public DocVersionConfig.PrintChangeBar MyChangeBarType
{
get { return _MyChangeBarType; }
set { _MyChangeBarType = value; }
}
private DocVersionConfig.PrintChangeBarLoc _MyChangeBarLoc;
public DocVersionConfig.PrintChangeBarLoc MyChangeBarLoc
{
get { return _MyChangeBarLoc; }
set { _MyChangeBarLoc = value; }
}
private DocVersionConfig.PrintChangeBarText _MyChangeBarText;
public DocVersionConfig.PrintChangeBarText MyChangeBarText
{
get { return _MyChangeBarText; }
set { _MyChangeBarText = value; }
}
private string _MyChangeBarMessage;
public string MyChangeBarMessage
{
get { return _MyChangeBarMessage; }
set { _MyChangeBarMessage = value; }
}
private int _MyChangeBarColumn; //TODO Should this be two dimensional array
public int MyChangeBarColumn
{
get { return _MyChangeBarColumn; }
set { _MyChangeBarColumn = value; }
}
public ChangeBarDefinition()
{
}
public ChangeBarDefinition(DocVersionConfig.PrintChangeBar myCBT, DocVersionConfig.PrintChangeBarLoc myCBL, DocVersionConfig.PrintChangeBarText myCBTxt, string myCBMsg)
{
_MyChangeBarType = myCBT;
_MyChangeBarLoc = myCBL;
_MyChangeBarText = myCBTxt;
_MyChangeBarMessage = myCBMsg;
}
}
}

View File

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Text;
using System.Drawing;
using iTextSharp.text.pdf;
using iTextSharp.text;
using VEPROMS.CSLA.Library;
namespace Volian.Print.Library
@ -71,10 +72,41 @@ namespace Volian.Print.Library
get
{
if (_Height == 0)
_Height = Rtf2Pdf.GetParagraphHeight(MyContentByte, IParagraph, Width);
_Height = GetParagraphHeight(MyContentByte, IParagraph, Width);
return _Height;
}
}
public static float GetParagraphHeight(PdfContentByte cb, Paragraph iParagraph, float width)
{
return GetParagraphHeight(cb, iParagraph, width, true);
}
public static float GetParagraphHeight(PdfContentByte cb, Paragraph iParagraph, float width, bool throwException)
{
ColumnText myColumnText = new ColumnText(cb);
myColumnText.SetSimpleColumn(0, 792F, width, 0); // Bottom margin
myColumnText.AddElement(iParagraph);
//myColumnText.UseAscender = true;// Adjusts to the top of the text box.
int status = myColumnText.Go(true); // Check to see if it will fit on the page.
if (ColumnText.HasMoreText(status) && throwException)
throw (new Exception("Paragraph longer than a page"));
return 792F - myColumnText.YLine; // This gives the height of the Paragraph
}
public static float GetTableWidth(PdfContentByte cb, Paragraph iParagraph)
{
int iWidth = 128 * (int) _CharsToTwips; // maximum width in Characters
float h = GetParagraphHeight(cb, iParagraph, iWidth);
int iWidthMax = iWidth;
int iDelta = iWidth / 2;
iWidth = iWidth / 2;
while (iDelta > 0)
{
float h2 = GetParagraphHeight(cb, iParagraph, iWidth,false);
iDelta = iDelta / 2;
if (h2 == h) iWidthMax = iWidth;
iWidth += (h2>h ? 1: -1) * iDelta;
}
return (float) iWidthMax;
}
private PdfContentByte _MyContentByte;
public PdfContentByte MyContentByte
{
@ -330,7 +362,8 @@ namespace Volian.Print.Library
if (bxIndx != null)
{
Box bx = formatInfo.PlantFormat.FormatData.BoxList[(int)bxIndx];
XOffset += (float)bx.TxtStart + tabWidth + XOffsetBox;
//XOffset += (float)bx.TxtStart + tabWidth + XOffsetBox;
XOffset = (float)itemInfo.MyDocStyle.Layout.LeftMargin + (float)bx.TxtStart + tabWidth + XOffsetBox;
if (myTab!=null)myTab.XOffset = XOffset - tabWidth;
}
else if (itemInfo.IsHigh)
@ -371,6 +404,10 @@ namespace Volian.Print.Library
{
Width = MyParent.Width;
}
else if (itemInfo.IsTablePart)
{
Width = 72*7; // TODO: Need to determine the Width of the Table based upon the contents
}
else
{
Width = MyParent.Width - tabWidth + (myTab == null ? 0 : myTab.TabAlign);
@ -473,8 +510,8 @@ namespace Volian.Print.Library
public partial class vlnBox : vlnPrintObject
{
private int _LineType; /* how to represent?? */
private Color _Color;
public Color Color
private System.Drawing.Color _Color;
public System.Drawing.Color Color
{
get { return _Color; }
set { _Color = value; }

View File

@ -102,7 +102,7 @@ namespace Volian.Svg.Library
float myY = yOffset + cb.PdfDocument.PageSize.Height - _Scale * (y.GetSizeInPixels(DPI) - YLowerLimit);
if (myY < .1F * cb.PdfDocument.PageSize.Height)
{
cb.PdfDocument.NewPage();
//cb.PdfDocument.NewPage();
myY += .8F * cb.PdfDocument.PageSize.Height;
}
return myY;

View File

@ -411,9 +411,7 @@ namespace Volian.Svg.Library
//cb.SetLineWidth(scale.M(LineWidth));
cb.SetLineWidth(LineWidth.Value);
cb.SetColorStroke(new Color(LineColor));
//cb.SetColorStroke(Color.BLACK);
}
//cb.SetColorStroke(Color.GREEN);
cb.SetLineCap(PdfContentByte.LINE_CAP_ROUND);
cb.MoveTo(scale.X(X1), scale.Y(cb, Y1));
cb.LineTo(scale.X(X2), scale.Y(cb, Y2));
@ -965,7 +963,7 @@ namespace Volian.Svg.Library
private void DrawZoomOMatic(PdfContentByte cb)
{
cb.SaveState();
ZoomOMatic(cb, 18);
ZoomOMatic(cb, 36);
cb.RestoreState();
}
private void DrawWatermark(PdfContentByte cb)