diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/SectionBounds.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/SectionBounds.cs index 4cb1b72924..91792c024d 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/SectionBounds.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/SectionBounds.cs @@ -4,6 +4,7 @@ using System; using System.Drawing; using ICSharpCode.Reports.Core.Globals; +using ICSharpCode.Reports.Core.Interfaces; namespace ICSharpCode.Reports.Core.BaseClasses { @@ -65,6 +66,15 @@ namespace ICSharpCode.Reports.Core.BaseClasses #region Measurement + public void CalculatePageBounds (IReportModel reportModel) + { + MeasureReportHeader(reportModel.ReportHeader); + MeasurePageHeader(reportModel.PageHeader); + MeasurePageFooter(reportModel.PageFooter); + MeasureReportFooter(reportModel.ReportFooter); + } + + public void MeasureReportHeader (BaseSection section) { if (section == null) { diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/SinglePage.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/SinglePage.cs index d187c0763b..5a8f992af1 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/SinglePage.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/SinglePage.cs @@ -36,19 +36,10 @@ namespace ICSharpCode.Reports.Core.BaseClasses throw new ArgumentNullException("reportModel"); } - sectionBounds.MeasureReportHeader(reportModel.ReportHeader); - this.sectionBounds.MeasurePageHeader(reportModel.PageHeader); - - this.sectionBounds.MeasurePageFooter(reportModel.PageFooter); - - this.sectionBounds.MeasureReportFooter(reportModel.ReportFooter); - - //this.sectionBounds.MeasureDetailArea(); - + sectionBounds.CalculatePageBounds(reportModel); this.sectionBounds.DetailSectionRectangle = new System.Drawing.Rectangle(reportModel.DetailSection.Location.X,sectionBounds.DetailArea.Top, reportModel.DetailSection.Size.Width, reportModel.DetailSection.Size.Height); - } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs index fdf7ff8f11..b1cc4352d7 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs @@ -39,6 +39,7 @@ namespace ICSharpCode.Reports.Core.Exporter if (!ServiceContainer.Contains(typeof(ILayouter))) { ServiceContainer.AddService(new Layouter()); } + this.Graphics = CreateGraphicObject.FromSize(this.ReportModel.ReportSettings.PageSize); } @@ -56,6 +57,7 @@ namespace ICSharpCode.Reports.Core.Exporter } else { firstPage = false; } + SectionBounds sectionBounds = new SectionBounds (this.ReportModel.ReportSettings,firstPage); ExporterPage sp = ExporterPage.CreateInstance(sectionBounds,this.pages.Count + 1); return sp; diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs index 821a8656da..2e9b01514d 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs @@ -157,21 +157,13 @@ namespace ICSharpCode.Reports.Core.Exporter { base.ForcePageBreak(exporterCollection,section); return CalculateStartPosition(section); - } private Point CalculateStartPosition(BaseSection section) { - -// Console.WriteLine ("CalculateStartPosition {0}", base.SectionBounds.DetailStart); var r = base.ReportModel; - base.SectionBounds.MeasureReportHeader(r.ReportHeader); - base.SectionBounds.MeasurePageHeader(r.PageHeader); -// Console.WriteLine("\treportheader {0}",base.SectionBounds.ReportHeaderRectangle); -// Console.WriteLine("\tpageheader {0}",base.SectionBounds.PageHeaderRectangle); -// Console.WriteLine("\tdetail {0}",base.SectionBounds.DetailArea); -// Console.WriteLine("\tret value {0}",base.SectionBounds.PageHeaderRectangle.Bottom ); + base.SectionBounds.CalculatePageBounds(r); return new Point(base.SectionBounds.DetailArea.X,base.SectionBounds.PageHeaderRectangle.Bottom + 1); } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs index fc77fe0dac..968bf2db5e 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs @@ -72,19 +72,19 @@ namespace ICSharpCode.Reports.Core.Exporter { base.ReportModel.ReportHeader.Size = Size.Empty; } - base.SectionBounds.MeasurePageHeader(base.ReportModel.ReportHeader); + base.SectionBounds.CalculatePageBounds(base.ReportModel); + } protected override void BuildPageHeader () { // base.DebugShowSections(); - base.SectionBounds.MeasurePageHeader(base.ReportModel.ReportHeader); - base.SectionBounds.MeasurePageHeader(base.ReportModel.PageHeader); + base.SectionBounds.CalculatePageBounds(base.ReportModel); // Console.WriteLine("----------------"); ConvertSectionInternal (base.ReportModel.PageHeader); base.ReportModel.PageHeader.Size = new Size(base.ReportModel.PageHeader.Size.Width,base.Offset.Y - base.ReportModel.PageHeader.SectionOffset); - base.SectionBounds.MeasurePageHeader(base.ReportModel.PageHeader); + base.SectionBounds.CalculatePageBounds(base.ReportModel); // base.DebugShowSections(); } @@ -135,8 +135,6 @@ namespace ICSharpCode.Reports.Core.Exporter protected Point BuildDetail (BaseSection section,IDataNavigator dataNavigator) { -// Console.WriteLine ("detail at {0}",SectionBounds.DetailArea); -// Console.WriteLine ("detail start at {0}",SectionBounds.DetailStart); ExporterCollection convertedList = new ExporterCollection(); foreach (BaseReportItem item in section.Items) { @@ -197,9 +195,9 @@ namespace ICSharpCode.Reports.Core.Exporter BaseSection section = base.ReportModel.DetailSection; section.SectionOffset = base.SinglePage.SectionBounds.DetailArea.Top; - var p = this.BuildDetail (section,dataNavigator); + var currentLocation = this.BuildDetail (section,dataNavigator); - var r = new Rectangle (SectionBounds.ReportFooterRectangle.Left,p.Y, + var r = new Rectangle (SectionBounds.ReportFooterRectangle.Left,currentLocation.Y, SectionBounds.ReportFooterRectangle.Size.Width, SectionBounds.ReportFooterRectangle.Size.Height); this.BuildReportFooter(r); diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/FormPageBuilder.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/FormPageBuilder.cs index d041e35e18..3fff2a91f4 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/FormPageBuilder.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/FormPageBuilder.cs @@ -55,8 +55,9 @@ namespace ICSharpCode.Reports.Core.Exporter { this.ReportModel.PageHeader.SectionOffset = base.SinglePage.SectionBounds.PageHeaderRectangle.Top; ExporterCollection convertedList = base.ConvertSection (base.ReportModel.PageHeader,0); - base.SinglePage.Items.AddRange(convertedList); - base.SectionBounds.MeasurePageHeader(base.ReportModel.PageHeader); + base.SinglePage.Items.AddRange(convertedList); + base.SectionBounds.CalculatePageBounds(base.ReportModel); +// base.SectionBounds.MeasurePageHeader(base.ReportModel.PageHeader); } protected override void BuildDetailInternal(BaseSection section)