Browse Source

Arrange/ArrangeStrategy.cs, remove arrange for recursive Containers

reports
Peter Forstmeier 12 years ago
parent
commit
751a2472e6
  1. 76
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/ArrangeStrategy.cs
  2. 4
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs
  3. 7
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/MeasurementService.cs

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

@ -29,24 +29,38 @@ namespace ICSharpCode.Reporting.Arrange
{ {
public void Arrange(IExportColumn exportColumn){ public void Arrange(IExportColumn exportColumn){
Console.WriteLine("Start arrange------");
if (exportColumn == null) if (exportColumn == null)
throw new ArgumentNullException("exportColumn"); throw new ArgumentNullException("exportColumn");
var container = exportColumn as IExportContainer; var container = exportColumn as IExportContainer;
if ((container != null) && (container.ExportedItems.Count > 0)) { if ((container != null) && (container.ExportedItems.Count > 0)) {
List<IExportColumn> canGrowItems = CreateCanGrowList(container);
List<IExportColumn> canGrowItems = CreateCangrowList(container);
if (canGrowItems.Count > 0) { if (canGrowItems.Count > 0) {
var arSize = ArrangeInternal(container); var containerSize = ArrangeInternal(container);
Console.WriteLine("Ret from arrange {0}",arSize); if (containerSize.Height > container.DesiredSize.Height) {
container.DesiredSize = new Size(arSize.Width,arSize.Height); container.DesiredSize = new Size(containerSize.Width,containerSize.Height);
}
} }
} }
Console.WriteLine("End arrange------");
} }
static List<IExportColumn> CreateCangrowList(IExportContainer container) static Size ArrangeInternal(IExportContainer container)
{
var containerRectangle = container.DisplayRectangle;
foreach (var element in container.ExportedItems) {
var elementRectangle = new Rectangle(element.DisplayRectangle.Left + containerRectangle.Left,
element.DisplayRectangle.Top + containerRectangle.Top,
element.DesiredSize.Width,
element.DesiredSize.Height);
if (!containerRectangle.Contains(elementRectangle)) {
containerRectangle = Rectangle.Union(containerRectangle,elementRectangle);
}
}
return containerRectangle.Size;
}
static List<IExportColumn> CreateCanGrowList(IExportContainer container)
{ {
var l1 = new List<IExportColumn>(); var l1 = new List<IExportColumn>();
foreach (var element in container.Descendents()) { foreach (var element in container.Descendents()) {
@ -58,27 +72,29 @@ namespace ICSharpCode.Reporting.Arrange
} }
static Size old_ArrangeInternal(IExportContainer container)
static Size ArrangeInternal(IExportContainer container)
{ {
var result = container.DisplayRectangle; var result = container.DisplayRectangle;
Console.WriteLine(); Console.WriteLine();
Console.WriteLine("enter arrange for <{0}> with {1}",container.Name,result); Console.WriteLine("enter arrange for <{0}> with {1}",container.Name,result);
if (container.Name.Contains("Det")) {
Console.WriteLine(container.Name);
}
foreach (var element in container.ExportedItems) { foreach (var element in container.ExportedItems) {
var con = element as IExportContainer; var con = element as IExportContainer;
if (con != null) { if (con != null) {
Console.WriteLine("recursive"); Console.WriteLine("recursive");
con.DesiredSize = result.Size; // con.DesiredSize = result.Size;
ArrangeInternal(con); ArrangeInternal(con);
} }
var testRext = new Rectangle(element.DisplayRectangle.Left + result.Left, var testRext = new Rectangle(element.DisplayRectangle.Left + result.Left,
element.DisplayRectangle.Top + result.Top, element.DisplayRectangle.Top + result.Top,
element.DesiredSize.Width, element.DesiredSize.Width,
element.DesiredSize.Height); element.DesiredSize.Height);
Console.WriteLine("<<<<<<<{0}",element.DisplayRectangle);
if (!result.Contains(testRext)) { if (!result.Contains(testRext)) {
Console.WriteLine("No fit do arrange container {0} - elem {1}",result.Bottom,testRext.Bottom); // Console.WriteLine("No fit do arrange container {0} - elem {1}",result.Bottom,testRext.Bottom);
Console.WriteLine("{0} - {1}",result.Bottom,testRext.Bottom); // Console.WriteLine("{0} - {1}",result.Bottom,testRext.Bottom);
var r1 = Rectangle.Union(result,testRext); var r1 = Rectangle.Union(result,testRext);
result = new Rectangle(result.Left, result = new Rectangle(result.Left,
result.Top, result.Top,
@ -86,41 +102,19 @@ namespace ICSharpCode.Reporting.Arrange
element.DisplayRectangle.Size.Height); element.DisplayRectangle.Size.Height);
Console.WriteLine("Union {0}",r1); Console.WriteLine("Union {0}",r1);
Console.WriteLine("{0} - {1}",result.Bottom,testRext.Bottom); Console.WriteLine("{0} - {1}",result.Bottom,testRext.Bottom);
container.DesiredSize = result.Size; result = r1;
// container.DesiredSize = result.Size;
// container.DesiredSize = r1.Size;
} else { } else {
Console.WriteLine("Nothing to arrange {0} - {1}",result.Bottom,testRext.Bottom); Console.WriteLine("Nothing to arrange {0} - {1}",result.Bottom,testRext.Bottom);
} }
} }
Console.WriteLine("Retval for {0} - {1}",container.Name,result);
return result.Size; return result.Size;
} }
/*
public void a_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 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);
} else {
container.DesiredSize = container.Size;
}
}
}
*/
} }
static class Extensions { static class Extensions {
public static IEnumerable<IExportColumn> Descendents(this IExportContainer node) { public static IEnumerable<IExportColumn> Descendents(this IExportContainer node) {

4
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs

@ -74,7 +74,7 @@ namespace ICSharpCode.Reporting.ExportRenderer
SetFont(textBlock,exportText); SetFont(textBlock,exportText);
textBlock.TextWrapping = TextWrapping.Wrap; textBlock.TextWrapping = TextWrapping.Wrap;
textBlock.TextTrimming = TextTrimming.CharacterEllipsis; // textBlock.TextTrimming = TextTrimming.CharacterEllipsis;
CheckForNewLine (textBlock,exportText); CheckForNewLine (textBlock,exportText);
SetContentAlignment(textBlock,exportText); SetContentAlignment(textBlock,exportText);
@ -119,7 +119,7 @@ namespace ICSharpCode.Reporting.ExportRenderer
ft.MaxTextHeight = Double.MaxValue ; ft.MaxTextHeight = Double.MaxValue ;
ft.SetFontSize(exportText.Font.Size * 96.0 / 72.0); ft.SetFontSize(exportText.Font.Size * 96.0 / 72.0);
// ft.SetFontSize(exportText.Font.Size);
var size = new Size { var size = new Size {
Width = ft.WidthIncludingTrailingWhitespace, Width = ft.WidthIncludingTrailingWhitespace,
Height = ft.Height}; Height = ft.Height};

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

@ -23,16 +23,13 @@ namespace ICSharpCode.Reporting.Globals
if (!item.CanGrow) { if (!item.CanGrow) {
return item.Size; return item.Size;
} }
var sf = new StringFormat(); var sf = new StringFormat();
sf.FormatFlags = StringFormatFlags.MeasureTrailingSpaces; sf.FormatFlags = StringFormatFlags.MeasureTrailingSpaces;
if (!String.IsNullOrEmpty(item.Text)) { if (!String.IsNullOrEmpty(item.Text)) {
SizeF size = graphics.MeasureString(item.Text.TrimEnd(), SizeF size = graphics.MeasureString(item.Text.TrimEnd(),
item.Font, item.Font,
item.Size.Width,sf); item.Size.Width);
// var i = (int)size.Height/item.Font.Height;
// var x = i * item.Font.Height;
if (size.Height < item.Size.Height) { if (size.Height < item.Size.Height) {
return item.Size; return item.Size;
} }

Loading…
Cancel
Save