Browse Source

Move handling of pageBreak to BaseConverter.cs

Signed-off-by: peterforstmeier <peter.forstmeier@t-online.de>
pull/1/head
peterforstmeier 15 years ago
parent
commit
98174d6c3a
  1. 13
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/PrintHelper.cs
  2. 19
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs
  3. 46
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs
  4. 51
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/TableConverter.cs

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

@ -12,8 +12,9 @@ using System.Drawing; @@ -12,8 +12,9 @@ using System.Drawing;
using System.Globalization;
using System.Linq;
using ICSharpCode.Reports.Core.Interfaces;
using ICSharpCode.Reports.Core.Events;
using ICSharpCode.Reports.Core.Exporter;
using ICSharpCode.Reports.Core.Interfaces;
using ICSharpCode.Reports.Expressions.ReportingLanguage;
namespace ICSharpCode.Reports.Core.BaseClasses.Printing
@ -148,6 +149,14 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing @@ -148,6 +149,14 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing
container;
}
#region PageBreak
public static Rectangle CalculatePageBreakRectangle(BaseReportItem simpleContainer,Point curPos)
{
return new Rectangle(new Point (simpleContainer.Location.X,curPos.Y), simpleContainer.Size);
}
public static bool IsPageFull (Rectangle rectangle,SectionBounds bounds)
{
if (rectangle.Bottom > bounds.PageFooterRectangle.Top) {
@ -157,6 +166,8 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing @@ -157,6 +166,8 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing
}
#endregion
public static IExpressionEvaluatorFacade CreateEvaluator (ISinglePage singlePage,IDataNavigator dataNavigator)
{
if (singlePage == null) {

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

@ -8,7 +8,6 @@ @@ -8,7 +8,6 @@
*/
using System;
using System.Drawing;
using System.Linq;
using ICSharpCode.Reports.Core.BaseClasses.Printing;
using ICSharpCode.Reports.Core.Events;
using ICSharpCode.Reports.Core.Interfaces;
@ -58,12 +57,25 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -58,12 +57,25 @@ namespace ICSharpCode.Reports.Core.Exporter
}
#region PageBreak
protected void BuildNewPage(ExporterCollection myList,BaseSection section)
{
FirePageFull(myList);
section.SectionOffset = SinglePage.SectionBounds.PageHeaderRectangle.Location.Y;
myList.Clear();
}
protected void FirePageFull (ExporterCollection items)
{
EventHelper.Raise<NewPageEventArgs>(PageFull,this,new NewPageEventArgs(items));
}
#endregion
protected void FireSectionRendering (BaseSection section)
{
SectionRenderEventArgs srea = new SectionRenderEventArgs(section,
@ -143,11 +155,13 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -143,11 +155,13 @@ namespace ICSharpCode.Reports.Core.Exporter
get {return this.saveSize;}
}
protected IExpressionEvaluatorFacade Evaluator
{
get {return this.evaluator;}
}
protected void FillRow (ISimpleContainer row)
{
DataNavigator.Fill(row.Items);
@ -169,7 +183,6 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -169,7 +183,6 @@ namespace ICSharpCode.Reports.Core.Exporter
PrintHelper.SetLayoutForRow(Graphics,Layouter,row);
}
protected static Point BaseConvert(ExporterCollection myList,ISimpleContainer container,int leftPos,Point curPos)
{

46
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs

@ -40,6 +40,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -40,6 +40,7 @@ namespace ICSharpCode.Reports.Core.Exporter
if (item == null) {
throw new ArgumentNullException("item");
}
ISimpleContainer simpleContainer = item as ISimpleContainer;
this.parent = parent;
@ -67,7 +68,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -67,7 +68,7 @@ namespace ICSharpCode.Reports.Core.Exporter
int defaultLeftPos = parent.Location.X;
Rectangle curRect = Rectangle.Empty;
Rectangle pageBreakRect = Rectangle.Empty;
do {
@ -90,27 +91,26 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -90,27 +91,26 @@ namespace ICSharpCode.Reports.Core.Exporter
do {
currentPosition = ConvertGroupChilds (exporterCollection,section,simpleContainer,defaultLeftPos,currentPosition);
curRect = PageBreakRectangle((BaseReportItem)section.Items[1],currentPosition,section);
pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)section.Items[1],currentPosition);
if (PrintHelper.IsPageFull(curRect,base.SectionBounds )) {
BuildNewPage(exporterCollection,section);
if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds )) {
base.BuildNewPage(exporterCollection,section);
currentPosition = CalculateStartPosition ();
}
}
while ( base.DataNavigator.ChildMoveNext());
}
}
else
{
// No Grouping
// No Grouping at all
currentPosition = ConvertStandardRow (exporterCollection,section,simpleContainer,defaultLeftPos,currentPosition);
}
curRect = PageBreakRectangle((BaseReportItem)section.Items[0],currentPosition,section);
//PageBreakNeeded(exporterCollection,section,curRect,currentPosition);
if (PrintHelper.IsPageFull(curRect,base.SectionBounds)) {
BuildNewPage(exporterCollection,section);
currentPosition = CalculateStartPosition ();
pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)section.Items[0],currentPosition);
if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds)) {
base.BuildNewPage(exporterCollection,section);
currentPosition = CalculateStartPosition();
}
ShouldDrawBorder (section,exporterCollection);
@ -125,29 +125,19 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -125,29 +125,19 @@ namespace ICSharpCode.Reports.Core.Exporter
return exporterCollection;
}
Rectangle PageBreakRectangle(BaseReportItem simpleContainer,Point curPos,BaseSection section)
{
return new Rectangle(new Point (simpleContainer.Location.X,curPos.Y), simpleContainer.Size);
}
// private Point PerformPageBreak (ExporterCollection exporterCollection,BaseSection section)
// {
// BuildNewPage(exporterCollection,section);
// return CalculateStartPosition();
// }
//
private Point CalculateStartPosition()
{
return new Point(base.SectionBounds.PageHeaderRectangle.X,base.SectionBounds.PageHeaderRectangle.Y);
}
private void BuildNewPage(ExporterCollection myList,BaseSection section)
{
base.FirePageFull(myList);
section.SectionOffset = base.SinglePage.SectionBounds.PageHeaderRectangle.Location.Y;
myList.Clear();
}
private Point ConvertGroupHeader(ExporterCollection mylist,BaseSection section,ISimpleContainer simpleContainer,int leftPos,Point offset)
{
Point retVal = Point.Empty;

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

@ -23,7 +23,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -23,7 +23,7 @@ namespace ICSharpCode.Reports.Core.Exporter
public TableConverter(IDataNavigator dataNavigator,
ExporterPage singlePage,
ILayouter layouter ):base(dataNavigator,singlePage,layouter)
{
}
@ -50,7 +50,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -50,7 +50,7 @@ namespace ICSharpCode.Reports.Core.Exporter
{
Point currentPosition = new Point(PrintHelper.DrawingAreaRelativeToParent(this.baseTable.Parent,this.baseTable).Location.X,
base.SectionBounds.DetailStart.Y);
base.SectionBounds.DetailStart.Y);
int defaultLeftPos = currentPosition.X;
@ -69,13 +69,13 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -69,13 +69,13 @@ namespace ICSharpCode.Reports.Core.Exporter
simpleContainer.Parent = (BaseReportItem)this.baseTable;
base.SaveSize( new Size (simpleContainer.Size.Width,simpleContainer.Size.Height));
// Header/FooterRow
if (PrintHelper.IsTextOnlyRow(simpleContainer) ) {
headerContainer = simpleContainer;
currentPosition = BaseConverter.BaseConvert(mylist,headerContainer,defaultLeftPos,currentPosition);
}
else
else
{
// DataRegion
base.SaveSize(simpleContainer.Size);
@ -90,31 +90,34 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -90,31 +90,34 @@ namespace ICSharpCode.Reports.Core.Exporter
base.PrepareContainerForConverting(null,simpleContainer);
if (PrintHelper.IsPageFull(new Rectangle(new Point (simpleContainer.Location.X,currentPosition.Y),simpleContainer.Size),base.SectionBounds)) {
base.FirePageFull(mylist);
mylist.Clear();
Rectangle pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)simpleContainer,currentPosition);
if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds))
{
base.BuildNewPage(mylist,section);
currentPosition = BaseConverter.BaseConvert(mylist,headerContainer,
defaultLeftPos,
base.SectionBounds.ReportHeaderRectangle.Location);
currentPosition = BaseConverter.BaseConvert(mylist,headerContainer,
defaultLeftPos,
base.SectionBounds.ReportHeaderRectangle.Location);
}
currentPosition = BaseConverter.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition);
simpleContainer.Size = base.RestoreSize;
}
currentPosition = BaseConverter.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition);
simpleContainer.Size = base.RestoreSize;
while (base.DataNavigator.MoveNext());
//Allway's reset the DataNavigator
base.DataNavigator.Reset();
base.DataNavigator.MoveNext();
SectionBounds.ReportFooterRectangle = new Rectangle(SectionBounds.ReportFooterRectangle.Left,
currentPosition.Y,
SectionBounds.ReportFooterRectangle.Width,
SectionBounds.ReportFooterRectangle.Height);
}
while (base.DataNavigator.MoveNext());
//Allway's reset the DataNavigator
base.DataNavigator.Reset();
base.DataNavigator.MoveNext();
SectionBounds.ReportFooterRectangle = new Rectangle(SectionBounds.ReportFooterRectangle.Left,
currentPosition.Y,
SectionBounds.ReportFooterRectangle.Width,
SectionBounds.ReportFooterRectangle.Height);
}
}
return mylist;
}
return mylist;
}
}
}

Loading…
Cancel
Save