From b4495932aca4662ea7b9d13210785c0e76ce6106 Mon Sep 17 00:00:00 2001 From: peterforstmeier Date: Sun, 3 Jul 2011 19:03:15 +0200 Subject: [PATCH] Rectangle and Circle can be used as Containers --- .../src/SharpReportSamples/MainForm.cs | 6 +++- .../Project/BaseItems/BaseSection.cs | 27 +++++++++++++++-- .../Project/Exporter/BasePager.cs | 27 ++++++++--------- .../Exporter/ExportColumns/ExportContainer.cs | 1 + .../ExportColumns/ExportGraphicContainer.cs | 29 +++++++------------ .../Project/Exporter/FormPageBuilder.cs | 5 ---- 6 files changed, 52 insertions(+), 43 deletions(-) diff --git a/samples/SharpDevelopReports/src/SharpReportSamples/MainForm.cs b/samples/SharpDevelopReports/src/SharpReportSamples/MainForm.cs index 4673dcc811..29d01db355 100644 --- a/samples/SharpDevelopReports/src/SharpReportSamples/MainForm.cs +++ b/samples/SharpDevelopReports/src/SharpReportSamples/MainForm.cs @@ -153,6 +153,9 @@ namespace SharpReportSamples private void RunContributors (string fileName) { ReportModel model = ReportEngine.LoadReportModel(fileName); + Console.WriteLine(model.ReportSettings.PageSize); + model.ReportSettings.PageSize = new Size(model.ReportSettings.PageSize.Width,400); + Console.WriteLine(model.ReportSettings.PageSize); // sorting is done here, but, be carefull, misspelled fieldnames will cause an exception @@ -302,7 +305,7 @@ namespace SharpReportSamples private void PushPrinting (object sender, SectionRenderEventArgs e ) { string sectionName = e.Section.Name; - + /* if (sectionName == ReportSectionNames.ReportHeader) { Console.WriteLine("PushPrinting :" + ReportSectionNames.ReportHeader); } @@ -372,6 +375,7 @@ namespace SharpReportSamples else{ throw new WrongSectionException(sectionName); } + */ } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseSection.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseSection.cs index 01d7df1f4a..7429b1bb0f 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseSection.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseSection.cs @@ -132,10 +132,31 @@ namespace ICSharpCode.Reports.Core public virtual bool PageBreakAfter {get;set;} #endregion - - public Size MeasureOverride (Size size) + //http://www.switchonthecode.com/tutorials/wpf-tutorial-creating-a-custom-panel-control +// http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/607eba8c-6fa4-414c-82ae-23a527cdc5bf + public Size MeasureOverride (Size availableSize) { - return Size.Empty; + Size resultSize = new Size(0,0); + Console.WriteLine("MeasureOverride"); + foreach (var item in Items) { + Console.WriteLine("{0} - {1}",item.Location,item.Size); + resultSize.Width = Math.Max(resultSize.Width, item.Size.Width); + resultSize.Height = Math.Max(resultSize.Height, item.Size.Height); + } + +// resultSize.Width = double.IsPositiveInfinity(availableSize.Width) ? +// resultSize.Width : availableSize.Width; +// +// resultSize.Height = double.IsPositiveInfinity(availableSize.Height) ? +// resultSize.Height : availableSize.Height; + + resultSize.Width = double.IsPositiveInfinity(availableSize.Width) ? + resultSize.Width : availableSize.Width; + var b = double.IsPositiveInfinity(availableSize.Height); + resultSize.Height = double.IsPositiveInfinity(availableSize.Height) ? + resultSize.Height : availableSize.Height; + + return resultSize; } #region System.IDisposable interface implementation 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 77bf7c847c..15d1c48358 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 @@ -89,21 +89,6 @@ namespace ICSharpCode.Reports.Core.Exporter if (section.Items.Count > 0) { Size sectionSize = section.Size; - foreach (var element in section.Items) { - Console.WriteLine(element.Location); - } - section.Items.SortByLocation(); - Console.WriteLine("--"); - foreach (var element in section.Items) { - Console.WriteLine(element.Location); - } - - section.Items.ForEach(delegate(BaseReportItem item) - { - Console.WriteLine(item.Location); - }); - var h = section.Items.FindHighestElement(); - IExpressionEvaluatorFacade evaluator = EvaluationHelper.CreateEvaluator(this.SinglePage,this.SinglePage.IDataNavigator); @@ -129,6 +114,18 @@ namespace ICSharpCode.Reports.Core.Exporter var layouter = (ILayouter)ServiceContainer.GetService(typeof(ILayouter)); LayoutHelper.SetLayoutForRow(Graphics,layouter, simpleContainer); + /* + * */ + Console.WriteLine("--"); + section.Items.ForEach(delegate(BaseReportItem aitem) + { + Console.WriteLine(item.Location); + }); + var h = section.Items.FindHighestElement(); + section.MeasureOverride(section.Size); + /* + * */ + Offset = BaseConverter.ConvertContainer(convertedSection,simpleContainer,Offset.X,Offset); simpleContainer.Size = containerSize; } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportContainer.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportContainer.cs index 808abfeeef..16f7e7e660 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportContainer.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportContainer.cs @@ -37,6 +37,7 @@ namespace ICSharpCode.Reports.Core.Exporter } base.DrawItem(graphics); base.Decorate(graphics); + foreach (ICSharpCode.Reports.Core.Exporter.BaseExportColumn baseExportColumn in items) { baseExportColumn.DrawItem(graphics); diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportGraphicContainer.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportGraphicContainer.cs index de0d6ca26a..ee3186c19c 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportGraphicContainer.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportGraphicContainer.cs @@ -10,12 +10,13 @@ using System; using System.Drawing; using ICSharpCode.Reports.Core.Globals; using iTextSharp.text.pdf; +using System.Linq; namespace ICSharpCode.Reports.Core.Exporter { public class ExportGraphicContainer :ExportContainer { - +// public ExportGraphicContainer (IExportContainer itemStyle,bool isContainer):base(itemStyle as BaseStyleDecorator) public ExportGraphicContainer (IBaseStyleDecorator itemStyle,bool isContainer):base(itemStyle as BaseStyleDecorator) { @@ -25,8 +26,9 @@ namespace ICSharpCode.Reports.Core.Exporter { base.DrawItem(graphics); ILineDecorator lineDecorator = base.StyleDecorator as LineDecorator; - if (lineDecorator != null) { - GraphicsLineDrawer (graphics); + if (lineDecorator != null) + { + throw new ArgumentException("Line is not a valid Container"); } else { @@ -43,6 +45,10 @@ namespace ICSharpCode.Reports.Core.Exporter baseLine, style.DisplayRectangle); } + foreach (ICSharpCode.Reports.Core.Exporter.BaseExportColumn baseExportColumn in Items) + { + baseExportColumn.DrawItem(graphics); + } } } @@ -58,6 +64,7 @@ namespace ICSharpCode.Reports.Core.Exporter new BaseLine (style.ForeColor,style.DashStyle,style.Thickness), style, ConvertToPdfRectangle()); + foreach (ICSharpCode.Reports.Core.Exporter.BaseExportColumn baseExportColumn in this.Items) { baseExportColumn.DrawItem(pdfWriter,converter); @@ -65,21 +72,5 @@ namespace ICSharpCode.Reports.Core.Exporter } - private void GraphicsLineDrawer (Graphics graphics) - { - LineDecorator lineStyle = base.StyleDecorator as LineDecorator; - - BaseLine baseLine = null; - baseLine = new BaseLine (lineStyle.ForeColor,lineStyle.DashStyle,lineStyle.Thickness); - - Point from = new Point(lineStyle.DisplayRectangle.Left + lineStyle.From.X, - lineStyle.DisplayRectangle.Top + lineStyle.From.Y); - Point to = new Point(lineStyle.DisplayRectangle.Left + lineStyle.To.X, - lineStyle.DisplayRectangle.Top + lineStyle.To.Y); - lineStyle.Shape.DrawShape(graphics, - baseLine, - from, - to); - } } } 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 d8e78663ce..7e271194de 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 @@ -46,7 +46,6 @@ namespace ICSharpCode.Reports.Core.Exporter { if (base.Pages.Count == 0) { -// this.ReportModel.ReportHeader.SectionOffset = base.SinglePage.SectionBounds.ReportHeaderRectangle.Top; SectionBounds.Offset = new Point(base.SectionBounds.MarginBounds.Left,base.SectionBounds.MarginBounds.Top); ExporterCollection convertedList = base.ConvertSection (base.ReportModel.ReportHeader,0); base.SinglePage.Items.AddRange(convertedList); @@ -55,20 +54,17 @@ namespace ICSharpCode.Reports.Core.Exporter protected override void BuildPageHeader() { -// this.ReportModel.PageHeader.SectionOffset = base.SinglePage.SectionBounds.PageHeaderRectangle.Top; if (SectionBounds.Offset.Y < base.ReportModel.PageHeader.SectionOffset) { SectionBounds.Offset = new Point(SectionBounds.Offset.X,base.ReportModel.PageHeader.SectionOffset); } ExporterCollection convertedList = base.ConvertSection (base.ReportModel.PageHeader,0); base.SinglePage.Items.AddRange(convertedList); base.SectionBounds.CalculatePageBounds(base.ReportModel); -// base.SectionBounds.MeasurePageHeader(base.ReportModel.PageHeader); } protected override void BuildDetailInternal(BaseSection section) { base.BuildDetailInternal(section); -// section.SectionOffset = base.SinglePage.SectionBounds.DetailArea.Top; SectionBounds.Offset = new Point(SectionBounds.Offset.X,base.ReportModel.DetailSection.Location.Y); ExporterCollection convertedList = base.ConvertSection (base.ReportModel.DetailSection,0); base.SinglePage.Items.AddRange(convertedList); @@ -115,6 +111,5 @@ namespace ICSharpCode.Reports.Core.Exporter base.BuildExportList(); WritePages (); } - } }