diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj
index 9f3d847afa..300cd0f690 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj
@@ -76,6 +76,7 @@
+
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/ArrangeStrategy.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/ArrangeStrategy.cs
index 13970d4264..eeb06e2f72 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/ArrangeStrategy.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/ArrangeStrategy.cs
@@ -30,8 +30,32 @@ namespace ICSharpCode.Reporting.Arrange
{
}
+
+ public void Arrange(IExportColumn exportColumn){
+ if (exportColumn == null)
+ throw new ArgumentNullException("exportColumn");
+ var container = exportColumn as IExportContainer;
+ if ((container != null) && (container.ExportedItems.Count > 0)) {
+ var resizeable = from resize in container.ExportedItems
+ where ((resize.CanGrow))
+ select resize;
+ if (resizeable.Any()) {
+
+ //minimun Location
+// var minLocation = (from p in container.ExportedItems orderby p.Location.Y select p).First();
+ var maxLocation = (from p in container.ExportedItems orderby p.Location.Y select p).Last();
+ // maximum Size
+ var maxBottom = (from p in container.ExportedItems orderby p.DisplayRectangle.Bottom select p).Last();
+ container.DesiredSize = new Size(container.Size.Width,maxLocation.Location.Y + maxBottom.DesiredSize.Height + 5);
- public void Arrange(IExportColumn exportColumn)
+ } else {
+ container.DesiredSize = container.Size;
+ }
+ }
+ }
+
+
+ public void old_Arrange(IExportColumn exportColumn)
{
if (exportColumn == null)
throw new ArgumentNullException("exportColumn");
@@ -54,6 +78,8 @@ namespace ICSharpCode.Reporting.Arrange
}
}
+
+
private Rectangle FindBiggestRectangle (IExportContainer container)
{
var rect = Rectangle.Empty;
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/MeasurementStrategy.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/MeasurementStrategy.cs
index a5f45f3465..ff77a9124f 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/MeasurementStrategy.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/MeasurementStrategy.cs
@@ -35,13 +35,13 @@ namespace ICSharpCode.Reporting.Arrange
if (tbi != null) {
element.DesiredSize = MeasurementService.Measure(tbi,graphics);
}
- Console.WriteLine("Measure -> {0} - {1}",element.Size,element.DesiredSize);
}
return exportColumn.DesiredSize;
}
}
- internal class TextBasedMeasurementStrategy:IMeasurementStrategy
+
+ class TextBasedMeasurementStrategy:IMeasurementStrategy
{
public Size Measure(IExportColumn exportColumn, Graphics graphics)
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/ExtensionMethods.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/ExtensionMethods.cs
new file mode 100644
index 0000000000..ccf57c0e23
--- /dev/null
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/ExtensionMethods.cs
@@ -0,0 +1,94 @@
+// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
+// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
+using System;
+using System.Collections.Generic;
+using System.Windows;
+using System.Windows.Media;
+namespace ICSharpCode.Reporting.BaseClasses
+{
+ ///
+ /// Description of ExtensionMethodes.
+ /// Copy from D:\git_Sharpdevelop_Reporting\src\AddIns\Misc\Reports\ICSharpCode.Reports.Core\Project\WPF\ExtensionMethodes.cs
+ ///
+ /// (this IEnumerable input, Action action)
+ {
+ if (input == null)
+ throw new ArgumentNullException("input");
+ foreach (T element in input) {
+ action(element);
+ }
+ }
+
+ #endregion
+
+ #region system.drawing -> Wpf
+
+ public static Point ToWpf(this System.Drawing.Point p)
+ {
+ return new Point(p.X, p.Y);
+ }
+
+ public static Size ToWpf(this System.Drawing.Size s)
+ {
+ return new Size(s.Width, s.Height);
+ }
+
+ public static Rect ToWpf(this System.Drawing.Rectangle rect)
+ {
+ return new Rect(rect.Location.ToWpf(), rect.Size.ToWpf());
+ }
+
+ public static System.Windows.Media.Color ToWpf(this System.Drawing.Color c)
+ {
+ return System.Windows.Media.Color.FromArgb(c.A, c.R, c.G, c.B);
+ }
+
+ #endregion
+
+ #region DPI independence
+ public static Rect TransformToDevice(this Rect rect, Visual visual)
+ {
+ Matrix matrix = PresentationSource.FromVisual(visual).CompositionTarget.TransformToDevice;
+ return Rect.Transform(rect, matrix);
+ }
+
+ public static Rect TransformFromDevice(this Rect rect, Visual visual)
+ {
+ Matrix matrix = PresentationSource.FromVisual(visual).CompositionTarget.TransformFromDevice;
+ return Rect.Transform(rect, matrix);
+ }
+
+ public static Size TransformToDevice(this Size size, Visual visual)
+ {
+ Matrix matrix = PresentationSource.FromVisual(visual).CompositionTarget.TransformToDevice;
+ return new Size(size.Width * matrix.M11, size.Height * matrix.M22);
+ }
+
+ public static Size TransformFromDevice(this Size size, Visual visual)
+ {
+ Matrix matrix = PresentationSource.FromVisual(visual).CompositionTarget.TransformFromDevice;
+ return new Size(size.Width * matrix.M11, size.Height * matrix.M22);
+ }
+
+ public static Point TransformToDevice(this Point point, Visual visual)
+ {
+ Matrix matrix = PresentationSource.FromVisual(visual).CompositionTarget.TransformToDevice;
+ return new Point(point.X * matrix.M11, point.Y * matrix.M22);
+ }
+
+ public static Point TransformFromDevice(this Point point, Visual visual)
+ {
+ Matrix matrix = PresentationSource.FromVisual(visual).CompositionTarget.TransformFromDevice;
+ return new Point(point.X * matrix.M11, point.Y * matrix.M22);
+ }
+ #endregion
+
+
+ }
+}
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs
index ee1f4b6a34..bf8db9fe20 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs
@@ -7,6 +7,7 @@
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
+using System.Globalization;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
@@ -19,6 +20,7 @@ using Brush = System.Windows.Media.Brush;
using FontFamily = System.Windows.Media.FontFamily;
using Pen = System.Windows.Media.Pen;
using Size = System.Windows.Size;
+using ICSharpCode.Reporting.BaseClasses;
namespace ICSharpCode.Reporting.ExportRenderer
{
@@ -37,9 +39,12 @@ namespace ICSharpCode.Reporting.ExportRenderer
public UIElement CreateFixedPage(ExportPage exportPage) {
var fixedPage = new FixedPage();
- fixedPage.Width = exportPage.Size.Width;
- fixedPage.Height = exportPage.Size.Height;
- fixedPage.Background = ConvertBrush(System.Drawing.Color.Blue);
+
+ fixedPage.Width = exportPage.Size.ToWpf().Width;
+ fixedPage.Height = exportPage.Size.ToWpf().Height;
+
+// fixedPage.Background = ConvertBrush(System.Drawing.Color.Blue);
+ fixedPage.Background = new SolidColorBrush(System.Drawing.Color.Blue.ToWpf());
return fixedPage;
}
@@ -47,15 +52,13 @@ namespace ICSharpCode.Reporting.ExportRenderer
public UIElement CreateContainer(ExportContainer container)
{
var canvas = CreateCanvas(container);
-
- var size = new Size(container.DesiredSize.Width,container.DesiredSize.Height);
-
+ var size = container.DesiredSize.ToWpf();
canvas.Measure(size);
canvas.Arrange(new Rect(new Point(),size ));
canvas.UpdateLayout();
-
+
return canvas;
}
@@ -64,28 +67,30 @@ namespace ICSharpCode.Reporting.ExportRenderer
public TextBlock CreateTextBlock(ExportText exportText)
{
var textBlock = new TextBlock();
-
-// textBlock.Text = exportText.Text;
- textBlock.Width = exportText.DesiredSize.Width;
- textBlock.Height = exportText.DesiredSize.Height;
-
+
textBlock.Foreground = ConvertBrush(exportText.ForeColor);
+// textBlock.Background = ConvertBrush(exportText.BackColor);
+ textBlock.Background = ConvertBrush(System.Drawing.Color.LightGray);
+
SetFont(textBlock,exportText);
- textBlock.Background = ConvertBrush(exportText.BackColor);
textBlock.TextWrapping = TextWrapping.WrapWithOverflow;
-// textBlock.TextWrapping = TextWrapping.NoWrap;
+
string [] inlines = exportText.Text.Split(System.Environment.NewLine.ToCharArray());
- //string [] inlines = "jmb,.n,knn-.n.-n.n-.n.n.-";
+
for (int i = 0; i < inlines.Length; i++) {
if (inlines[i].Length > 0) {
textBlock.Inlines.Add(new Run(inlines[i]));
- textBlock.Inlines.Add(new LineBreak());
+ textBlock.Inlines.Add(new LineBreak());
}
}
var li = textBlock.Inlines.LastInline;
textBlock.Inlines.Remove(li);
-// SetDimension(textBlock,exportText.StyleDecorator);
+
+ var s = MeasureTextInWpf(exportText);
+ textBlock.Width = s.Width;
+ textBlock.Height = s.Height;
+
// textBlock.Background = ConvertBrush(exportText.StyleDecorator.BackColor);
// SetContendAlignment(textBlock,exportText.StyleDecorator);
@@ -93,6 +98,32 @@ namespace ICSharpCode.Reporting.ExportRenderer
}
+ Size MeasureTextInWpf(ExportText exportText)
+ {
+
+ FormattedText ft = new FormattedText(exportText.Text,
+ CultureInfo.CurrentCulture,
+ System.Windows.FlowDirection.LeftToRight,
+ new Typeface(exportText.Font.FontFamily.Name),
+ exportText.Font.Size,
+// System.Windows.Media.Brushes.Black,
+ new SolidColorBrush(exportText.ForeColor.ToWpf()),
+
+ null,
+ TextFormattingMode.Display);
+
+ ft.MaxTextWidth = exportText.Size.Width * 96.0 / 72.0;
+ ft.MaxTextHeight = Double.MaxValue ;
+
+ ft.SetFontSize(exportText.Font.Size * 96.0 / 72.0);
+
+ var ss = new Size {
+ Width = ft.WidthIncludingTrailingWhitespace,
+ Height = ft.Height};
+ return ss;
+ }
+
+
Canvas CreateCanvas(ExportContainer container)
{
var canvas = new Canvas();
@@ -126,9 +157,11 @@ namespace ICSharpCode.Reporting.ExportRenderer
void SetFont(TextBlock textBlock,IExportText exportText)
{
textBlock.FontFamily = new FontFamily(exportText.Font.FontFamily.Name);
-
- textBlock.FontSize = exportText.Font.Size * 96/72;
+
+//http://www.codeproject.com/Articles/441009/Drawing-Formatted-Text-in-a-Windows-Forms-Applicat
+textBlock.FontSize = exportText.Font.Size * 96/72;
+
if (exportText.Font.Bold) {
textBlock.FontWeight = FontWeights.Bold;
}
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/WpfExporter.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/WpfExporter.cs
index 9e91576ea1..f838566082 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/WpfExporter.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/WpfExporter.cs
@@ -12,7 +12,7 @@ using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Markup;
-
+using ICSharpCode.Reporting.BaseClasses;
using ICSharpCode.Reporting.Exporter.Visitors;
using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/MeasurementService.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/MeasurementService.cs
index 3e8499f3e9..17208e050b 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/MeasurementService.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/MeasurementService.cs
@@ -27,11 +27,16 @@ namespace ICSharpCode.Reporting.Globals
if (!item.CanGrow) {
return item.Size;
}
+
+ var sf = new StringFormat();
+ sf.FormatFlags = StringFormatFlags.MeasureTrailingSpaces;
if (!String.IsNullOrEmpty(item.Text)) {
SizeF size = graphics.MeasureString(item.Text.TrimEnd(),
item.Font,
- item.Size.Width);
- var i = (int)size.Height/item.Font.Height;
+ item.Size.Width,sf);
+
+// var i = (int)size.Height/item.Font.Height;
+// var x = i * item.Font.Height;
if (size.Height < item.Size.Height) {
return item.Size;
}
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IExportContainer.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IExportContainer.cs
index ba7732a5b2..afb6e4c978 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IExportContainer.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IExportContainer.cs
@@ -8,7 +8,6 @@
*/
using System;
using System.Collections.Generic;
-using ICSharpCode.Reporting.PageBuilder.ExportColumns;
namespace ICSharpCode.Reporting.Interfaces.Export
{
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs
index 4ab934cc5e..628412c8fb 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs
@@ -7,6 +7,7 @@
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
+using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Drawing;
using System.Linq;
@@ -58,7 +59,7 @@ namespace ICSharpCode.Reporting.PageBuilder
protected void BuildPageHeader()
{
var pageHeader = CreateSection(ReportModel.PageHeader,CurrentLocation);
- DetailStart = new Point(ReportModel.ReportSettings.LeftMargin,pageHeader.Location.Y + pageHeader.Size.Height +1);
+ DetailStart = new Point(ReportModel.ReportSettings.LeftMargin,pageHeader.Location.Y + pageHeader.DesiredSize.Height +1);
AddSectionToPage(pageHeader);
}
@@ -101,16 +102,11 @@ namespace ICSharpCode.Reporting.PageBuilder
}
- protected bool PageFull(System.Collections.Generic.List columns)
+ protected bool PageFull(List columns)
{
var rectToPrint = new Rectangle(columns[0].Location,columns[0].Size);
var rr = new Rectangle(new Point(columns[0].Location.X + DetailsRectangle.Location.X,columns[0].Location.Y + DetailsRectangle.Location.Y),
columns[0].Size);
- Console.WriteLine("------{0} - {1} - {2}",rectToPrint.ToString(),rr.ToString(),DetailEnds.Y);
-// if (rectToPrint.Bottom > DetailEnds.Y) {
-// Console.WriteLine("----------PageBreak---");
-// return true;
-// }
if (!DetailsRectangle.Contains(rr)) {
return true;
}
@@ -140,9 +136,13 @@ namespace ICSharpCode.Reporting.PageBuilder
protected IExportContainer CreateSection(IReportContainer container,Point location)
{
var containerConverter = new ContainerConverter(Graphics, location);
- var convertedContainer = containerConverter.Convert(container);
+ var convertedContainer = containerConverter.ConvertToExportContainer(container);
- var list = containerConverter.CreateConvertedList(container,convertedContainer);
+ var list = containerConverter.CreateConvertedList(container.Items);
+
+ convertedContainer.ExportedItems.AddRange(list);
+
+ containerConverter.SetParent(convertedContainer,list);
convertedContainer.ExportedItems.AddRange(list);
convertedContainer.DesiredSize = MeasureElement(convertedContainer);
@@ -151,6 +151,8 @@ namespace ICSharpCode.Reporting.PageBuilder
}
+
+
protected void AddSectionToPage(IExportContainer header)
{
header.Parent = CurrentPage;
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs
index ae362e42d0..188a35c266 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs
@@ -32,7 +32,7 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter
}
- public virtual IExportContainer Convert(IReportContainer reportContainer)
+ public virtual IExportContainer ConvertToExportContainer(IReportContainer reportContainer)
{
var exportContainer = (ExportContainer)reportContainer.CreateExportColumn();
exportContainer.Location = CurrentLocation;
@@ -40,33 +40,33 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter
}
- public List CreateConvertedList(IReportContainer reportContainer,
+ public List CreateConvertedList(List items,
Point position){
-
- var itemsList = new List();
- foreach (var item in reportContainer.Items) {
- var exportColumn = ExportColumnFactory.CreateItem(item);
-// exportColumn.Parent = exportContainer;
- exportColumn.Location = new Point(item.Location.X,item.Location.Y + position.Y);
- itemsList.Add(exportColumn);
+ var list = CreateConvertedList(items);
+ foreach (var item in list) {
+ item.Location = new Point(item.Location.X,item.Location.Y + position.Y);
}
- return itemsList;
+ return list;
}
- public List CreateConvertedList(IReportContainer reportContainer
- ,IExportContainer exportContainer){
- Console.WriteLine("CreateConvertedList {0}",reportContainer.Name);
+ public List CreateConvertedList(List items){
var itemsList = new List();
- foreach (var element in reportContainer.Items) {
+ foreach (var element in items) {
var exportColumn = ExportColumnFactory.CreateItem(element);
- exportColumn.Parent = exportContainer;
itemsList.Add(exportColumn);
}
return itemsList;
}
+ public void SetParent(IExportContainer parent, List convertedItems)
+ {
+ foreach (var item in convertedItems) {
+ item.Parent = parent;
+ }
+ }
+
internal IReportContainer Container { get; private set; }
protected Point CurrentLocation { get; set; }
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/IContainerConverter.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/IContainerConverter.cs
index 7613e971b5..acf3030ef1 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/IContainerConverter.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/IContainerConverter.cs
@@ -17,9 +17,9 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter
{
internal interface IContainerConverter
{
- IExportContainer Convert(IReportContainer reportContainer);
- List CreateConvertedList(IReportContainer reportContainer,IExportContainer exportContainer);
-
- List CreateConvertedList(IReportContainer reportContainer,Point position);
+ IExportContainer ConvertToExportContainer(IReportContainer reportContainer);
+ List CreateConvertedList(List items);
+ List CreateConvertedList(List items,Point position);
+ void SetParent(IExportContainer parent, List convertedItems);
}
}
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs
index ed85292efa..21bb54ae6e 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs
@@ -65,8 +65,8 @@ namespace ICSharpCode.Reporting.PageBuilder
detail.Parent = CurrentPage;
do {
collectionSource.Fill(CurrentSection.Items);
- var convertedItems = converter.CreateConvertedList(ReportModel.DetailSection,position);
- SetParentToSection(detail,convertedItems);
+ var convertedItems = converter.CreateConvertedList(ReportModel.DetailSection.Items,position);
+ converter.SetParent(detail,convertedItems);
if (PageFull(convertedItems)) {
detail.ExportedItems.AddRange(convertedItems);
CurrentPage.ExportedItems.Insert(2,detail);
@@ -98,12 +98,7 @@ namespace ICSharpCode.Reporting.PageBuilder
}
- void SetParentToSection(IExportContainer detail, List convertedItems)
- {
- foreach (var item in convertedItems) {
- item.Parent = detail;
- }
- }
+
/*
void row_BuildDetail()
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs
index 5c630d8d53..28c00c5862 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs
@@ -45,7 +45,8 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns
public Rectangle DisplayRectangle {
get {
- return new Rectangle(Location,Size);
+// return new Rectangle(Location,Size);
+ return new Rectangle(Location,DesiredSize);
}
}
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/PreviewViewModel.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/PreviewViewModel.cs
index f5d2c39bea..f09dc416d2 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/PreviewViewModel.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/PreviewViewModel.cs
@@ -44,7 +44,8 @@ namespace ICSharpCode.Reporting.WpfReportViewer
{
var document = new FixedDocument();
var s = document.DocumentPaginator.PageSize;
- document.DocumentPaginator.PageSize = new System.Windows.Size(reportSettings.PageSize.Width, reportSettings.PageSize.Height);
+ document.DocumentPaginator.PageSize = new System.Windows.Size(reportSettings.PageSize.Width,
+ reportSettings.PageSize.Height);
return document;
}
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/MeasureArrange/ContainerArrangeStrategyFixture.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/MeasureArrange/ContainerArrangeStrategyFixture.cs
index c59921aeab..8211e384cd 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/MeasureArrange/ContainerArrangeStrategyFixture.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/MeasureArrange/ContainerArrangeStrategyFixture.cs
@@ -8,6 +8,8 @@
*/
using System;
using System.Drawing;
+using System.Linq;
+
using ICSharpCode.Reporting.Arrange;
using ICSharpCode.Reporting.Globals;
using ICSharpCode.Reporting.Interfaces.Export;
@@ -31,41 +33,34 @@ namespace ICSharpCode.Reporting.Test.MeasureArrange
Assert.That(param.Size, Is.EqualTo(size));
}
+
[Test]
public void ItemAtTopOfContainer() {
var container = CreateContainer();
- container.ExportedItems[0].Location = container.Location;
+
+ container.ExportedItems[0].Location = Point.Empty;
Measure(container);
strategy.Arrange(container);
var containerRect = new Rectangle(container.Location,container.DesiredSize);
- var itemRect = new Rectangle(container.ExportedItems[0].Location,container.ExportedItems[0].Size);
-
- Assert.That(containerRect.Contains(itemRect));
+
+ var arrangedRect = CreateItemRectangle(container);
+ Assert.That(containerRect.Contains(arrangedRect));
}
-
[Test]
- public void ContainerResizeIfItemCanGrow () {
-
+ public void ContainerNotResizeIfCanGrowEqualFalse () {
var container = CreateContainer();
-// MakeCangGrow(container);
Measure(container);
strategy.Arrange(container);
- strategy.Arrange(container);
- var containerRect = new Rectangle(container.Location,container.DesiredSize);
-
- var child = container.ExportedItems[0];
- var childLocation = new Point(containerRect.Left + child.Location.X,containerRect.Top + child.Location.Y);
- var childRect = new Rectangle(childLocation,child.DesiredSize);
- Assert.That(containerRect.Contains(childRect));
+ Assert.That(container.Size,Is.EqualTo(container.DesiredSize));
}
[Test]
- public void ContainerIs_5_Below_LargestItem() {
+ public void ContainerResizeIfItemCanGrow () {
var container = CreateContainer();
MakeCangGrow(container);
@@ -74,10 +69,8 @@ namespace ICSharpCode.Reporting.Test.MeasureArrange
var containerRect = new Rectangle(container.Location,container.DesiredSize);
- var child = container.ExportedItems[0];
- var childLocation = new Point(containerRect.Left + child.Location.X,containerRect.Top + child.Location.Y);
- var childRect = new Rectangle(childLocation,child.DesiredSize);
- Assert.That(containerRect.Bottom,Is.EqualTo(childRect.Bottom + 5));
+ var arrangedRect = CreateItemRectangle(container);
+ Assert.That(containerRect.Contains(arrangedRect));
}
@@ -88,11 +81,46 @@ namespace ICSharpCode.Reporting.Test.MeasureArrange
Measure(container);
strategy.Arrange(container);
var containerRect = new Rectangle(container.Location,container.DesiredSize);
- var arrangeRect = new Rectangle(new Point(container.Location.X + strategy.BiggestRectangle.Left,
- strategy.BiggestRectangle.Top),
- strategy.BiggestRectangle.Size);
+ var item = container.ExportedItems[0];
+
+ var arrangedRect = CreateItemRectangle(container);
+
+ Assert.That(containerRect.Bottom,Is.EqualTo(arrangedRect.Bottom + 5));
+ }
+
+
+ [Test]
+ public void ContainerContainsTwoItems_OneCanGrow () {
+ var container = CreateContainer();
+ var item1 = new ExportText(){
+ CanGrow = true,
+ Name = "Item1",
+ Location = new Point(80,20),
+ Size = new Size (60,70),
+ Parent = container
+ };
+ container.ExportedItems.Add(item1);
- Assert.That(containerRect.Bottom,Is.EqualTo(arrangeRect.Bottom + 5));
+ Measure(container);
+ strategy.Arrange(container);
+
+ foreach (var element in container.ExportedItems) {
+ var arrangedRect = new Rectangle(container.Location.X + element.Location.X,container.Location.Y + element.Location.Y,
+ element.Size.Width,element.Size.Height);
+
+ Assert.That(container.DisplayRectangle.IntersectsWith(arrangedRect));
+ Assert.That(container.DisplayRectangle.Contains(arrangedRect));
+ }
+ }
+
+
+ Rectangle CreateItemRectangle(IExportContainer container)
+ {
+ var containerRect = new Rectangle(container.Location,container.DesiredSize);
+ var child = container.ExportedItems[0];
+ var childLocation = new Point(containerRect.Left + child.Location.X, containerRect.Top + child.Location.Y);
+ var childRect = new Rectangle(childLocation, child.DesiredSize);
+ return childRect;
}
@@ -104,20 +132,22 @@ namespace ICSharpCode.Reporting.Test.MeasureArrange
}
+
void Measure(IExportColumn container)
{
var mes = container.MeasurementStrategy();
- mes.Measure(container, graphics);
+ container.DesiredSize = mes.Measure(container, graphics);
}
+
IExportContainer CreateContainer () {
-
+
var container = new ExportContainer(){
Size = new Size (720,60),
Location = new Point(50,50),
Name ="Section"
};
-
+
var item1 = new ExportText(){
Name = "Item1",
Location = new Point(10,10),
@@ -128,7 +158,7 @@ namespace ICSharpCode.Reporting.Test.MeasureArrange
container.ExportedItems.Add(item1);
return container;
}
-
+
[TestFixtureSetUp]
public void Init()
{
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/ContainerConverterFixture.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/ContainerConverterFixture.cs
index 58361cd914..5ba2cde5ce 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/ContainerConverterFixture.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/ContainerConverterFixture.cs
@@ -25,7 +25,7 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
[Test]
public void ConverterReturnExportContainer() {
var converter = new ContainerConverter(graphics,new Point(30,30));
- var result = converter.Convert(container);
+ var result = converter.ConvertToExportContainer(container);
Assert.That(result,Is.InstanceOf(typeof(IExportContainer)));
}
@@ -34,8 +34,8 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
public void ConverterReturnExportContainerwithTwoItems()
{
var converter = new ContainerConverter(graphics,new Point(30,30));
- var result = converter.Convert(container);
- var list = converter.CreateConvertedList(container,new Point(30,30));
+ var result = converter.ConvertToExportContainer(container);
+ var list = converter.CreateConvertedList(container.Items,new Point(30,30));
result.ExportedItems.AddRange(list);
Assert.That(result.ExportedItems.Count,Is.EqualTo(2));
}
@@ -45,15 +45,18 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
public void LocationIsAdjusted() {
var location = new Point(30,30);
var converter = new ContainerConverter(graphics,location);
- var result = converter.Convert(container);
+ var result = converter.ConvertToExportContainer(container);
Assert.That(result.Location,Is.EqualTo(location));
}
[Test]
public void ParentInChildsIsSet () {
var converter = new ContainerConverter(graphics,container.Location);
- var result = converter.Convert(container);
- foreach (var element in result.ExportedItems) {
+ var convertedContainer = converter.ConvertToExportContainer(container);
+ var convertedList = converter.CreateConvertedList(container.Items);
+ converter.SetParent(convertedContainer,convertedList);
+ convertedContainer.ExportedItems.AddRange(convertedList);
+ foreach (var element in convertedContainer.ExportedItems) {
Assert.That(element.Parent,Is.Not.Null);
}
}