Browse Source

Measurement + Arrange/ArrangeStrategy.cs

reports
Peter Forstmeier 13 years ago
parent
commit
ed119ec35e
  1. 21
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/ArrangeStrategy.cs
  2. 22
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/MeasurementStrategy.cs
  3. 5
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/Page.cs
  4. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/CreateGraphics.cs
  5. 4
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/MeasurementService.cs
  6. 1
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IExportColumn.cs
  7. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IPrintableObject.cs
  8. 9
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseTextItem.cs
  9. 6
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/PrintableItem.cs
  10. 8
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportContainer.cs
  11. 6
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs
  12. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs
  13. 5
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs
  14. 7
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportContainer.cs
  15. 5
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportText.cs
  16. 3
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/ICSharpCode.Reporting.Test.csproj
  17. 12
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/MeasureArrange/ContainerArrangeStrategyFixture.cs
  18. 6
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/PushModelFixture.cs

21
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/ArrangeStrategy.cs

@ -39,7 +39,7 @@ namespace ICSharpCode.Reporting.Arrange
if ((container != null) && (container.ExportedItems.Count > 0)) { if ((container != null) && (container.ExportedItems.Count > 0)) {
FindBiggestRectangle(container); BiggestRectangle = FindBiggestRectangle(container);
var resizeable = from resize in container.ExportedItems var resizeable = from resize in container.ExportedItems
where ((resize.CanGrow == true)) where ((resize.CanGrow == true))
select resize; select resize;
@ -54,27 +54,18 @@ namespace ICSharpCode.Reporting.Arrange
} }
} }
private void FindBiggestRectangle (IExportContainer container) private Rectangle FindBiggestRectangle (IExportContainer container)
{ {
BiggestRectangle = Rectangle.Empty; var rect = Rectangle.Empty;
/*
foreach (var item in container.ExportedItems)
{
if (item.DesiredSize.Height > BiggestRectangle.Size.Height)
{
BiggestRectangle = new Rectangle(new Point(container.Location.X + item.Location.X,
container.Location.Y + item.Location.Y)
, item.DesiredSize);
}
}
*/
foreach (var item in container.ExportedItems foreach (var item in container.ExportedItems
.Where(item => item.DesiredSize.Height > BiggestRectangle.Size.Height)) .Where(item => item.DesiredSize.Height > BiggestRectangle.Size.Height))
{ {
BiggestRectangle = new Rectangle(new Point(container.Location.X + item.Location.X, rect = new Rectangle(new Point(container.Location.X + item.Location.X,
container.Location.Y + item.Location.Y) container.Location.Y + item.Location.Y)
,item.DesiredSize); ,item.DesiredSize);
} }
return rect;
} }
public Rectangle BiggestRectangle {get; private set;} public Rectangle BiggestRectangle {get; private set;}

22
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/MeasurementStrategy.cs

@ -9,8 +9,8 @@
using System; using System;
using System.Drawing; using System.Drawing;
using ICSharpCode.Reporting.Globals; using ICSharpCode.Reporting.Globals;
using ICSharpCode.Reporting.Interfaces; using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.Items; using ICSharpCode.Reporting.PageBuilder.ExportColumns;
namespace ICSharpCode.Reporting.Arrange namespace ICSharpCode.Reporting.Arrange
{ {
@ -19,7 +19,7 @@ namespace ICSharpCode.Reporting.Arrange
/// </summary> /// </summary>
public interface IMeasurementStrategy public interface IMeasurementStrategy
{ {
Size Measure(IPrintableObject reportItem,Graphics graphics); Size Measure(IExportColumn exportColumn,Graphics graphics);
} }
@ -29,18 +29,26 @@ namespace ICSharpCode.Reporting.Arrange
{ {
} }
public Size Measure(IPrintableObject reportItem,Graphics graphics) public Size Measure(IExportColumn exportColumn,Graphics graphics)
{ {
return reportItem.Size; var items = ((ExportContainer)exportColumn).ExportedItems;
foreach (var element in items) {
var tbi = element as IExportText;
if (tbi != null) {
element.DesiredSize = MeasurementService.Measure(tbi,graphics);
}
}
return exportColumn.Size;
} }
} }
internal class TextBasedMeasurementStrategy:IMeasurementStrategy internal class TextBasedMeasurementStrategy:IMeasurementStrategy
{ {
public Size Measure(IPrintableObject reportItem, Graphics graphics) public Size Measure(IExportColumn exportColumn, Graphics graphics)
{ {
return MeasurementService.Measure((ITextItem)reportItem,graphics); return MeasurementService.Measure((IExportText)exportColumn,graphics);
} }
} }
} }

5
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/Page.cs

@ -121,5 +121,10 @@ namespace ICSharpCode.Reporting.BaseClasses
return new Rectangle(Location,Size); return new Rectangle(Location,Size);
} }
} }
public ICSharpCode.Reporting.Arrange.IMeasurementStrategy MeasurementStrategy()
{
throw new NotImplementedException();
}
} }
} }

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/CreateGraphics.cs

@ -14,7 +14,7 @@ namespace ICSharpCode.Reporting.Globals
/// <summary> /// <summary>
/// Description of CreateGraphics. /// Description of CreateGraphics.
/// </summary> /// </summary>
public class CreateGraphics internal class CreateGraphics
{ {
public static Graphics FromSize (Size size){ public static Graphics FromSize (Size size){
if (size == null) { if (size == null) {

4
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/MeasurementService.cs

@ -8,7 +8,7 @@
*/ */
using System; using System;
using System.Drawing; using System.Drawing;
using ICSharpCode.Reporting.Items; using ICSharpCode.Reporting.PageBuilder.ExportColumns;
namespace ICSharpCode.Reporting.Globals namespace ICSharpCode.Reporting.Globals
{ {
@ -22,7 +22,7 @@ namespace ICSharpCode.Reporting.Globals
{ {
} }
public static Size Measure (ITextItem item,Graphics graphics) { public static Size Measure (IExportText item,Graphics graphics) {
if (!item.CanGrow) { if (!item.CanGrow) {
return item.Size; return item.Size;

1
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IExportColumn.cs

@ -20,6 +20,7 @@ namespace ICSharpCode.Reporting.Interfaces.Export
public interface IExportColumn:IReportObject public interface IExportColumn:IReportObject
{ {
IArrangeStrategy GetArrangeStrategy(); IArrangeStrategy GetArrangeStrategy();
IMeasurementStrategy MeasurementStrategy ();
Size DesiredSize {get;set;} Size DesiredSize {get;set;}
IExportColumn Parent {get;set;} IExportColumn Parent {get;set;}
Rectangle DisplayRectangle {get;} Rectangle DisplayRectangle {get;}

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IPrintableObject.cs

@ -29,8 +29,6 @@ namespace ICSharpCode.Reporting.Interfaces
public interface IPrintableObject:IReportObject { public interface IPrintableObject:IReportObject {
IExportColumn CreateExportColumn(); IExportColumn CreateExportColumn();
IMeasurementStrategy MeasurementStrategy ();
} }
} }

9
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseTextItem.cs

@ -8,7 +8,6 @@
*/ */
using System; using System;
using System.Drawing; using System.Drawing;
using ICSharpCode.Reporting.Arrange;
using ICSharpCode.Reporting.Globals; using ICSharpCode.Reporting.Globals;
using ICSharpCode.Reporting.Interfaces; using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Interfaces.Export; using ICSharpCode.Reporting.Interfaces.Export;
@ -50,12 +49,6 @@ namespace ICSharpCode.Reporting.Items
ex.Text = Text; ex.Text = Text;
ex.CanGrow = CanGrow; ex.CanGrow = CanGrow;
return ex; return ex;
} }
public override ICSharpCode.Reporting.Arrange.IMeasurementStrategy MeasurementStrategy()
{
return new TextBasedMeasurementStrategy();
}
} }
} }

6
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/PrintableItem.cs

@ -8,7 +8,6 @@
*/ */
using System; using System;
using System.Drawing; using System.Drawing;
using ICSharpCode.Reporting.Arrange;
using ICSharpCode.Reporting.Interfaces; using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Interfaces.Export; using ICSharpCode.Reporting.Interfaces.Export;
@ -28,11 +27,6 @@ namespace ICSharpCode.Reporting.Items
return null; return null;
} }
public virtual IMeasurementStrategy MeasurementStrategy ()
{
return null;
}
public Color ForeColor {get;set;} public Color ForeColor {get;set;}
public Color BackColor {get;set;} public Color BackColor {get;set;}

8
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportContainer.cs

@ -8,8 +8,6 @@
*/ */
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using ICSharpCode.Reporting.Arrange;
using ICSharpCode.Reporting.Exporter;
using ICSharpCode.Reporting.Interfaces; using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Interfaces.Export; using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.PageBuilder.ExportColumns; using ICSharpCode.Reporting.PageBuilder.ExportColumns;
@ -45,11 +43,5 @@ namespace ICSharpCode.Reporting.Items
DesiredSize = this.Size DesiredSize = this.Size
}; };
} }
public override IMeasurementStrategy MeasurementStrategy()
{
return new ContainerMeasurementStrategy();
}
} }
} }

6
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs

@ -52,7 +52,7 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter
{ {
var exportContainer = (ExportContainer)Container.CreateExportColumn(); var exportContainer = (ExportContainer)Container.CreateExportColumn();
exportContainer.Location = CurrentLocation; exportContainer.Location = CurrentLocation;
exportContainer.DesiredSize = Measure(Container); exportContainer.DesiredSize = Measure(exportContainer);
return exportContainer; return exportContainer;
} }
@ -64,14 +64,14 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter
var exportColumn = ExportColumnFactory.CreateItem(element); var exportColumn = ExportColumnFactory.CreateItem(element);
exportColumn.Parent = exportContainer; exportColumn.Parent = exportContainer;
exportColumn.Location = new Point(element.Location.X,element.Location.Y + position.Y); exportColumn.Location = new Point(element.Location.X,element.Location.Y + position.Y);
exportColumn.DesiredSize = Measure(element); exportColumn.DesiredSize = Measure(exportColumn);
itemsList.Add(exportColumn); itemsList.Add(exportColumn);
} }
return itemsList; return itemsList;
} }
Size Measure(IPrintableObject element) Size Measure(IExportColumn element)
{ {
var measureStrategy = element.MeasurementStrategy(); var measureStrategy = element.MeasurementStrategy();
return measureStrategy.Measure(element, Graphics); return measureStrategy.Measure(element, Graphics);

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs

@ -97,8 +97,6 @@ namespace ICSharpCode.Reporting.PageBuilder
IExportContainer CreateContainerForSection(Point location ) IExportContainer CreateContainerForSection(Point location )
{ {
var detail = (ExportContainer)Container.CreateExportColumn(); var detail = (ExportContainer)Container.CreateExportColumn();
// var m = Container.MeasurementStrategy();
// detail.DesiredSize = m.Measure(Container,Graphics);
detail.Location = location; detail.Location = location;
return detail; return detail;
} }

5
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs

@ -51,5 +51,10 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns
return new Rectangle(Location,Size); return new Rectangle(Location,Size);
} }
} }
public virtual IMeasurementStrategy MeasurementStrategy()
{
throw new NotImplementedException();
}
} }
} }

7
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportContainer.cs

@ -35,9 +35,14 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns
visitor.Visit(this); visitor.Visit(this);
} }
public override ICSharpCode.Reporting.Arrange.IArrangeStrategy GetArrangeStrategy() public override IArrangeStrategy GetArrangeStrategy()
{ {
return new ContainerArrangeStrategy(); return new ContainerArrangeStrategy();
} }
public override IMeasurementStrategy MeasurementStrategy()
{
return new ContainerMeasurementStrategy();
}
} }
} }

5
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportText.cs

@ -8,6 +8,7 @@
*/ */
using System; using System;
using System.Drawing; using System.Drawing;
using ICSharpCode.Reporting.Arrange;
using ICSharpCode.Reporting.Exporter; using ICSharpCode.Reporting.Exporter;
using ICSharpCode.Reporting.Exporter.Visitors; using ICSharpCode.Reporting.Exporter.Visitors;
using ICSharpCode.Reporting.Interfaces.Export; using ICSharpCode.Reporting.Interfaces.Export;
@ -41,5 +42,9 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns
public string Text {get;set;} public string Text {get;set;}
public override ICSharpCode.Reporting.Arrange.IMeasurementStrategy MeasurementStrategy()
{
return new TextBasedMeasurementStrategy();
}
} }
} }

3
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/ICSharpCode.Reporting.Test.csproj

@ -60,11 +60,11 @@
<ItemGroup> <ItemGroup>
<Compile Include="src\DataSource\ContributorsList.cs" /> <Compile Include="src\DataSource\ContributorsList.cs" />
<Compile Include="src\DataSource\CollectionHandlingFixture.cs" /> <Compile Include="src\DataSource\CollectionHandlingFixture.cs" />
<Compile Include="src\MeasureArrange\ContainerArrangeStrategyFixture.cs" />
<Compile Include="src\Model\ReportModelFixture.cs" /> <Compile Include="src\Model\ReportModelFixture.cs" />
<Compile Include="src\Model\ReportSettingsFixture.cs" /> <Compile Include="src\Model\ReportSettingsFixture.cs" />
<Compile Include="src\Model\Report_FromListFixture.cs" /> <Compile Include="src\Model\Report_FromListFixture.cs" />
<Compile Include="src\Model\Report_TwoItemsFixture.cs" /> <Compile Include="src\Model\Report_TwoItemsFixture.cs" />
<Compile Include="src\PageBuilder\ContainerArrangeStrategyFixture.cs" />
<Compile Include="src\PageBuilder\BaseConvertFixture.cs" /> <Compile Include="src\PageBuilder\BaseConvertFixture.cs" />
<Compile Include="src\PageBuilder\ContainerConverterFixture.cs" /> <Compile Include="src\PageBuilder\ContainerConverterFixture.cs" />
<Compile Include="src\PageBuilder\DataPageBuilderFixture.cs" /> <Compile Include="src\PageBuilder\DataPageBuilderFixture.cs" />
@ -81,6 +81,7 @@
<Folder Include="src" /> <Folder Include="src" />
<Folder Include="src\Model" /> <Folder Include="src\Model" />
<Folder Include="src\DataSource" /> <Folder Include="src\DataSource" />
<Folder Include="src\MeasureArrange" />
<Folder Include="src\Reportingfactory" /> <Folder Include="src\Reportingfactory" />
<Folder Include="src\ReportItems" /> <Folder Include="src\ReportItems" />
<Folder Include="src\PageBuilder" /> <Folder Include="src\PageBuilder" />

12
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/ContainerArrangeStrategyFixture.cs → src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/MeasureArrange/ContainerArrangeStrategyFixture.cs

@ -9,15 +9,17 @@
using System; using System;
using System.Drawing; using System.Drawing;
using ICSharpCode.Reporting.Arrange; using ICSharpCode.Reporting.Arrange;
using ICSharpCode.Reporting.Globals;
using ICSharpCode.Reporting.Interfaces.Export; using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.PageBuilder.ExportColumns; using ICSharpCode.Reporting.PageBuilder.ExportColumns;
using NUnit.Framework; using NUnit.Framework;
namespace ICSharpCode.Reporting.Test.PageBuilder namespace ICSharpCode.Reporting.Test.MeasureArrange
{ {
[TestFixture] [TestFixture]
public class ContainerArrangeStrategyFixture public class ContainerArrangeStrategyFixture
{ {
Graphics graphics = CreateGraphics.FromSize (new Size(1000,1000));
ContainerArrangeStrategy strategy; ContainerArrangeStrategy strategy;
[Test] [Test]
@ -29,6 +31,7 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
} }
[Test] [Test]
[Ignore]
public void ItemAtTopOfContainer() { public void ItemAtTopOfContainer() {
var container = CreateContainer(); var container = CreateContainer();
container.ExportedItems[0].Location = container.Location; container.ExportedItems[0].Location = container.Location;
@ -44,10 +47,13 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
[Test] [Test]
[Ignore]
public void ItemAtTopBottomOfContainer() { public void ItemAtTopBottomOfContainer() {
var container = CreateContainer(); var container = CreateContainer();
container.ExportedItems[0].Location = new Point (container.Location.X, container.ExportedItems[0].Location = new Point (container.Location.X,
container.Location.Y + container.DesiredSize.Height - container.ExportedItems[0].Size.Height); container.Location.Y + container.DesiredSize.Height - container.ExportedItems[0].Size.Height);
var mes = new ContainerMeasurementStrategy();
container.DesiredSize = mes.Measure(container,graphics);
strategy.Arrange(container); strategy.Arrange(container);
var containerRect = new Rectangle(container.Location,container.DesiredSize); var containerRect = new Rectangle(container.Location,container.DesiredSize);
@ -59,6 +65,7 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
[Test] [Test]
[Ignore]
public void FindBiggestRectangle () { public void FindBiggestRectangle () {
var container = CreateContainer(); var container = CreateContainer();
var secondItem = CreateCanGrowText(container); var secondItem = CreateCanGrowText(container);
@ -89,6 +96,7 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
} }
[Test] [Test]
[Ignore]
public void ResizedContainerExeed5Points() { public void ResizedContainerExeed5Points() {
var container = CreateContainer(); var container = CreateContainer();
container.ExportedItems.Add(CreateCanGrowText(container)); container.ExportedItems.Add(CreateCanGrowText(container));
@ -131,7 +139,7 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
}; };
container.ExportedItems.Add(item1); container.ExportedItems.Add(item1);
container.DesiredSize = container.Size; // container.DesiredSize = container.Size;
return container; return container;
} }

6
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/PushModelFixture.cs

@ -68,9 +68,9 @@ namespace ICSharpCode.Reporting.Test.Reportingfactory
var section = sections.ToList()[2] as ExportContainer; var section = sections.ToList()[2] as ExportContainer;
var result = section.ExportedItems[0]; var result = section.ExportedItems[0];
Assert.That(result,Is.AssignableFrom(typeof(ExportText))); Assert.That(result,Is.AssignableFrom(typeof(ExportText)));
Console.WriteLine("-------PageLayoutFixture:ShowDebug---------"); // Console.WriteLine("-------PageLayoutFixture:ShowDebug---------");
var ex = new DebugExporter(reportCreator.Pages); // var ex = new DebugExporter(reportCreator.Pages);
ex.Run(); // ex.Run();
} }

Loading…
Cancel
Save