Browse Source

Work on Layouter

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/reports@6143 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Peter Forstmeier 16 years ago
parent
commit
1e70b9b93e
  1. 5
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/PrintHelper.cs
  2. 1
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/StandardFormatter.cs
  3. 22
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/StandardPrinter.cs
  4. 19
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs
  5. 4
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/RowConverter.cs
  6. 15
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/TableConverter.cs
  7. 39
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/AbstractDataRenderer.cs

5
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/PrintHelper.cs

@ -29,10 +29,10 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing @@ -29,10 +29,10 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing
public static void SetLayoutForRow (Graphics graphics, ILayouter layouter,ISimpleContainer row)
{
BaseReportItem item = row as BaseReportItem;
int extend = item.Size.Height - row.Items[0].Size.Height;
Rectangle textRect = layouter.Layout(graphics,row);
if (textRect.Height > item.Size.Height) {
item.Size = new Size(item.Size.Width,textRect.Height + extend );
item.Size = new Size(item.Size.Width,textRect.Height);
}
}
@ -171,6 +171,7 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing @@ -171,6 +171,7 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing
}
#region Debug Code
///<summary>

1
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/StandardFormatter.cs

@ -14,6 +14,7 @@ using System.Globalization; @@ -14,6 +14,7 @@ using System.Globalization;
/// </summary>
namespace ICSharpCode.Reports.Core.BaseClasses.Printing
{
internal static class StandardFormatter
{

22
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/StandardPrinter.cs

@ -110,7 +110,6 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing @@ -110,7 +110,6 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing
offset.Y + item.Location.Y);
var ss = MeasurementService.MeasureReportItem(rpea.PrintPageEventArgs.Graphics,item);
Console.WriteLine ("RenderLineItem {0} - {1}",ss,item.Size);
BaseTextItem textItem = item as BaseTextItem;
@ -122,11 +121,6 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing @@ -122,11 +121,6 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing
if (str != textItem.Text) {
var ss1 = MeasurementService.MeasureReportItem(rpea.PrintPageEventArgs.Graphics,item);
int i = Convert.ToInt16(UnitConverter.FromPixel(ss1.Height).Point);
Console.WriteLine ("RenderLineItemxx {0} - {1} - {2} ",ss1,
item.Size,
i);
}
textItem.Render(rpea);
@ -227,6 +221,22 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing @@ -227,6 +221,22 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing
}
return null;
}
#endregion
#region Evaluate
public static void EvaluateRow(IExpressionEvaluatorFacade evaluator,ExporterCollection row)
{
foreach (BaseExportColumn element in row) {
ExportText textItem = element as ExportText;
if (textItem != null) {
textItem.Text = evaluator.Evaluate(textItem.Text);
}
}
}
#endregion
}
}

19
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs

@ -144,6 +144,10 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -144,6 +144,10 @@ namespace ICSharpCode.Reports.Core.Exporter
get {return this.saveSize;}
}
protected IExpressionEvaluatorFacade Evaluator
{
get {return this.evaluator;}
}
protected void FillRow (ISimpleContainer row)
{
@ -154,24 +158,11 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -154,24 +158,11 @@ namespace ICSharpCode.Reports.Core.Exporter
protected void LayoutRow (ISimpleContainer row)
{
PrintHelper.SetLayoutForRow(Graphics,Layouter,row);
}
protected void EvaluateRow(ExporterCollection row)
{
foreach (BaseExportColumn element in row) {
ExportText textItem = element as ExportText;
if (textItem != null) {
Console.WriteLine (textItem.Text);
textItem.Text = evaluator.Evaluate(textItem.Text);
}
}
}
protected Point BaseConvert(ExporterCollection myList,ISimpleContainer container,int leftPos,Point curPos)
{
ExporterCollection ml = BaseConverter.ConvertItems (container, curPos);

4
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/RowConverter.cs

@ -74,13 +74,15 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -74,13 +74,15 @@ namespace ICSharpCode.Reports.Core.Exporter
base.FillRow(simpleContainer);
base.LayoutRow(simpleContainer);
base.FireSectionRendering(section);
currentPosition = base.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition);
EvaluateRow(mylist);
StandardPrinter.EvaluateRow(base.Evaluator,mylist);
section.Items[0].Size = base.RestoreSize;
section.SectionOffset += section.Size.Height + 2 * base.SinglePage.SectionBounds.Gap;

15
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/TableConverter.cs

@ -48,11 +48,17 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -48,11 +48,17 @@ namespace ICSharpCode.Reports.Core.Exporter
private ExporterCollection ConvertInternal(ExporterCollection mylist)
{
Point currentPosition = new Point(base.SectionBounds.DetailStart.X,base.SectionBounds.DetailStart.Y);
Point currentPosition = new Point(PrintHelper.DrawingAreaRelativeToParent(this.baseTable.Parent,this.baseTable).Location.X,
base.SectionBounds.DetailStart.Y);
int defaultLeftPos = currentPosition.X;
Point dataAreaStart = new Point(baseTable.Items[0].Location.X,baseTable.Items[0].Location.Y + currentPosition.Y);
ISimpleContainer headerContainer = null;
int defaultLeftPos = PrintHelper.DrawingAreaRelativeToParent(this.baseTable.Parent,this.baseTable).Left;
this.baseTable.Items.SortByLocation();
@ -79,6 +85,9 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -79,6 +85,9 @@ namespace ICSharpCode.Reports.Core.Exporter
section.Location = new Point(section.Location.X,section.SectionOffset );
base.FillRow(simpleContainer);
StandardPrinter.EvaluateRow(base.Evaluator,mylist);
base.LayoutRow(simpleContainer);
@ -93,7 +102,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -93,7 +102,7 @@ namespace ICSharpCode.Reports.Core.Exporter
currentPosition = base.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition);
EvaluateRow(mylist);
// EvaluateRow(mylist);
simpleContainer.Size = base.RestoreSize;
}

39
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/AbstractDataRenderer.cs

@ -67,32 +67,41 @@ namespace ICSharpCode.Reports.Core @@ -67,32 +67,41 @@ namespace ICSharpCode.Reports.Core
}
Point saveLocation = tableContainer.Location;
Point currentPosition = new Point(this.CurrentSection.Location.X,this.CurrentSection.Location.Y);
Point currentPosition = new Point(PrintHelper.DrawingAreaRelativeToParent(this.CurrentSection,tableContainer).Location.X,
this.CurrentSection.Location.Y);
tableContainer.Items.SortByLocation();
rpea.SinglePage.StartRow = this.dataNavigator.CurrentRow;
Size rs = Size.Empty;
foreach (BaseRowItem row in tableContainer.Items)
{
if (row != null)
{
rs = row.Size;
PrintHelper.AdjustParent(tableContainer as BaseReportItem,tableContainer.Items);
if (PrintHelper.IsTextOnlyRow(row) )
{
PrintHelper.SetLayoutForRow(rpea.PrintPageEventArgs.Graphics,base.Layout,row);
Rectangle r = StandardPrinter.RenderContainer(row,Evaluator,currentPosition,rpea);
currentPosition =PrintHelper. ConvertRectangleToCurentPosition (r);
currentPosition = new Point(parent.Location.X + row.Location.X,currentPosition.Y);
currentPosition =PrintHelper.ConvertRectangleToCurentPosition (r);
// currentPosition = new Point(parent.Location.X + row.Location.X,currentPosition.Y);
tableContainer.Location = saveLocation;
Console.WriteLine("----");
}
else {
int adjust = row.Location.Y - saveLocation.Y;
row.Location = new Point(row.Location.X,row.Location.Y - adjust - 3 * GlobalValues.GapBetweenContainer);
rs = row.Size;
do {
if (PrintHelper.IsPageFull(new Rectangle(currentPosition,row.Size),this.SectionBounds)) {
tableContainer.Location = saveLocation;
@ -101,30 +110,26 @@ namespace ICSharpCode.Reports.Core @@ -101,30 +110,26 @@ namespace ICSharpCode.Reports.Core
AbstractRenderer.PageBreak(rpea);
return;
}
this.dataNavigator.Fill(row.Items);
Console.WriteLine("org row size {0}",row.Size);
PrintHelper.SetLayoutForRow(rpea.PrintPageEventArgs.Graphics,base.Layout,row);
Console.WriteLine("new row size {0}",row.Size);
Console.WriteLine("");
Rectangle r = StandardPrinter.RenderContainer(row,Evaluator,currentPosition,rpea);
currentPosition = PrintHelper.ConvertRectangleToCurentPosition (r);
currentPosition = new Point(parent.Location.X + row.Location.X,currentPosition.Y);
row.Size = rs;
}
while (this.dataNavigator.MoveNext());
}
}
row.Size = rs;
}
//
// if (this.DrawBorder) {
// Border border = new Border(new BaseLine (this.ForeColor,System.Drawing.Drawing2D.DashStyle.Solid,1));
// border.DrawBorder(rpea.PrintPageEventArgs.Graphics,
// new Rectangle(parent.Location.X,tableStart.Y,
// parent.Size.Width,currentPosition.Y + 5));
// }
rpea.LocationAfterDraw = new Point(rpea.LocationAfterDraw.X,rpea.LocationAfterDraw.Y + 20);
// base.NotifyAfterPrint (rpea.LocationAfterDraw);
}

Loading…
Cancel
Save